├── .github └── workflows │ └── CI.yml ├── .gitignore ├── .kotlin-js-store └── yarn.lock ├── CHANGELOG.md ├── LICENSE ├── README.md ├── RELEASING.md ├── build-logic ├── .gitignore ├── build.gradle.kts ├── settings.gradle.kts └── src │ └── main │ └── kotlin │ ├── -KmpConfigurationExtension.kt │ ├── configuration.gradle.kts │ └── publication.gradle.kts ├── build.gradle.kts ├── gradle.properties ├── gradle ├── libs.versions.toml └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── library └── endians │ ├── .gitignore │ ├── api │ ├── endians.api │ └── endians.klib.api │ ├── build.gradle.kts │ ├── gradle.properties │ └── src │ ├── commonMain │ └── kotlin │ │ └── org │ │ └── kotlincrypto │ │ └── endians │ │ ├── -ByteArray.kt │ │ ├── BigEndian.kt │ │ └── LittleEndian.kt │ ├── commonTest │ └── kotlin │ │ └── org │ │ └── kotlincrypto │ │ └── endians │ │ ├── BigEndianUnitTest.kt │ │ └── LittleEndianUnitTest.kt │ └── jvmMain │ └── java9 │ └── module-info.java ├── settings.gradle.kts └── tools └── check-publication ├── .gitignore ├── build.gradle.kts └── src └── commonMain └── kotlin └── tools └── check └── publication └── Stub.kt /.github/workflows/CI.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: [ pull_request ] 4 | 5 | env: 6 | GRADLE_OPTS: -Dorg.gradle.daemon=false -Dkotlin.incremental=false -Dorg.gradle.jvmargs="-XX:+HeapDumpOnOutOfMemoryError -XX:MetaspaceSize=1g" 7 | 8 | jobs: 9 | check: 10 | strategy: 11 | fail-fast: false 12 | matrix: 13 | os: [ macos-latest, ubuntu-latest, windows-latest ] 14 | runs-on: ${{ matrix.os }} 15 | steps: 16 | - name: Checkout Repository 17 | uses: actions/checkout@v4 18 | 19 | - name: Validate Gradle Wrapper 20 | uses: gradle/actions/wrapper-validation@v3 21 | 22 | - name: Setup JDK 23 | uses: actions/setup-java@v4 24 | with: 25 | distribution: 'zulu' 26 | java-version: 11 27 | 28 | - name: Check API Compatibility 29 | if: matrix.os == 'macos-latest' 30 | run: > 31 | ./gradlew apiCheck --stacktrace 32 | 33 | - name: Run macOS Tests 34 | if: matrix.os == 'macos-latest' 35 | run: > 36 | ./gradlew check --stacktrace 37 | -PKMP_TARGETS="JVM,JS,IOS_ARM64,IOS_X64,IOS_SIMULATOR_ARM64,MACOS_ARM64,MACOS_X64,TVOS_ARM64,TVOS_X64,TVOS_SIMULATOR_ARM64,WATCHOS_ARM32,WATCHOS_ARM64,WATCHOS_DEVICE_ARM64,WATCHOS_X64,WATCHOS_SIMULATOR_ARM64,WASM_JS,WASM_WASI" 38 | 39 | - name: Run Linux Tests 40 | if: matrix.os == 'ubuntu-latest' 41 | run: > 42 | ./gradlew check --stacktrace 43 | -PKMP_TARGETS="JVM,JS,ANDROID,ANDROID_ARM32,ANDROID_ARM64,ANDROID_X64,ANDROID_X86,LINUX_ARM64,LINUX_X64,WASM_JS,WASM_WASI" 44 | 45 | - name: Run Windows Tests 46 | if: matrix.os == 'windows-latest' 47 | run: > 48 | ./gradlew check --stacktrace 49 | -PKMP_TARGETS="JVM,JS,MINGW_X64,WASM_JS,WASM_WASI" 50 | 51 | - name: Upload Test Reports 52 | uses: actions/upload-artifact@v4 53 | if: ${{ always() }} 54 | with: 55 | name: test-report-${{ matrix.os }} 56 | path: '**/build/reports/tests/**' 57 | retention-days: 1 58 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .gradle/ 2 | /build 3 | .idea/ 4 | *.iml 5 | local.properties 6 | -------------------------------------------------------------------------------- /.kotlin-js-store/yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | "@colors/colors@1.5.0": 6 | version "1.5.0" 7 | resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" 8 | integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== 9 | 10 | "@discoveryjs/json-ext@^0.5.0": 11 | version "0.5.7" 12 | resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" 13 | integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== 14 | 15 | "@jridgewell/gen-mapping@^0.3.5": 16 | version "0.3.5" 17 | resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz#dcce6aff74bdf6dad1a95802b69b04a2fcb1fb36" 18 | integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg== 19 | dependencies: 20 | "@jridgewell/set-array" "^1.2.1" 21 | "@jridgewell/sourcemap-codec" "^1.4.10" 22 | "@jridgewell/trace-mapping" "^0.3.24" 23 | 24 | "@jridgewell/resolve-uri@^3.1.0": 25 | version "3.1.2" 26 | resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" 27 | integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== 28 | 29 | "@jridgewell/set-array@^1.2.1": 30 | version "1.2.1" 31 | resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" 32 | integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== 33 | 34 | "@jridgewell/source-map@^0.3.3": 35 | version "0.3.6" 36 | resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.6.tgz#9d71ca886e32502eb9362c9a74a46787c36df81a" 37 | integrity sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ== 38 | dependencies: 39 | "@jridgewell/gen-mapping" "^0.3.5" 40 | "@jridgewell/trace-mapping" "^0.3.25" 41 | 42 | "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14": 43 | version "1.5.0" 44 | resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz#3188bcb273a414b0d215fd22a58540b989b9409a" 45 | integrity sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ== 46 | 47 | "@jridgewell/trace-mapping@^0.3.20", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25": 48 | version "0.3.25" 49 | resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz#15f190e98895f3fc23276ee14bc76b675c2e50f0" 50 | integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ== 51 | dependencies: 52 | "@jridgewell/resolve-uri" "^3.1.0" 53 | "@jridgewell/sourcemap-codec" "^1.4.14" 54 | 55 | "@socket.io/component-emitter@~3.1.0": 56 | version "3.1.2" 57 | resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" 58 | integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== 59 | 60 | "@types/cookie@^0.4.1": 61 | version "0.4.1" 62 | resolved "https://registry.yarnpkg.com/@types/cookie/-/cookie-0.4.1.tgz#bfd02c1f2224567676c1545199f87c3a861d878d" 63 | integrity sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q== 64 | 65 | "@types/cors@^2.8.12": 66 | version "2.8.17" 67 | resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.17.tgz#5d718a5e494a8166f569d986794e49c48b216b2b" 68 | integrity sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA== 69 | dependencies: 70 | "@types/node" "*" 71 | 72 | "@types/eslint-scope@^3.7.3": 73 | version "3.7.7" 74 | resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" 75 | integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== 76 | dependencies: 77 | "@types/eslint" "*" 78 | "@types/estree" "*" 79 | 80 | "@types/eslint@*": 81 | version "9.6.1" 82 | resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" 83 | integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== 84 | dependencies: 85 | "@types/estree" "*" 86 | "@types/json-schema" "*" 87 | 88 | "@types/estree@*", "@types/estree@^1.0.0": 89 | version "1.0.5" 90 | resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" 91 | integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== 92 | 93 | "@types/json-schema@*", "@types/json-schema@^7.0.8": 94 | version "7.0.15" 95 | resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" 96 | integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== 97 | 98 | "@types/node@*", "@types/node@>=10.0.0": 99 | version "22.5.1" 100 | resolved "https://registry.yarnpkg.com/@types/node/-/node-22.5.1.tgz#de01dce265f6b99ed32b295962045d10b5b99560" 101 | integrity sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw== 102 | dependencies: 103 | undici-types "~6.19.2" 104 | 105 | "@webassemblyjs/ast@1.12.1", "@webassemblyjs/ast@^1.11.5": 106 | version "1.12.1" 107 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.12.1.tgz#bb16a0e8b1914f979f45864c23819cc3e3f0d4bb" 108 | integrity sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg== 109 | dependencies: 110 | "@webassemblyjs/helper-numbers" "1.11.6" 111 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6" 112 | 113 | "@webassemblyjs/floating-point-hex-parser@1.11.6": 114 | version "1.11.6" 115 | resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz#dacbcb95aff135c8260f77fa3b4c5fea600a6431" 116 | integrity sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw== 117 | 118 | "@webassemblyjs/helper-api-error@1.11.6": 119 | version "1.11.6" 120 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz#6132f68c4acd59dcd141c44b18cbebbd9f2fa768" 121 | integrity sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q== 122 | 123 | "@webassemblyjs/helper-buffer@1.12.1": 124 | version "1.12.1" 125 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz#6df20d272ea5439bf20ab3492b7fb70e9bfcb3f6" 126 | integrity sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw== 127 | 128 | "@webassemblyjs/helper-numbers@1.11.6": 129 | version "1.11.6" 130 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz#cbce5e7e0c1bd32cf4905ae444ef64cea919f1b5" 131 | integrity sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g== 132 | dependencies: 133 | "@webassemblyjs/floating-point-hex-parser" "1.11.6" 134 | "@webassemblyjs/helper-api-error" "1.11.6" 135 | "@xtuc/long" "4.2.2" 136 | 137 | "@webassemblyjs/helper-wasm-bytecode@1.11.6": 138 | version "1.11.6" 139 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz#bb2ebdb3b83aa26d9baad4c46d4315283acd51e9" 140 | integrity sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA== 141 | 142 | "@webassemblyjs/helper-wasm-section@1.12.1": 143 | version "1.12.1" 144 | resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz#3da623233ae1a60409b509a52ade9bc22a37f7bf" 145 | integrity sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g== 146 | dependencies: 147 | "@webassemblyjs/ast" "1.12.1" 148 | "@webassemblyjs/helper-buffer" "1.12.1" 149 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6" 150 | "@webassemblyjs/wasm-gen" "1.12.1" 151 | 152 | "@webassemblyjs/ieee754@1.11.6": 153 | version "1.11.6" 154 | resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz#bb665c91d0b14fffceb0e38298c329af043c6e3a" 155 | integrity sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg== 156 | dependencies: 157 | "@xtuc/ieee754" "^1.2.0" 158 | 159 | "@webassemblyjs/leb128@1.11.6": 160 | version "1.11.6" 161 | resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.6.tgz#70e60e5e82f9ac81118bc25381a0b283893240d7" 162 | integrity sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ== 163 | dependencies: 164 | "@xtuc/long" "4.2.2" 165 | 166 | "@webassemblyjs/utf8@1.11.6": 167 | version "1.11.6" 168 | resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.6.tgz#90f8bc34c561595fe156603be7253cdbcd0fab5a" 169 | integrity sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA== 170 | 171 | "@webassemblyjs/wasm-edit@^1.11.5": 172 | version "1.12.1" 173 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz#9f9f3ff52a14c980939be0ef9d5df9ebc678ae3b" 174 | integrity sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g== 175 | dependencies: 176 | "@webassemblyjs/ast" "1.12.1" 177 | "@webassemblyjs/helper-buffer" "1.12.1" 178 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6" 179 | "@webassemblyjs/helper-wasm-section" "1.12.1" 180 | "@webassemblyjs/wasm-gen" "1.12.1" 181 | "@webassemblyjs/wasm-opt" "1.12.1" 182 | "@webassemblyjs/wasm-parser" "1.12.1" 183 | "@webassemblyjs/wast-printer" "1.12.1" 184 | 185 | "@webassemblyjs/wasm-gen@1.12.1": 186 | version "1.12.1" 187 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz#a6520601da1b5700448273666a71ad0a45d78547" 188 | integrity sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w== 189 | dependencies: 190 | "@webassemblyjs/ast" "1.12.1" 191 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6" 192 | "@webassemblyjs/ieee754" "1.11.6" 193 | "@webassemblyjs/leb128" "1.11.6" 194 | "@webassemblyjs/utf8" "1.11.6" 195 | 196 | "@webassemblyjs/wasm-opt@1.12.1": 197 | version "1.12.1" 198 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz#9e6e81475dfcfb62dab574ac2dda38226c232bc5" 199 | integrity sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg== 200 | dependencies: 201 | "@webassemblyjs/ast" "1.12.1" 202 | "@webassemblyjs/helper-buffer" "1.12.1" 203 | "@webassemblyjs/wasm-gen" "1.12.1" 204 | "@webassemblyjs/wasm-parser" "1.12.1" 205 | 206 | "@webassemblyjs/wasm-parser@1.12.1", "@webassemblyjs/wasm-parser@^1.11.5": 207 | version "1.12.1" 208 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz#c47acb90e6f083391e3fa61d113650eea1e95937" 209 | integrity sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ== 210 | dependencies: 211 | "@webassemblyjs/ast" "1.12.1" 212 | "@webassemblyjs/helper-api-error" "1.11.6" 213 | "@webassemblyjs/helper-wasm-bytecode" "1.11.6" 214 | "@webassemblyjs/ieee754" "1.11.6" 215 | "@webassemblyjs/leb128" "1.11.6" 216 | "@webassemblyjs/utf8" "1.11.6" 217 | 218 | "@webassemblyjs/wast-printer@1.12.1": 219 | version "1.12.1" 220 | resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz#bcecf661d7d1abdaf989d8341a4833e33e2b31ac" 221 | integrity sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA== 222 | dependencies: 223 | "@webassemblyjs/ast" "1.12.1" 224 | "@xtuc/long" "4.2.2" 225 | 226 | "@webpack-cli/configtest@^2.1.0": 227 | version "2.1.1" 228 | resolved "https://registry.yarnpkg.com/@webpack-cli/configtest/-/configtest-2.1.1.tgz#3b2f852e91dac6e3b85fb2a314fb8bef46d94646" 229 | integrity sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw== 230 | 231 | "@webpack-cli/info@^2.0.1": 232 | version "2.0.2" 233 | resolved "https://registry.yarnpkg.com/@webpack-cli/info/-/info-2.0.2.tgz#cc3fbf22efeb88ff62310cf885c5b09f44ae0fdd" 234 | integrity sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A== 235 | 236 | "@webpack-cli/serve@^2.0.3": 237 | version "2.0.5" 238 | resolved "https://registry.yarnpkg.com/@webpack-cli/serve/-/serve-2.0.5.tgz#325db42395cd49fe6c14057f9a900e427df8810e" 239 | integrity sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ== 240 | 241 | "@xtuc/ieee754@^1.2.0": 242 | version "1.2.0" 243 | resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" 244 | integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== 245 | 246 | "@xtuc/long@4.2.2": 247 | version "4.2.2" 248 | resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" 249 | integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== 250 | 251 | abab@^2.0.6: 252 | version "2.0.6" 253 | resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" 254 | integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== 255 | 256 | accepts@~1.3.4: 257 | version "1.3.8" 258 | resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" 259 | integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== 260 | dependencies: 261 | mime-types "~2.1.34" 262 | negotiator "0.6.3" 263 | 264 | acorn-import-assertions@^1.7.6: 265 | version "1.9.0" 266 | resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" 267 | integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== 268 | 269 | acorn@^8.7.1, acorn@^8.8.2: 270 | version "8.12.1" 271 | resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.12.1.tgz#71616bdccbe25e27a54439e0046e89ca76df2248" 272 | integrity sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg== 273 | 274 | ajv-keywords@^3.5.2: 275 | version "3.5.2" 276 | resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" 277 | integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== 278 | 279 | ajv@^6.12.5: 280 | version "6.12.6" 281 | resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" 282 | integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== 283 | dependencies: 284 | fast-deep-equal "^3.1.1" 285 | fast-json-stable-stringify "^2.0.0" 286 | json-schema-traverse "^0.4.1" 287 | uri-js "^4.2.2" 288 | 289 | ansi-colors@4.1.1: 290 | version "4.1.1" 291 | resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" 292 | integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== 293 | 294 | ansi-regex@^5.0.1: 295 | version "5.0.1" 296 | resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" 297 | integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== 298 | 299 | ansi-styles@^4.0.0, ansi-styles@^4.1.0: 300 | version "4.3.0" 301 | resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" 302 | integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== 303 | dependencies: 304 | color-convert "^2.0.1" 305 | 306 | anymatch@~3.1.2: 307 | version "3.1.3" 308 | resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" 309 | integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== 310 | dependencies: 311 | normalize-path "^3.0.0" 312 | picomatch "^2.0.4" 313 | 314 | argparse@^2.0.1: 315 | version "2.0.1" 316 | resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" 317 | integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== 318 | 319 | balanced-match@^1.0.0: 320 | version "1.0.2" 321 | resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" 322 | integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== 323 | 324 | base64id@2.0.0, base64id@~2.0.0: 325 | version "2.0.0" 326 | resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" 327 | integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== 328 | 329 | binary-extensions@^2.0.0: 330 | version "2.3.0" 331 | resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" 332 | integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== 333 | 334 | body-parser@^1.19.0: 335 | version "1.20.2" 336 | resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd" 337 | integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA== 338 | dependencies: 339 | bytes "3.1.2" 340 | content-type "~1.0.5" 341 | debug "2.6.9" 342 | depd "2.0.0" 343 | destroy "1.2.0" 344 | http-errors "2.0.0" 345 | iconv-lite "0.4.24" 346 | on-finished "2.4.1" 347 | qs "6.11.0" 348 | raw-body "2.5.2" 349 | type-is "~1.6.18" 350 | unpipe "1.0.0" 351 | 352 | brace-expansion@^1.1.7: 353 | version "1.1.11" 354 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" 355 | integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== 356 | dependencies: 357 | balanced-match "^1.0.0" 358 | concat-map "0.0.1" 359 | 360 | brace-expansion@^2.0.1: 361 | version "2.0.1" 362 | resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" 363 | integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== 364 | dependencies: 365 | balanced-match "^1.0.0" 366 | 367 | braces@^3.0.2, braces@~3.0.2: 368 | version "3.0.3" 369 | resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" 370 | integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== 371 | dependencies: 372 | fill-range "^7.1.1" 373 | 374 | browser-stdout@1.3.1: 375 | version "1.3.1" 376 | resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" 377 | integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== 378 | 379 | browserslist@^4.14.5: 380 | version "4.23.3" 381 | resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.3.tgz#debb029d3c93ebc97ffbc8d9cbb03403e227c800" 382 | integrity sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA== 383 | dependencies: 384 | caniuse-lite "^1.0.30001646" 385 | electron-to-chromium "^1.5.4" 386 | node-releases "^2.0.18" 387 | update-browserslist-db "^1.1.0" 388 | 389 | buffer-from@^1.0.0: 390 | version "1.1.2" 391 | resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" 392 | integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== 393 | 394 | bytes@3.1.2: 395 | version "3.1.2" 396 | resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" 397 | integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== 398 | 399 | call-bind@^1.0.7: 400 | version "1.0.7" 401 | resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" 402 | integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== 403 | dependencies: 404 | es-define-property "^1.0.0" 405 | es-errors "^1.3.0" 406 | function-bind "^1.1.2" 407 | get-intrinsic "^1.2.4" 408 | set-function-length "^1.2.1" 409 | 410 | camelcase@^6.0.0: 411 | version "6.3.0" 412 | resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" 413 | integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== 414 | 415 | caniuse-lite@^1.0.30001646: 416 | version "1.0.30001655" 417 | resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001655.tgz#0ce881f5a19a2dcfda2ecd927df4d5c1684b982f" 418 | integrity sha512-jRGVy3iSGO5Uutn2owlb5gR6qsGngTw9ZTb4ali9f3glshcNmJ2noam4Mo9zia5P9Dk3jNNydy7vQjuE5dQmfg== 419 | 420 | chalk@^4.1.0: 421 | version "4.1.2" 422 | resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" 423 | integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== 424 | dependencies: 425 | ansi-styles "^4.1.0" 426 | supports-color "^7.1.0" 427 | 428 | chokidar@3.5.3: 429 | version "3.5.3" 430 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" 431 | integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== 432 | dependencies: 433 | anymatch "~3.1.2" 434 | braces "~3.0.2" 435 | glob-parent "~5.1.2" 436 | is-binary-path "~2.1.0" 437 | is-glob "~4.0.1" 438 | normalize-path "~3.0.0" 439 | readdirp "~3.6.0" 440 | optionalDependencies: 441 | fsevents "~2.3.2" 442 | 443 | chokidar@^3.5.1: 444 | version "3.6.0" 445 | resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" 446 | integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== 447 | dependencies: 448 | anymatch "~3.1.2" 449 | braces "~3.0.2" 450 | glob-parent "~5.1.2" 451 | is-binary-path "~2.1.0" 452 | is-glob "~4.0.1" 453 | normalize-path "~3.0.0" 454 | readdirp "~3.6.0" 455 | optionalDependencies: 456 | fsevents "~2.3.2" 457 | 458 | chrome-trace-event@^1.0.2: 459 | version "1.0.4" 460 | resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" 461 | integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== 462 | 463 | cliui@^7.0.2: 464 | version "7.0.4" 465 | resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" 466 | integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== 467 | dependencies: 468 | string-width "^4.2.0" 469 | strip-ansi "^6.0.0" 470 | wrap-ansi "^7.0.0" 471 | 472 | clone-deep@^4.0.1: 473 | version "4.0.1" 474 | resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" 475 | integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== 476 | dependencies: 477 | is-plain-object "^2.0.4" 478 | kind-of "^6.0.2" 479 | shallow-clone "^3.0.0" 480 | 481 | color-convert@^2.0.1: 482 | version "2.0.1" 483 | resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" 484 | integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== 485 | dependencies: 486 | color-name "~1.1.4" 487 | 488 | color-name@~1.1.4: 489 | version "1.1.4" 490 | resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" 491 | integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== 492 | 493 | colorette@^2.0.14: 494 | version "2.0.20" 495 | resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" 496 | integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== 497 | 498 | commander@^10.0.1: 499 | version "10.0.1" 500 | resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06" 501 | integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug== 502 | 503 | commander@^2.20.0: 504 | version "2.20.3" 505 | resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" 506 | integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== 507 | 508 | concat-map@0.0.1: 509 | version "0.0.1" 510 | resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" 511 | integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== 512 | 513 | connect@^3.7.0: 514 | version "3.7.0" 515 | resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" 516 | integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== 517 | dependencies: 518 | debug "2.6.9" 519 | finalhandler "1.1.2" 520 | parseurl "~1.3.3" 521 | utils-merge "1.0.1" 522 | 523 | content-type@~1.0.5: 524 | version "1.0.5" 525 | resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" 526 | integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== 527 | 528 | cookie@~0.4.1: 529 | version "0.4.2" 530 | resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" 531 | integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== 532 | 533 | cors@~2.8.5: 534 | version "2.8.5" 535 | resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" 536 | integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== 537 | dependencies: 538 | object-assign "^4" 539 | vary "^1" 540 | 541 | cross-spawn@^7.0.3: 542 | version "7.0.3" 543 | resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" 544 | integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== 545 | dependencies: 546 | path-key "^3.1.0" 547 | shebang-command "^2.0.0" 548 | which "^2.0.1" 549 | 550 | custom-event@~1.0.0: 551 | version "1.0.1" 552 | resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" 553 | integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== 554 | 555 | date-format@^4.0.14: 556 | version "4.0.14" 557 | resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" 558 | integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== 559 | 560 | debug@2.6.9: 561 | version "2.6.9" 562 | resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" 563 | integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== 564 | dependencies: 565 | ms "2.0.0" 566 | 567 | debug@4.3.4: 568 | version "4.3.4" 569 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" 570 | integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== 571 | dependencies: 572 | ms "2.1.2" 573 | 574 | debug@^4.3.4, debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: 575 | version "4.3.6" 576 | resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.6.tgz#2ab2c38fbaffebf8aa95fdfe6d88438c7a13c52b" 577 | integrity sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg== 578 | dependencies: 579 | ms "2.1.2" 580 | 581 | decamelize@^4.0.0: 582 | version "4.0.0" 583 | resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" 584 | integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== 585 | 586 | define-data-property@^1.1.4: 587 | version "1.1.4" 588 | resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" 589 | integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== 590 | dependencies: 591 | es-define-property "^1.0.0" 592 | es-errors "^1.3.0" 593 | gopd "^1.0.1" 594 | 595 | depd@2.0.0: 596 | version "2.0.0" 597 | resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" 598 | integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== 599 | 600 | destroy@1.2.0: 601 | version "1.2.0" 602 | resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" 603 | integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== 604 | 605 | di@^0.0.1: 606 | version "0.0.1" 607 | resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" 608 | integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA== 609 | 610 | diff@5.0.0: 611 | version "5.0.0" 612 | resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" 613 | integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== 614 | 615 | dom-serialize@^2.2.1: 616 | version "2.2.1" 617 | resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" 618 | integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== 619 | dependencies: 620 | custom-event "~1.0.0" 621 | ent "~2.2.0" 622 | extend "^3.0.0" 623 | void-elements "^2.0.0" 624 | 625 | ee-first@1.1.1: 626 | version "1.1.1" 627 | resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" 628 | integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== 629 | 630 | electron-to-chromium@^1.5.4: 631 | version "1.5.13" 632 | resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.13.tgz#1abf0410c5344b2b829b7247e031f02810d442e6" 633 | integrity sha512-lbBcvtIJ4J6sS4tb5TLp1b4LyfCdMkwStzXPyAgVgTRAsep4bvrAGaBOP7ZJtQMNJpSQ9SqG4brWOroNaQtm7Q== 634 | 635 | emoji-regex@^8.0.0: 636 | version "8.0.0" 637 | resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" 638 | integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== 639 | 640 | encodeurl@~1.0.2: 641 | version "1.0.2" 642 | resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" 643 | integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== 644 | 645 | engine.io-parser@~5.2.1: 646 | version "5.2.3" 647 | resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" 648 | integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== 649 | 650 | engine.io@~6.5.2: 651 | version "6.5.5" 652 | resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.5.5.tgz#430b80d8840caab91a50e9e23cb551455195fc93" 653 | integrity sha512-C5Pn8Wk+1vKBoHghJODM63yk8MvrO9EWZUfkAt5HAqIgPE4/8FF0PEGHXtEd40l223+cE5ABWuPzm38PHFXfMA== 654 | dependencies: 655 | "@types/cookie" "^0.4.1" 656 | "@types/cors" "^2.8.12" 657 | "@types/node" ">=10.0.0" 658 | accepts "~1.3.4" 659 | base64id "2.0.0" 660 | cookie "~0.4.1" 661 | cors "~2.8.5" 662 | debug "~4.3.1" 663 | engine.io-parser "~5.2.1" 664 | ws "~8.17.1" 665 | 666 | enhanced-resolve@^5.13.0: 667 | version "5.17.1" 668 | resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz#67bfbbcc2f81d511be77d686a90267ef7f898a15" 669 | integrity sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg== 670 | dependencies: 671 | graceful-fs "^4.2.4" 672 | tapable "^2.2.0" 673 | 674 | ent@~2.2.0: 675 | version "2.2.1" 676 | resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.1.tgz#68dc99a002f115792c26239baedaaea9e70c0ca2" 677 | integrity sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A== 678 | dependencies: 679 | punycode "^1.4.1" 680 | 681 | envinfo@^7.7.3: 682 | version "7.13.0" 683 | resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.13.0.tgz#81fbb81e5da35d74e814941aeab7c325a606fb31" 684 | integrity sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q== 685 | 686 | es-define-property@^1.0.0: 687 | version "1.0.0" 688 | resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" 689 | integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== 690 | dependencies: 691 | get-intrinsic "^1.2.4" 692 | 693 | es-errors@^1.3.0: 694 | version "1.3.0" 695 | resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" 696 | integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== 697 | 698 | es-module-lexer@^1.2.1: 699 | version "1.5.4" 700 | resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.4.tgz#a8efec3a3da991e60efa6b633a7cad6ab8d26b78" 701 | integrity sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw== 702 | 703 | escalade@^3.1.1, escalade@^3.1.2: 704 | version "3.2.0" 705 | resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" 706 | integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== 707 | 708 | escape-html@~1.0.3: 709 | version "1.0.3" 710 | resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" 711 | integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== 712 | 713 | escape-string-regexp@4.0.0: 714 | version "4.0.0" 715 | resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" 716 | integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== 717 | 718 | eslint-scope@5.1.1: 719 | version "5.1.1" 720 | resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" 721 | integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== 722 | dependencies: 723 | esrecurse "^4.3.0" 724 | estraverse "^4.1.1" 725 | 726 | esrecurse@^4.3.0: 727 | version "4.3.0" 728 | resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" 729 | integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== 730 | dependencies: 731 | estraverse "^5.2.0" 732 | 733 | estraverse@^4.1.1: 734 | version "4.3.0" 735 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" 736 | integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== 737 | 738 | estraverse@^5.2.0: 739 | version "5.3.0" 740 | resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" 741 | integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== 742 | 743 | eventemitter3@^4.0.0: 744 | version "4.0.7" 745 | resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" 746 | integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== 747 | 748 | events@^3.2.0: 749 | version "3.3.0" 750 | resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" 751 | integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== 752 | 753 | extend@^3.0.0: 754 | version "3.0.2" 755 | resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" 756 | integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== 757 | 758 | fast-deep-equal@^3.1.1: 759 | version "3.1.3" 760 | resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" 761 | integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== 762 | 763 | fast-json-stable-stringify@^2.0.0: 764 | version "2.1.0" 765 | resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" 766 | integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== 767 | 768 | fastest-levenshtein@^1.0.12: 769 | version "1.0.16" 770 | resolved "https://registry.yarnpkg.com/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5" 771 | integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg== 772 | 773 | fill-range@^7.1.1: 774 | version "7.1.1" 775 | resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" 776 | integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== 777 | dependencies: 778 | to-regex-range "^5.0.1" 779 | 780 | finalhandler@1.1.2: 781 | version "1.1.2" 782 | resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" 783 | integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== 784 | dependencies: 785 | debug "2.6.9" 786 | encodeurl "~1.0.2" 787 | escape-html "~1.0.3" 788 | on-finished "~2.3.0" 789 | parseurl "~1.3.3" 790 | statuses "~1.5.0" 791 | unpipe "~1.0.0" 792 | 793 | find-up@5.0.0: 794 | version "5.0.0" 795 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" 796 | integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== 797 | dependencies: 798 | locate-path "^6.0.0" 799 | path-exists "^4.0.0" 800 | 801 | find-up@^4.0.0: 802 | version "4.1.0" 803 | resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" 804 | integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== 805 | dependencies: 806 | locate-path "^5.0.0" 807 | path-exists "^4.0.0" 808 | 809 | flat@^5.0.2: 810 | version "5.0.2" 811 | resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" 812 | integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== 813 | 814 | flatted@^3.2.7: 815 | version "3.3.1" 816 | resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" 817 | integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw== 818 | 819 | follow-redirects@^1.0.0: 820 | version "1.15.6" 821 | resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.6.tgz#7f815c0cda4249c74ff09e95ef97c23b5fd0399b" 822 | integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA== 823 | 824 | format-util@^1.0.5: 825 | version "1.0.5" 826 | resolved "https://registry.yarnpkg.com/format-util/-/format-util-1.0.5.tgz#1ffb450c8a03e7bccffe40643180918cc297d271" 827 | integrity sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg== 828 | 829 | fs-extra@^8.1.0: 830 | version "8.1.0" 831 | resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" 832 | integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== 833 | dependencies: 834 | graceful-fs "^4.2.0" 835 | jsonfile "^4.0.0" 836 | universalify "^0.1.0" 837 | 838 | fs.realpath@^1.0.0: 839 | version "1.0.0" 840 | resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" 841 | integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== 842 | 843 | fsevents@~2.3.2: 844 | version "2.3.3" 845 | resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" 846 | integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== 847 | 848 | function-bind@^1.1.2: 849 | version "1.1.2" 850 | resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" 851 | integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== 852 | 853 | get-caller-file@^2.0.5: 854 | version "2.0.5" 855 | resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" 856 | integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== 857 | 858 | get-intrinsic@^1.1.3, get-intrinsic@^1.2.4: 859 | version "1.2.4" 860 | resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" 861 | integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== 862 | dependencies: 863 | es-errors "^1.3.0" 864 | function-bind "^1.1.2" 865 | has-proto "^1.0.1" 866 | has-symbols "^1.0.3" 867 | hasown "^2.0.0" 868 | 869 | glob-parent@~5.1.2: 870 | version "5.1.2" 871 | resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" 872 | integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== 873 | dependencies: 874 | is-glob "^4.0.1" 875 | 876 | glob-to-regexp@^0.4.1: 877 | version "0.4.1" 878 | resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" 879 | integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== 880 | 881 | glob@7.2.0: 882 | version "7.2.0" 883 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" 884 | integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== 885 | dependencies: 886 | fs.realpath "^1.0.0" 887 | inflight "^1.0.4" 888 | inherits "2" 889 | minimatch "^3.0.4" 890 | once "^1.3.0" 891 | path-is-absolute "^1.0.0" 892 | 893 | glob@^7.1.3, glob@^7.1.7: 894 | version "7.2.3" 895 | resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" 896 | integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== 897 | dependencies: 898 | fs.realpath "^1.0.0" 899 | inflight "^1.0.4" 900 | inherits "2" 901 | minimatch "^3.1.1" 902 | once "^1.3.0" 903 | path-is-absolute "^1.0.0" 904 | 905 | gopd@^1.0.1: 906 | version "1.0.1" 907 | resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c" 908 | integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA== 909 | dependencies: 910 | get-intrinsic "^1.1.3" 911 | 912 | graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.10, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: 913 | version "4.2.11" 914 | resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" 915 | integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== 916 | 917 | has-flag@^4.0.0: 918 | version "4.0.0" 919 | resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" 920 | integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== 921 | 922 | has-property-descriptors@^1.0.2: 923 | version "1.0.2" 924 | resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" 925 | integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== 926 | dependencies: 927 | es-define-property "^1.0.0" 928 | 929 | has-proto@^1.0.1: 930 | version "1.0.3" 931 | resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd" 932 | integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q== 933 | 934 | has-symbols@^1.0.3: 935 | version "1.0.3" 936 | resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" 937 | integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== 938 | 939 | hasown@^2.0.0, hasown@^2.0.2: 940 | version "2.0.2" 941 | resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" 942 | integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== 943 | dependencies: 944 | function-bind "^1.1.2" 945 | 946 | he@1.2.0: 947 | version "1.2.0" 948 | resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" 949 | integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== 950 | 951 | http-errors@2.0.0: 952 | version "2.0.0" 953 | resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" 954 | integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== 955 | dependencies: 956 | depd "2.0.0" 957 | inherits "2.0.4" 958 | setprototypeof "1.2.0" 959 | statuses "2.0.1" 960 | toidentifier "1.0.1" 961 | 962 | http-proxy@^1.18.1: 963 | version "1.18.1" 964 | resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" 965 | integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== 966 | dependencies: 967 | eventemitter3 "^4.0.0" 968 | follow-redirects "^1.0.0" 969 | requires-port "^1.0.0" 970 | 971 | iconv-lite@0.4.24: 972 | version "0.4.24" 973 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" 974 | integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== 975 | dependencies: 976 | safer-buffer ">= 2.1.2 < 3" 977 | 978 | iconv-lite@^0.6.3: 979 | version "0.6.3" 980 | resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" 981 | integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== 982 | dependencies: 983 | safer-buffer ">= 2.1.2 < 3.0.0" 984 | 985 | import-local@^3.0.2: 986 | version "3.2.0" 987 | resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" 988 | integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== 989 | dependencies: 990 | pkg-dir "^4.2.0" 991 | resolve-cwd "^3.0.0" 992 | 993 | inflight@^1.0.4: 994 | version "1.0.6" 995 | resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" 996 | integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== 997 | dependencies: 998 | once "^1.3.0" 999 | wrappy "1" 1000 | 1001 | inherits@2, inherits@2.0.4: 1002 | version "2.0.4" 1003 | resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" 1004 | integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== 1005 | 1006 | interpret@^3.1.1: 1007 | version "3.1.1" 1008 | resolved "https://registry.yarnpkg.com/interpret/-/interpret-3.1.1.tgz#5be0ceed67ca79c6c4bc5cf0d7ee843dcea110c4" 1009 | integrity sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ== 1010 | 1011 | is-binary-path@~2.1.0: 1012 | version "2.1.0" 1013 | resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" 1014 | integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== 1015 | dependencies: 1016 | binary-extensions "^2.0.0" 1017 | 1018 | is-core-module@^2.13.0: 1019 | version "2.15.1" 1020 | resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.15.1.tgz#a7363a25bee942fefab0de13bf6aa372c82dcc37" 1021 | integrity sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ== 1022 | dependencies: 1023 | hasown "^2.0.2" 1024 | 1025 | is-extglob@^2.1.1: 1026 | version "2.1.1" 1027 | resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" 1028 | integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== 1029 | 1030 | is-fullwidth-code-point@^3.0.0: 1031 | version "3.0.0" 1032 | resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" 1033 | integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== 1034 | 1035 | is-glob@^4.0.1, is-glob@~4.0.1: 1036 | version "4.0.3" 1037 | resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" 1038 | integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== 1039 | dependencies: 1040 | is-extglob "^2.1.1" 1041 | 1042 | is-number@^7.0.0: 1043 | version "7.0.0" 1044 | resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" 1045 | integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== 1046 | 1047 | is-plain-obj@^2.1.0: 1048 | version "2.1.0" 1049 | resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" 1050 | integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== 1051 | 1052 | is-plain-object@^2.0.4: 1053 | version "2.0.4" 1054 | resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" 1055 | integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== 1056 | dependencies: 1057 | isobject "^3.0.1" 1058 | 1059 | is-unicode-supported@^0.1.0: 1060 | version "0.1.0" 1061 | resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" 1062 | integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== 1063 | 1064 | isbinaryfile@^4.0.8: 1065 | version "4.0.10" 1066 | resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" 1067 | integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== 1068 | 1069 | isexe@^2.0.0: 1070 | version "2.0.0" 1071 | resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" 1072 | integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== 1073 | 1074 | isobject@^3.0.1: 1075 | version "3.0.1" 1076 | resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" 1077 | integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== 1078 | 1079 | jest-worker@^27.4.5: 1080 | version "27.5.1" 1081 | resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" 1082 | integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== 1083 | dependencies: 1084 | "@types/node" "*" 1085 | merge-stream "^2.0.0" 1086 | supports-color "^8.0.0" 1087 | 1088 | js-yaml@4.1.0: 1089 | version "4.1.0" 1090 | resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" 1091 | integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== 1092 | dependencies: 1093 | argparse "^2.0.1" 1094 | 1095 | json-parse-even-better-errors@^2.3.1: 1096 | version "2.3.1" 1097 | resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" 1098 | integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== 1099 | 1100 | json-schema-traverse@^0.4.1: 1101 | version "0.4.1" 1102 | resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" 1103 | integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== 1104 | 1105 | jsonfile@^4.0.0: 1106 | version "4.0.0" 1107 | resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" 1108 | integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== 1109 | optionalDependencies: 1110 | graceful-fs "^4.1.6" 1111 | 1112 | karma-chrome-launcher@3.2.0: 1113 | version "3.2.0" 1114 | resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz#eb9c95024f2d6dfbb3748d3415ac9b381906b9a9" 1115 | integrity sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q== 1116 | dependencies: 1117 | which "^1.2.1" 1118 | 1119 | karma-mocha@2.0.1: 1120 | version "2.0.1" 1121 | resolved "https://registry.yarnpkg.com/karma-mocha/-/karma-mocha-2.0.1.tgz#4b0254a18dfee71bdbe6188d9a6861bf86b0cd7d" 1122 | integrity sha512-Tzd5HBjm8his2OA4bouAsATYEpZrp9vC7z5E5j4C5Of5Rrs1jY67RAwXNcVmd/Bnk1wgvQRou0zGVLey44G4tQ== 1123 | dependencies: 1124 | minimist "^1.2.3" 1125 | 1126 | karma-sourcemap-loader@0.4.0: 1127 | version "0.4.0" 1128 | resolved "https://registry.yarnpkg.com/karma-sourcemap-loader/-/karma-sourcemap-loader-0.4.0.tgz#b01d73f8f688f533bcc8f5d273d43458e13b5488" 1129 | integrity sha512-xCRL3/pmhAYF3I6qOrcn0uhbQevitc2DERMPH82FMnG+4WReoGcGFZb1pURf2a5apyrOHRdvD+O6K7NljqKHyA== 1130 | dependencies: 1131 | graceful-fs "^4.2.10" 1132 | 1133 | karma-webpack@5.0.0: 1134 | version "5.0.0" 1135 | resolved "https://registry.yarnpkg.com/karma-webpack/-/karma-webpack-5.0.0.tgz#2a2c7b80163fe7ffd1010f83f5507f95ef39f840" 1136 | integrity sha512-+54i/cd3/piZuP3dr54+NcFeKOPnys5QeM1IY+0SPASwrtHsliXUiCL50iW+K9WWA7RvamC4macvvQ86l3KtaA== 1137 | dependencies: 1138 | glob "^7.1.3" 1139 | minimatch "^3.0.4" 1140 | webpack-merge "^4.1.5" 1141 | 1142 | karma@6.4.2: 1143 | version "6.4.2" 1144 | resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.2.tgz#a983f874cee6f35990c4b2dcc3d274653714de8e" 1145 | integrity sha512-C6SU/53LB31BEgRg+omznBEMY4SjHU3ricV6zBcAe1EeILKkeScr+fZXtaI5WyDbkVowJxxAI6h73NcFPmXolQ== 1146 | dependencies: 1147 | "@colors/colors" "1.5.0" 1148 | body-parser "^1.19.0" 1149 | braces "^3.0.2" 1150 | chokidar "^3.5.1" 1151 | connect "^3.7.0" 1152 | di "^0.0.1" 1153 | dom-serialize "^2.2.1" 1154 | glob "^7.1.7" 1155 | graceful-fs "^4.2.6" 1156 | http-proxy "^1.18.1" 1157 | isbinaryfile "^4.0.8" 1158 | lodash "^4.17.21" 1159 | log4js "^6.4.1" 1160 | mime "^2.5.2" 1161 | minimatch "^3.0.4" 1162 | mkdirp "^0.5.5" 1163 | qjobs "^1.2.0" 1164 | range-parser "^1.2.1" 1165 | rimraf "^3.0.2" 1166 | socket.io "^4.4.1" 1167 | source-map "^0.6.1" 1168 | tmp "^0.2.1" 1169 | ua-parser-js "^0.7.30" 1170 | yargs "^16.1.1" 1171 | 1172 | kind-of@^6.0.2: 1173 | version "6.0.3" 1174 | resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" 1175 | integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== 1176 | 1177 | loader-runner@^4.2.0: 1178 | version "4.3.0" 1179 | resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" 1180 | integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== 1181 | 1182 | locate-path@^5.0.0: 1183 | version "5.0.0" 1184 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" 1185 | integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== 1186 | dependencies: 1187 | p-locate "^4.1.0" 1188 | 1189 | locate-path@^6.0.0: 1190 | version "6.0.0" 1191 | resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" 1192 | integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== 1193 | dependencies: 1194 | p-locate "^5.0.0" 1195 | 1196 | lodash@^4.17.15, lodash@^4.17.21: 1197 | version "4.17.21" 1198 | resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" 1199 | integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== 1200 | 1201 | log-symbols@4.1.0: 1202 | version "4.1.0" 1203 | resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" 1204 | integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== 1205 | dependencies: 1206 | chalk "^4.1.0" 1207 | is-unicode-supported "^0.1.0" 1208 | 1209 | log4js@^6.4.1: 1210 | version "6.9.1" 1211 | resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" 1212 | integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== 1213 | dependencies: 1214 | date-format "^4.0.14" 1215 | debug "^4.3.4" 1216 | flatted "^3.2.7" 1217 | rfdc "^1.3.0" 1218 | streamroller "^3.1.5" 1219 | 1220 | media-typer@0.3.0: 1221 | version "0.3.0" 1222 | resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" 1223 | integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== 1224 | 1225 | merge-stream@^2.0.0: 1226 | version "2.0.0" 1227 | resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" 1228 | integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== 1229 | 1230 | mime-db@1.52.0: 1231 | version "1.52.0" 1232 | resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" 1233 | integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== 1234 | 1235 | mime-types@^2.1.27, mime-types@~2.1.24, mime-types@~2.1.34: 1236 | version "2.1.35" 1237 | resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" 1238 | integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== 1239 | dependencies: 1240 | mime-db "1.52.0" 1241 | 1242 | mime@^2.5.2: 1243 | version "2.6.0" 1244 | resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" 1245 | integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== 1246 | 1247 | minimatch@5.0.1: 1248 | version "5.0.1" 1249 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.0.1.tgz#fb9022f7528125187c92bd9e9b6366be1cf3415b" 1250 | integrity sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g== 1251 | dependencies: 1252 | brace-expansion "^2.0.1" 1253 | 1254 | minimatch@^3.0.4, minimatch@^3.1.1: 1255 | version "3.1.2" 1256 | resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" 1257 | integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== 1258 | dependencies: 1259 | brace-expansion "^1.1.7" 1260 | 1261 | minimist@^1.2.3, minimist@^1.2.6: 1262 | version "1.2.8" 1263 | resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" 1264 | integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== 1265 | 1266 | mkdirp@^0.5.5: 1267 | version "0.5.6" 1268 | resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" 1269 | integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== 1270 | dependencies: 1271 | minimist "^1.2.6" 1272 | 1273 | mocha@10.2.0: 1274 | version "10.2.0" 1275 | resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.2.0.tgz#1fd4a7c32ba5ac372e03a17eef435bd00e5c68b8" 1276 | integrity sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg== 1277 | dependencies: 1278 | ansi-colors "4.1.1" 1279 | browser-stdout "1.3.1" 1280 | chokidar "3.5.3" 1281 | debug "4.3.4" 1282 | diff "5.0.0" 1283 | escape-string-regexp "4.0.0" 1284 | find-up "5.0.0" 1285 | glob "7.2.0" 1286 | he "1.2.0" 1287 | js-yaml "4.1.0" 1288 | log-symbols "4.1.0" 1289 | minimatch "5.0.1" 1290 | ms "2.1.3" 1291 | nanoid "3.3.3" 1292 | serialize-javascript "6.0.0" 1293 | strip-json-comments "3.1.1" 1294 | supports-color "8.1.1" 1295 | workerpool "6.2.1" 1296 | yargs "16.2.0" 1297 | yargs-parser "20.2.4" 1298 | yargs-unparser "2.0.0" 1299 | 1300 | ms@2.0.0: 1301 | version "2.0.0" 1302 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" 1303 | integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== 1304 | 1305 | ms@2.1.2: 1306 | version "2.1.2" 1307 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" 1308 | integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== 1309 | 1310 | ms@2.1.3: 1311 | version "2.1.3" 1312 | resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" 1313 | integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== 1314 | 1315 | nanoid@3.3.3: 1316 | version "3.3.3" 1317 | resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.3.tgz#fd8e8b7aa761fe807dba2d1b98fb7241bb724a25" 1318 | integrity sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w== 1319 | 1320 | negotiator@0.6.3: 1321 | version "0.6.3" 1322 | resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" 1323 | integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== 1324 | 1325 | neo-async@^2.6.2: 1326 | version "2.6.2" 1327 | resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" 1328 | integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== 1329 | 1330 | node-releases@^2.0.18: 1331 | version "2.0.18" 1332 | resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" 1333 | integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== 1334 | 1335 | normalize-path@^3.0.0, normalize-path@~3.0.0: 1336 | version "3.0.0" 1337 | resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" 1338 | integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== 1339 | 1340 | object-assign@^4: 1341 | version "4.1.1" 1342 | resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" 1343 | integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== 1344 | 1345 | object-inspect@^1.13.1: 1346 | version "1.13.2" 1347 | resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff" 1348 | integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g== 1349 | 1350 | on-finished@2.4.1: 1351 | version "2.4.1" 1352 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" 1353 | integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== 1354 | dependencies: 1355 | ee-first "1.1.1" 1356 | 1357 | on-finished@~2.3.0: 1358 | version "2.3.0" 1359 | resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" 1360 | integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== 1361 | dependencies: 1362 | ee-first "1.1.1" 1363 | 1364 | once@^1.3.0: 1365 | version "1.4.0" 1366 | resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" 1367 | integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== 1368 | dependencies: 1369 | wrappy "1" 1370 | 1371 | p-limit@^2.2.0: 1372 | version "2.3.0" 1373 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" 1374 | integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== 1375 | dependencies: 1376 | p-try "^2.0.0" 1377 | 1378 | p-limit@^3.0.2: 1379 | version "3.1.0" 1380 | resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" 1381 | integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== 1382 | dependencies: 1383 | yocto-queue "^0.1.0" 1384 | 1385 | p-locate@^4.1.0: 1386 | version "4.1.0" 1387 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" 1388 | integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== 1389 | dependencies: 1390 | p-limit "^2.2.0" 1391 | 1392 | p-locate@^5.0.0: 1393 | version "5.0.0" 1394 | resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" 1395 | integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== 1396 | dependencies: 1397 | p-limit "^3.0.2" 1398 | 1399 | p-try@^2.0.0: 1400 | version "2.2.0" 1401 | resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" 1402 | integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== 1403 | 1404 | parseurl@~1.3.3: 1405 | version "1.3.3" 1406 | resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" 1407 | integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== 1408 | 1409 | path-exists@^4.0.0: 1410 | version "4.0.0" 1411 | resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" 1412 | integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== 1413 | 1414 | path-is-absolute@^1.0.0: 1415 | version "1.0.1" 1416 | resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" 1417 | integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== 1418 | 1419 | path-key@^3.1.0: 1420 | version "3.1.1" 1421 | resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" 1422 | integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== 1423 | 1424 | path-parse@^1.0.7: 1425 | version "1.0.7" 1426 | resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" 1427 | integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== 1428 | 1429 | picocolors@^1.0.1: 1430 | version "1.0.1" 1431 | resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.1.tgz#a8ad579b571952f0e5d25892de5445bcfe25aaa1" 1432 | integrity sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew== 1433 | 1434 | picomatch@^2.0.4, picomatch@^2.2.1: 1435 | version "2.3.1" 1436 | resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" 1437 | integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== 1438 | 1439 | pkg-dir@^4.2.0: 1440 | version "4.2.0" 1441 | resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" 1442 | integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== 1443 | dependencies: 1444 | find-up "^4.0.0" 1445 | 1446 | punycode@^1.4.1: 1447 | version "1.4.1" 1448 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" 1449 | integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== 1450 | 1451 | punycode@^2.1.0: 1452 | version "2.3.1" 1453 | resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" 1454 | integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== 1455 | 1456 | qjobs@^1.2.0: 1457 | version "1.2.0" 1458 | resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" 1459 | integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== 1460 | 1461 | qs@6.11.0: 1462 | version "6.11.0" 1463 | resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.0.tgz#fd0d963446f7a65e1367e01abd85429453f0c37a" 1464 | integrity sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q== 1465 | dependencies: 1466 | side-channel "^1.0.4" 1467 | 1468 | randombytes@^2.1.0: 1469 | version "2.1.0" 1470 | resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" 1471 | integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== 1472 | dependencies: 1473 | safe-buffer "^5.1.0" 1474 | 1475 | range-parser@^1.2.1: 1476 | version "1.2.1" 1477 | resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" 1478 | integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== 1479 | 1480 | raw-body@2.5.2: 1481 | version "2.5.2" 1482 | resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" 1483 | integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== 1484 | dependencies: 1485 | bytes "3.1.2" 1486 | http-errors "2.0.0" 1487 | iconv-lite "0.4.24" 1488 | unpipe "1.0.0" 1489 | 1490 | readdirp@~3.6.0: 1491 | version "3.6.0" 1492 | resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" 1493 | integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== 1494 | dependencies: 1495 | picomatch "^2.2.1" 1496 | 1497 | rechoir@^0.8.0: 1498 | version "0.8.0" 1499 | resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.8.0.tgz#49f866e0d32146142da3ad8f0eff352b3215ff22" 1500 | integrity sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ== 1501 | dependencies: 1502 | resolve "^1.20.0" 1503 | 1504 | require-directory@^2.1.1: 1505 | version "2.1.1" 1506 | resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" 1507 | integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== 1508 | 1509 | requires-port@^1.0.0: 1510 | version "1.0.0" 1511 | resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" 1512 | integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== 1513 | 1514 | resolve-cwd@^3.0.0: 1515 | version "3.0.0" 1516 | resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" 1517 | integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== 1518 | dependencies: 1519 | resolve-from "^5.0.0" 1520 | 1521 | resolve-from@^5.0.0: 1522 | version "5.0.0" 1523 | resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" 1524 | integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== 1525 | 1526 | resolve@^1.20.0: 1527 | version "1.22.8" 1528 | resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.8.tgz#b6c87a9f2aa06dfab52e3d70ac8cde321fa5a48d" 1529 | integrity sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw== 1530 | dependencies: 1531 | is-core-module "^2.13.0" 1532 | path-parse "^1.0.7" 1533 | supports-preserve-symlinks-flag "^1.0.0" 1534 | 1535 | rfdc@^1.3.0: 1536 | version "1.4.1" 1537 | resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" 1538 | integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== 1539 | 1540 | rimraf@^3.0.2: 1541 | version "3.0.2" 1542 | resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" 1543 | integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== 1544 | dependencies: 1545 | glob "^7.1.3" 1546 | 1547 | safe-buffer@^5.1.0: 1548 | version "5.2.1" 1549 | resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" 1550 | integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== 1551 | 1552 | "safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0": 1553 | version "2.1.2" 1554 | resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" 1555 | integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== 1556 | 1557 | schema-utils@^3.1.1, schema-utils@^3.1.2: 1558 | version "3.3.0" 1559 | resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" 1560 | integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== 1561 | dependencies: 1562 | "@types/json-schema" "^7.0.8" 1563 | ajv "^6.12.5" 1564 | ajv-keywords "^3.5.2" 1565 | 1566 | serialize-javascript@6.0.0: 1567 | version "6.0.0" 1568 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" 1569 | integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== 1570 | dependencies: 1571 | randombytes "^2.1.0" 1572 | 1573 | serialize-javascript@^6.0.1: 1574 | version "6.0.2" 1575 | resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" 1576 | integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== 1577 | dependencies: 1578 | randombytes "^2.1.0" 1579 | 1580 | set-function-length@^1.2.1: 1581 | version "1.2.2" 1582 | resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" 1583 | integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== 1584 | dependencies: 1585 | define-data-property "^1.1.4" 1586 | es-errors "^1.3.0" 1587 | function-bind "^1.1.2" 1588 | get-intrinsic "^1.2.4" 1589 | gopd "^1.0.1" 1590 | has-property-descriptors "^1.0.2" 1591 | 1592 | setprototypeof@1.2.0: 1593 | version "1.2.0" 1594 | resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" 1595 | integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== 1596 | 1597 | shallow-clone@^3.0.0: 1598 | version "3.0.1" 1599 | resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" 1600 | integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== 1601 | dependencies: 1602 | kind-of "^6.0.2" 1603 | 1604 | shebang-command@^2.0.0: 1605 | version "2.0.0" 1606 | resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" 1607 | integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== 1608 | dependencies: 1609 | shebang-regex "^3.0.0" 1610 | 1611 | shebang-regex@^3.0.0: 1612 | version "3.0.0" 1613 | resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" 1614 | integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== 1615 | 1616 | side-channel@^1.0.4: 1617 | version "1.0.6" 1618 | resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2" 1619 | integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA== 1620 | dependencies: 1621 | call-bind "^1.0.7" 1622 | es-errors "^1.3.0" 1623 | get-intrinsic "^1.2.4" 1624 | object-inspect "^1.13.1" 1625 | 1626 | socket.io-adapter@~2.5.2: 1627 | version "2.5.5" 1628 | resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz#c7a1f9c703d7756844751b6ff9abfc1780664082" 1629 | integrity sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg== 1630 | dependencies: 1631 | debug "~4.3.4" 1632 | ws "~8.17.1" 1633 | 1634 | socket.io-parser@~4.2.4: 1635 | version "4.2.4" 1636 | resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" 1637 | integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== 1638 | dependencies: 1639 | "@socket.io/component-emitter" "~3.1.0" 1640 | debug "~4.3.1" 1641 | 1642 | socket.io@^4.4.1: 1643 | version "4.7.5" 1644 | resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.7.5.tgz#56eb2d976aef9d1445f373a62d781a41c7add8f8" 1645 | integrity sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA== 1646 | dependencies: 1647 | accepts "~1.3.4" 1648 | base64id "~2.0.0" 1649 | cors "~2.8.5" 1650 | debug "~4.3.2" 1651 | engine.io "~6.5.2" 1652 | socket.io-adapter "~2.5.2" 1653 | socket.io-parser "~4.2.4" 1654 | 1655 | source-map-js@^1.0.2: 1656 | version "1.2.0" 1657 | resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" 1658 | integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== 1659 | 1660 | source-map-loader@4.0.1: 1661 | version "4.0.1" 1662 | resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.1.tgz#72f00d05f5d1f90f80974eda781cbd7107c125f2" 1663 | integrity sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA== 1664 | dependencies: 1665 | abab "^2.0.6" 1666 | iconv-lite "^0.6.3" 1667 | source-map-js "^1.0.2" 1668 | 1669 | source-map-support@0.5.21, source-map-support@~0.5.20: 1670 | version "0.5.21" 1671 | resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" 1672 | integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== 1673 | dependencies: 1674 | buffer-from "^1.0.0" 1675 | source-map "^0.6.0" 1676 | 1677 | source-map@^0.6.0, source-map@^0.6.1: 1678 | version "0.6.1" 1679 | resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" 1680 | integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== 1681 | 1682 | statuses@2.0.1: 1683 | version "2.0.1" 1684 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" 1685 | integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== 1686 | 1687 | statuses@~1.5.0: 1688 | version "1.5.0" 1689 | resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" 1690 | integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== 1691 | 1692 | streamroller@^3.1.5: 1693 | version "3.1.5" 1694 | resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" 1695 | integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== 1696 | dependencies: 1697 | date-format "^4.0.14" 1698 | debug "^4.3.4" 1699 | fs-extra "^8.1.0" 1700 | 1701 | string-width@^4.1.0, string-width@^4.2.0: 1702 | version "4.2.3" 1703 | resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" 1704 | integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== 1705 | dependencies: 1706 | emoji-regex "^8.0.0" 1707 | is-fullwidth-code-point "^3.0.0" 1708 | strip-ansi "^6.0.1" 1709 | 1710 | strip-ansi@^6.0.0, strip-ansi@^6.0.1: 1711 | version "6.0.1" 1712 | resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" 1713 | integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== 1714 | dependencies: 1715 | ansi-regex "^5.0.1" 1716 | 1717 | strip-json-comments@3.1.1: 1718 | version "3.1.1" 1719 | resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" 1720 | integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== 1721 | 1722 | supports-color@8.1.1, supports-color@^8.0.0: 1723 | version "8.1.1" 1724 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" 1725 | integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== 1726 | dependencies: 1727 | has-flag "^4.0.0" 1728 | 1729 | supports-color@^7.1.0: 1730 | version "7.2.0" 1731 | resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" 1732 | integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== 1733 | dependencies: 1734 | has-flag "^4.0.0" 1735 | 1736 | supports-preserve-symlinks-flag@^1.0.0: 1737 | version "1.0.0" 1738 | resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" 1739 | integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== 1740 | 1741 | tapable@^2.1.1, tapable@^2.2.0: 1742 | version "2.2.1" 1743 | resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0" 1744 | integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ== 1745 | 1746 | terser-webpack-plugin@^5.3.7: 1747 | version "5.3.10" 1748 | resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz#904f4c9193c6fd2a03f693a2150c62a92f40d199" 1749 | integrity sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w== 1750 | dependencies: 1751 | "@jridgewell/trace-mapping" "^0.3.20" 1752 | jest-worker "^27.4.5" 1753 | schema-utils "^3.1.1" 1754 | serialize-javascript "^6.0.1" 1755 | terser "^5.26.0" 1756 | 1757 | terser@^5.26.0: 1758 | version "5.31.6" 1759 | resolved "https://registry.yarnpkg.com/terser/-/terser-5.31.6.tgz#c63858a0f0703988d0266a82fcbf2d7ba76422b1" 1760 | integrity sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg== 1761 | dependencies: 1762 | "@jridgewell/source-map" "^0.3.3" 1763 | acorn "^8.8.2" 1764 | commander "^2.20.0" 1765 | source-map-support "~0.5.20" 1766 | 1767 | tmp@^0.2.1: 1768 | version "0.2.3" 1769 | resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" 1770 | integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== 1771 | 1772 | to-regex-range@^5.0.1: 1773 | version "5.0.1" 1774 | resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" 1775 | integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== 1776 | dependencies: 1777 | is-number "^7.0.0" 1778 | 1779 | toidentifier@1.0.1: 1780 | version "1.0.1" 1781 | resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" 1782 | integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== 1783 | 1784 | type-is@~1.6.18: 1785 | version "1.6.18" 1786 | resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" 1787 | integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== 1788 | dependencies: 1789 | media-typer "0.3.0" 1790 | mime-types "~2.1.24" 1791 | 1792 | typescript@5.0.4: 1793 | version "5.0.4" 1794 | resolved "https://registry.yarnpkg.com/typescript/-/typescript-5.0.4.tgz#b217fd20119bd61a94d4011274e0ab369058da3b" 1795 | integrity sha512-cW9T5W9xY37cc+jfEnaUvX91foxtHkza3Nw3wkoF4sSlKn0MONdkdEndig/qPBWXNkmplh3NzayQzCiHM4/hqw== 1796 | 1797 | ua-parser-js@^0.7.30: 1798 | version "0.7.38" 1799 | resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.38.tgz#f497d8a4dc1fec6e854e5caa4b2f9913422ef054" 1800 | integrity sha512-fYmIy7fKTSFAhG3fuPlubeGaMoAd6r0rSnfEsO5nEY55i26KSLt9EH7PLQiiqPUhNqYIJvSkTy1oArIcXAbPbA== 1801 | 1802 | undici-types@~6.19.2: 1803 | version "6.19.8" 1804 | resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-6.19.8.tgz#35111c9d1437ab83a7cdc0abae2f26d88eda0a02" 1805 | integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw== 1806 | 1807 | universalify@^0.1.0: 1808 | version "0.1.2" 1809 | resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" 1810 | integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== 1811 | 1812 | unpipe@1.0.0, unpipe@~1.0.0: 1813 | version "1.0.0" 1814 | resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" 1815 | integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== 1816 | 1817 | update-browserslist-db@^1.1.0: 1818 | version "1.1.0" 1819 | resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz#7ca61c0d8650766090728046e416a8cde682859e" 1820 | integrity sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ== 1821 | dependencies: 1822 | escalade "^3.1.2" 1823 | picocolors "^1.0.1" 1824 | 1825 | uri-js@^4.2.2: 1826 | version "4.4.1" 1827 | resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" 1828 | integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== 1829 | dependencies: 1830 | punycode "^2.1.0" 1831 | 1832 | utils-merge@1.0.1: 1833 | version "1.0.1" 1834 | resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" 1835 | integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== 1836 | 1837 | vary@^1: 1838 | version "1.1.2" 1839 | resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" 1840 | integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== 1841 | 1842 | void-elements@^2.0.0: 1843 | version "2.0.1" 1844 | resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" 1845 | integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== 1846 | 1847 | watchpack@^2.4.0: 1848 | version "2.4.2" 1849 | resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.2.tgz#2feeaed67412e7c33184e5a79ca738fbd38564da" 1850 | integrity sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw== 1851 | dependencies: 1852 | glob-to-regexp "^0.4.1" 1853 | graceful-fs "^4.1.2" 1854 | 1855 | webpack-cli@5.1.0: 1856 | version "5.1.0" 1857 | resolved "https://registry.yarnpkg.com/webpack-cli/-/webpack-cli-5.1.0.tgz#abc4b1f44b50250f2632d8b8b536cfe2f6257891" 1858 | integrity sha512-a7KRJnCxejFoDpYTOwzm5o21ZXMaNqtRlvS183XzGDUPRdVEzJNImcQokqYZ8BNTnk9DkKiuWxw75+DCCoZ26w== 1859 | dependencies: 1860 | "@discoveryjs/json-ext" "^0.5.0" 1861 | "@webpack-cli/configtest" "^2.1.0" 1862 | "@webpack-cli/info" "^2.0.1" 1863 | "@webpack-cli/serve" "^2.0.3" 1864 | colorette "^2.0.14" 1865 | commander "^10.0.1" 1866 | cross-spawn "^7.0.3" 1867 | envinfo "^7.7.3" 1868 | fastest-levenshtein "^1.0.12" 1869 | import-local "^3.0.2" 1870 | interpret "^3.1.1" 1871 | rechoir "^0.8.0" 1872 | webpack-merge "^5.7.3" 1873 | 1874 | webpack-merge@^4.1.5: 1875 | version "4.2.2" 1876 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-4.2.2.tgz#a27c52ea783d1398afd2087f547d7b9d2f43634d" 1877 | integrity sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g== 1878 | dependencies: 1879 | lodash "^4.17.15" 1880 | 1881 | webpack-merge@^5.7.3: 1882 | version "5.10.0" 1883 | resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.10.0.tgz#a3ad5d773241e9c682803abf628d4cd62b8a4177" 1884 | integrity sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA== 1885 | dependencies: 1886 | clone-deep "^4.0.1" 1887 | flat "^5.0.2" 1888 | wildcard "^2.0.0" 1889 | 1890 | webpack-sources@^3.2.3: 1891 | version "3.2.3" 1892 | resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" 1893 | integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== 1894 | 1895 | webpack@5.82.0: 1896 | version "5.82.0" 1897 | resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.82.0.tgz#3c0d074dec79401db026b4ba0fb23d6333f88e7d" 1898 | integrity sha512-iGNA2fHhnDcV1bONdUu554eZx+XeldsaeQ8T67H6KKHl2nUSwX8Zm7cmzOA46ox/X1ARxf7Bjv8wQ/HsB5fxBg== 1899 | dependencies: 1900 | "@types/eslint-scope" "^3.7.3" 1901 | "@types/estree" "^1.0.0" 1902 | "@webassemblyjs/ast" "^1.11.5" 1903 | "@webassemblyjs/wasm-edit" "^1.11.5" 1904 | "@webassemblyjs/wasm-parser" "^1.11.5" 1905 | acorn "^8.7.1" 1906 | acorn-import-assertions "^1.7.6" 1907 | browserslist "^4.14.5" 1908 | chrome-trace-event "^1.0.2" 1909 | enhanced-resolve "^5.13.0" 1910 | es-module-lexer "^1.2.1" 1911 | eslint-scope "5.1.1" 1912 | events "^3.2.0" 1913 | glob-to-regexp "^0.4.1" 1914 | graceful-fs "^4.2.9" 1915 | json-parse-even-better-errors "^2.3.1" 1916 | loader-runner "^4.2.0" 1917 | mime-types "^2.1.27" 1918 | neo-async "^2.6.2" 1919 | schema-utils "^3.1.2" 1920 | tapable "^2.1.1" 1921 | terser-webpack-plugin "^5.3.7" 1922 | watchpack "^2.4.0" 1923 | webpack-sources "^3.2.3" 1924 | 1925 | which@^1.2.1: 1926 | version "1.3.1" 1927 | resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" 1928 | integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== 1929 | dependencies: 1930 | isexe "^2.0.0" 1931 | 1932 | which@^2.0.1: 1933 | version "2.0.2" 1934 | resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" 1935 | integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== 1936 | dependencies: 1937 | isexe "^2.0.0" 1938 | 1939 | wildcard@^2.0.0: 1940 | version "2.0.1" 1941 | resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" 1942 | integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== 1943 | 1944 | workerpool@6.2.1: 1945 | version "6.2.1" 1946 | resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.1.tgz#46fc150c17d826b86a008e5a4508656777e9c343" 1947 | integrity sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw== 1948 | 1949 | wrap-ansi@^7.0.0: 1950 | version "7.0.0" 1951 | resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" 1952 | integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== 1953 | dependencies: 1954 | ansi-styles "^4.0.0" 1955 | string-width "^4.1.0" 1956 | strip-ansi "^6.0.0" 1957 | 1958 | wrappy@1: 1959 | version "1.0.2" 1960 | resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" 1961 | integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== 1962 | 1963 | ws@~8.17.1: 1964 | version "8.17.1" 1965 | resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" 1966 | integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== 1967 | 1968 | y18n@^5.0.5: 1969 | version "5.0.8" 1970 | resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" 1971 | integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== 1972 | 1973 | yargs-parser@20.2.4: 1974 | version "20.2.4" 1975 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" 1976 | integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== 1977 | 1978 | yargs-parser@^20.2.2: 1979 | version "20.2.9" 1980 | resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" 1981 | integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== 1982 | 1983 | yargs-unparser@2.0.0: 1984 | version "2.0.0" 1985 | resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" 1986 | integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== 1987 | dependencies: 1988 | camelcase "^6.0.0" 1989 | decamelize "^4.0.0" 1990 | flat "^5.0.2" 1991 | is-plain-obj "^2.1.0" 1992 | 1993 | yargs@16.2.0, yargs@^16.1.1: 1994 | version "16.2.0" 1995 | resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" 1996 | integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== 1997 | dependencies: 1998 | cliui "^7.0.2" 1999 | escalade "^3.1.1" 2000 | get-caller-file "^2.0.5" 2001 | require-directory "^2.1.1" 2002 | string-width "^4.2.0" 2003 | y18n "^5.0.5" 2004 | yargs-parser "^20.2.2" 2005 | 2006 | yocto-queue@^0.1.0: 2007 | version "0.1.0" 2008 | resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" 2009 | integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== 2010 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # CHANGELOG 2 | 3 | ## Version 0.3.1 (2025-01-13) 4 | - Deprecates `BigEndian` & `LittleEndian` 5 | - Adds NOTICE of library replacement to README 6 | 7 | ## Version 0.3.1 (2024-08-31) 8 | - Updates dependencies 9 | - Kotlin `1.9.23` -> `1.9.24` 10 | - Fixes multiplatform metadata manifest `unique_name` parameter for 11 | all source sets to be truly unique. 12 | - Updates jvm `.kotlin_module` with truly unique file name. 13 | 14 | ## Version 0.3.0 (2024-03-18) 15 | - Updates dependencies 16 | - Kotlin `1.9.21` -> `1.9.23` 17 | - Add experimental support for `wasmJs` & `wasmWasi` 18 | - Add support for Java9 `JPMS` via Multi-Release jar 19 | 20 | ## Version 0.2.0 (2023-11-30) 21 | - Updates dependencies 22 | - Kotlin `1.8.10` -> `1.9.21` 23 | - Drops support for the following deprecated targets: 24 | - `iosArm32` 25 | - `watchosX86` 26 | - `linuxArm32Hfp` 27 | - `linuxMips32` 28 | - `linuxMipsel32` 29 | - `mingwX86` 30 | - `wasm32` 31 | 32 | ## Version 0.1.0 (2023-04-07) 33 | - Initial Release 34 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, 10 | and distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by 13 | the copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all 16 | other entities that control, are controlled by, or are under common 17 | control with that entity. For the purposes of this definition, 18 | "control" means (i) the power, direct or indirect, to cause the 19 | direction or management of such entity, whether by contract or 20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 21 | outstanding shares, or (iii) beneficial ownership of such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity 24 | exercising permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation 28 | source, and configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical 31 | transformation or translation of a Source form, including but 32 | not limited to compiled object code, generated documentation, 33 | and conversions to other media types. 34 | 35 | "Work" shall mean the work of authorship, whether in Source or 36 | Object form, made available under the License, as indicated by a 37 | copyright notice that is included in or attached to the work 38 | (an example is provided in the Appendix below). 39 | 40 | "Derivative Works" shall mean any work, whether in Source or Object 41 | form, that is based on (or derived from) the Work and for which the 42 | editorial revisions, annotations, elaborations, or other modifications 43 | represent, as a whole, an original work of authorship. For the purposes 44 | of this License, Derivative Works shall not include works that remain 45 | separable from, or merely link (or bind by name) to the interfaces of, 46 | the Work and Derivative Works thereof. 47 | 48 | "Contribution" shall mean any work of authorship, including 49 | the original version of the Work and any modifications or additions 50 | to that Work or Derivative Works thereof, that is intentionally 51 | submitted to Licensor for inclusion in the Work by the copyright owner 52 | or by an individual or Legal Entity authorized to submit on behalf of 53 | the copyright owner. For the purposes of this definition, "submitted" 54 | means any form of electronic, verbal, or written communication sent 55 | to the Licensor or its representatives, including but not limited to 56 | communication on electronic mailing lists, source code control systems, 57 | and issue tracking systems that are managed by, or on behalf of, the 58 | Licensor for the purpose of discussing and improving the Work, but 59 | excluding communication that is conspicuously marked or otherwise 60 | designated in writing by the copyright owner as "Not a Contribution." 61 | 62 | "Contributor" shall mean Licensor and any individual or Legal Entity 63 | on behalf of whom a Contribution has been received by Licensor and 64 | subsequently incorporated within the Work. 65 | 66 | 2. Grant of Copyright License. Subject to the terms and conditions of 67 | this License, each Contributor hereby grants to You a perpetual, 68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 69 | copyright license to reproduce, prepare Derivative Works of, 70 | publicly display, publicly perform, sublicense, and distribute the 71 | Work and such Derivative Works in Source or Object form. 72 | 73 | 3. Grant of Patent License. Subject to the terms and conditions of 74 | this License, each Contributor hereby grants to You a perpetual, 75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 76 | (except as stated in this section) patent license to make, have made, 77 | use, offer to sell, sell, import, and otherwise transfer the Work, 78 | where such license applies only to those patent claims licensable 79 | by such Contributor that are necessarily infringed by their 80 | Contribution(s) alone or by combination of their Contribution(s) 81 | with the Work to which such Contribution(s) was submitted. If You 82 | institute patent litigation against any entity (including a 83 | cross-claim or counterclaim in a lawsuit) alleging that the Work 84 | or a Contribution incorporated within the Work constitutes direct 85 | or contributory patent infringement, then any patent licenses 86 | granted to You under this License for that Work shall terminate 87 | as of the date such litigation is filed. 88 | 89 | 4. Redistribution. You may reproduce and distribute copies of the 90 | Work or Derivative Works thereof in any medium, with or without 91 | modifications, and in Source or Object form, provided that You 92 | meet the following conditions: 93 | 94 | (a) You must give any other recipients of the Work or 95 | Derivative Works a copy of this License; and 96 | 97 | (b) You must cause any modified files to carry prominent notices 98 | stating that You changed the files; and 99 | 100 | (c) You must retain, in the Source form of any Derivative Works 101 | that You distribute, all copyright, patent, trademark, and 102 | attribution notices from the Source form of the Work, 103 | excluding those notices that do not pertain to any part of 104 | the Derivative Works; and 105 | 106 | (d) If the Work includes a "NOTICE" text file as part of its 107 | distribution, then any Derivative Works that You distribute must 108 | include a readable copy of the attribution notices contained 109 | within such NOTICE file, excluding those notices that do not 110 | pertain to any part of the Derivative Works, in at least one 111 | of the following places: within a NOTICE text file distributed 112 | as part of the Derivative Works; within the Source form or 113 | documentation, if provided along with the Derivative Works; or, 114 | within a display generated by the Derivative Works, if and 115 | wherever such third-party notices normally appear. The contents 116 | of the NOTICE file are for informational purposes only and 117 | do not modify the License. You may add Your own attribution 118 | notices within Derivative Works that You distribute, alongside 119 | or as an addendum to the NOTICE text from the Work, provided 120 | that such additional attribution notices cannot be construed 121 | as modifying the License. 122 | 123 | You may add Your own copyright statement to Your modifications and 124 | may provide additional or different license terms and conditions 125 | for use, reproduction, or distribution of Your modifications, or 126 | for any such Derivative Works as a whole, provided Your use, 127 | reproduction, and distribution of the Work otherwise complies with 128 | the conditions stated in this License. 129 | 130 | 5. Submission of Contributions. Unless You explicitly state otherwise, 131 | any Contribution intentionally submitted for inclusion in the Work 132 | by You to the Licensor shall be under the terms and conditions of 133 | this License, without any additional terms or conditions. 134 | Notwithstanding the above, nothing herein shall supersede or modify 135 | the terms of any separate license agreement you may have executed 136 | with Licensor regarding such Contributions. 137 | 138 | 6. Trademarks. This License does not grant permission to use the trade 139 | names, trademarks, service marks, or product names of the Licensor, 140 | except as required for reasonable and customary use in describing the 141 | origin of the Work and reproducing the content of the NOTICE file. 142 | 143 | 7. Disclaimer of Warranty. Unless required by applicable law or 144 | agreed to in writing, Licensor provides the Work (and each 145 | Contributor provides its Contributions) on an "AS IS" BASIS, 146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 147 | implied, including, without limitation, any warranties or conditions 148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 149 | PARTICULAR PURPOSE. You are solely responsible for determining the 150 | appropriateness of using or redistributing the Work and assume any 151 | risks associated with Your exercise of permissions under this License. 152 | 153 | 8. Limitation of Liability. In no event and under no legal theory, 154 | whether in tort (including negligence), contract, or otherwise, 155 | unless required by applicable law (such as deliberate and grossly 156 | negligent acts) or agreed to in writing, shall any Contributor be 157 | liable to You for damages, including any direct, indirect, special, 158 | incidental, or consequential damages of any character arising as a 159 | result of this License or out of the use or inability to use the 160 | Work (including but not limited to damages for loss of goodwill, 161 | work stoppage, computer failure or malfunction, or any and all 162 | other commercial damages or losses), even if such Contributor 163 | has been advised of the possibility of such damages. 164 | 165 | 9. Accepting Warranty or Additional Liability. While redistributing 166 | the Work or Derivative Works thereof, You may choose to offer, 167 | and charge a fee for, acceptance of support, warranty, indemnity, 168 | or other liability obligations and/or rights consistent with this 169 | License. However, in accepting such obligations, You may act only 170 | on Your own behalf and on Your sole responsibility, not on behalf 171 | of any other Contributor, and only if You agree to indemnify, 172 | defend, and hold each Contributor harmless for any liability 173 | incurred by, or claims asserted against, such Contributor by reason 174 | of your accepting any such warranty or additional liability. 175 | 176 | END OF TERMS AND CONDITIONS 177 | 178 | APPENDIX: How to apply the Apache License to your work. 179 | 180 | To apply the Apache License to your work, attach the following 181 | boilerplate notice, with the fields enclosed by brackets "[]" 182 | replaced with your own identifying information. (Don't include 183 | the brackets!) The text should be enclosed in the appropriate 184 | comment syntax for the file format. We also recommend that a 185 | file or class name and description of purpose be included on the 186 | same "printed page" as the copyright notice for easier 187 | identification within third-party archives. 188 | 189 | Copyright [yyyy] [name of copyright owner] 190 | 191 | Licensed under the Apache License, Version 2.0 (the "License"); 192 | you may not use this file except in compliance with the License. 193 | You may obtain a copy of the License at 194 | 195 | http://www.apache.org/licenses/LICENSE-2.0 196 | 197 | Unless required by applicable law or agreed to in writing, software 198 | distributed under the License is distributed on an "AS IS" BASIS, 199 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 200 | See the License for the specific language governing permissions and 201 | limitations under the License. 202 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # endians 2 | [![badge-license]][url-license] 3 | [![badge-latest-release]][url-latest-release] 4 | 5 | [![badge-kotlin]][url-kotlin] 6 | 7 | ![badge-platform-android] 8 | ![badge-platform-jvm] 9 | ![badge-platform-js] 10 | ![badge-platform-js-node] 11 | ![badge-platform-wasm] 12 | ![badge-platform-linux] 13 | ![badge-platform-macos] 14 | ![badge-platform-ios] 15 | ![badge-platform-tvos] 16 | ![badge-platform-watchos] 17 | ![badge-platform-windows] 18 | ![badge-support-android-native] 19 | ![badge-support-apple-silicon] 20 | ![badge-support-js-ir] 21 | ![badge-support-linux-arm] 22 | 23 | **NOTICE:** This library's functionality has been replaced by [KotlinCrypto/bitops][url-bitops]. Only critical 24 | bug fixes will be made going forward, and eventually, archival of this repository. 25 | 26 | 27 | [badge-latest-release]: https://img.shields.io/badge/latest--release-0.3.2-blue.svg?style=flat 28 | [badge-license]: https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat 29 | 30 | 31 | [badge-kotlin]: https://img.shields.io/badge/kotlin-1.9.24-blue.svg?logo=kotlin 32 | 33 | 34 | [badge-platform-android]: http://img.shields.io/badge/-android-6EDB8D.svg?style=flat 35 | [badge-platform-jvm]: http://img.shields.io/badge/-jvm-DB413D.svg?style=flat 36 | [badge-platform-js]: http://img.shields.io/badge/-js-F8DB5D.svg?style=flat 37 | [badge-platform-js-node]: https://img.shields.io/badge/-nodejs-68a063.svg?style=flat 38 | [badge-platform-linux]: http://img.shields.io/badge/-linux-2D3F6C.svg?style=flat 39 | [badge-platform-macos]: http://img.shields.io/badge/-macos-111111.svg?style=flat 40 | [badge-platform-ios]: http://img.shields.io/badge/-ios-CDCDCD.svg?style=flat 41 | [badge-platform-tvos]: http://img.shields.io/badge/-tvos-808080.svg?style=flat 42 | [badge-platform-watchos]: http://img.shields.io/badge/-watchos-C0C0C0.svg?style=flat 43 | [badge-platform-wasm]: https://img.shields.io/badge/-wasm-624FE8.svg?style=flat 44 | [badge-platform-windows]: http://img.shields.io/badge/-windows-4D76CD.svg?style=flat 45 | [badge-support-android-native]: http://img.shields.io/badge/support-[AndroidNative]-6EDB8D.svg?style=flat 46 | [badge-support-apple-silicon]: http://img.shields.io/badge/support-[AppleSilicon]-43BBFF.svg?style=flat 47 | [badge-support-js-ir]: https://img.shields.io/badge/support-[js--IR]-AAC4E0.svg?style=flat 48 | [badge-support-linux-arm]: http://img.shields.io/badge/support-[LinuxArm]-2D3F6C.svg?style=flat 49 | 50 | [url-bitops]: https://github.com/KotlinCrypto/bitops 51 | [url-latest-release]: https://github.com/KotlinCrypto/endians/releases/latest 52 | [url-license]: https://www.apache.org/licenses/LICENSE-2.0.txt 53 | [url-kotlin]: https://kotlinlang.org 54 | [url-version-catalog]: https://github.com/KotlinCrypto/version-catalog 55 | -------------------------------------------------------------------------------- /RELEASING.md: -------------------------------------------------------------------------------- 1 | # Releasing 2 | 3 | The release process is documented [HERE](https://github.com/KotlinCrypto/documentation/blob/master/RELEASING.md) 4 | -------------------------------------------------------------------------------- /build-logic/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /build-logic/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | plugins { 17 | `kotlin-dsl` 18 | } 19 | 20 | dependencies { 21 | implementation(libs.gradle.kmp.configuration) 22 | implementation(libs.gradle.kotlin) 23 | implementation(libs.gradle.publish.maven) 24 | } 25 | -------------------------------------------------------------------------------- /build-logic/settings.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | @file:Suppress("UnstableApiUsage") 17 | 18 | rootProject.name = "build-logic" 19 | 20 | dependencyResolutionManagement { 21 | repositories { 22 | mavenCentral() 23 | gradlePluginPortal() 24 | } 25 | 26 | versionCatalogs { 27 | create("libs") { 28 | from(files("../gradle/libs.versions.toml")) 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /build-logic/src/main/kotlin/-KmpConfigurationExtension.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | import io.matthewnelson.kmp.configuration.ExperimentalKmpConfigurationApi 17 | import io.matthewnelson.kmp.configuration.extension.KmpConfigurationExtension 18 | import io.matthewnelson.kmp.configuration.extension.container.target.KmpConfigurationContainerDsl 19 | import org.gradle.api.Action 20 | import org.gradle.api.JavaVersion 21 | import org.jetbrains.kotlin.gradle.targets.js.dsl.ExperimentalWasmDsl 22 | 23 | fun KmpConfigurationExtension.configureShared( 24 | java9ModuleName: String? = null, 25 | publish: Boolean = false, 26 | action: Action 27 | ) { 28 | if (publish) { 29 | require(!java9ModuleName.isNullOrBlank()) { "publications must specify a module-info name" } 30 | } 31 | 32 | configure { 33 | options { 34 | useUniqueModuleNames = true 35 | } 36 | 37 | jvm { 38 | kotlinJvmTarget = JavaVersion.VERSION_1_8 39 | compileSourceCompatibility = JavaVersion.VERSION_1_8 40 | compileTargetCompatibility = JavaVersion.VERSION_1_8 41 | 42 | @OptIn(ExperimentalKmpConfigurationApi::class) 43 | java9ModuleInfoName = java9ModuleName 44 | } 45 | 46 | js() 47 | 48 | @OptIn(ExperimentalWasmDsl::class) 49 | wasmJs { 50 | target { 51 | browser() 52 | nodejs() 53 | } 54 | } 55 | 56 | @OptIn(ExperimentalWasmDsl::class) 57 | wasmWasi { 58 | target { 59 | nodejs() 60 | } 61 | } 62 | 63 | androidNativeAll() 64 | 65 | iosAll() 66 | macosAll() 67 | tvosAll() 68 | watchosAll() 69 | 70 | linuxAll() 71 | mingwAll() 72 | 73 | common { 74 | if (publish) pluginIds("publication") 75 | 76 | sourceSetTest { 77 | dependencies { 78 | implementation(kotlin("test")) 79 | } 80 | } 81 | } 82 | 83 | if (publish) kotlin { explicitApi() } 84 | 85 | action.execute(this) 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /build-logic/src/main/kotlin/configuration.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | import org.gradle.api.tasks.testing.logging.TestExceptionFormat 17 | import org.gradle.api.tasks.testing.logging.TestLogEvent.FAILED 18 | import org.gradle.api.tasks.testing.logging.TestLogEvent.PASSED 19 | import org.gradle.api.tasks.testing.logging.TestLogEvent.SKIPPED 20 | import org.gradle.api.tasks.testing.logging.TestLogEvent.STANDARD_ERROR 21 | import org.gradle.api.tasks.testing.logging.TestLogEvent.STANDARD_OUT 22 | import org.gradle.api.tasks.testing.logging.TestLogEvent.STARTED 23 | 24 | plugins { 25 | id("io.matthewnelson.kmp.configuration") 26 | } 27 | 28 | tasks.withType { 29 | testLogging { 30 | exceptionFormat = TestExceptionFormat.FULL 31 | events(STARTED, PASSED, SKIPPED, FAILED, STANDARD_ERROR, STANDARD_OUT) 32 | showStandardStreams = true 33 | showStackTraces = true 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /build-logic/src/main/kotlin/publication.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | import org.gradle.plugins.signing.SigningExtension 17 | 18 | plugins { 19 | id("com.vanniktech.maven.publish") 20 | } 21 | 22 | if (!version.toString().endsWith("-SNAPSHOT")) { 23 | extensions.configure("signing") { 24 | useGpgCmd() 25 | } 26 | } 27 | 28 | tasks.withType().configureEach { 29 | isPreserveFileTimestamps = false 30 | isReproducibleFileOrder = true 31 | } 32 | -------------------------------------------------------------------------------- /build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin 17 | import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension 18 | 19 | plugins { 20 | alias(libs.plugins.binary.compat) 21 | alias(libs.plugins.kotlin.multiplatform) apply(false) 22 | } 23 | 24 | allprojects { 25 | findProperty("GROUP")?.let { group = it } 26 | findProperty("VERSION_NAME")?.let { version = it } 27 | findProperty("POM_DESCRIPTION")?.let { description = it.toString() } 28 | 29 | repositories { 30 | mavenCentral() 31 | } 32 | } 33 | 34 | plugins.withType { 35 | the().lockFileDirectory = rootDir.resolve(".kotlin-js-store") 36 | } 37 | 38 | apiValidation { 39 | // Only enable when selectively enabled targets are not being passed via cli. 40 | // See https://github.com/Kotlin/binary-compatibility-validator/issues/269 41 | @OptIn(kotlinx.validation.ExperimentalBCVApi::class) 42 | klib.enabled = findProperty("KMP_TARGETS") == null 43 | 44 | if (findProperty("CHECK_PUBLICATION") != null) { 45 | ignoredProjects.add("check-publication") 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 2 | org.gradle.parallel=true 3 | org.gradle.caching=true 4 | 5 | kotlin.code.style=official 6 | kotlin.mpp.applyDefaultHierarchyTemplate=false 7 | kotlin.mpp.stability.nowarn=true 8 | kotlin.native.ignoreDisabledTargets=true 9 | 10 | SONATYPE_HOST=S01 11 | RELEASE_SIGNING_ENABLED=true 12 | 13 | GROUP=org.kotlincrypto.endians 14 | 15 | POM_INCEPTION_YEAR=2023 16 | 17 | POM_URL=https://github.com/KotlinCrypto/endians/ 18 | POM_SCM_URL=https://github.com/KotlinCrypto/endians/ 19 | POM_SCM_CONNECTION=scm:git:git://github.com/KotlinCrypto/endians.git 20 | POM_SCM_DEV_CONNECTION=scm:git:ssh://git@github.com/KotlinCrypto/endians.git 21 | 22 | POM_LICENCE_NAME=The Apache Software License, Version 2.0 23 | POM_LICENCE_URL=https://www.apache.org/licenses/LICENSE-2.0.txt 24 | POM_LICENCE_DIST=repo 25 | 26 | POM_DEVELOPER_ID=KotlinCrypto 27 | POM_DEVELOPER_NAME=Kotlin Crypto 28 | POM_DEVELOPER_URL=https://github.com/KotlinCrypto/ 29 | 30 | VERSION_NAME=0.3.3-SNAPSHOT 31 | # 0.1.0-alpha01 = 00 01 00 11 32 | # 0.1.0-beta01 = 00 01 00 21 33 | # 0.1.0-rc01 = 00 01 00 31 34 | # 0.1.0 = 00 01 00 99 35 | # 1.1.0 = 01 01 00 99 36 | VERSION_CODE=00030399 37 | -------------------------------------------------------------------------------- /gradle/libs.versions.toml: -------------------------------------------------------------------------------- 1 | [versions] 2 | gradle-binary-compat = "0.16.3" 3 | gradle-kmp-configuration = "0.3.2" 4 | gradle-kotlin = "1.9.24" 5 | gradle-publish-maven = "0.29.0" 6 | 7 | [libraries] 8 | gradle-kmp-configuration = { module = "io.matthewnelson:gradle-kmp-configuration-plugin", version.ref = "gradle-kmp-configuration" } 9 | gradle-kotlin = { module = "org.jetbrains.kotlin:kotlin-gradle-plugin", version.ref = "gradle-kotlin" } 10 | gradle-publish-maven = { module = "com.vanniktech:gradle-maven-publish-plugin", version.ref = "gradle-publish-maven" } 11 | 12 | [plugins] 13 | binary-compat = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "gradle-binary-compat" } 14 | kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "gradle-kotlin" } 15 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/KotlinCrypto/endians/c0f977534fedb591466f0cca801b01a34bc29b77/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | zipStorePath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | 6 | # https://gradle.org/release-checksums/ 7 | distributionSha256Sum=f8b4f4772d302c8ff580bc40d0f56e715de69b163546944f787c87abf209c961 8 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip 9 | -------------------------------------------------------------------------------- /gradlew: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # 4 | # Copyright © 2015-2021 the original authors. 5 | # 6 | # Licensed under the Apache License, Version 2.0 (the "License"); 7 | # you may not use this file except in compliance with the License. 8 | # You may obtain a copy of the License at 9 | # 10 | # https://www.apache.org/licenses/LICENSE-2.0 11 | # 12 | # Unless required by applicable law or agreed to in writing, software 13 | # distributed under the License is distributed on an "AS IS" BASIS, 14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | # See the License for the specific language governing permissions and 16 | # limitations under the License. 17 | # 18 | 19 | ############################################################################## 20 | # 21 | # Gradle start up script for POSIX generated by Gradle. 22 | # 23 | # Important for running: 24 | # 25 | # (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is 26 | # noncompliant, but you have some other compliant shell such as ksh or 27 | # bash, then to run this script, type that shell name before the whole 28 | # command line, like: 29 | # 30 | # ksh Gradle 31 | # 32 | # Busybox and similar reduced shells will NOT work, because this script 33 | # requires all of these POSIX shell features: 34 | # * functions; 35 | # * expansions «$var», «${var}», «${var:-default}», «${var+SET}», 36 | # «${var#prefix}», «${var%suffix}», and «$( cmd )»; 37 | # * compound commands having a testable exit status, especially «case»; 38 | # * various built-in commands including «command», «set», and «ulimit». 39 | # 40 | # Important for patching: 41 | # 42 | # (2) This script targets any POSIX shell, so it avoids extensions provided 43 | # by Bash, Ksh, etc; in particular arrays are avoided. 44 | # 45 | # The "traditional" practice of packing multiple parameters into a 46 | # space-separated string is a well documented source of bugs and security 47 | # problems, so this is (mostly) avoided, by progressively accumulating 48 | # options in "$@", and eventually passing that to Java. 49 | # 50 | # Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, 51 | # and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; 52 | # see the in-line comments for details. 53 | # 54 | # There are tweaks for specific operating systems such as AIX, CygWin, 55 | # Darwin, MinGW, and NonStop. 56 | # 57 | # (3) This script is generated from the Groovy template 58 | # https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt 59 | # within the Gradle project. 60 | # 61 | # You can find Gradle at https://github.com/gradle/gradle/. 62 | # 63 | ############################################################################## 64 | 65 | # Attempt to set APP_HOME 66 | 67 | # Resolve links: $0 may be a link 68 | app_path=$0 69 | 70 | # Need this for daisy-chained symlinks. 71 | while 72 | APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path 73 | [ -h "$app_path" ] 74 | do 75 | ls=$( ls -ld "$app_path" ) 76 | link=${ls#*' -> '} 77 | case $link in #( 78 | /*) app_path=$link ;; #( 79 | *) app_path=$APP_HOME$link ;; 80 | esac 81 | done 82 | 83 | APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit 84 | 85 | APP_NAME="Gradle" 86 | APP_BASE_NAME=${0##*/} 87 | 88 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 89 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' 90 | 91 | # Use the maximum available, or set MAX_FD != -1 to use that value. 92 | MAX_FD=maximum 93 | 94 | warn () { 95 | echo "$*" 96 | } >&2 97 | 98 | die () { 99 | echo 100 | echo "$*" 101 | echo 102 | exit 1 103 | } >&2 104 | 105 | # OS specific support (must be 'true' or 'false'). 106 | cygwin=false 107 | msys=false 108 | darwin=false 109 | nonstop=false 110 | case "$( uname )" in #( 111 | CYGWIN* ) cygwin=true ;; #( 112 | Darwin* ) darwin=true ;; #( 113 | MSYS* | MINGW* ) msys=true ;; #( 114 | NONSTOP* ) nonstop=true ;; 115 | esac 116 | 117 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar 118 | 119 | 120 | # Determine the Java command to use to start the JVM. 121 | if [ -n "$JAVA_HOME" ] ; then 122 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then 123 | # IBM's JDK on AIX uses strange locations for the executables 124 | JAVACMD=$JAVA_HOME/jre/sh/java 125 | else 126 | JAVACMD=$JAVA_HOME/bin/java 127 | fi 128 | if [ ! -x "$JAVACMD" ] ; then 129 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME 130 | 131 | Please set the JAVA_HOME variable in your environment to match the 132 | location of your Java installation." 133 | fi 134 | else 135 | JAVACMD=java 136 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 137 | 138 | Please set the JAVA_HOME variable in your environment to match the 139 | location of your Java installation." 140 | fi 141 | 142 | # Increase the maximum file descriptors if we can. 143 | if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then 144 | case $MAX_FD in #( 145 | max*) 146 | MAX_FD=$( ulimit -H -n ) || 147 | warn "Could not query maximum file descriptor limit" 148 | esac 149 | case $MAX_FD in #( 150 | '' | soft) :;; #( 151 | *) 152 | ulimit -n "$MAX_FD" || 153 | warn "Could not set maximum file descriptor limit to $MAX_FD" 154 | esac 155 | fi 156 | 157 | # Collect all arguments for the java command, stacking in reverse order: 158 | # * args from the command line 159 | # * the main class name 160 | # * -classpath 161 | # * -D...appname settings 162 | # * --module-path (only if needed) 163 | # * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. 164 | 165 | # For Cygwin or MSYS, switch paths to Windows format before running java 166 | if "$cygwin" || "$msys" ; then 167 | APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) 168 | CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) 169 | 170 | JAVACMD=$( cygpath --unix "$JAVACMD" ) 171 | 172 | # Now convert the arguments - kludge to limit ourselves to /bin/sh 173 | for arg do 174 | if 175 | case $arg in #( 176 | -*) false ;; # don't mess with options #( 177 | /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath 178 | [ -e "$t" ] ;; #( 179 | *) false ;; 180 | esac 181 | then 182 | arg=$( cygpath --path --ignore --mixed "$arg" ) 183 | fi 184 | # Roll the args list around exactly as many times as the number of 185 | # args, so each arg winds up back in the position where it started, but 186 | # possibly modified. 187 | # 188 | # NB: a `for` loop captures its iteration list before it begins, so 189 | # changing the positional parameters here affects neither the number of 190 | # iterations, nor the values presented in `arg`. 191 | shift # remove old arg 192 | set -- "$@" "$arg" # push replacement arg 193 | done 194 | fi 195 | 196 | # Collect all arguments for the java command; 197 | # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of 198 | # shell script including quotes and variable substitutions, so put them in 199 | # double quotes to make sure that they get re-expanded; and 200 | # * put everything else in single quotes, so that it's not re-expanded. 201 | 202 | set -- \ 203 | "-Dorg.gradle.appname=$APP_BASE_NAME" \ 204 | -classpath "$CLASSPATH" \ 205 | org.gradle.wrapper.GradleWrapperMain \ 206 | "$@" 207 | 208 | # Use "xargs" to parse quoted args. 209 | # 210 | # With -n1 it outputs one arg per line, with the quotes and backslashes removed. 211 | # 212 | # In Bash we could simply go: 213 | # 214 | # readarray ARGS < <( xargs -n1 <<<"$var" ) && 215 | # set -- "${ARGS[@]}" "$@" 216 | # 217 | # but POSIX shell has neither arrays nor command substitution, so instead we 218 | # post-process each arg (as a line of input to sed) to backslash-escape any 219 | # character that might be a shell metacharacter, then use eval to reverse 220 | # that process (while maintaining the separation between arguments), and wrap 221 | # the whole thing up as a single "set" statement. 222 | # 223 | # This will of course break if any of these variables contains a newline or 224 | # an unmatched quote. 225 | # 226 | 227 | eval "set -- $( 228 | printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | 229 | xargs -n1 | 230 | sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | 231 | tr '\n' ' ' 232 | )" '"$@"' 233 | 234 | exec "$JAVACMD" "$@" 235 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @rem 2 | @rem Copyright 2015 the original author or authors. 3 | @rem 4 | @rem Licensed under the Apache License, Version 2.0 (the "License"); 5 | @rem you may not use this file except in compliance with the License. 6 | @rem You may obtain a copy of the License at 7 | @rem 8 | @rem https://www.apache.org/licenses/LICENSE-2.0 9 | @rem 10 | @rem Unless required by applicable law or agreed to in writing, software 11 | @rem distributed under the License is distributed on an "AS IS" BASIS, 12 | @rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | @rem See the License for the specific language governing permissions and 14 | @rem limitations under the License. 15 | @rem 16 | 17 | @if "%DEBUG%" == "" @echo off 18 | @rem ########################################################################## 19 | @rem 20 | @rem Gradle startup script for Windows 21 | @rem 22 | @rem ########################################################################## 23 | 24 | @rem Set local scope for the variables with windows NT shell 25 | if "%OS%"=="Windows_NT" setlocal 26 | 27 | set DIRNAME=%~dp0 28 | if "%DIRNAME%" == "" set DIRNAME=. 29 | set APP_BASE_NAME=%~n0 30 | set APP_HOME=%DIRNAME% 31 | 32 | @rem Resolve any "." and ".." in APP_HOME to make it shorter. 33 | for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi 34 | 35 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 36 | set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" 37 | 38 | @rem Find java.exe 39 | if defined JAVA_HOME goto findJavaFromJavaHome 40 | 41 | set JAVA_EXE=java.exe 42 | %JAVA_EXE% -version >NUL 2>&1 43 | if "%ERRORLEVEL%" == "0" goto execute 44 | 45 | echo. 46 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 47 | echo. 48 | echo Please set the JAVA_HOME variable in your environment to match the 49 | echo location of your Java installation. 50 | 51 | goto fail 52 | 53 | :findJavaFromJavaHome 54 | set JAVA_HOME=%JAVA_HOME:"=% 55 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 56 | 57 | if exist "%JAVA_EXE%" goto execute 58 | 59 | echo. 60 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 61 | echo. 62 | echo Please set the JAVA_HOME variable in your environment to match the 63 | echo location of your Java installation. 64 | 65 | goto fail 66 | 67 | :execute 68 | @rem Setup the command line 69 | 70 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 71 | 72 | 73 | @rem Execute Gradle 74 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %* 75 | 76 | :end 77 | @rem End local scope for the variables with windows NT shell 78 | if "%ERRORLEVEL%"=="0" goto mainEnd 79 | 80 | :fail 81 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 82 | rem the _cmd.exe /c_ return code! 83 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 84 | exit /b 1 85 | 86 | :mainEnd 87 | if "%OS%"=="Windows_NT" endlocal 88 | 89 | :omega 90 | -------------------------------------------------------------------------------- /library/endians/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | -------------------------------------------------------------------------------- /library/endians/api/endians.api: -------------------------------------------------------------------------------- 1 | public final class org/kotlincrypto/endians/BigEndian { 2 | public static final field Companion Lorg/kotlincrypto/endians/BigEndian$Companion; 3 | public static final synthetic fun box-impl ([B)Lorg/kotlincrypto/endians/BigEndian; 4 | public static final fun bytesToInt (BBBB)I 5 | public static final fun bytesToLong (BBBBBBBB)J 6 | public static final fun bytesToShort (BB)S 7 | public static fun constructor-impl (BB)[B 8 | public static fun constructor-impl (BBBB)[B 9 | public static fun constructor-impl (BBBBBBBB)[B 10 | public static final fun copyInto-impl ([B[BIII)[B 11 | public static synthetic fun copyInto-impl$default ([B[BIIIILjava/lang/Object;)[B 12 | public fun equals (Ljava/lang/Object;)Z 13 | public static fun equals-impl ([BLjava/lang/Object;)Z 14 | public static final fun equals-impl0 ([B[B)Z 15 | public static final fun get-impl ([BI)B 16 | public static final fun getOrElse-impl ([BILkotlin/jvm/functions/Function1;)B 17 | public static final fun getOrNull-impl ([BI)Ljava/lang/Byte; 18 | public static final fun getSize-impl ([B)I 19 | public static final fun getSizeBits-impl ([B)I 20 | public fun hashCode ()I 21 | public static fun hashCode-impl ([B)I 22 | public static final fun iterator-impl ([B)Lkotlin/collections/ByteIterator; 23 | public static final fun plus-impl ([B[B)[B 24 | public static final fun toBigEndian-OUA1zfc (I)[B 25 | public static final fun toBigEndian-OUA1zfc (J)[B 26 | public static final fun toBigEndian-OUA1zfc (S)[B 27 | public static final fun toByte-impl ([B)B 28 | public static final fun toByteArray-impl ([B)[B 29 | public static final fun toInt-impl ([B)I 30 | public static final fun toLittleEndian-X1VZN5w ([B)[B 31 | public static final fun toLong-impl ([B)J 32 | public static final fun toShort-impl ([B)S 33 | public fun toString ()Ljava/lang/String; 34 | public static fun toString-impl ([B)Ljava/lang/String; 35 | public final synthetic fun unbox-impl ()[B 36 | } 37 | 38 | public final class org/kotlincrypto/endians/BigEndian$Companion { 39 | public final fun bytesToInt (BBBB)I 40 | public final fun bytesToLong (BBBBBBBB)J 41 | public final fun bytesToShort (BB)S 42 | public final fun toBigEndian-OUA1zfc (I)[B 43 | public final fun toBigEndian-OUA1zfc (J)[B 44 | public final fun toBigEndian-OUA1zfc (S)[B 45 | } 46 | 47 | public final class org/kotlincrypto/endians/LittleEndian { 48 | public static final field Companion Lorg/kotlincrypto/endians/LittleEndian$Companion; 49 | public static final synthetic fun box-impl ([B)Lorg/kotlincrypto/endians/LittleEndian; 50 | public static final fun bytesToInt (BBBB)I 51 | public static final fun bytesToLong (BBBBBBBB)J 52 | public static final fun bytesToShort (BB)S 53 | public static fun constructor-impl (BB)[B 54 | public static fun constructor-impl (BBBB)[B 55 | public static fun constructor-impl (BBBBBBBB)[B 56 | public static final fun copyInto-impl ([B[BIII)[B 57 | public static synthetic fun copyInto-impl$default ([B[BIIIILjava/lang/Object;)[B 58 | public fun equals (Ljava/lang/Object;)Z 59 | public static fun equals-impl ([BLjava/lang/Object;)Z 60 | public static final fun equals-impl0 ([B[B)Z 61 | public static final fun get-impl ([BI)B 62 | public static final fun getOrElse-impl ([BILkotlin/jvm/functions/Function1;)B 63 | public static final fun getOrNull-impl ([BI)Ljava/lang/Byte; 64 | public static final fun getSize-impl ([B)I 65 | public static final fun getSizeBits-impl ([B)I 66 | public fun hashCode ()I 67 | public static fun hashCode-impl ([B)I 68 | public static final fun iterator-impl ([B)Lkotlin/collections/ByteIterator; 69 | public static final fun plus-impl ([B[B)[B 70 | public static final fun toBigEndian-90RowRo ([B)[B 71 | public static final fun toByte-impl ([B)B 72 | public static final fun toByteArray-impl ([B)[B 73 | public static final fun toInt-impl ([B)I 74 | public static final fun toLittleEndian-S6lo4To (I)[B 75 | public static final fun toLittleEndian-S6lo4To (J)[B 76 | public static final fun toLittleEndian-S6lo4To (S)[B 77 | public static final fun toLong-impl ([B)J 78 | public static final fun toShort-impl ([B)S 79 | public fun toString ()Ljava/lang/String; 80 | public static fun toString-impl ([B)Ljava/lang/String; 81 | public final synthetic fun unbox-impl ()[B 82 | } 83 | 84 | public final class org/kotlincrypto/endians/LittleEndian$Companion { 85 | public final fun bytesToInt (BBBB)I 86 | public final fun bytesToLong (BBBBBBBB)J 87 | public final fun bytesToShort (BB)S 88 | public final fun toLittleEndian-S6lo4To (I)[B 89 | public final fun toLittleEndian-S6lo4To (J)[B 90 | public final fun toLittleEndian-S6lo4To (S)[B 91 | } 92 | 93 | public final class org/kotlincrypto/endians/_ByteArrayKt { 94 | public static final fun plus-dmqq5Eo ([B[B)[B 95 | public static final fun plus-oIoJHmc ([B[B)[B 96 | } 97 | 98 | -------------------------------------------------------------------------------- /library/endians/api/endians.klib.api: -------------------------------------------------------------------------------- 1 | // Klib ABI Dump 2 | // Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, wasmWasi, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64] 3 | // Rendering settings: 4 | // - Signature version: 2 5 | // - Show manifest properties: true 6 | // - Show declarations: true 7 | 8 | // Library unique name: 9 | final value class org.kotlincrypto.endians/BigEndian { // org.kotlincrypto.endians/BigEndian|null[0] 10 | constructor (kotlin/Byte, kotlin/Byte) // org.kotlincrypto.endians/BigEndian.|(kotlin.Byte;kotlin.Byte){}[0] 11 | constructor (kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte) // org.kotlincrypto.endians/BigEndian.|(kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte){}[0] 12 | constructor (kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte) // org.kotlincrypto.endians/BigEndian.|(kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte){}[0] 13 | 14 | final val size // org.kotlincrypto.endians/BigEndian.size|{}size[0] 15 | final fun (): kotlin/Int // org.kotlincrypto.endians/BigEndian.size.|(){}[0] 16 | final val sizeBits // org.kotlincrypto.endians/BigEndian.sizeBits|{}sizeBits[0] 17 | final fun (): kotlin/Int // org.kotlincrypto.endians/BigEndian.sizeBits.|(){}[0] 18 | 19 | final fun copyInto(kotlin/ByteArray, kotlin/Int =..., kotlin/Int =..., kotlin/Int =...): kotlin/ByteArray // org.kotlincrypto.endians/BigEndian.copyInto|copyInto(kotlin.ByteArray;kotlin.Int;kotlin.Int;kotlin.Int){}[0] 20 | final fun equals(kotlin/Any?): kotlin/Boolean // org.kotlincrypto.endians/BigEndian.equals|equals(kotlin.Any?){}[0] 21 | final fun get(kotlin/Int): kotlin/Byte // org.kotlincrypto.endians/BigEndian.get|get(kotlin.Int){}[0] 22 | final fun getOrElse(kotlin/Int, kotlin/Function1): kotlin/Byte // org.kotlincrypto.endians/BigEndian.getOrElse|getOrElse(kotlin.Int;kotlin.Function1){}[0] 23 | final fun getOrNull(kotlin/Int): kotlin/Byte? // org.kotlincrypto.endians/BigEndian.getOrNull|getOrNull(kotlin.Int){}[0] 24 | final fun hashCode(): kotlin/Int // org.kotlincrypto.endians/BigEndian.hashCode|hashCode(){}[0] 25 | final fun iterator(): kotlin.collections/ByteIterator // org.kotlincrypto.endians/BigEndian.iterator|iterator(){}[0] 26 | final fun plus(kotlin/ByteArray): kotlin/ByteArray // org.kotlincrypto.endians/BigEndian.plus|plus(kotlin.ByteArray){}[0] 27 | final fun toByte(): kotlin/Byte // org.kotlincrypto.endians/BigEndian.toByte|toByte(){}[0] 28 | final fun toByteArray(): kotlin/ByteArray // org.kotlincrypto.endians/BigEndian.toByteArray|toByteArray(){}[0] 29 | final fun toInt(): kotlin/Int // org.kotlincrypto.endians/BigEndian.toInt|toInt(){}[0] 30 | final fun toLittleEndian(): org.kotlincrypto.endians/LittleEndian // org.kotlincrypto.endians/BigEndian.toLittleEndian|toLittleEndian(){}[0] 31 | final fun toLong(): kotlin/Long // org.kotlincrypto.endians/BigEndian.toLong|toLong(){}[0] 32 | final fun toShort(): kotlin/Short // org.kotlincrypto.endians/BigEndian.toShort|toShort(){}[0] 33 | final fun toString(): kotlin/String // org.kotlincrypto.endians/BigEndian.toString|toString(){}[0] 34 | 35 | final object Companion { // org.kotlincrypto.endians/BigEndian.Companion|null[0] 36 | final fun (kotlin/Int).toBigEndian(): org.kotlincrypto.endians/BigEndian // org.kotlincrypto.endians/BigEndian.Companion.toBigEndian|toBigEndian@kotlin.Int(){}[0] 37 | final fun (kotlin/Long).toBigEndian(): org.kotlincrypto.endians/BigEndian // org.kotlincrypto.endians/BigEndian.Companion.toBigEndian|toBigEndian@kotlin.Long(){}[0] 38 | final fun (kotlin/Short).toBigEndian(): org.kotlincrypto.endians/BigEndian // org.kotlincrypto.endians/BigEndian.Companion.toBigEndian|toBigEndian@kotlin.Short(){}[0] 39 | final fun bytesToInt(kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte): kotlin/Int // org.kotlincrypto.endians/BigEndian.Companion.bytesToInt|bytesToInt(kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte){}[0] 40 | final fun bytesToLong(kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte): kotlin/Long // org.kotlincrypto.endians/BigEndian.Companion.bytesToLong|bytesToLong(kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte){}[0] 41 | final fun bytesToShort(kotlin/Byte, kotlin/Byte): kotlin/Short // org.kotlincrypto.endians/BigEndian.Companion.bytesToShort|bytesToShort(kotlin.Byte;kotlin.Byte){}[0] 42 | } 43 | } 44 | 45 | final value class org.kotlincrypto.endians/LittleEndian { // org.kotlincrypto.endians/LittleEndian|null[0] 46 | constructor (kotlin/Byte, kotlin/Byte) // org.kotlincrypto.endians/LittleEndian.|(kotlin.Byte;kotlin.Byte){}[0] 47 | constructor (kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte) // org.kotlincrypto.endians/LittleEndian.|(kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte){}[0] 48 | constructor (kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte) // org.kotlincrypto.endians/LittleEndian.|(kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte){}[0] 49 | 50 | final val size // org.kotlincrypto.endians/LittleEndian.size|{}size[0] 51 | final fun (): kotlin/Int // org.kotlincrypto.endians/LittleEndian.size.|(){}[0] 52 | final val sizeBits // org.kotlincrypto.endians/LittleEndian.sizeBits|{}sizeBits[0] 53 | final fun (): kotlin/Int // org.kotlincrypto.endians/LittleEndian.sizeBits.|(){}[0] 54 | 55 | final fun copyInto(kotlin/ByteArray, kotlin/Int =..., kotlin/Int =..., kotlin/Int =...): kotlin/ByteArray // org.kotlincrypto.endians/LittleEndian.copyInto|copyInto(kotlin.ByteArray;kotlin.Int;kotlin.Int;kotlin.Int){}[0] 56 | final fun equals(kotlin/Any?): kotlin/Boolean // org.kotlincrypto.endians/LittleEndian.equals|equals(kotlin.Any?){}[0] 57 | final fun get(kotlin/Int): kotlin/Byte // org.kotlincrypto.endians/LittleEndian.get|get(kotlin.Int){}[0] 58 | final fun getOrElse(kotlin/Int, kotlin/Function1): kotlin/Byte // org.kotlincrypto.endians/LittleEndian.getOrElse|getOrElse(kotlin.Int;kotlin.Function1){}[0] 59 | final fun getOrNull(kotlin/Int): kotlin/Byte? // org.kotlincrypto.endians/LittleEndian.getOrNull|getOrNull(kotlin.Int){}[0] 60 | final fun hashCode(): kotlin/Int // org.kotlincrypto.endians/LittleEndian.hashCode|hashCode(){}[0] 61 | final fun iterator(): kotlin.collections/ByteIterator // org.kotlincrypto.endians/LittleEndian.iterator|iterator(){}[0] 62 | final fun plus(kotlin/ByteArray): kotlin/ByteArray // org.kotlincrypto.endians/LittleEndian.plus|plus(kotlin.ByteArray){}[0] 63 | final fun toBigEndian(): org.kotlincrypto.endians/BigEndian // org.kotlincrypto.endians/LittleEndian.toBigEndian|toBigEndian(){}[0] 64 | final fun toByte(): kotlin/Byte // org.kotlincrypto.endians/LittleEndian.toByte|toByte(){}[0] 65 | final fun toByteArray(): kotlin/ByteArray // org.kotlincrypto.endians/LittleEndian.toByteArray|toByteArray(){}[0] 66 | final fun toInt(): kotlin/Int // org.kotlincrypto.endians/LittleEndian.toInt|toInt(){}[0] 67 | final fun toLong(): kotlin/Long // org.kotlincrypto.endians/LittleEndian.toLong|toLong(){}[0] 68 | final fun toShort(): kotlin/Short // org.kotlincrypto.endians/LittleEndian.toShort|toShort(){}[0] 69 | final fun toString(): kotlin/String // org.kotlincrypto.endians/LittleEndian.toString|toString(){}[0] 70 | 71 | final object Companion { // org.kotlincrypto.endians/LittleEndian.Companion|null[0] 72 | final fun (kotlin/Int).toLittleEndian(): org.kotlincrypto.endians/LittleEndian // org.kotlincrypto.endians/LittleEndian.Companion.toLittleEndian|toLittleEndian@kotlin.Int(){}[0] 73 | final fun (kotlin/Long).toLittleEndian(): org.kotlincrypto.endians/LittleEndian // org.kotlincrypto.endians/LittleEndian.Companion.toLittleEndian|toLittleEndian@kotlin.Long(){}[0] 74 | final fun (kotlin/Short).toLittleEndian(): org.kotlincrypto.endians/LittleEndian // org.kotlincrypto.endians/LittleEndian.Companion.toLittleEndian|toLittleEndian@kotlin.Short(){}[0] 75 | final fun bytesToInt(kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte): kotlin/Int // org.kotlincrypto.endians/LittleEndian.Companion.bytesToInt|bytesToInt(kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte){}[0] 76 | final fun bytesToLong(kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte, kotlin/Byte): kotlin/Long // org.kotlincrypto.endians/LittleEndian.Companion.bytesToLong|bytesToLong(kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte;kotlin.Byte){}[0] 77 | final fun bytesToShort(kotlin/Byte, kotlin/Byte): kotlin/Short // org.kotlincrypto.endians/LittleEndian.Companion.bytesToShort|bytesToShort(kotlin.Byte;kotlin.Byte){}[0] 78 | } 79 | } 80 | 81 | final fun (kotlin/ByteArray).org.kotlincrypto.endians/plus(org.kotlincrypto.endians/BigEndian): kotlin/ByteArray // org.kotlincrypto.endians/plus|plus@kotlin.ByteArray(org.kotlincrypto.endians.BigEndian){}[0] 82 | final fun (kotlin/ByteArray).org.kotlincrypto.endians/plus(org.kotlincrypto.endians/LittleEndian): kotlin/ByteArray // org.kotlincrypto.endians/plus|plus@kotlin.ByteArray(org.kotlincrypto.endians.LittleEndian){}[0] 83 | -------------------------------------------------------------------------------- /library/endians/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | plugins { 17 | id("configuration") 18 | } 19 | 20 | kmpConfiguration { 21 | configureShared(java9ModuleName = "org.kotlincrypto.endians", publish = true) {} 22 | } 23 | -------------------------------------------------------------------------------- /library/endians/gradle.properties: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023 Matthew Nelson 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | POM_ARTIFACT_ID=endians 15 | POM_NAME=KotlinCrypto Endians 16 | POM_DESCRIPTION=BigEndian and LittleEndian utils 17 | -------------------------------------------------------------------------------- /library/endians/src/commonMain/kotlin/org/kotlincrypto/endians/-ByteArray.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | package org.kotlincrypto.endians 17 | 18 | public operator fun ByteArray.plus(other: BigEndian): ByteArray { 19 | val b = ByteArray(size + other.size) 20 | copyInto(b) 21 | other.copyInto(b, size) 22 | return b 23 | } 24 | 25 | public operator fun ByteArray.plus(other: LittleEndian): ByteArray { 26 | val b = ByteArray(size + other.size) 27 | copyInto(b) 28 | other.copyInto(b, size) 29 | return b 30 | } 31 | -------------------------------------------------------------------------------- /library/endians/src/commonMain/kotlin/org/kotlincrypto/endians/BigEndian.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | package org.kotlincrypto.endians 17 | 18 | import kotlin.jvm.JvmInline 19 | import kotlin.jvm.JvmStatic 20 | 21 | /** 22 | * BigEndian ordered byte representation of a [Number]. 23 | * 24 | * The [data] held is "immutable" in nature. 25 | * 26 | * @see [toBigEndian] 27 | * @see [bytesToShort] 28 | * @see [bytesToInt] 29 | * @see [bytesToLong] 30 | * */ 31 | @JvmInline 32 | @Deprecated("Functionality replaced by bitops/endian. See https://github.com/KotlinCrypto/bitops") 33 | public value class BigEndian private constructor(private val data: ByteArray) { 34 | 35 | /** [Short] 16 bits */ 36 | public constructor(b0: Byte, b1: Byte): this( 37 | ByteArray(2).apply { 38 | this[0] = b0; this[1] = b1 39 | } 40 | ) 41 | 42 | /** [Int] 32 bits */ 43 | public constructor(b0: Byte, b1: Byte, b2: Byte, b3: Byte): this( 44 | ByteArray(4).apply { 45 | this[0] = b0; this[1] = b1; this[2] = b2; this[3] = b3 46 | } 47 | ) 48 | 49 | /** [Long] 64 bits */ 50 | public constructor(b0: Byte, b1: Byte, b2: Byte, b3: Byte, b4: Byte, b5: Byte, b6: Byte, b7: Byte): this( 51 | ByteArray(8).apply { 52 | this[0] = b0; this[1] = b1; this[2] = b2; this[3] = b3 53 | this[4] = b4; this[5] = b5; this[6] = b6; this[7] = b7 54 | } 55 | ) 56 | 57 | @Throws(IndexOutOfBoundsException::class) 58 | public operator fun get(index: Int): Byte = data[index] 59 | public fun getOrNull(index: Int): Byte? = data.getOrNull(index) 60 | public fun getOrElse(index: Int, defaultValue: (Int) -> Byte): Byte = data.getOrElse(index, defaultValue) 61 | 62 | /** 63 | * Adds [data] with another [ByteArray], creating a new [ByteArray] 64 | * */ 65 | public operator fun plus(other: ByteArray): ByteArray = data.plus(other) 66 | 67 | public val size: Int get() = data.size 68 | public val sizeBits: Int get() = size * Byte.SIZE_BITS 69 | 70 | public fun iterator(): ByteIterator = data.iterator() 71 | 72 | /** 73 | * Copies [data] into [destination] 74 | * 75 | * @throws [IllegalArgumentException] when [startIndex] or [endIndex] is 76 | * out of range of [data], or when startIndex > endIndex. 77 | * @throws [IndexOutOfBoundsException] when the subrange doesn't fit into 78 | * [destination] starting at the specified [destinationOffset], or when 79 | * [destinationOffset] is outside of the [destination] indices. 80 | * */ 81 | @Throws(IllegalArgumentException::class, IndexOutOfBoundsException::class) 82 | public fun copyInto( 83 | destination: ByteArray, 84 | destinationOffset: Int = 0, 85 | startIndex: Int = 0, 86 | endIndex: Int = size, 87 | ): ByteArray { 88 | return data.copyInto(destination, destinationOffset, startIndex, endIndex) 89 | } 90 | 91 | public fun toByteArray(): ByteArray = data.copyOf() 92 | public fun toByte(): Byte = data.last() 93 | public fun toShort(): Short = toNumber().toShort() 94 | public fun toInt(): Int = toNumber().toInt() 95 | public fun toLong(): Long = toNumber().toLong() 96 | 97 | /** 98 | * Flips bytes to [LittleEndian] ordering 99 | * */ 100 | public fun toLittleEndian(): LittleEndian { 101 | return when (size) { 102 | 2 -> LittleEndian(data[1], data[0]) 103 | 4 -> LittleEndian(data[3], data[2], data[1], data[0]) 104 | else -> LittleEndian(data[7], data[6], data[5], data[4], data[3], data[2], data[1], data[0]) 105 | } 106 | } 107 | 108 | public override fun toString(): String = "BE${data.toList()}" 109 | 110 | private fun toNumber(): Number { 111 | return when (size) { 112 | 2 -> bytesToShort(data[0], data[1]) 113 | 4 -> bytesToInt(data[0], data[1], data[2], data[3]) 114 | else -> bytesToLong(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]) 115 | } 116 | } 117 | 118 | public companion object { 119 | /** 120 | * Converts a [Short] to [BigEndian] ordered bytes 121 | * */ 122 | @JvmStatic 123 | public fun Short.toBigEndian(): BigEndian { 124 | return BigEndian( 125 | (this.toInt() ushr 8).toByte(), 126 | (this ).toByte(), 127 | ) 128 | } 129 | 130 | /** 131 | * Converts a [Int] to [BigEndian] ordered bytes 132 | * */ 133 | @JvmStatic 134 | public fun Int.toBigEndian(): BigEndian { 135 | return BigEndian( 136 | (this ushr 24).toByte(), 137 | (this ushr 16).toByte(), 138 | (this ushr 8).toByte(), 139 | (this ).toByte(), 140 | ) 141 | } 142 | 143 | /** 144 | * Converts a [Long] to [BigEndian] ordered bytes 145 | * */ 146 | @JvmStatic 147 | public fun Long.toBigEndian(): BigEndian { 148 | return BigEndian( 149 | (this ushr 56).toByte(), 150 | (this ushr 48).toByte(), 151 | (this ushr 40).toByte(), 152 | (this ushr 32).toByte(), 153 | (this ushr 24).toByte(), 154 | (this ushr 16).toByte(), 155 | (this ushr 8).toByte(), 156 | (this ).toByte(), 157 | ) 158 | } 159 | 160 | /** 161 | * Converts 2 [Byte]s with [BigEndian] ordering to a [Short] 162 | * */ 163 | @JvmStatic 164 | public fun bytesToShort(b0: Byte, b1: Byte): Short { 165 | return ( 166 | ((b0.toInt() and 0xff) shl 8) or 167 | ((b1.toInt() and 0xff) ) 168 | ).toShort() 169 | } 170 | 171 | /** 172 | * Converts 4 [Byte]s with [BigEndian] ordering to a [Int] 173 | * */ 174 | @JvmStatic 175 | public fun bytesToInt(b0: Byte, b1: Byte, b2: Byte, b3: Byte): Int { 176 | return ((b0.toInt() ) shl 24) or 177 | ((b1.toInt() and 0xff) shl 16) or 178 | ((b2.toInt() and 0xff) shl 8) or 179 | ((b3.toInt() and 0xff) ) 180 | } 181 | 182 | /** 183 | * Converts 8 [Byte]s with [BigEndian] ordering to a [Long] 184 | * */ 185 | @JvmStatic 186 | public fun bytesToLong(b0: Byte, b1: Byte, b2: Byte, b3: Byte, b4: Byte, b5: Byte, b6: Byte, b7: Byte): Long { 187 | val hi = bytesToInt(b0, b1, b2, b3) 188 | val lo = bytesToInt(b4, b5, b6, b7) 189 | 190 | return ((hi.toLong() and 0xffffffff) shl 32) or 191 | ((lo.toLong() and 0xffffffff) ) 192 | } 193 | } 194 | } 195 | -------------------------------------------------------------------------------- /library/endians/src/commonMain/kotlin/org/kotlincrypto/endians/LittleEndian.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | package org.kotlincrypto.endians 17 | 18 | import kotlin.jvm.JvmInline 19 | import kotlin.jvm.JvmStatic 20 | 21 | /** 22 | * LittleEndian ordered byte representation of a [Number]. 23 | * 24 | * The [data] held is "immutable" in nature. 25 | * 26 | * @see [toLittleEndian] 27 | * @see [bytesToShort] 28 | * @see [bytesToInt] 29 | * @see [bytesToLong] 30 | * */ 31 | @JvmInline 32 | @Deprecated("Functionality replaced by bitops/endian. See https://github.com/KotlinCrypto/bitops") 33 | public value class LittleEndian private constructor(private val data: ByteArray) { 34 | 35 | /** [Short] 16 bits */ 36 | public constructor(b0: Byte, b1: Byte): this( 37 | ByteArray(2).apply { 38 | this[0] = b0; this[1] = b1 39 | } 40 | ) 41 | 42 | /** [Int] 32 bits */ 43 | public constructor(b0: Byte, b1: Byte, b2: Byte, b3: Byte): this( 44 | ByteArray(4).apply { 45 | this[0] = b0; this[1] = b1; this[2] = b2; this[3] = b3 46 | } 47 | ) 48 | 49 | /** [Long] 64 bits */ 50 | public constructor(b0: Byte, b1: Byte, b2: Byte, b3: Byte, b4: Byte, b5: Byte, b6: Byte, b7: Byte): this( 51 | ByteArray(8).apply { 52 | this[0] = b0; this[1] = b1; this[2] = b2; this[3] = b3 53 | this[4] = b4; this[5] = b5; this[6] = b6; this[7] = b7 54 | } 55 | ) 56 | 57 | @Throws(IndexOutOfBoundsException::class) 58 | public operator fun get(index: Int): Byte = data[index] 59 | public fun getOrNull(index: Int): Byte? = data.getOrNull(index) 60 | public fun getOrElse(index: Int, defaultValue: (Int) -> Byte): Byte = data.getOrElse(index, defaultValue) 61 | 62 | /** 63 | * Adds [data] with another [ByteArray], creating a new [ByteArray] 64 | * */ 65 | public operator fun plus(other: ByteArray): ByteArray = data.plus(other) 66 | 67 | public val size: Int get() = data.size 68 | public val sizeBits: Int get() = size * Byte.SIZE_BITS 69 | 70 | public fun iterator(): ByteIterator = data.iterator() 71 | 72 | /** 73 | * Copies [data] into [destination] 74 | * 75 | * @throws [IllegalArgumentException] when [startIndex] or [endIndex] is 76 | * out of range of [data], or when startIndex > endIndex. 77 | * @throws [IndexOutOfBoundsException] when the subrange doesn't fit into 78 | * [destination] starting at the specified [destinationOffset], or when 79 | * [destinationOffset] is outside of the [destination] indices. 80 | * */ 81 | @Throws(IllegalArgumentException::class, IndexOutOfBoundsException::class) 82 | public fun copyInto( 83 | destination: ByteArray, 84 | destinationOffset: Int = 0, 85 | startIndex: Int = 0, 86 | endIndex: Int = size, 87 | ): ByteArray { 88 | return data.copyInto(destination, destinationOffset, startIndex, endIndex) 89 | } 90 | 91 | public fun toByteArray(): ByteArray = data.copyOf() 92 | public fun toByte(): Byte = data.first() 93 | public fun toShort(): Short = toNumber().toShort() 94 | public fun toInt(): Int = toNumber().toInt() 95 | public fun toLong(): Long = toNumber().toLong() 96 | 97 | /** 98 | * Flips bytes to [BigEndian] ordering 99 | * */ 100 | public fun toBigEndian(): BigEndian { 101 | return when (size) { 102 | 2 -> BigEndian(data[1], data[0]) 103 | 4 -> BigEndian(data[3], data[2], data[1], data[0]) 104 | else -> BigEndian(data[7], data[6], data[5], data[4], data[3], data[2], data[1], data[0]) 105 | } 106 | } 107 | 108 | public override fun toString(): String = "LE${data.toList()}" 109 | 110 | private fun toNumber(): Number { 111 | return when (size) { 112 | 2 -> bytesToShort(data[0], data[1]) 113 | 4 -> bytesToInt(data[0], data[1], data[2], data[3]) 114 | else -> bytesToLong(data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]) 115 | } 116 | } 117 | 118 | public companion object { 119 | /** 120 | * Converts a [Short] to [LittleEndian] ordered bytes 121 | * */ 122 | @JvmStatic 123 | public fun Short.toLittleEndian(): LittleEndian { 124 | return LittleEndian( 125 | (this ).toByte(), 126 | (this.toInt() ushr 8).toByte(), 127 | ) 128 | } 129 | 130 | /** 131 | * Converts a [Int] to [LittleEndian] ordered bytes 132 | * */ 133 | @JvmStatic 134 | public fun Int.toLittleEndian(): LittleEndian { 135 | return LittleEndian( 136 | (this ).toByte(), 137 | (this ushr 8).toByte(), 138 | (this ushr 16).toByte(), 139 | (this ushr 24).toByte(), 140 | ) 141 | } 142 | 143 | /** 144 | * Converts a [Long] to [LittleEndian] ordered bytes 145 | * */ 146 | @JvmStatic 147 | public fun Long.toLittleEndian(): LittleEndian { 148 | return LittleEndian( 149 | (this ).toByte(), 150 | (this ushr 8).toByte(), 151 | (this ushr 16).toByte(), 152 | (this ushr 24).toByte(), 153 | (this ushr 32).toByte(), 154 | (this ushr 40).toByte(), 155 | (this ushr 48).toByte(), 156 | (this ushr 56).toByte(), 157 | ) 158 | } 159 | 160 | /** 161 | * Converts 2 [Byte]s with [LittleEndian] ordering to a [Short] 162 | * */ 163 | @JvmStatic 164 | public fun bytesToShort(b0: Byte, b1: Byte): Short { 165 | return ( 166 | ((b0.toInt() and 0xff) ) or 167 | ((b1.toInt() and 0xff) shl 8) 168 | ).toShort() 169 | } 170 | 171 | /** 172 | * Converts 4 [Byte]s with [LittleEndian] ordering to a [Int] 173 | * */ 174 | @JvmStatic 175 | public fun bytesToInt(b0: Byte, b1: Byte, b2: Byte, b3: Byte): Int { 176 | return ((b0.toInt() and 0xff) ) or 177 | ((b1.toInt() and 0xff) shl 8) or 178 | ((b2.toInt() and 0xff) shl 16) or 179 | ((b3.toInt() ) shl 24) 180 | } 181 | 182 | /** 183 | * Converts 8 [Byte]s with [LittleEndian] ordering to a [Long] 184 | * */ 185 | @JvmStatic 186 | public fun bytesToLong(b0: Byte, b1: Byte, b2: Byte, b3: Byte, b4: Byte, b5: Byte, b6: Byte, b7: Byte): Long { 187 | val lo = bytesToInt(b0, b1, b2, b3) 188 | val hi = bytesToInt(b4, b5, b6, b7) 189 | 190 | return ((hi.toLong() and 0xffffffff) shl 32) or 191 | ((lo.toLong() and 0xffffffff) ) 192 | } 193 | } 194 | } 195 | -------------------------------------------------------------------------------- /library/endians/src/commonTest/kotlin/org/kotlincrypto/endians/BigEndianUnitTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | package org.kotlincrypto.endians 17 | 18 | import org.kotlincrypto.endians.BigEndian.Companion.toBigEndian 19 | import kotlin.test.Test 20 | import kotlin.test.assertEquals 21 | 22 | class BigEndianUnitTest { 23 | 24 | companion object { 25 | private const val SM = Short.MAX_VALUE 26 | private const val IM = Int.MAX_VALUE 27 | private const val LM = Long.MAX_VALUE 28 | } 29 | 30 | @Test 31 | fun givenBigEndian_whenToByte_thenIsAsExpected() { 32 | assertEquals(SM.toByte(), SM.toBigEndian().toByte()) 33 | assertEquals(IM.toByte(), IM.toBigEndian().toByte()) 34 | assertEquals(LM.toByte(), LM.toBigEndian().toByte()) 35 | } 36 | 37 | @Test 38 | fun givenBigEndian_whenToShort_thenIsAsExpected() { 39 | assertEquals(SM , SM.toBigEndian().toShort()) 40 | assertEquals(IM.toShort(), IM.toBigEndian().toShort()) 41 | assertEquals(LM.toShort(), LM.toBigEndian().toShort()) 42 | } 43 | 44 | @Test 45 | fun givenBigEndian_whenToInt_thenIsAsExpected() { 46 | assertEquals(SM.toInt(), SM.toBigEndian().toInt()) 47 | assertEquals(IM , IM.toBigEndian().toInt()) 48 | assertEquals(LM.toInt(), LM.toBigEndian().toInt()) 49 | } 50 | 51 | @Test 52 | fun givenBigEndian_whenToLong_thenIsAsExpected() { 53 | assertEquals(SM.toLong(), SM.toBigEndian().toLong()) 54 | assertEquals(IM.toLong(), IM.toBigEndian().toLong()) 55 | assertEquals(LM , LM.toBigEndian().toLong()) 56 | } 57 | 58 | @Test 59 | fun givenBigEndian_whenToLittleEndian_thenByteOrderReversed() { 60 | assertEquals(SM, SM.toBigEndian().toLittleEndian().toShort()) 61 | assertEquals(IM, IM.toBigEndian().toLittleEndian().toInt()) 62 | assertEquals(LM, LM.toBigEndian().toLittleEndian().toLong()) 63 | } 64 | 65 | @Test 66 | fun givenBigEndian_whenPlusByteArray_thenIsAdded() { 67 | val aExpect: Byte = 1 68 | val bExpect: Byte = 2 69 | val a = ByteArray(5) { aExpect } 70 | val b = BigEndian(bExpect, bExpect, bExpect, bExpect) 71 | val actual = a + b 72 | 73 | assertEquals(a.size + b.size, actual.size) 74 | 75 | for ((i, byte) in actual.withIndex()) { 76 | if (i in a.indices) { 77 | assertEquals(aExpect, byte) 78 | } else { 79 | assertEquals(bExpect, byte) 80 | } 81 | } 82 | } 83 | 84 | @Test 85 | fun givenByteArray_whenPlusBigEndian_thenIsAdded() { 86 | val aExpect: Byte = 1 87 | val bExpect: Byte = 2 88 | val a = ByteArray(5) { aExpect } 89 | val b = BigEndian(bExpect, bExpect, bExpect, bExpect) 90 | val actual = b + a 91 | 92 | assertEquals(b.size + a.size, actual.size) 93 | 94 | for ((i, byte) in actual.withIndex()) { 95 | if (i in 0 until b.size) { 96 | assertEquals(bExpect, byte) 97 | } else { 98 | assertEquals(aExpect, byte) 99 | } 100 | } 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /library/endians/src/commonTest/kotlin/org/kotlincrypto/endians/LittleEndianUnitTest.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | package org.kotlincrypto.endians 17 | 18 | import org.kotlincrypto.endians.LittleEndian.Companion.toLittleEndian 19 | import kotlin.test.Test 20 | import kotlin.test.assertEquals 21 | 22 | class LittleEndianUnitTest { 23 | 24 | companion object { 25 | private const val SM = Short.MAX_VALUE 26 | private const val IM = Int.MAX_VALUE 27 | private const val LM = Long.MAX_VALUE 28 | } 29 | 30 | @Test 31 | fun givenLittleEndian_whenToByte_thenIsAsExpected() { 32 | assertEquals(SM.toByte(), SM.toLittleEndian().toByte()) 33 | assertEquals(IM.toByte(), IM.toLittleEndian().toByte()) 34 | assertEquals(LM.toByte(), LM.toLittleEndian().toByte()) 35 | } 36 | 37 | @Test 38 | fun givenLittleEndian_whenToShort_thenIsAsExpected() { 39 | assertEquals(SM , SM.toLittleEndian().toShort()) 40 | assertEquals(IM.toShort(), IM.toLittleEndian().toShort()) 41 | assertEquals(LM.toShort(), LM.toLittleEndian().toShort()) 42 | } 43 | 44 | @Test 45 | fun givenLittleEndian_whenToInt_thenIsAsExpected() { 46 | assertEquals(SM.toInt(), SM.toLittleEndian().toInt()) 47 | assertEquals(IM , IM.toLittleEndian().toInt()) 48 | assertEquals(LM.toInt(), LM.toLittleEndian().toInt()) 49 | } 50 | 51 | @Test 52 | fun givenLittleEndian_whenToLong_thenIsAsExpected() { 53 | assertEquals(SM.toLong(), SM.toLittleEndian().toLong()) 54 | assertEquals(IM.toLong(), IM.toLittleEndian().toLong()) 55 | assertEquals(LM , LM.toLittleEndian().toLong()) 56 | } 57 | 58 | @Test 59 | fun givenLittleEndian_whenToBigEndian_thenByteOrderReversed() { 60 | assertEquals(SM, SM.toLittleEndian().toBigEndian().toShort()) 61 | assertEquals(IM, IM.toLittleEndian().toBigEndian().toInt()) 62 | assertEquals(LM, LM.toLittleEndian().toBigEndian().toLong()) 63 | } 64 | 65 | @Test 66 | fun givenLittleEndian_whenPlusByteArray_thenIsAdded() { 67 | val aExpect: Byte = 1 68 | val bExpect: Byte = 2 69 | val a = ByteArray(5) { aExpect } 70 | val b = LittleEndian(bExpect, bExpect, bExpect, bExpect) 71 | val actual = a.plus(b) 72 | 73 | assertEquals(a.size + b.size, actual.size) 74 | 75 | for ((i, byte) in actual.withIndex()) { 76 | if (i in a.indices) { 77 | assertEquals(aExpect, byte) 78 | } else { 79 | assertEquals(bExpect, byte) 80 | } 81 | } 82 | } 83 | 84 | @Test 85 | fun givenByteArray_whenPlusLittleEndian_thenIsAdded() { 86 | val aExpect: Byte = 1 87 | val bExpect: Byte = 2 88 | val a = ByteArray(5) { aExpect } 89 | val b = LittleEndian(bExpect, bExpect, bExpect, bExpect) 90 | val actual = b + a 91 | 92 | assertEquals(b.size + a.size, actual.size) 93 | 94 | for ((i, byte) in actual.withIndex()) { 95 | if (i in 0 until b.size) { 96 | assertEquals(bExpect, byte) 97 | } else { 98 | assertEquals(aExpect, byte) 99 | } 100 | } 101 | } 102 | } 103 | -------------------------------------------------------------------------------- /library/endians/src/jvmMain/java9/module-info.java: -------------------------------------------------------------------------------- 1 | module org.kotlincrypto.endians { 2 | requires kotlin.stdlib; 3 | 4 | exports org.kotlincrypto.endians; 5 | } 6 | -------------------------------------------------------------------------------- /settings.gradle.kts: -------------------------------------------------------------------------------- 1 | rootProject.name = "endians" 2 | 3 | pluginManagement { 4 | repositories { 5 | mavenCentral() 6 | gradlePluginPortal() 7 | } 8 | } 9 | 10 | includeBuild("build-logic") 11 | 12 | @Suppress("PrivatePropertyName") 13 | private val CHECK_PUBLICATION: String? by settings 14 | 15 | if (CHECK_PUBLICATION != null) { 16 | include(":tools:check-publication") 17 | } else { 18 | include(":library:endians") 19 | } 20 | -------------------------------------------------------------------------------- /tools/check-publication/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | -------------------------------------------------------------------------------- /tools/check-publication/build.gradle.kts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | plugins { 17 | id("configuration") 18 | } 19 | 20 | repositories { 21 | val host = "https://s01.oss.sonatype.org" 22 | 23 | if (version.toString().endsWith("-SNAPSHOT")) { 24 | maven("$host/content/repositories/snapshots/") 25 | } else { 26 | maven("$host/content/groups/staging") { 27 | val p = rootProject.properties 28 | 29 | credentials { 30 | username = p["mavenCentralUsername"]?.toString() 31 | password = p["mavenCentralPassword"]?.toString() 32 | } 33 | } 34 | } 35 | } 36 | 37 | kmpConfiguration { 38 | configureShared { 39 | common { 40 | sourceSetMain { 41 | dependencies { 42 | implementation("$group:endians:$version") 43 | } 44 | } 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /tools/check-publication/src/commonMain/kotlin/tools/check/publication/Stub.kt: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2023 Matthew Nelson 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * https://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | **/ 16 | package tools.check.publication 17 | 18 | internal fun stub() { /* no-op */ } 19 | --------------------------------------------------------------------------------