diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index 27756b36..867b676f 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -1 +1 @@ -FROM us-docker.pkg.dev/elide-fw/tools/codespace:latest@sha256:3271a9cbb8026aefd75436492ccba95491d8b6b4f8a62ed243b3b8f36172cf9d +FROM us-docker.pkg.dev/elide-fw/tools/codespace:latest@sha256:c747a6727ff61e64afada3380bcc6389cd7e38e101a5a94805f270fb49333f9f diff --git a/.github/workflows/pre-merge.yaml b/.github/workflows/pre-merge.yaml index 6b1aa196..f669554f 100644 --- a/.github/workflows/pre-merge.yaml +++ b/.github/workflows/pre-merge.yaml @@ -12,12 +12,10 @@ on: - "*" env: - GRADLE_CACHE_USERNAME: apikey - GRADLE_CACHE_PASSWORD: ${{ secrets.BUILDLESS_APIKEY }} + BUILDLESS_APIKEY: ${{ secrets.BUILDLESS_APIKEY }} GRADLE_CACHE_REMOTE: "true" - GRADLE_CACHE_LOCAL: true - GRADLE_CACHE_PUSH: true - CACHE_ENDPOINT: "https://azr.less.build/cache/generic/" + GRADLE_CACHE_LOCAL: false + CACHE_ENDPOINT: "https://global.less.build/cache/generic/" GRADLE_OPTS: "-Xmx6g -XX:MaxMetaspaceSize=1024m -XX:+UseParallelGC" jobs: @@ -34,7 +32,6 @@ jobs: gradle: strategy: - fail-fast: false matrix: os: [ubuntu] include: @@ -46,9 +43,14 @@ jobs: GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }} if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} steps: + - name: Harden Runner + uses: step-security/harden-runner@cba0d00b1fc9a034e1e642ea0f1103c282990604 # v2.5.0 + with: + egress-policy: audit + ## Setup: Repo - name: Checkout Repo - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 ## Setup: Node - name: "Setup: Node" @@ -62,11 +64,12 @@ jobs: ## Setup: GraalVM - name: "Setup: GraalVM" - uses: graalvm/setup-graalvm@b53bc17dd7dc3052d7c6751f6a5c34abdbf928b3 # v1 + uses: graalvm/setup-graalvm@d1891786152ae96fee67f86c3a1eae596291bbed # v1.1.2 with: components: "native-image,js" - version: ${{ vars.GVM_VERSION }} - java-version: ${{ vars.JVM_VERSION }} + version: latest + distribution: graalvm + java-version: 20 github-token: ${{ secrets.GITHUB_TOKEN }} ## Setup: Gradle Caches @@ -81,7 +84,7 @@ jobs: gpg --list-secret-keys --keyid-format LONG gpg --export-secret-keys > /home/runner/.gnupg/secring.gpg - ## Setup: Checkout Code + ## Setup: Cache - name: Cache SonarCloud packages uses: actions/cache@627f0f41f6904a5b1efbaed9f96d9eb58e92e920 # v3 if: ${{ matrix.os == 'ubuntu' }} @@ -92,7 +95,7 @@ jobs: ## Job: Run build - name: Run Gradle build - uses: gradle/gradle-build-action@3fbe033aaae657f011f88f29be9e65ed26bd29ef # v2.3.3 + uses: gradle/gradle-build-action@a4cf152f482c7ca97ef56ead29bf08bcd953284c # v2.7.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} @@ -108,7 +111,7 @@ jobs: ## Job: Reports - name: Pre-merge checks - uses: gradle/gradle-build-action@3fbe033aaae657f011f88f29be9e65ed26bd29ef # v2.3.3 + uses: gradle/gradle-build-action@a4cf152f482c7ca97ef56ead29bf08bcd953284c # v2.7.0 if: ${{ matrix.os == 'ubuntu' }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -127,7 +130,7 @@ jobs: ## Job: Sonar Scan - name: Sonar - uses: gradle/gradle-build-action@3fbe033aaae657f011f88f29be9e65ed26bd29ef # v2.3.3 + uses: gradle/gradle-build-action@a4cf152f482c7ca97ef56ead29bf08bcd953284c # v2.7.0 if: ${{ matrix.os == 'ubuntu' }} continue-on-error: true env: @@ -142,7 +145,7 @@ jobs: ## Job: Run plugin - name: Run the plugin - uses: gradle/gradle-build-action@3fbe033aaae657f011f88f29be9e65ed26bd29ef # v2.3.3 + uses: gradle/gradle-build-action@a4cf152f482c7ca97ef56ead29bf08bcd953284c # v2.7.0 if: success() with: arguments: | @@ -158,7 +161,7 @@ jobs: ## CI: Build - name: "Failure reports" if: failure() - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3 + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: failure-reports path: | @@ -168,7 +171,7 @@ jobs: - name: Verify plugin output (JS) if: success() run: | - file ./example/fullstack/node/build/distributions/*.*js + file ./example/fullstack/node/build/dist/js/*/*.*js grep -Fq "esbuild" ./example/fullstack/node/build/esbuild/esbuild.*.*js ## Job: Verify plugin output (JVM) @@ -176,14 +179,14 @@ jobs: if: success() run: | file ./example/fullstack/server/build/resources/main/embedded/embedded.assets* - file ./example/fullstack/server/build/resources/main/embedded/*.*js + file ./example/fullstack/server/build/resources/main/embedded/*.js file ./example/fullstack/server/build/resources/main/assets/*.txt file ./example/fullstack/server/build/resources/main/assets/*.css - file ./example/fullstack/server/build/resources/main/assets/*.*js + file ./example/fullstack/server/build/resources/main/assets/*.js ## Job: Report Code Coverage - name: "Report: Codecov" - uses: codecov/codecov-action@d9f34f8cd5cb3b3eb79b3e4b5dae3a16df499a70 # v3 + uses: codecov/codecov-action@eaaf4bedf32dbdc6b720b63067d99c4d77d6047d # v3.1.4 continue-on-error: true if: ${{ matrix.os == 'ubuntu' }} with: diff --git a/.github/workflows/publish-plugin.yaml b/.github/workflows/publish-plugin.yaml index d4550bae..aaf94654 100644 --- a/.github/workflows/publish-plugin.yaml +++ b/.github/workflows/publish-plugin.yaml @@ -13,8 +13,12 @@ jobs: GRADLE_PUBLISH_SECRET: ${{ secrets.GRADLE_PUBLISH_SECRET }} if: ${{ !contains(github.event.head_commit.message, 'ci skip') }} steps: + - name: Harden Runner + uses: step-security/harden-runner@cba0d00b1fc9a034e1e642ea0f1103c282990604 # v2.5.0 + with: + egress-policy: audit - name: Checkout Repo - uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3 + uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: "Setup: Node" uses: actions/setup-node@64ed1c7eab4cce3362f8c340dee64e5eaeef8f7c # v3 with: @@ -22,7 +26,7 @@ jobs: - name: "Setup: Yarn" run: npm install -g yarn@1.22.19 && yarn - name: Cache Gradle Caches - uses: gradle/gradle-build-action@3fbe033aaae657f011f88f29be9e65ed26bd29ef # tag=v2 + uses: gradle/gradle-build-action@a4cf152f482c7ca97ef56ead29bf08bcd953284c # v2.7.0 - name: "Setup: Signing Keys" run: | cat <(echo -e "${{ secrets.SIGNING_KEY }}") | base64 -d | gpg --batch --import diff --git a/.version b/.version index 8006483d..5a7c2d2c 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -1.0.0-beta23 +1.0.0-beta22 diff --git a/README.md b/README.md index 6b2c1b90..ab2fae7b 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ ![beta](https://img.shields.io/badge/status-beta-blue.svg) [![CI](https://github.com/elide-dev/buildtools/actions/workflows/pre-merge.yaml/badge.svg)](https://github.com/elide-dev/buildtools/actions/workflows/pre-merge.yaml) -[![Kotlin](https://img.shields.io/badge/kotlin-1.8.21-blue.svg?logo=kotlin)](http://kotlinlang.org) +[![Kotlin](https://img.shields.io/badge/kotlin-1.9.20-Beta2-blue.svg?logo=kotlin)](http://kotlinlang.org) [![Gradle](https://img.shields.io/badge/gradle-8.x-blue.svg?logo=gradle)](http://gradle.org) [![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=elide-dev_buildtools&metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=elide-dev_buildtools) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=elide-dev_buildtools&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=elide-dev_buildtools) @@ -27,7 +27,7 @@ below for specific installation and use instructions. ```kotlin plugins { - id("dev.elide.buildtools.plugin") version "1.0.0-beta23" + id("dev.elide.buildtools.plugin") version "1.0.0-beta22" } ``` @@ -35,13 +35,13 @@ plugins { ```groovy plugins { - id "dev.elide.buildtools.plugin" version "1.0.0-beta23" + id "dev.elide.buildtools.plugin" version "1.0.0-beta22" } ``` #### Plugin coordinates -- **Version:** `1.0.0-beta23` +- **Version:** `1.0.0-beta22` - **Plugin ID:** `dev.elide.buildtools.plugin` - **Classpath Coordinate:** `dev.elide.buildtools:plugin` diff --git a/SECURITY.md b/SECURITY.md index dbb6495b..3fe175d8 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -10,4 +10,4 @@ The following plugin versions receive ongoing security updates, or are marked as ## Reporting a Vulnerability -To report a security vulnerability within Elide, the Elide build tools, or a relevant dependency, please file an issue with the main repository, available [here](https://github.com/elide-dev/elide/issues). +To report a security vulnerability within Elide, the Elide build tools, or a relevant dependency, please file an issue with the main repository, available [here](https://github.com/elide-dev/v3/issues). diff --git a/build.gradle.kts b/build.gradle.kts index 34e4a650..3c1b53c3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -15,12 +15,13 @@ import java.util.Properties plugins { java + kotlin("kapt") version "1.9.20-Beta2" apply false alias(libs.plugins.ksp) apply false - alias(libs.plugins.kotlin.kapt) apply false alias(libs.plugins.kover) alias(libs.plugins.detekt) alias(libs.plugins.ktlint) alias(libs.plugins.sonar) + alias(libs.plugins.dependencyAnalysis) alias(libs.plugins.versionCheck) } @@ -34,8 +35,8 @@ version = if (project.hasProperty("elide.stamp") && project.properties["elide.st } java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } val props = Properties() @@ -58,14 +59,18 @@ sonarqube { property("sonar.dynamicAnalysis", "reuseReports") property("sonar.junit.reportsPath", "build/reports/") property("sonar.java.coveragePlugin", "jacoco") - property("sonar.coverage.jacoco.xmlReportPaths", "$buildDir/reports/kover/merged/xml/report.xml") + property("sonar.coverage.jacoco.xmlReportPaths", layout.buildDirectory.file("reports/kover/merged/xml/report.xml")) property("sonar.jacoco.reportPath", "build/jacoco/test.exec") property("sonar.sourceEncoding", "UTF-8") } } koverReport { - // nothing + defaults { + xml { + onCheck = isCI + } + } } subprojects { @@ -83,10 +88,11 @@ subprojects { property( "sonar.coverage.jacoco.xmlReportPaths", listOf( - "$buildDir/reports/jacoco/testCodeCoverageReport/testCodeCoverageReport.xml", - "$buildDir/reports/jacoco/testCodeCoverageReport/jacocoTestReport.xml", - "$buildDir/reports/jacoco/test/jacocoTestReport.xml", - "$buildDir/reports/kover/xml/coverage.xml", + layout.buildDirectory.file("reports/jacoco/testCodeCoverageReport/testCodeCoverageReport.xml"), + layout.buildDirectory.file("reports/jacoco/testCodeCoverageReport/jacocoTestReport.xml"), + layout.buildDirectory.file("reports/jacoco/test/jacocoTestReport.xml"), + layout.buildDirectory.file("reports/kover/xml/coverage.xml"), + layout.buildDirectory.file("reports/kover/xml/report.xml"), ) ) } @@ -105,17 +111,19 @@ subprojects { } } - configurations.all { - if (!name.contains("detached")) { - resolutionStrategy.activateDependencyLocking() - } - } - detekt { - config = rootProject.files("config/detekt/detekt.yml") + config.from(rootProject.files("config/detekt/detekt.yml")) } } +dependencyLocking { + lockMode = LockMode.LENIENT + ignoredDependencies.addAll(listOf( + "org.jetbrains.kotlinx:atomicfu*", + "org.jetbrains.kotlinx:kotlinx-serialization*", + )) +} + rootProject.plugins.withType(NodeJsRootPlugin::class.java) { // 16+ required for Apple Silicon support // https://youtrack.jetbrains.com/issue/KT-49109#focus=Comments-27-5259190.0-0 diff --git a/config/detekt/detekt.yml b/config/detekt/detekt.yml index e7a818c2..18c48708 100644 --- a/config/detekt/detekt.yml +++ b/config/detekt/detekt.yml @@ -192,7 +192,6 @@ complexity: thresholdInEnums: 11 ignoreDeprecated: false ignorePrivate: false - ignoreOverridden: false coroutines: active: true @@ -348,7 +347,6 @@ naming: BooleanPropertyNaming: active: false allowedPattern: "^(is|has|are)" - ignoreOverridden: true ClassNaming: active: true classPattern: "[A-Z][a-zA-Z0-9]*" @@ -357,7 +355,6 @@ naming: parameterPattern: "[a-z][A-Za-z0-9]*" privateParameterPattern: "[a-z][A-Za-z0-9]*" excludeClassPattern: "$^" - ignoreOverridden: true EnumNaming: active: true enumEntryPattern: "[A-Z][_a-zA-Z0-9]*" @@ -383,12 +380,10 @@ naming: ] functionPattern: "[a-z][a-zA-Z0-9]*" excludeClassPattern: "$^" - ignoreOverridden: true FunctionParameterNaming: active: true parameterPattern: "[a-z][A-Za-z0-9]*" excludeClassPattern: "$^" - ignoreOverridden: true InvalidPackageDeclaration: active: false rootPackage: "" @@ -430,7 +425,6 @@ naming: variablePattern: "[a-z][A-Za-z0-9]*" privateVariablePattern: "(_)?[a-z][A-Za-z0-9]*" excludeClassPattern: "$^" - ignoreOverridden: true performance: active: true @@ -594,14 +588,6 @@ style: ExpressionBodySyntax: active: false includeLineWrapping: false - ForbiddenComment: - active: true - values: - - "FIXME:" - - "STOPSHIP:" - - "TODO:" - allowedPatterns: "" - customMessage: "" ForbiddenImport: active: false imports: [] @@ -649,8 +635,6 @@ style: ignoreEnums: false ignoreRanges: false ignoreExtensionFunctions: true - MandatoryBracesIfStatements: - active: false MandatoryBracesLoops: active: false MaxLineLength: @@ -677,8 +661,6 @@ style: active: true OptionalUnit: active: false - OptionalWhenBraces: - active: false PreferToOverPairSyntax: active: false ProtectedMemberInFinalClass: diff --git a/example/fullstack/server/build.gradle.kts b/example/fullstack/server/build.gradle.kts index 4dcd8170..9492549b 100644 --- a/example/fullstack/server/build.gradle.kts +++ b/example/fullstack/server/build.gradle.kts @@ -68,5 +68,5 @@ elide { tasks.withType().configureEach { // Target version of the generated JVM bytecode. It is used for type resolution. - jvmTarget = "11" + jvmTarget = "17" } diff --git a/example/fullstack/server/src/main/assets/basestyles.css b/example/fullstack/server/src/main/assets/basestyles.css index 4a01b45d..bc667c4a 100644 --- a/example/fullstack/server/src/main/assets/basestyles.css +++ b/example/fullstack/server/src/main/assets/basestyles.css @@ -1,3 +1,16 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + html { --some-var: yellow; } diff --git a/example/fullstack/server/src/main/assets/coolstyles.css b/example/fullstack/server/src/main/assets/coolstyles.css index ea854e73..5614f554 100644 --- a/example/fullstack/server/src/main/assets/coolstyles.css +++ b/example/fullstack/server/src/main/assets/coolstyles.css @@ -1,3 +1,16 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + body { background: var(--some-var, green); } diff --git a/example/fullstack/server/src/main/assets/some-script.js b/example/fullstack/server/src/main/assets/some-script.js index 4a64346e..022aaf2c 100644 --- a/example/fullstack/server/src/main/assets/some-script.js +++ b/example/fullstack/server/src/main/assets/some-script.js @@ -1,3 +1,16 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + function main() { console.log("hello script"); } diff --git a/example/mixed/src/main/embedded/main.js b/example/mixed/src/main/embedded/main.js index 42cc5bc3..58f3f58f 100644 --- a/example/mixed/src/main/embedded/main.js +++ b/example/mixed/src/main/embedded/main.js @@ -1 +1,14 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + /* I am empty. */ diff --git a/example/static/server/build.gradle.kts b/example/static/server/build.gradle.kts index 68516cb3..e2187c0d 100644 --- a/example/static/server/build.gradle.kts +++ b/example/static/server/build.gradle.kts @@ -14,17 +14,17 @@ plugins { alias(libs.plugins.micronaut.aot) kotlin("jvm") -// alias(libs.plugins.ksp) + alias(libs.plugins.ksp) id("dev.elide.buildtools.plugin") } application { - mainClass.set("example.App") + mainClass = "example.App" } dependencies { -// ksp(libs.elide.tools.processor) -// ksp(libs.autoService.ksp) + ksp(libs.elide.tools.processor) + ksp(libs.autoService.ksp) implementation(libs.elide.server) implementation(libs.elide.proto.core) @@ -36,17 +36,13 @@ dependencies { } micronaut { - version.set("3.9.1") + version = "4.1.2" } elide { mode = BuildMode.DEVELOPMENT server { -// ssg { -// enable() -// } - assets { bundler { format(ManifestFormat.BINARY) @@ -104,5 +100,5 @@ tasks.named("optimizedDistZip").configure { tasks.withType().configureEach { // Target version of the generated JVM bytecode. It is used for type resolution. - jvmTarget = "17" + jvmTarget = "11" } diff --git a/example/static/server/src/main/assets/basestyles.css b/example/static/server/src/main/assets/basestyles.css index 4a01b45d..bc667c4a 100644 --- a/example/static/server/src/main/assets/basestyles.css +++ b/example/static/server/src/main/assets/basestyles.css @@ -1,3 +1,16 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + html { --some-var: yellow; } diff --git a/example/static/server/src/main/embedded/main.js b/example/static/server/src/main/embedded/main.js index 42cc5bc3..58f3f58f 100644 --- a/example/static/server/src/main/embedded/main.js +++ b/example/static/server/src/main/embedded/main.js @@ -1 +1,14 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + /* I am empty. */ diff --git a/gradle-ci.properties b/gradle-ci.properties index 8bce8123..68ec664c 100644 --- a/gradle-ci.properties +++ b/gradle-ci.properties @@ -1,2 +1,15 @@ +# +# Copyright (c) 2023 Elide Ventures, LLC. +# +# Licensed under the MIT license (the "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://opensource.org/license/mit/ +# +# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under the License. +# + # # Settings: Build elide.ci = true diff --git a/gradle.properties b/gradle.properties index 6d447cd2..605d8c37 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,18 +1,31 @@ +# +# Copyright (c) 2023 Elide Ventures, LLC. +# +# Licensed under the MIT license (the "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://opensource.org/license/mit/ +# +# Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on +# an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations under the License. +# + org.gradle.jvmargs = -Xmx1536m -XX:+UseParallelGC org.gradle.parallel = true org.gradle.caching = true org.gradle.configureondemand = true -org.gradle.dependency.verification=lenient -org.gradle.configuration-cache=false -org.gradle.configuration-cache.problems=warn + buildExamples = false # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style = official -versions.java.language = 11 -versions.kotlin.sdk = 1.8.21 -versions.kotlin.language = 1.8 +versions.java.minimum = 17 +versions.java.language = 17 +versions.java.target = 17 +versions.kotlin.sdk = 1.9.20-Beta2 +versions.kotlin.language = 1.9 kotlin.parallel.tasks.in.project = true kotlin.build.report.output = build_scan @@ -25,3 +38,9 @@ ksp.incremental.intermodule = true kapt.incremental.apt = true kapt.classloaders.cache.size = 5 kapt.include.compile.classpath = false + +org.gradle.configuration-cache = false +org.gradle.configuration-cache.problems = warn +org.gradle.configuration-cache.stable = true +org.gradle.dependency.verification = lenient +org.gradle.warning.mode = none diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 50a916cb..bc2ef4af 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,46 +1,47 @@ [versions] -elide = "1.0-v3-alpha3-b8" -ksp = "1.8.21-1.0.11" -detekt = "1.22.0" -kotlin = "1.8.21" +elide = "1.0.0-alpha7" +elideTools = "1.0.0-alpha7" +ksp = "1.9.20-Beta2-1.0.13" +detekt = "1.23.1" +kotlin = "1.9.20-Beta2" kotlin_dsl = "4.0.7" -ktlint = "0.48.2" -ktlintGradle = "11.3.1" -kotlinx_coroutines = "1.7.0" +ktlint = "0.50.0" +ktlintGradle = "11.5.0" +kotlinx_coroutines = "1.7.3" kotlinx_collections = "0.3.5" -kotlinx_datetime = "0.4.0" -kotlinx_serialization = "1.5.0" -kotlinx_abiValidator = "0.12.1" -google_api_common = "2.5.0" +kotlinx_datetime = "0.4.1" +kotlinx_serialization = "1.6.0" +kotlinx_abiValidator = "0.13.2" +google_api_common = "2.14.1" google_html_types = "1.0.8" -atomicfu = "0.20.0" +atomicfu = "0.21.0" pluginPublish = "0.21.0" -pluginProtobuf = "0.9.2" -versionCheck = "0.46.0" -nodePlugin = "3.5.1" -sonar = "4.0.0.2929" -protobuf = "3.21.11" -truth = "1.1.3" -picocli = "4.7.1" -slf4j = "1.7.36" -brotli4j = "1.9.0" +pluginProtobuf = "0.9.3" +versionCheck = "0.47.0" +nodePlugin = "5.0.0" +sonar = "4.3.0.3225" +protobuf = "3.21.2" +truth = "1.1.5" +picocli = "4.7.4" +slf4j = "2.0.9" +brotli4j = "1.12.0" gson = "2.10.1" -guava = "31.1-jre" +guava = "32.1.1-jre" checker_compat_qual = "2.5.5" -npm_esbuild = "0.16.1" +npm_esbuild = "0.18.17" npm_prepack = "0.2.54" -commons_compress = "1.22" +commons_compress = "1.23.0" shadow_plugin = "7.1.2" soy = "2022-10-26" closure = "v20230103" closure_stylesheets = "1.5.0" -buildconfig_plugin = "3.1.0" -auto_service = "1.0.1" -kover = "0.7.0-Beta" +buildconfig_plugin = "4.1.2" +auto_service = "1.1.1" +kover_plugin = "0.7.3" testLoggerPlugin = "3.2.0" - -micronaut = "3.9.1" -micronaut_plugin = "3.7.9" +dependencyAnalysis = "1.20.0" +micronaut = "4.1.2" +micronaut_plugin = "4.0.3" [plugins] detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } @@ -52,8 +53,9 @@ kotlin_plugin_noarg = { id = "org.jetbrains.kotlin.plugin.noarg", version.ref = kotlin_plugin_allopen = { id = "org.jetbrains.kotlin.plugin.allopen", version.ref = "kotlin" } kotlin_plugin_atomicfu = { id = "org.jetbrains.kotlin.plugin.atomicfu", version.ref = "kotlin" } kotlinx_plugin_abiValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "kotlinx_abiValidator" } -kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" } +kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover_plugin" } testLogger = { id = "com.adarshr.test-logger", version.ref = "testLoggerPlugin" } +dependencyAnalysis = { id = "com.autonomousapps.dependency-analysis", version.ref = "dependencyAnalysis" } micronaut_application = { id = "io.micronaut.application", version.ref = "micronaut_plugin" } micronaut_aot = { id = "io.micronaut.aot", version.ref = "micronaut_plugin" } @@ -122,30 +124,23 @@ google_auto_service_annotations = { group = "com.google.auto.service", name = "a elide_core = { group = "dev.elide", name = "elide-core", version.ref = "elide" } elide_base = { group = "dev.elide", name = "elide-base", version.ref = "elide" } -elide_ssg = { group = "dev.elide", name = "elide-ssg", version.ref = "elide" } elide_server = { group = "dev.elide", name = "elide-server", version.ref = "elide" } -elide_proto_legacy = { group = "dev.elide", name = "proto", version = "1.0-v3-alpha1-rc38" } -#elide_proto_core = { group = "dev.elide", name = "elide-proto-core", version.ref = "elide" } -#elide_proto_protobuf = { group = "dev.elide", name = "elide-proto-protobuf", version.ref = "elide" } -#elide_proto_flatbuffers = { group = "dev.elide", name = "elide-proto-flatbuffers", version.ref = "elide" } -#elide_proto_kotlinx = { group = "dev.elide", name = "elide-proto-kotlinx", version.ref = "elide" } -elide_tools_processor = { group = "dev.elide", name = "elide-ksp-processor", version.ref = "elide" } -elide_tools_conventions = { group = "dev.elide", name = "elide-convention-plugins", version.ref = "elide" } -elide_tools_substrate = { group = "dev.elide", name = "elide-substrate", version.ref = "elide" } -elide_bom_catalog = { group = "dev.elide", name = "elide-bom", version.ref = "elide" } -elide_bom_platform = { group = "dev.elide", name = "elide-platform", version.ref = "elide" } -elide_kotlin_plugin_injekt = { group = "dev.elide", name = "kotlin-injekt-plugin", version.ref = "elide" } -elide_kotlin_plugin_interakt = { group = "dev.elide", name = "kotlin-interakt-plugin", version.ref = "elide" } -elide_kotlin_plugin_redakt = { group = "dev.elide", name = "kotlin-redakt-plugin", version.ref = "elide" } -elide_kotlin_plugin_sekret = { group = "dev.elide", name = "kotlin-sekret-plugin", version.ref = "elide" } +elide_proto_core = { group = "dev.elide", name = "elide-proto-core", version.ref = "elide" } +elide_proto_protobuf = { group = "dev.elide", name = "elide-proto-protobuf", version.ref = "elide" } +elide_proto_flatbuffers = { group = "dev.elide", name = "elide-proto-flatbuffers", version.ref = "elide" } +elide_proto_kotlinx = { group = "dev.elide", name = "elide-proto-kotlinx", version.ref = "elide" } +elide_bom_catalog = { group = "dev.elide", name = "bom", version.ref = "elide" } +elide_bom_platform = { group = "dev.elide", name = "platform", version.ref = "elide" } +elide_tools_processor = { group = "dev.elide.tools", name = "elide-processor", version.ref = "elideTools" } +elide_tools_substrate = { group = "dev.elide.tools", name = "elide-substrate", version.ref = "elideTools" } +elide_kotlin_plugin_redakt = { group = "dev.elide.tools.kotlin.plugin", name = "redakt-plugin", version.ref = "elideTools" } +#elide_proto_legacy = { group = "dev.elide", name = "proto", version = "1.0-v3-alpha1-rc38" } +#elide_kotlin_plugin_injekt = { group = "dev.elide.tools.kotlin.plugin", name = "injekt-plugin", version.ref = "elideTools" } +#elide_kotlin_plugin_interakt = { group = "dev.elide.tools.kotlin.plugin", name = "interakt-plugin", version.ref = "elideTools" } +#elide_kotlin_plugin_sekret = { group = "dev.elide.tools.kotlin.plugin", name = "sekret-plugin", version.ref = "elideTools" } -plugin_kover = { group = "org.jetbrains.kotlinx", name = "kover-gradle-plugin", version.ref = "kover" } -plugin_detekt = { group = "io.gitlab.arturbosch.detekt", name = "detekt-gradle-plugin", version.ref = "detekt" } plugin_node = { group = "com.github.node-gradle", name = "gradle-node-plugin", version.ref = "nodePlugin" } -plugin_sonar = { group = "org.sonarsource.scanner.gradle", name = "sonarqube-gradle-plugin", version.ref = "sonar" } -plugin_versionCheck = { group = "com.github.ben-manes", name = "gradle-versions-plugin", version.ref = "versionCheck" } -plugin_testLogger = { group = "com.adarshr", name = "gradle-test-logger-plugin", version.ref = "testLoggerPlugin" } -plugin_buildConfig = { group = "com.github.gmazzo", name = "gradle-buildconfig-plugin", version.ref = "buildconfig_plugin" } +plugin_buildConfig = { group = "com.github.gmazzo.buildconfig", name = "plugin", version.ref = "buildconfig_plugin" } plugin_kotlin_allopen = { group = "org.jetbrains.kotlin", name = "kotlin-allopen", version.ref = "kotlin" } plugin_kotlin_noarg = { group = "org.jetbrains.kotlin", name = "kotlin-noarg", version.ref = "kotlin" } plugin_kotlinx_atomicfu = { group = "org.jetbrains.kotlinx", name = "atomicfu-gradle-plugin", version.ref = "atomicfu" } diff --git a/gradle/verification-keyring.gpg b/gradle/verification-keyring.gpg new file mode 100644 index 00000000..a8536ece Binary files /dev/null and b/gradle/verification-keyring.gpg differ diff --git a/gradle/verification-keyring.keys b/gradle/verification-keyring.keys new file mode 100644 index 00000000..bbbc65c8 --- /dev/null +++ b/gradle/verification-keyring.keys @@ -0,0 +1,5575 @@ +pub 85911F425EC61B51 +uid Marc Philipp +uid Marc Philipp +uid Marc Philipp +uid Open Source Development + +sub 8B2A34A7D4A9B8B3 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +bpJ8mdzS2PJko7mm +=NMA1 +-----END PGP PUBLIC KEY BLOCK----- + +pub 8671A8DF71296252 +sub 51F5B36C761AA122 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=Om3K +-----END PGP PUBLIC KEY BLOCK----- + +pub 86FDC7E2A11262CB +uid Gary David Gregory (Code signing key) + +sub 59BA7BFEAD3D7F94 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=GKsT +-----END PGP PUBLIC KEY BLOCK----- + +pub 873A8E86B4372146 +uid Olivier Lamy +uid Olivier Lamy + +sub 1AFEC329B615D06C +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=r5ry +-----END PGP PUBLIC KEY BLOCK----- + +pub 91AA2C186C4D7A86 +uid Gradle Inc. + +sub 5A06D76BA5629225 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQINBGT5wUYBEADItbFztBzlOK1wo55wdvy8CBTv4kKVDmHExwnapZYzcjl7p9Ih +2DKwroE0a9T7vk+eChUYPjNKtcZbgX8Jcp1Q0ngd+L9YL0CMQVs8g/rN1K7vHfCZ +uXPVd0y/hUgT2foJMbWOcIJmIRVsn5SpBKKvoWQ0x0SL4ooFEhDgrGt7oZ6y9Lxa +ybsPMo26GyxtaideXx1yP5l4l70GNkBiN3f2z/6q6kQXl5yuFIVp7hFOiReQ0yb0 +YsOFsaVgB/eMAK0+a8rkcjaLGmTQdYOG47uCDoXO3WOJf5rWUckDDooA63Fa8975 +CCSZqCGdY99s2DA+QdYqxdC15bOZ7N5A4tM3lai/rOjCvzwmT6MyVVQ2GdrmFFG5 +sfwhTcC3qSxNyo9eNM+K9dx9wl69XgOKHte31THCk4PFR7jM+dF0Yu0h+b937bYl +iVRztOJPVmRZwOD4OhRGa5OECzFAjOi0CKPyEJjrIPgva6lyb6dL8GfYxeILmiLz +UHcuXe6wV2gp3Zw9UppuU/tEjaYx70Z3sJn7A4guIAH255OvK4iyu3Et+kVXrCoR +TLfjLjPUrzhdDfYQTSjW0DxZDWteg+eLKREhwbRg3aq+7aELCjZ994sgIgWtOsKs +BcKAhugweCDF29J4OPxt3i3K9H8Esn78clyxIemLd9eVp3YrVN5m2VzT6QARAQAB +tB1HcmFkbGUgSW5jLiA8aW5mb0BncmFkbGUuY29tPrkCDQRk+cFGARAAnjkWUQUB +oC8Yk9KJxiwUCtT7jqe67hpYr6rTx8emA1pxR1Ny7B4CtMpvq2JW0CgRa/HbXVlO +Y2aiIpxwlE0+emUrpG+fi7+tEm0w8xG7gDd7pSdBY3Itp35Qw3FGFUd7KoXRazwS +99lTtukQ+kL8nPmf8IxjAjXeJTwvJJM3AFKiBcY10YJjyJDnPZpL9LyJc37Jb1Lo +hwNupSlzfDqyRorrmeRrnvax3JIqv119kga2PQanAV85iHS/6TVsMWTCoUJYBi+T +tQwMzLFbuPr0QT9DT0IuiVhu/vCHefwNzOKvae4JkuYoeLnp6YkXr9qAYVZC3JE3 +uCwVHG6IUCWcCLJLGZLBDa23bzJjFwLwVABmFawYQ3aT/b2vZmJ1GOIoAf5nMkKw +cw3ZrqOYCVQKdzgZEKmhAWuLqx9+wGeNutBpgfWkLJyBmf6I/PxWxPSuygGayLak +Bzc9qcTWpH1eqhOKghpPO3U10EzIPqI3aY4GDPvVdQnKoSnRtZ0eXkl3VpIyPN20 +looCdmDY7Fj1KHjcQizxAqTjJcAPounWmZEkDBFG95AY5PfQpx3l1TN845CVmXK9 +JocKzt8W0fu2/hcDl69P0/3Lur+XXGEJFfHsODdKwUyqZfzsfKs9r1SKcyk+WFwM +Fa026BGaYYtGM2bAgidrouOFo+ItQLPmgDkAEQEAAYkCNgQYAQgAIBYhBA7yysaz +V3U5t6tbzJGqLBhsTXqGBQJk+cFGAhsMAAoJEJGqLBhsTXqGm2QQAJa1vq1mGLHp +VcpMbAcP33+x5/yM8GDkkPyYZirud+Nb1K7LNl9mkKgVQOeZIscKcMZV5Atgwsju +qiKGBxN6by70+9TDpindhrl6ldIWfu8Xxeac34s/rI485G5n6saccCfkLAKUEH9Q +e4jD8jcmCNKTjkTb08r+wCWzcBAAvjAcQhrB2VcwGffwAGRKI+ZiNAFTf5xYPl2X +LT0yRSN7oFg7gktZHAe+XzsASMTPJ9x3W/aXCpV3PB1BJQf6b46StyMoA7lk3ZUp +NIuaUy/55cKiLziv7enYpDdE/8jOAIWeVc/foxGad87zzTgV5ekU7unEBowXavJM +TMS5ybS9hBAgSaV7xc/qPXdKwBP3YPD/ml09aUkfrzUKr7DPxTeXTd+O0XyjAtqX +ZXyKl5g0jGGWG5b72GcKMQEogZkgHU2jzPmFNRJ9PnEqE5B9KyCKaWrCQ0YT0Xv5 +C9qP0BTJbueTulP6N2y/COY3IM4aGnQr9c2sTLSEv37xVeunEJB2E6eBogKbwaB6 +6e97407FJHGv2voxYUm1TUX1z/pY0oITXJmcOuUqAEj0O0QEVVWoo4iHdWYKSUpi +pbzJdy1NsuEiWMVE7FWquKtPzQglUuGFCYCl5H4wA63MvrG8tr63BCcBU0cz4MFH +If/2xcnaPc0MGDTiFaLBjP0pEy9CgfIn +=dEpT +-----END PGP PUBLIC KEY BLOCK----- + +pub 928B20E9AD5298CC +uid Jakarta Contexts and Dependency Injection + +sub 0AA3E5C3D232E79B +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=eAIz +-----END PGP PUBLIC KEY BLOCK----- + +pub 95962C5E716C39AA +uid Tony Robalik + +sub E04D6BFB21395F43 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=CrNY +-----END PGP PUBLIC KEY BLOCK----- + +pub 96B88EACD463B90B +uid DiffPlug LLC + +sub E09F6A4522F77DB9 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 ++0dwSoh3NyBxizsAWePMOK157AXfExz+iRUK +=ynq3 +-----END PGP PUBLIC KEY BLOCK----- + +pub 991EFB94DB91127D +uid Antoine Mottier + +sub C327DD2B96A50E1C +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +zXFYXic= +=osYp +-----END PGP PUBLIC KEY BLOCK----- + +pub 995EFBF4A3D20BEB +uid Ktlint (ktlint signing key) + +sub B89991D171A02F5C +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +RUjO/QWG6CIej/nl7O0g91NtlEY= +=Ixqm +-----END PGP PUBLIC KEY BLOCK----- + +pub 9987B20C8F6A3064 +uid mkruskal + +sub 80CFA7C482552DC3 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +vyMjyB4YL48bYbjwFEar/jLCQJj/Dg== +=Mtq5 +-----END PGP PUBLIC KEY BLOCK----- + +pub 9A259C7EE636C5ED +uid Liam Miller-Cushon + +sub D66472CF54179CC4 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +mYUp5X93bS4y8yo= +=eURh +-----END PGP PUBLIC KEY BLOCK----- + +pub 9EB80E92EB2135B1 +uid Slawomir Jaranowski +uid Slawomir Jaranowski + +sub E3F6790A5A167F5A +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=c5jm +-----END PGP PUBLIC KEY BLOCK----- + +pub A1AE06236CA2BA62 +uid DiffPlug LLC + +sub 030DD9087C31C9AF +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=3o8E +-----END PGP PUBLIC KEY BLOCK----- + +pub A2115AE15F6B8B72 +sub 6366592024774157 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGiBDsSIk4RBADSCj6rUjV64tYCGT1DYKYR7GthyWpNdGHSYLbETBcDatAe1dzQ +5NsCgfrlybfyeY+y1lxr3T9bqf6zJWDw/718wff96qmmv1qzexSYtmIrj+h53V82 +EXwWOFuYMJisuxdT940iQzosm3GOv4MJdEg3oI2SgfEyRQQ6vO4Ob5rHDwCg5taZ +nrHOrXx2dIGHxpxRZ0SUl30D/jmtttFjYOQ3LBMriikz5mh2sK3ZnoSRF4o5O0zW +Ve6e2SFXOEjVjImKsH6KCbdQNelrAdgiyOoXClyQKsQ27pncbdWo6bO0E3POJZVm +XaeW7iudHVr63rU5PViXObIQrdQl0D59j5brKj4vdlTyUw8kaHPvbKPDEOwvZq4Y +LJQ5BACA1YilTeXRJqwFsNlpcxCHwlULD4QUVP496prQWf1B7Z6g0KvLGrQsO0Vn +Jcn+fEqukysTJixSXCPebosltd4RalJIupVYkp4w6MJ7biaDAlLuNhDcI/AiXTmV +dXUedVXIaM8I3Ne23gucwbAyc0Hvb+3cSAKRhl/azFQhuHBvlrkBDQQ7EiJUEAQA +zVKWS8QrkysydbTJu2/14wIbz2Coi93aAGelwCwXSxf50JpYdY3Lkcvd0FqT8bcE +nz43MCSx8vlKubQtUpx9WMGIb4ixtShLJ4lAa6FJldhychz/dnxSNyz5N8W6sby4 +dTVxac0rloxjAOurGanhG7TMtgfDi0cEEoXRyAVoKyMAAwUD/j1pJm4Npq2mlJoE +7MK3vAhgKwYHFflmJusmqvSAtRuFdT15pbMJrA5bAK+lA3SVOOhhWTCItlphSR2q +xJCAcBTeOMqUi5ohFcCkSRNvwmDtH+80B3BehlEsEKNk8Z3moa2ch7Oxnb6XEXH5 +tGJ5Qvx9Qid6ZfBaXx7bc8yKyCb4iGUEGBECAAYFAjsSIlQAKQkQohFa4V9ri3IW +IQTOgHWiUVR77iSbwVGiEVrhX2uLcgdlR1BHAAEBDTIAoJ3NtpI/E345LVOruElF +KrnduWWXAJ9Adm9Mz4yoxrosHSkp5BWzXBUt4A== +=AtDT +-----END PGP PUBLIC KEY BLOCK----- + +pub A6ADFC93EF34893E +uid Tom Denley (scarytom) + +sub 9C4C23E6FFE405BD +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBE+xZxIBCACzKctn4ez8xOC0pGThhAwjYWGkzcwK4HNaC1usHThBFz3/t8JN +OqUXRixLyi5wELN6GHlsGVUQS3IfB4JtuhScsieSB8PTree68/knMq6JI08mJqZr +9nFrAB4eDW0UMbSL9kPmclUm/yN+qcCZBrsVn0q6CWb/Kcd8EEXEu6sGILzOGqGe +d433t5O+tGXWL2TjAz+Scsk2Hf4zcuDeQcxELAMnVaVgKuGuEZvibrjsdIvJDGI+ +0BzWIu8ZP8ldBl4SVtzGpEVzLvDUo3mOqBeTkj3rP7xLtFDN/3AFtowbLfL7L2Pg +SMcTnKK+jfFHRfbHP1Ih3rQ4ilLzhCnY/QIZABEBAAG0K1RvbSBEZW5sZXkgKHNj +YXJ5dG9tKSA8dC5kZW5sZXlAY2FudGFiLm5ldD6JATgEEwECACIFAk+xZxICGwMG +CwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEKat/JPvNIk+ysEH/iY5dP/4ERAQ +8YC1j1XoYmMxW219uzxZfwI0ltLtPjGQlZbwlFvwjZk0nDJ6O1iZSeZQm804uRup +gUZe3wqOp7a7z5zHab93QD/nA7O9QmLf2RC7Y0mW0EvD0tfbCzt6JJkAaxKTDA+T +jFoukUZx2KJr0XToE6kwAnKmCgyFkzb2SUqfsBRNRBJBa6XG/1mAtDJJSM1XLChV +Sa9nLwYjZzIcebtmtQ1vVqovO74ixxEzonLlNZi7tkc3GS23yntf5tAH0bQ9bM68 +TB9RHpLvjGgHUJtghFQN/Ny+//q1EsjRGn6Pa20cUPxnMS+WguOYIQx5jTb9ZHA0 +WBcu/V4UL8W5AQ0ET7FnEgEIAM3i3e1sjwrx2PN8XYMPQWG+/YTtw1BYDl2+iYE+ +LaZvtq1hpbgeCLgEVwXrCJ4spLP1rFXogWqKrkJ0LRjlpdKhKBvyH1ex4grh3cWN +/bIDJcJ7JA4I/Bhqhlh8hYycS9pGFeS+MR3aFIsii+vadrwYYvuVYGeWvdZhB7mJ +KYevj5Ms0OpYTfZd95Pzo4o//lNpDnrG7Xd3tgTNU/fkpw6rFB/2Ib1Qlk+Kz1z6 +JNsp+tOPGGCBrzwfwglcikTuqS+xyRgC9cHh5eCol11uSoWPKcQR2Ar8Eo56nxv/ +UApdu15iJ7R8cA5guKeeS4jt0CGCPs2PhuggDxI73Xvl4zsAEQEAAYkBHwQYAQIA +CQUCT7FnEgIbDAAKCRCmrfyT7zSJPuylB/9iwtIQeexMWBmQNdDe0md8HLulDfcu +jPtklrvYHtXMJQFaGA0Vafq0oT9MhBfb1YCP79uF0qgswSxINYCOJx4nTPIP9BOd +TwqfGo7ul27REgNq4lIUW0GkMgZAUA2ft/vc0u/I0PqnhKCi4Pq79hLIx7eiX2yS +fXfYfLXRVzbMWKMoi7lWXseQqbM0RvCA54J1qAi6Ew+JyoYGQ7OvXdL5Eh5Tkm2c +pIADyqCkp/aFDe5lqZiU1zS2fU6mpOf/o0co+GoYkieIxxibDCmt3BioLgmyzpGU +sMNwh4pAIQUGkcxd4spC0KIWdDEvq/QJEEIhZlI/ojefaZkRseFrtl3X +=rYGl +-----END PGP PUBLIC KEY BLOCK----- + +pub AB2DA4527F6FFC0B +uid Egor Andreevici + +sub 1A94B14C6A03458D +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +aEmE +=lnZo +-----END PGP PUBLIC KEY BLOCK----- + +pub AE5A7FB608A0221C +uid Robert Scholte + +sub 38185785755267BD +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQMuBFKTz1wRCADOdMCDOKXlBuQpG7mnQ/5rppqhS0SXdKvNZ5pYrJKib1LLtlS/ +LOeABja3E1ky+znvTqnEEtai7fNhw36zPdUjhPKE0TZwn2aK5fyctkcfqBFsja3E +ntJgzi4pa6gVn+MtIjCak71jv5SrC+LE0dkPM/GwupgPL7Ohfpf7HyAGjlpKihrQ +syg6GmkpZKlhLVD+wg+nILrWngXS6Zz2I9M1rd6wfYVqH8tjYkKYNlexB4hL26zt +f2MKX1MTRpdgO/jPEh8EI4K5qg0eT2x2e6qsii50WobmvraZfUFpQJysJlmt5jwe +k/FWfxZ7Hlys8r88VYGa6sknvofGZfhFRZRbAQDhMzmNSQ0mBoveEA8/gd0FqVA+ +YzX8TY90YNeRQMjXJQgAt3kbBz6uyzAchGxSCyZpnS2dVFWqi6H8gqMjKmEnDn+g +vG19F3STuAKYkJPfJZGwAVnZtTbqQ4R14WgjDuoqHPuFjRw5xrIaEVmb71gFKISP +F8RIMw2jWygNeXbbXjRF2brEV4H+V6JXn6PnzlmBLIiB1zhzutMUu50FxnmclQxa +gUxGMcZG/6PcQtiuhu9oKHUl1+E1fs/pexnsPK2gKkRdyUMnngHJ3aYm9vBFMWya +draOg/6DBRTrvgoOVxzQHSFCSs9ttaHXbLDMD1e9K6DnVMKZVHdJVohNVwxsWxrh +ibUDu0iH4Zp5MFgyx9L2kkP9kbL1hflIsTyQehDUwAgAwl/BklUfuOkw64xNZ9ww +YZ/y4GTNuoDIdVkSArr0cKhiLR3u2Qsgy/K2CW5iuXMQGPBrYFfxcHO1Lge5Mvyt +uYhLYvnH7gwfID/8r5Tjx7ktzoZehO2R4wfqyYfKwLoJGY19uj8hCBmKss3GOK7M +JKLDKLZ3Lv0t4MTiaSmVsZEVRwYD3x70J7l3mUUwVHAK0QeKg9RczJQRd/i0lKzt +OAA/d4gZYscWHbZi0dH/KxnqHzSUDkrLuWrYSdvgaln5tS9hG1ge0LFDxf82f1U9 ++ckdxzYsu5FNjgu8GFZLbLshRri0kKPWqTBX/YPubApadVU94i0eXnqjmZMajXTm +LbQlUm9iZXJ0IFNjaG9sdGUgPHJmc2Nob2x0ZUBhcGFjaGUub3JnPoh6BBMRCAAi +BQJSk89cAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAKCRCuWn+2CKAiHOT5 +AP0bECw/IDKybdLYSd9icYWeMzkBNAsQD00Dvd9bOZOXFQD/TpURVm08mUI6Jexa +u7eNLxfRfsOlCmbzrzMiBAB8dvS5Ag0EUpPPXBAIAI8TJgzJdhJSlxV4FqbCE7DV +LsZtzMEFdKEQQwOmEoC8aX9Bah4dPuVtqMLf/1p6+44zxfcZsmqU8JBFCa+1v5vF +2DOXv1a2jyXa7mCPQ/D08W4i4XlH1Y173bOuRSueRYNqY97TRUw2NbFHFo78VtbK +pUSabpgC0zSixFEl3hU6JB5kcmfJJxCHP9BosgyMNWkPqvgTQ8BO4VD9Augj+w3b +YNZ1cTyYZ9VnaszPoT8ztbYVMhEExkbaLJFVfo2FF8lPIiuVkqDYhqMSwiFoqmgt +wbszG/kPP/88GHXFgt+lGakqSCriVZhrpUFcTv9WxbkLB6muKLxpiE0Tvg/yN/cA +AwUH/jpVa9OeOJFCbKXpkWEpDT+M0LbxQplFuunYkDcax0x5DpB0HiW8fUtC77ma +C+55XgGyhqDxAA/pYBe46R1eCa4Zki4odTnLsN4HJ4aycLP/o1HBWT7WqydaRIAU +HQsWTvbHNPzBt49WdcwfxAOyjecN124fX9Vaxmq+BumV5CHHUT2+ymvFsHygFZKV +PI+M6WNK1e4pW1GPJYmHnHMNMAo1GBf/FsOU4/P3T/YuxtIbrb2xUBQlinyfKSBd +0GbFeJ5fpo816bBtpE6ao9XUVmnWBSn/SgcNnpot0/xsAF3RlXMG6NkCw+TqiC5n +ZpVrR6NW7MUYlGNwCynLFf1634SIYQQYEQgACQUCUpPPXAIbDAAKCRCuWn+2CKAi +HJHUAP9+0eQdcPV6/NekAaDaySEUil6GqqrdJ778weiAKOvrtwEA1EV1n1Siq+96 +GRaLJzret1R51ugVfZjKo498Hp7vRZU= +=l0nB +-----END PGP PUBLIC KEY BLOCK----- + +pub AEAA0761DF8CA3A1 +uid theodore rose + +sub 1D95D8A5D1206FEE +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGNBGIwwp0BDADfRXPIEFGwekOeFMnBRlMnY8uXDoydyRxURmst3V0H7jz6zpN8 +55lLKJW94ssjFAEQd0jfUs6B+vKhko91cTLVz0qHP0B9pUTRTZygM6g+g3JVcwdA +Ok4dRhN6qt+GDRxzBKGUQNtB2jScqGunHqQyOVNRCGqNIG/BICz8vkCnaxJivcVu +JLIxsqC4IZumzzEQtPeNfO0uZ6g4D5EpL3IzOq1ELkZSVYZLMYrV1MBnjF6QWeOC +boGZ01sn3nTeUixHIpSsThnZHHDKCJSr4TMAXoXu8mchH3pe/guHsi9g40BE07H0 +/8NrNzo4u9Om1z9/6ASO+hu6Lv285os29JBaKhIS2TUMkY9hQaN/D+WppC6fXR8o +j3qd8YPcQLTl3mOaR1eGWdNzxKLaoXw917Mm4eYH1/ryUNzwb8BWQ/OM0nm3PEFJ +2saRRU5cjCE5Xf6Av0djJwpFcdSiN+XD/pjwC19Z9sJIoyOd+dF0JXfkLfbqy6VV +EYp/nzNQezqWxisAEQEAAbQndGhlb2RvcmUgcm9zZSA8dGhlb2RvcmVyb3NlQGdv +b2dsZS5jb20+uQGNBGIwwp0BDACxVwgFDod0tGnUNG5pJ8CUEdI4GsOU/DCDgu1d +yGpSfdGt89p657Sh6pJ+IcmyqHBQRtDuW049ld6SuG0J0Itr+mxcr6xrJGGz3fGJ +8IsFMJw/bzPK9hxfhnZ6QGFaiuZ+P3rbi5eK030oTOwqEe5/NaoW3vW7LtMZCsiH +p54tOdN7sY6pE1zdC1J9/scfKE2DDs3MWgt2x5jVxOUfZvU/DMR6/NDXVJ69k4N8 +fcMqzrt+g6JgL1pLPLKDDkzNpeIi29E3FZQO5bz/uP6KHdkomopgmB42VQCAkPCj +PcYJaoeo9UKFcHLPD54dLiuK16ZiTWQNcQdKbVREKS/Val+Sio2oSjMNr7As/R45 +ox8hXTcr7ri0pkHeYnMrl2lZfmGuxnmSfOvuNCY1uF1+FBUPI9XhKLkx7UrVyiqe +UoBky+jADZ6WYuuanDMfgj9ijc0jyYkD5wqrB/gy1ERdBF7BfeCngHmOe6xiYD17 +ZfGfEXp0Wm73VNRKduNUHXKz2rkAEQEAAYkBvAQYAQoAJhYhBFFgjepp8pe+pWrf +m66qB2HfjKOhBQJiMMKdAhsMBQkDwmcAAAoJEK6qB2HfjKOh0cwMAMewfIfmGGvn +0YX/T+IfryolHct2lViRD5nzRe6xG+FOzWzx2T/Cb5NPFomHbrbTIRxT+5+PAg6H +djxwK8/j5kV76+d7SXbLPtKoz/bFHZMTLPYqrqzsCvPyvbRT8ydwiDyXN/jhWFC1 +HNWyr/1NDajf0pvi1EyLKwA2tCSZAXYD4m6SNHcgBWRuWtyERwzudHqNPM0JBZM9 +gGL0z+QcVVi/asltZgRVhk3VWWI2HGe+b6Po+gSignkfypi0SoI4y470zsBOTba7 +/o96iVSjZeNYuvyrNppM16MEOsEn+YjdkQAFmD5M/MOx0HS76yXIB+uyICloULeW +m82J2PTACA7YpxNkjbQFGyVhGzFV3Qx8AmeNTphkrdGmdxf3f1b7eib5tXOAR0PO +LMKeO7vAetdmy/VfCevtYNYxUhmiHmK9KQRbZEwxOZ0GmjIdPPI9MWPNg3win+9d +0GNO/emv+15GkTwlj6xoi2s8EAHR+Kd7ceXUyP7GkFI+aDsa9GvtHg== +=OTkn +-----END PGP PUBLIC KEY BLOCK----- + +pub B0F3710FA64900E7 +uid ?amonn McManus + +sub 7892707E9657EBD4 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFdbSfIBCACrFI0ai/abnV2U2Wa9QQZwGk3Fegc8laiuTKc0GoYdyptd83/H +hD5S61ppdkOugBjVTHdgda3xJ7zBZdnwjZvV/TyayQltbh6hU+BMlEolzXLgyvY7 +cAzKE+iKWbLLwfhRn1iuC7s5l1NLPsh44IUt3xDaFXNQrPO5OnRz8bqsGFVawxmu +2bPqIjkhxEiYpxwaZZbDkgBR6rbBth6A7QOadQcj/9wNdekoM9dyg+olOUmnLrtA +nMBhrvvbm2fZxTps3SZHlLV7+iSu71B5SqU/kT54/49n8vxrQiGvzp9K+t7c7EP2 +w4Ax1nYpRkCxYdHOX3YBdayUiP9ZaYH/YHtLABEBAAG0I8NhbW9ubiBNY01hbnVz +IDxlYW1vbm5AbWNtYW51cy5uZXQ+iQE3BBMBCgAhBQJXW0nyAhsDBQsJCAcDBRUK +CQgLBRYCAwEAAh4BAheAAAoJELDzcQ+mSQDnRqcH/Am3OQSYYBFrtOT3Zrf2NEma +ojd48oWZ5xODFmqSs5ksd3op9qakbqkxITzq7BP6CkFbi2NEWYVbPp+jiSiGr02L +yNA9ipiMBDyVZ7CXTBYqCQZ/3yQKOFN38U8R1SnoH1gDq/YdxDkSkWZEWQlXj4T9 +QR/fXWObN/oIdVDNONL99nqU0+xSvsE+toVHTH7upY7RcdDdnBEarKrifYjbCvpU +0yiOgB1WOj91z/BrfpBFyJ6/qW2/qJun1Ja1bdpKPm0ZbTCupYOALJhf8dcznNDn +gVCEB6L1+s693SuU2ZzFkdykpU/8WxlhjJcSqTpp8BIlwlFyOmZC7jrxArr2Jk65 +AQ0EV1tJ8gEIAJVavNan4WxxlwLwvnBj3/wcEWqN+kfMHENMSjmRWOYSmC332hhG +LmTDi++BPWt2OOvHUusJV8dZP5D9yUBRFsKozIpyXyS76C5VYGMY8WZ6kyqn/mLC +iwmnkOJ24kXLaaHPsQjv6i5f2KliDVhAGUHmNMJgH8o/GL7zZ03Mb8ZlKFZobp0d +n+/lxoOtQSzR+cBz8NvMBkOKD8r4PJA6BxCR1HVEHsq4xSnjr/UZOYvh+Kaxfnop +7Rn9in5MoY2rCY+PV59Xbx4grqNpjupyHEf1MHodJRj85JiClnLZk7dNJ/kr+zgg +wbsd12/GHkBt/pxuWhe0eFcAOJmvqC3c4pUAEQEAAYkBHwQYAQoACQUCV1tJ8gIb +DAAKCRCw83EPpkkA54FACACFZB2Tk96FQkr8+WHOz93CJs4UD88PosLaKmiXKP68 +arjH3y5jhNLBzqteZo0Crfw75DYWIZChdf5uLGKCWXBEytF4uoHOy9Lv/3emoSee +nluFVcNjL7CIOQDRmqw1t/LjnsLbgvlwHix5f7I6Txu/J0HKJbq0XpoTqCzFK6sx +EPHH3gZto+XfHk85haKd73SOM4edkmJx+jDXES1wb3K3SpYibt+uPVfLYXWxK7xA +aztESTIqZ9RnYHzd/7z6DO4z//lfB7IVAqvM8ga7Qj58ObeqZxx2iVit5WUZ4cE3 +0crNGyXH/HKlAp+B9EvENnwr++TI1CGYthPLFHFc831L +=MZeq +-----END PGP PUBLIC KEY BLOCK----- + +pub B16698A4ADF4D638 +sub 32784D4F004B405B +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFM1v9ABCADD0KoXq2ZKlUHeIVovQy3gFmW9oFAaraV48ouv8cYvqdf+s91H +NyqeyNPT/ihFeNqZJUAMyPdwN5xrWD6gxMrOCR7BFhA5kLmAKz4HfFCQ05ViyQdI +/HVNFvTdF8LNnuF+a5aNgg+jjLvFwzkyMFkuiPGuUDFnqEGxC+z9J8t40tpOTOIw +tPjSzkDN41AJDpUK/simKC5F0Im78nUbwMalE5z2IsZRWpYZyIhN1HhEdDvaDIh7 +3vENjH7enAjWh0iGRu+GTP/fayZnX0uhmausCCwMMhsr489e63ZOaJrqeC//wWrX +dtEJjcmvRmJ2hwLmgwMP4zSNKsnLGzP0sh69ABEBAAG5AQ0EUzW/0AEIAO62SMbq +gIzEFQEHlxNN5pZHd7msqDESILFYFkI1mxlkD0twFWMbk4nMH2VXhiuT3ulqKBOU +UUNQrO7egtfbGsgVv4bWbUHfeZkfvoWDlmbrvi1YLlR/ZxzGpCNc8e3aOcN3XKHl +BwfUaco6pcTBvLpKPA/TAjkTOtK4A5Azv1CSwpzSJf2bVVbrn7mi/rw78SmZAV2/ +rtiOU5a9S+3fzswLk1PO/z//d4VoCcL2s2WueVO1Q99kejkE55l3lYwEiBzVuAA9 +8Q0a5wg84vRGFZQWLIw8c20On2+dZcTLZc61ZjnsI1LSnLUUyQ/fzHQ+BynQF9l4 +3ZCPKFIl125MGikAEQEAAYkBHwQYAQIACQUCUzW/0AIbDAAKCRCxZpikrfTWOJel +B/9vDc3G/mrIHB1P/zl0Fdl5wQzaSVc9JB/ce0018ptplL711af0ZDvWqmZkJNkY +u0lHgnniaXB0l3GGUPIa/TZzVgFSRPj65FWTMkBbNnhGIwV5IVOPcSKSyDYn9/nQ +PpmWl5fDj8xiv6kKYxA4hjjRbRGuUXiI2dnyFHuFpacf/Af/Mc0U/CDDuz5a1jS4 +SYuYM/HFVL93POZzwLUR/+GDuVJFnm12rmjGnJVgR0rWcJKJt6vCsBPVfIamfl6v +G+N4TWQ9euj8Rd4hjsYPOwDfgVIUGIhpTUJ+fz046fkz9MWnX7RJh6hqLAXT7Hbc +0FTFsKYAbLJbm3Q+rU9jTdM8 +=mDDW +-----END PGP PUBLIC KEY BLOCK----- + +pub B6D3AB9BCC641282 +uid Eclipse Platform Project + +sub 700E4F39BC05364B +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +G1L5fQggWG7V +=YFpY +-----END PGP PUBLIC KEY BLOCK----- + +pub BCF4173966770193 +sub C9F04E6E2DC4F7F8 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFKneXIBCACtnX3ZQmPujf6ocvdnhsBheze71DSl34TfebyW2Qt+g9NhMxo4 +DaJy+iFNnsaMwLZRr6k/qf+ISE3A4opWAQlbk+Wb5s6DPPA2cHH6W4GdkxtuJzqt +tFn6YtkFhA15Aahr/vz31NBjUJlBmO4PwvkyxiF/MYP6TQ/AHar4xP1RxSYEPcCi +dIQczQ8nXzya4OqOyTfibeGz/eiHHuwTLHi3Rd2kihQnlRQdhE1rmm8uTyzFe1H+ +P7WW7kQgygW6yxQ3J+DXrG8kG+nbe57ZY1oyv3F/fOBxzn/kuoKHZ3JJEMJmTIrT +Lr1ngCZApgteAynRHk4t/SYZiyoyqZCuBcwHABEBAAG5AQ0EUqd5cgEIAL3PEOzt +IFUibB6FYEkObVhsDbCnHw9yO5MAvAWB60Ohf1J4T9QK63jZ5/CiqcDrw+uab9I+ +Ruz/SgGyFS0UXAkwfTICUdhT5kUzZmGyoj2ul+iFDP9uUdEgSgyXXakrxBbBPzNa +Mx8+GyIXRVFyRTH7+1gWgPQsdN1sGYOgZ+f8TMzAv6sxu0JVzjKXAAbXdiZTyJh9 +d6h1jS5Icilu8vRwn3Qc/ZzstBRk+eLbb69wS9YGoUlzYvDBz+5tiNwvHUriKc6z +VT4Edngcr0mKWTdvD+AsvZffU0XK+vxbgMuRWi/51qb+VgK2gFeAseV6a+D1059u +2+5Pn3h/Fv/vRAEAEQEAAYkBJQQYAQIADwUCUqd5cgIbDAUJEswDAAAKCRC89Bc5 +ZncBk0qgCACdP8kyUZVqfncA2RsQH38NFYhBz5MAEOIhCm7qwPC6XG08CUZfpPXd +UbxZGUliE6vhfj7rZbvUKKHlcHDPobdTJqGof2jt2MfsjJ18JY0exSWuVTmNmqAC +3gsiMfEGIqjQFWonfm0Od4AvduLuc0TPkyfr0gobakgYvhDjk7eQvgC1QfKlk6hH +A/OAFW774qaQsyrANrFevRa7CBQEob6V6N8aV1vNxgl8a6fJzPTNBOOmP0mq7xk6 +nykQuqYTVFyqfXN0p1bbTxHBoW/fvdizi7zMSsuBkWUtfG1wyN70uoEQzSQwqgWC +IaddzrPZPmaZ8CtzzyB7+JdSNItBB2Sp +=wK3Q +-----END PGP PUBLIC KEY BLOCK----- + +pub BF1518E0160788A2 +uid Karl Heinz Marbaise (ASF Key) + +sub C163B490C5CDC967 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=uMae +-----END PGP PUBLIC KEY BLOCK----- + +pub BF984B4145EA13F7 +uid Egor Andreevici + +sub 84761D363E7B0FC4 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBF7rgogBCADU9OwoEFdIgN5U0JU5pI7s3T1T1LeDMzAQ8l2Hq4jFrhnrjcEA +ieDSut1YIv5NTBoZv4CrklaKvvQNUXPvKrFImA4OKhBodKV3wsq2efCATDGa1JAw +VEJx6nJxxMsCLCJvmZsD+YE8/DIBI6jjnjh8jagZVkxkSRPvUIxlZCxytIyqXI0t +O8pLh8+8p5e0PgGb9OoszxEQZdBavsixdpe+0feU9cz0l0jJYx3W4ErZeCGGwNat +UUiW0ctb3iz7BkNhhoV9zepxkSLzCf5zBeyA+WfD34028pAfPpyAfDYXF4x55sVP +/3MdWGB6eU6KzPG2/QV/6or5E+C1yCMrnMy1ABEBAAG0I0Vnb3IgQW5kcmVldmlj +aSA8ZWdvckBzcXVhcmV1cC5jb20+iQFUBBMBCAA+FiEEHQqLXnfGeKfHJERav5hL +QUXqE/cFAl7rgogCGwMFCQPCZwAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQ +v5hLQUXqE/e3JwgAvM90Wvs3HA6P4oU1fZZhVxucqgFBdCPvtyt3XrOOz90rx1YD +yh47nIkxJYC3FWp4lWguskKh9Mfp+CBG5qIZZa7f34+RC367IIVNOPo2Nz2/HnMY +cKVPc/ycZywpuHTCJVSSqzdiz+WCDrnQGQAtYjR2+6o9ya73lBUArRuzcHOyMwJM +P5bRlqD08COA/a0yvouJIKDkzyru0hph3omZSHI1Zvwdtiu1Brz4jbFXUt0u5WKq +8GY0DRg08JU9IgzgoOe0i4PhjXS+sJepbswxwHYbQSMn6KSeQcm/fLYilol84Veg +sePTYMqQMoB1U3rsulqlFZ++2SbRdHYBSRwtY7kBDQRe64KIAQgAwTGJLgC7oU9K +UzKMJpPwR/E/Tl7Lv2thJJl3+LGarJXMmRdht/9IkIF5f3421ZTcsS4vQv1ZeAAD +1izXw1onMEwLiSJAl/JcropqTuxR9lZa/HcB3ci3flfiy8k25H0aiqCw68IPVI+A +rsx9NwAXx7iPZRSqBGeMzlLp1FroAfazdsKPwYT5hIf0CDaiw1woGCiw2K/DTi1i +H6yPHxbl6Epo4QysEM7w4xhV6IgQ68EiOwJmkmACc4E+H/vMhDva09r067ecBYHB +2I8GCq/kVMhWYdYx8AkpFEJbiuLaE3q2gcauMkyChu3Bbnq9OJtvzYQYt1jcEXjU +NBPYwSIzVQARAQABiQE8BBgBCAAmFiEEHQqLXnfGeKfHJERav5hLQUXqE/cFAl7r +gogCGwwFCQPCZwAACgkQv5hLQUXqE/dVagf/VSGKH5D+Ikh128Fq1Z3OmA57Temk +r2kJZnYp6m6QgttHxulfdypSJNsUPdb7JuutjSTg572Fdybet7Q3YYB8RZ+1GSfF +cfRMx7JagGWV19IzkOOuWMzzxcAiST9PbBwBG/U8Ln0ghkYo6mLEi0Xk+mxggjhj +OWuKlT3yxcFNKUktTX9RlpPtc05n07X89XEAOlUh4foxV1aHhbsBX91hnmN3fU1t +cNO3IMkFRiiKraG7XT5E2iqrbxaYlAYPxqoi4o6l4EDwSKstxGgMYQtKphOVDILy +eXw/k+CQRnkIdwbKZmWnOKFHcQKs8lOTf1JvsPdLEJbhasKFXeRV+YuC9w== +=IFug +-----END PGP PUBLIC KEY BLOCK----- + +pub D1031D14464180E0 +uid Viktor Klang + +sub 326BA6BD408BFA94 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +Fht310dCamE7hAyQL8TmZw== +=1NDe +-----END PGP PUBLIC KEY BLOCK----- + +pub D1AF992375BFF8E7 +uid Buf Technologies, Inc. + +sub 0276BEBE61B3EAAA +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQINBGQ/DCEBEADUXlfw+wgV5RYLSMi58qfuyHFOG0iKFxJFBPBmN/At6nqxxaxV +fyPORKg8fB0sqvWQi0P2mnmFn+hVMw3cmo1ZVNVz/iLsCOOYkpBbSQxo4OjijMqk +Lmx2Uv+igQH3vF6LCIN+LQMXycwqZjwzubedawtgnEyMe32jLpFieeMNC6w/XG5o +uaw2dWMjmy4I5kYDbpGwVzyFKSr0iGthZsE1xG2McbBhlYMNdXUwY1HsS20IFLNU +IT0GzqQyPy0u49ZgTjGFPlH7vLIAtRd/MPBACVIaMnSyzcE8h17rRpXw5elh0zL/ +Hi+xP2eEU0zO9OGr8SRUZmaEoVw1qZ7Vi+FKDeBXwqWbgg0x8oIHRvz/7s5xEUPG +cO4WX66xYklBSBZ+Kz441cTxRz8p5nJjXsdraYUn/Y6aXjk8i1QqztPeUnK5OwDh +uiYunL81/0NjQdzVKjn9jlbHIhFK7psg8A7mGaeRMLmPAWxly4+WIGQsZYm943yy +TY5swPSa4Vy8ZoSKNyR6YEtghNSSuhYL7VM6ot7/0yS3HUfvAbpE/UUXPt1aSG2R +N4UVVZ0PkBy5SLDN1U5Ud4PnlRpPo5VT4NCwWfTMPt7fIp5UTIL11E+btu5vQQSx +oll3TRUCL2H0dtU3/ri/0RuU6aa11bwawiaDrJ35Z0nqPtf+Xb0y9x0fBQARAQAB +tCZCdWYgVGVjaG5vbG9naWVzLCBJbmMuIDxncGdAYnVmLmJ1aWxkPrg4BGRAGvUS +CisGAQQBl1UBBQEBB0BakLMX4XWJ4BQOlsB6TOJSqyOPKoksxcWhxeUSxDkLVwMB +CAeJAjYEGAEIACAWIQQ008dJg8rr6vcRY1TRr5kjdb/45wUCZEAa9QIbDAAKCRDR +r5kjdb/454wFEACGKok1RXxwuQQ+y0AUoWlaBW+oSwFnq0qb9bS5egzXhJA2ymmh +NZa2be9grIdefqZV9ELB3z0uSO7M8L//nGdQFqQhGeutNZpD2Se5UgDKasVxv20k +zwXH1IGoim7bsDHaa/fVNbQ7RjYuA7Z2a+MtQwvr1ZdE0lAnSLj+EhZGhEn1sDqF +xZ2hB9V7oSA1DLTDwZW1ByC+weNcpThVLsbU15rJNizHvBHZTk/KRP5EjqDgiU30 +uFjaZPhd8otrE+ws6t2U4g+3ncFkY/gQFRQZ4So6dPwxy4tzeiJp2jKuEP5jIHAr +Hx+bjny8NOCWf1/4tLNOIUgfSOaQeId/TqCBInQbhmeGFW9hsICZEMPA7ufiWVlO +LxTyesYIIiSUwFSbRg7asHswaL0cfJOBlwae7/VFNsM4SBS68OHMWEpDUt8gIWRP +YsFjSmh+qEfTyLS0ElZckKULngXrjDpF03TDN0MQAJwxQVSORpxxH3WA1GgC88Ei +LtajYj4u8fNpZOh2JIZWNH5JYjUn7NeL6Ildb0/6aaOaezqZ7Q3l23GNF9z2Rnz3 +puTg6xlzs3DYRWj2f6zFgxDLQ+RLIhpw9w7ARH2fO4bz87rUJrB01uwMTAe0pZ7G +jNMaRcvFbLwPf9GFdU8U8Uyz+fz3WBPDafRvwdU9cK9L1erUzXGPWLBs4Q== +=ZZqh +-----END PGP PUBLIC KEY BLOCK----- + +pub D364ABAA39A47320 +uid Liam Miller-Cushon (Error Prone releases) + +sub 3F606403DCA455C8 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +pOSpujhmmBPD/tnf58BgT+/Gq6GemXYe8Q== +=BIwO +-----END PGP PUBLIC KEY BLOCK----- + +pub D7C92B70FA1C814D +uid Matthew Sicker (Signing Key) +uid Matt Sicker (Apache Software Foundation) + +sub B4C70893B62BABE8 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQINBFMvQKsBEAC3/wuVMv4ia132SA1Y/KnuZYkSNDaRH/Ie1WTAX9X0KrWA5fx2 +WmzKfaLNyBHU5aI0BjoE9DW3zkZcLEcL/cxRzoXoavUGRhRsaHbj4PhQkEqV35L1 +OdsOPRc5vesIyvYlQsThz6LS1LRA+nOz5qW3gwfrdwuD1AWjHHluNVlgL2y2ydQI +m4nd24LD2VssfiNXkquuJmOHZKA1EWOwDq2SSQCyx0IcQZZSF+y/pnp2JUkGoI7L +m39XPa72sKRMBSWoRh9i4+dGZSQV/BVtD5UMOFsfTNG5Tnv2MXoql4q+C3Id9evM +3Qglih5Nmwld5OxjxhCvUf/FEz+55pibP948GRuhXL0FATabJEkEj3XwUaSvWQpr +4qu1qUDqfDlCSKBfJLkx8hBF6ZthGBQOZOCNTzIie96ZNEWmZu8iu4JBl/Wm+wTn ++Nkuu75wfTbHNIKPRBpuXysDtc4OvzDV51NW/6DOCJW+qLD+CI6BazdcaiWMoeFS +irt5deDJdr9C0d8m8iD11XQAM84nTxAKaBi0ihiWYCMRpwUV8j3qxEiziFRa5h85 +3/6WiozTxLgIoJIGPoGFDisJ4WXweeT+PkTgqJ6ZlR1FPk2n7tAaPEn6/O8rdiYa +HP0r9FhJYadPfjwAZP92JRIiv7buFz5VEq1Hqu8W85+/CeR/OLekTegkSwARAQAB +tDRNYXR0aGV3IFNpY2tlciAoU2lnbmluZyBLZXkpIDxtYXR0c2lja2VyQGFwYWNo +ZS5vcmc+iEYEEBECAAYFAlNNW6AACgkQXP03+sx4yJPMNgCg2RZElLbfzzmlyj0U +CK7FAvOLqdoAoI69+Vhnfs0/ALfYnCbH8ng+h5mIiF0EEhEIAB0WIQTolmUg2iTp +ZC4Rml8Tlx2jlHW9XQUCXOy2DwAKCRATlx2jlHW9XdPYAJ9MX15+W7hT8iFA4jXX +IBJu8D1MrACdELDagrU3/RZf5Z9vauop1zsec7iJARwEEAECAAYFAlNIr6cACgkQ +3HjPt+dPM4LMZwf/TgK9fnYJsXiyTniN3TPLEgpoPxW7as/hhBNxJsVogxzGFUld +AA2ItpKMYZ0uqKDf0aVF74hD2wbEW/Jr2jZC5kuz4135lBpgG+g54f2dMFCjh1EN +Ux13MU64NFxoX4cZH5LpMEHJGmOyzuSAHTO9KaGgKH9OpYEw+37GocKXp3TyQMmL +VObafa7l0gciyYlqtN5pGX4dqfPq7YLxjhz+fbyEcPd8tRGrJIl6O5lgQNCZ2B09 +MTzuS2qfCSTTJ8LSSta9xcKGa/nE0dCLq/2asyMKbUPOpbHsv6HeJ4MDS9AfVaEB +SrYCg78R0XIPwH+QxL4/WspMcqJoKJMSRH9TaokCHAQQAQIABgUCU0YJAQAKCRBx +hrBuHtE55w2vD/98b0padaLQINFlowq0qeLHoFbpXfOO+zWbdw9dWJYaPyJgqvZv +iLLW+TNrOoW1aMNny4lmtj2UZ2OqvGGISH8e1jX8tQUPGAgaLP5kWB1h5l2dXGZO +h622vs3ePfTysg9oxDBJ9abDgJ5zB5N5e16CbkSvCu27WyPomaWNXWv0xdfKu0yO +EB9H6H55VP26p8QB7zWmEgph1uVnTRFjcJyOBwGvX/nQTQye8JDkmAsCpc0Nwpy4 +8a0VL0gEXGRxzpVAqyuH91YUJflxw4kLkffWqmLSDKBxe2k3KQ05U7B48ap8jG2I +L0CahNOfzGbbeuiLh4RWErvEaUhooVXGO9k36gkcOweHbKKAy6Fuf+Yo3YzJ/Vb2 +VPXhPzKoQqiq5hIMw6rGaxX3agtyq2jMoX5opS5roUcEYP+SSvv2eR8zyvDpDwDR +CD/zzSgYEX9qt12uaOee184pex2ipxmC3fK2MpxaJ/Y4044uR2Aii0L1Zl0z7Bj/ +3ycwDv0o3Ja8TJnZ335AHxBI/Ux/TAOZ+//SvjkKVEMqEslmviGrz/T1FtN71D1u +50Ncn5cUEBepurmHB3RvrOsbZtFkC3qhGYLjO8Ak35BITh5ydpzPi+yKr2CLrPOy +d2zAvvhlRY0azLqLl0Px1MKriuaoaD44YZFg2T5BkP9Ce7z6LWUhhPL7AIkCHAQQ +AQIABgUCU0q8egAKCRBhQKGHR8y8x1P1EACdbiXq3s3FMFJSxBk7lkj9uG+eVBb0 +A6T9MgpFuEaRhc6Ye14bOgjhiNe1nV4yX2mYM1FYbkgW+dBJ3ImtLa5QpHV0Xqs8 +WHHoaKeEezZ22DTHRJyuBTCYe1Yl4hAbhGsfSBBE6fO+yGCV75Z9aMM7GXi/wRfO +1NMqksWtl612PsS0SgoVL+nIVy+luRRTidMknLMgf2K8YyBRHQl9/M8vjZFGzWB9 +v680LtNpMttrAjyxuQgOS0c1cUVuHzDBv/aG2jRpyhWy0rDIWEhEIyYeGTpotnRk +cX8haQiXwpvfhqqP9b7ldGf3zW1fNujIIQknHMMXnbf7MKhfLkOKUZZaWupkkgMX +ykhUBk6AexoqgyDO/mc1rI4iB41fmuYPwFIEP9UotGrTMKgsrJG6JUHJLzumqjf3 +a1owDmMMZP59JaRtr0nJ/Ncpq1Z8hQc/3z/Cg1k1FSKjKDh9eMBQZAcLcXvsz5fO +qydMVQILPeGdfziVezIkTGvNcS3lF0TYuFwJjAgPqMRz24h86scwx+6ZC9LAIrb6 +SPFNVjyxRr7MUENvgBZY85KAO2LivKDjaGXfC1m6YMyr/z5GDEer4bgBqJIgS0kX +enxN2tYTCGmYoL+tSItRcWOJWJ1bPzir+pzdpldEKAUnJvOXRRJc6dRKdPR++A94 +uFmxHyW8Hl5SnYkCHAQQAQIABgUCU09+swAKCRCr6cXSHvr9OQwRD/0ST6ETmaV8 +LS4to37Uzb8QbdTnxpThDdAHOw8tMaALoCnsclv+xKdlmh5hFl/mgnhlD8WMJp64 +xzonXWFXH4hQTScMOV6Ftxajp1+Pm01u8WprShH8NvFZPrvKH5wS8vqkYUwZaTrV +TZvDuzjnks5mxOsRMCMcCSSBVe33gP6fakt2pOlHfLOLIRT3YtUujuCYEomG970V +z1yqquty17QrfvJNiJZaAJvj3uHbv0rtAtrhKDk+CvKwqaNcIDNko39BLOTJ/2nu +ikondImCzTtPzxbY5HbFjqyXOmFBKBHOpXCBteCWIqE1/U8GumxSTOVCz0Kxl3Mj +Krjv1PbZqWJVJImS5UmsD+Gf1Ux3qvN+1vQ9izcbnfpF0r6D0EYd7myqbbZCambH +bg7m8gpolcnJPAMM2wv7/ptWaE8SocQqeKAI/2UxXOTBQhdYM6pPlofHa+mJzsfW +/zkRbpGv7NoinP2+BpyQqhQaNmiquxFJBIoOQBvgtsPN+woUZ2MryYxdaoTuR9fC +itVX6miIiyF5rbCvOS5XflTnbL+Q6ES3md+3qgtzHbbQHumxWNA9WYvVQD/CO4gr +JJVueQ0gZKZ+T8blN3I9hWra7r7LVom1FHkx0KsfD4DwR0T6/KrTi6OB1aXVj+Z2 +53vWwvMZURo91XJpbATZOz6bDR6pFgULqokCHAQQAQgABgUCU01I+wAKCRDzrVyU +pn9wfv69D/9486Dm8liSj95NvZuOdfX7BbkWjZvq2YzBILFS1tqs5fvj1Ixnd7Sh +QLhIevPkByBVV4+nq2npGCcaMOzFD8xtSweGkUAc9fcyuFuF9siy/HKx1m7rvgq2 +wTvdPoyy+7wf8C3K2idGjB2D07pkQpWOZQGnOgUMOI+lQs57aa4vJhgwfqqU+gAV +a4SR4Y59lKUjCY80IWzvKYsgkJkcOM5FaMAnmH952Erxr5RtlMZ9zjT4wKUQ4t+F +XnPtM51eeJPlyaFVl6SFQa4zMbFbVf8lSZrGqs11xNmR1UKl4GJ4BKwt6P8wjtTn +b0+SfDN81xfwuZsTSQprz2TEQDn9FDKEkpeuFUWgJ9MjEYxUwvhWpjvIoQTQPgPs +cBGOrY4Wf/4Etdd/u0fqNs2jtKdrLQLPmmBUhed98buj2Swy2Kj6KcCQ3mfNteSB +qER8GkmUy5XQCg5jfQnbo6ZRya/3MZ5Etxv973qLaPmJ8bSWfj27yWV4W7i9Fx9g +k1//iCJvNh7uEKxMW3/7yq+xZXOjJj/ep8OwPjW9K6sYMp+RTQTEye/K1ZSFz2Jm +umyLEWjahvq5YEiKbIWKhRYQcvCJfiHdDTrYKI2P9HC93sfmcvdK4k1h7jvzv+gb +MG0ohAb6u8ckKVxeCZ0sMuoaFoZp6Vjc2r+SwyvvhZLzMP2UiDcMDYkCHAQQAQgA +BgUCVs8YrQAKCRAaIjoC+pM2+LpTEACNq6biGJ43njv7xv2G/gGMdBRCE9YoEGx3 +dce10wMG4VykQxn+ybVz7kVij1ab7w4nzBjdg4V6dBhWcE8NVzaJVz/5b5Lqs183 +2o1kG667Gw94WPO38bfDMi8NfsFHvM5g2Zc2EVIASkMkzesgCq4T3j0efdbBLv9f +tZYfW2mJ3khIhjTb5QqcWeN8qKXKqrXIiV2Gg2mq6ffBP5W5h6ClyHNTkrl2cSuZ +tDtrsE69jnB4wnk421VRs1r2S0Da/F4PHDcZfeOg3P/4MvOQdzY6sWwVp83iC4HE +k15LjLJ4srBFCtTXHdSceaDm6lt6zMay/4PEF43kHqI6br+5a/fVIGvF82a+AFNE +OUKsELgmZUG3WSHdJfZwUVDJGPhgpsSwBJFvq3UpUyopRyE518I0DZTpbojXB43M +M1YlSu4lNMf+J8J9vQKdiaKrX4jVdOnL1JjAwla+JYToOpX0k26SpNUulTrr9+5Y +qMfMFRdeXZZv+QF1WVYakc0m/8GrViEcijCSxumBl614B/lN+uMlGsv0FayCO2XC +f9blsMISdey1/ficwmZFwtZAobzBmNBGD8BupHI6bKKPsAJS4fE6xCJiN/YuDxIv +rlqwn2taAO/lLbwvAIrCYaOFZhRihngUs0dtI5Z8NhZbouqag5zx1EINXPiwvZDX +NQjWsfRFZ4kCHAQQAQgABgUCVtZS+gAKCRA/kCwnbtm+IZbCD/9pSp887LWBsRl2 +Urmv0SmB5QVGRje+yt9W1ru3HuzjcBOB8Vo+Cm0wBveTnyDfYN5qOrfVhMbzBUz8 +0fFfN/gDjbuNLehu9D+z/bcJm7V8qJGIvTe0E241l04CWLUw8WHxt+YRrzC9N5ZY +Kalkkb1Jlfn2KvFbZTMwNmbMxzqXXUqrsSeSoOzgdF7OMbXteliFUsvdO3POjn8N +4bRrtZ4ab5rloGERV5RS+3wQdxv4gMpefLJaScsE8sn6kmOaTcMeQ8aIUkHNYxHK +NmwOK9bA2zwU5VLv6+pgQlzXWKud9dWCGshZf27rap9kfliU7+zFtJt6RpqkzzxU +LsG3N5N/84ZWrKKUen/W2pl1UiDAW4fVwWxhsIZo6hW6pv5rm8aXXulXFqckw1hn +JOz0MhGAxK23KHzfjE3ivVKM7nmby6Nb3Wt6HgVTZDOf4S/LrtkqcH2knqeX8HJ0 +WJIzf45iOr7letBJrNGSHElHGF8YC9VRwA/uisv5XbNFD/x/b9OSQGjjV3SOBoGf +JToC0EOR7aUDb7ZuIatFl1BceCU5hCqgmiUSadCx8glOza0s7Z9UBw6cjfcrphT2 +J/i998INKp9Ufxig25L4jkiXL1YXTKH0Fq21vi5K6X1U954tCI7jZhhBF6pHMfDB +0RJOCk/1XEds0naoLX2+bxr7X/K8yokCHAQQAQoABgUCU0YqxwAKCRC517ARxnq+ +PyPBEACxeFjewW276sJcPuvUNTKv3CpjJi9y4RTqZRPoE/ytfwK1izVT65MY6drD +ZXaEP9fDQlSjh/YonD5nftPNZq8hWk8KKd9IF4EgqvgfDvPaumItcanBwSTv9ogk +LZfc6EkvGPqV1TPqFsAurloLOZnE4APnHcu5nskjgj2lqIY+E0qHECNFkkorO2xh +LPsZGyFCACKt8OIADp00gFnHa4C7LHVatGHowelAQSNOXM1PMLujtFcf2PYnYkFB +v6vPFC/3vKh4Qu0CV8edQ8LwXv4mEqUwHT41RhQbFx124S8MtJf6bPZ96oY9K5lk +dGdSQ8WMpDf1KWzxTRsWUNV2adfXUI20IBobW+Ybiu0djluy77xzKQ2B5ANMKmM0 +xJV0CBDgkJEUg5PiAqCScWrLj2Sh68aP03E1NJRwum6BVx22L8XB3hb136Eh+7P+ +eu5qv/uXeYLcPpB15M+e4aeDoTJCicfRCrfwcd5KJMvr1CyUE0GPpZl8llQy2eOy +BgkHS0A6rtiaQtL8Rv67sG9CtV+YRVqCK7xaiv3Y9CwJJGpibHP/snlv/B6eqpOY +QGMD2imjRVie467uEvYyWNEVeAf//S4xuMsyt8pBsbrBRwq5wjAi0InAIQyMMPup +akE/+g3kHoKPwMZLZgqXT9Zfydx15kaNfhHc7r/iNbL2kI2aR4kCHAQQAQoABgUC +U0cBZwAKCRBsRfJHowPVX9myD/wOlttGIEg9a0IkymlHJbf5PqaEheGxPHFFUPUf +kXauKD21JEXhIWJJ8IyQODmX9yZAinSDAeeFSYYwHLkXgtWFSSKouTMkpNFcJYLn +gQ6X59SZEL89Sz/tzpf9S7EbGtX74whWZDJ28viupAiL+/WTiLu+j8w8f0r6rpbF +JtmhD3I7ftHGg8Kag2wCw3VR/ZAF1+p9dz8fDe8wak60sK5N4I9FspNDMllCsLZ6 +ckG1SNqQc79MKlqmkN7eGtRDZEZtZcZiTzKUrPv1yMVoq73WpL9f/QJl/9HhCHiw +mFWLR9y+SUEfFTL50N/udkxU/XjupI0K8KeuKQb8+9eOXJtrvxMdfJYECYOYx3mZ +2encPnfSknH+CDnuIm1RllcdJGkYH3WQLowwHqvczEWDQdg6f2lr6lvRNB1i0AJX +uMv5kqwPxkXBHPMpT7gSP4EtG7uv0Qr7aIOD9oKhvb9JxDhcba2Mt3muebLe5yvN +ypQOtV1+9ybp1GSdldHgsjQB41Wt4+BaeL3TDpUihhz4ML19LuO9jiSltDqUJRcJ +UxU8TihKCWWxStuVjpLXjl+dJSXoXy+dW00/C7+rOiyscISbKZ357WRvfsi3PMOP +qpI+LRauelnVHZHTc47fg23fo+EhtILt9qmBQfejX/FdlIB9U5qij/JxPCumbkso +RR5wWIkCHAQQAQoABgUCU0h+1gAKCRBi1I+tFqDeAZohD/41Ms1FUMBWWAfFhgb/ +UfAqsp5ItPZ5l4bbeGNcui/FQGX/UPhmNl5A0DupMg8ue0FfnuxRrOpyOSv+a4aP +SP5osXAGYc2OmxSNNFidefbmR0rY/hZLA9rG9WeMboozfewEUW9+v7EZZ71P/V7Z +L30UPMeze7pcYJHFtde3JxlshBjO2s9cAXhWU1M8TPpDJ5QEcYA3ItwvcaVkCgUC +4DOku3y57zLAkx+CVqFKS81k5KMiEbrn2Mn7mR3bJB0HruZFX5WEDpLPVXEdY0dI +tm+cv6AvFj4Z+sDJQFM6cg1lxod2i0eUfbhWToC/CJ5ri+VKl/zOCY1R3YLcJU2n +t7/XACyV0QpGAWu6CZinNpUdyGXk66HaG09fDM2H3L/QkPPi0EmeeNBEz6uz0JHt +iYsb9jjBmXscleChsmJU8TzGVDJ4109Wns8L33GHNqnBBi0Et1rv6cb0bVbv/7mN +OGyAhtPKGikXw9Sk2oFIwb2lLbkWqykZpdEmzQ0ybr2pQwch4dYTUkbmwhpBy6u6 +OtR3jv3+VCFBU9xv4thfHqU9KksQyXrTrvdIntMuHMB5gNwLFY6pVgqXlPy4hQ6G +FmhU9SKPnQh4QpXRYBsUNEAbBjJipnAet94a4XqvPdyoZL3SYdm0FcGLiRqRo5su +MwfBPrS+XPxCR7gVdciUrWUHP4kCHAQQAQoABgUCU02onQAKCRDN4aN0SSdVUy/4 +EAC1iDgXJBHVSOTCxJBy7qr/vDAEPoFI/N8tdCjr9qJAQFyWmkUmo3wXgZvfHr4X +H9MayjVtwintKMc3NFxDjRqZ/GVNwUwdMgZgeCGVubeTYuZ1paaXXuzR/RTcsMg5 +XgNDsYjj8EejDCmB/8uDeVqmeZ0wy+VIskMKztlprTNcsVBIQhuYgay8WC0IbCNP +rpLyzBTxodZob3wD/Ir9h93WnRY+2doqQ6h7rQLMwFnC0BnV1MOhGabGEQmjbJlk +ZNF7uvnDQBV89b+N200pMp5HR8V9PqJz0/dSKpsPQkbSNuspWkvD3k1VukNtUyoP +93fOJz6/tEn/q4jTElOw01wMsVCgapWXV8iZT87U1wBCIcMj9BEAiFounBZDBR0q +G9pAVTmoiLNSixi9nlvGKO5pKWLtlFDorPU4/0e8eMRpo/QhxpaPD//L2TxfzCME +bFwsERq4MfeYehR5sCxmHHof1iYvkAIVGHA2yg62RWBAbYDUNGZImAgMq5chpNKQ +znoKoGCNy3ukSDT8Q2sC6aQrufsl+sN40eNGnGMpkF8iOFDUZH51gdC8s704R3ww +KE6qJWbgFeXwUA1gCnwD+gBBkYZlOarn2HZDvfdx+8+WC6EJzvxh1ljA8YWUQq+E +Yq1KsiEceMIW+IwcX2W6O4rtT3Y8dCB3BNWTTp8mrFEJL4kCHAQQAQoABgUCXNxs +WQAKCRCBq66oIN6eVPNgD/9D9rIINLJobOI5pNv7KFxY4C3C5fcm5wihzsyt5KHg +RcW1FhaYckB9CdPNp4MpHsYVQSFnPuowyxDtiK2myRuwus2d4QJw/rRlN1sflIc8 +hXt9KadxUw7+wNQPUJvtF7aGJt+hna0PSojUOshluoTZJCoAX95GRCrk+wSJP++6 +2JAfyGBurDpvFG6SaB4gnq3vXhliThVF22skW3F4NWBpRyZHNSq8+H3kCo5SAl2E +uhjqYIAn/pRCQTaG2uA57/hOvdyo0WO8V7jK8K+Xz/LEq0RKwbjZff45ZzPcCiqw +j6xbQqM/uoCfMDX67LZnk+qT4lawzr4MT892pibcL20FECudvcPUAPtd66E9oARc +F5aa3rpFKW8TE8lo+qrTH9wglPvvt+4HiFI4n9LMvy64DjfW3C3enCy6zZPXTt3K +yS6UjVQzOr2c4UdH2rVBWsbgLqBSxbgpos1SimtczVEH3BMQvhaaunAwoxSi+w4l +sJ4Ho81JS5+P2RCWDO13VI2URnX8y48ZpgUH1kyoeqIJogdR25zqF0sQEukv65kA +vyYTUFjBacjHARX8tWtaLcvQKjmkaRrxE3lZC5nE0xiUylPgNLCPcOH4hUI/DX3C +wW8Fl2PBTWj0nwhL+geVSLH7fK8PR+l4zGa27yjVaD0Vdw6aDbLAs0BMfKpgUgdW +SIkCHAQTAQoABgUCVF4qewAKCRArEYpfoV8wuRWDEACpTPUNysBxD3t+XvTTVf8C +OQiN7v3Q6ABesKBujf1Ag8s++Zvo/bPg2nkE3pdG0qGJJWM8808JDDfgrjRYRvqE +DJmh8oMmNlzJiXEeTOS7wjjhCbLVpUgzAalBLupq/tPkMVF6a9wNb3ov4sb4lFUQ +jqUiazFSFE/B/yB04XdicvKEyEkofS7paS7hsyTA6YLztrF8+QsSYCQxXX/ydbXc +rlb5l0Oe+YY5saQH8NpzPTzIDPCHwGK5wYil2bYRkkYdB4T8ET/9Kyc4GVXzZ+TG +QwRKP31eFrixVUerJrE4DdrXGfeO4KppMPrk4iLdrrVyA8zGM99wNLESA2raJ3fG +7VKwnOBHHPk94R2BLQD2FUB6Sk5MVEUIWcnjOTYiA/RDnYaXOalHI9NJ3oGqDm6U +k7xf7Ej9mhbzfAw3xXKaU1pzJqhjgk1kjxmZq6mCPwkTKQ98AtuoAVTFlp0w0e8m +9jnECV6fd+KCpl1nkfRsf5O256XNhqHMvqkVBAAIDPTEu2fsOF5ZNadLndbxSLMD +6boeRofFUwBG5XJESXBKkcW7WOxfsuvYzD0NynKomnBY88HCGV79rSmA5tdGIAq7 +qitdaHFFCL4Zcvl0jFp+vrntmvW+DLSVFccG+NJZhfTCY9ugecamGz+4gfvQ5en1 +8+lYQoSRQO1OVO2dFpv+a4kCMwQQAQgAHRYhBFPJNYIapqdVvTN9tTWVOV6z2OG6 +BQJfaNMAAAoJEDWVOV6z2OG6te0P/3Dj4keH598dv950chICPC1F0h7TNEv2Ix8q +oMoW+kZSCpM9uKd8kcYZ/OvT2m7x6hmatgxmcWRYIVbum8HVQRDMZaZ9aKf7qIOD +rdIonXQxPdKkJI0DA0IGOHPAnr6Nh52YVpv4qQpJkaBAaO2nRCMHz+II4t7VwV4m +oEiKessB1Zd7sFU0JV20uYiQBL0fOd3dHMk/Vs02oZLrMaMLRLzsDTeOLFUzkkuI +QcD7T+9pryk6IKXONp3YUg0aJj6DHX83i1YzjoJxDn67PxnsXiu3rCBXeDLGvh4f +kj3k3L1fhzXM3jWItrZxscH2dtTnfwYxmUcgdRF9KsbslumWqRNvz3sJHU1EpmDX +MMMGVboFfZQaNTsTA1PpG6W3aNzKkSFQiOH+R81KKNv3rDNYCs2oA9wQiL17dxKt +QJIdGyA0C3cuxXD5oUPBXRrvvCJlv/BlUa200xGx7HOlnmFX5QtI0SX5Z5pV+DxD +c+6S6fBe7/9v6WPO5aH376TnsATDq2n9oHb4OkgqKSn14KN1M/9IM1VB8BbWWTwC +3N7yh1OO9g05ZrOyX0/OAY/ZE2bTjaFqc+j8vvwldpaakFKMqecoMwfJEXifzwoC +UB3hOVG8ar7YT7CpqRtz55aQjAiZnVi5+NHyfHYumanV0csL8W1mHsbpLxPVWhbe +z6ha6DVwiQIzBBABCAAdFiEExHvHbfAZLLKUZbvPR7HWrQ5oLJwFAl9owxAACgkQ +R7HWrQ5oLJzgTQ/9E4n/6bVkgOjGgr+BOQVVor0GE+1XplHYS2pYZ+yNRi7ywppg +eO5c4vGDBXmbK5Lrf0opekUpMoT83oGrpsIplklGJWb87IOfmvwfIWAOgupbqMxG +sFIF7HbuH6N+aqxRPN0Y621J2Q4NSPnLOVLfKTjl+tboDfENHrBFF4/RLoVBZG+a +zn2Iq7Vm8d4cc740Dxe+2rOcniMHHBNy08pKMHRjishKf2BiZaCg2BfVtNvvlkSM +I3Eo197+n2B36xqoDHtnQQdVh7ZTxT6qHGHzdTYfZZOg7SfoQHCtbq/04cLe94UF +aOgV5fXrv3PXJd6AZk12S5uFDBaV9S97hyEuOARzZqzVbXAuO3nI6kFQg5K+KfyM +RreilK0mHAmHcoyrYRoUtit4KDT0xaOXwdde21Iq7AO2yDsLnOJ8xMq5V5ndh020 +/7EboOAxm5Z+U3i/QMAH6XpYdwT/A1JeNHSmy1qvW3Q4zk5V4hK0rxU1A5GZhJ5a +YEEjK2M31fwj9asoKbR7RP9cVi9YpgPxbVq3kj4A8qKk2D1MOBUPXIWZqMKbZtt3 +i3T9yyM3qD2AweXzsT5iSr7mqfEHciZY0k3/M/MRICfHB577M8P/2B4goLKspaQw +C1yeO8SbJgvd2+O9xUtLMBio+W5bA34rtL1uJTNnpJ393D5aj7Us5xAu2w2JAjME +EAEIAB0WIQTrimSA8KPI68Hnf0Kvxa/uluRqzAUCYz7++AAKCRCvxa/uluRqzNDJ +D/980zgUKak49rZ3OjsqrwA7aMWmKULleywM2U/IT543eRtbqGQalOtpWNuH+Rvv +/MWwNwDSkh5++2mWUcnJL2xBC4oloZEg+W+Vgt8lrsnNP4Jgu2XvqkFg8z6uWnnx +rgf2zoUVC18jV9NSnFtfNy8ad666ToJ0ECItaK1+YyoSg/RSBWAdcgT9CFM/8Bdz +v5jLS4WlKWaQEjfwUgS6camUXlFh4vs9gxeNhKfq/6A76FlDGmVNFAGGwHPzdSMn +Xkp5tQaEQdclXtrLqKL5vW6jz/hZuoToxYHAroTcftdaXpKciUIkkgA7naiaA/y/ +0NYCn5RWTAbr8W9lYmu/r49EUol2NW03YYTIwJM9Svzo03GZ+HzESuFaN77DWgiS +BR6UJaU86+gU2En+aMhP2y73E48+Vd1tKPtjjY8innbM1WbwRakeB7sVF5lPn9py +Ro0EnfrLcFngMzqxup/yb63/QMVcy0UXcrtrJTknjFqnh/P5thiFGjqxUaTPIILR +0fBxRe6MPP+CxZX0E7Jdjmnpnp+mT2u+M/TxSqqAEx8iFY3tvFJmu0J3YdmPrmxG +FimUEvmL7ZrzOvmUntG1jAcZcNpahv79RStldl/Kkp3My3+PJPw2eAXnv9nZ5dyT +2Cv3ats4UENIhUmh1gLXXG2wnLHGI27PI4NTEX++J6JPx4kCMwQQAQoAHRYhBCnk +84ET33B9cipu+R/pr3MRjxp8BQJc4JwlAAoJEB/pr3MRjxp8e0sP/AqpEQSzCiMT +Mc/m8nYB2SNlsR2V23Ini+9KTfaf2Ig3RY/UoDSQ+Z8TQTTgSDpXKI/ebdoy6me/ +PT9qTOA3LC49BTS6gTf1nW7fVBUStQyQ4Alf4i8ulRa/0sDFbwoQ6KEFzjotxxPP +ZrIRxt7jA4TWeOJ0sRzWIa9c0MYqkoEQdVlmQVgXQONm8wBtkead9ydwtmpBT+Wa +qXL9GO6SDV2/uEqM0HT/U4BMu+AxWHa8C5b6mTOIqs/7qkiBFMKXXXFnQjzUiFV7 +KC0b/GlRNiHCTJWrZl14NM8QjgGDFIfTX6NtE3e+wLCKhO0KnUtbL7pUltwSQ+sS +PMmBjW3C5py4LmQ78fLs5KqeJoBPHBL70IZLrlDUrQwOzk01+hNxyNKcIT/U5tx0 +GAitM6KmwP+XrLvkCXUwBzbofFrXIyeNz0FGe5ex9K9HEx881KLKGzY+dk8Ttq2V +9Jx92Tw6AlJC1Ct3KWaW6R2WNYL4NfQnJtwPBoj3mb89rmIRlHM/dSk55Z1JOXvX +kU2thvoPYokoEYaQW/gz4y8l41xv5ZZAqXzcImR9TAo72HFOYVdpUCm7Rftf0g5u +yji3+77AaS/3rFC9F6n9w57s27eqTzAuCK6oyAiyNNrPNglKoe4Ir7jHKhoXDCe/ +h6XWV7y95xrAfqXviRTntPxVPxXRXKqriQI9BBMBCgAnBQJTL0CrAhsvBQkHhh+A +BQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJENfJK3D6HIFNiw8P/RxB6Scm9HEK +cDaVAEsWCumlHf46SxqroO1XG/SkcUNd9c2vdNDdPg8t7+wFcdD41f/BDG6SI4OR +zArCEH7r3jbSD5zQbCqwEaqBGHurbkYy2rYrxAcNW7I8lGk6rq5kVGQy6iH1y26B +I4BsOeF2OTJtKyCXL3AYI6+MqW3+kSzV3khQtQLSYms/C1agonRGJ26VQkP8PVnS +fMEJfeVqrqpMx0Tgj3wFAkp/1lCcA0Y0kKJvm/YzlxGhPqTIro/SZJ3EDvKodgkt +EhAEU0IWuLDDb6Of7CBOisToBmWFpOEOak4grfaA8B3FgrlUXXovI6E5xFQT/LDq +EN/Q1f/nU3LwKp+vBBkAl+XjeSFM18xpZcpsJQ6tadpfofSrTDeob6kgiwoyrU0h +BHpmxp2LPeZqVujZQCn9LwWkbPeZ5rCPoRT9/RBDGvBH199QAlQn0NaM9K9SWhBs +h8+pWs1/zEQxBn//UGhjimTeZIpgWL5ua6c8qZEG+wwwoIuUq3b7zdAtJ3u9t+tl +kXAAFO3j38FkfO6HhTU9S1gii6X2YNNkG3DZPc3JyVjBu97hdb54qYWggdvIqB9X +57jwgPk77L+CHfBJ5id2LO1OB3hZZQm/bUmB1KJp/xIRUF1TukeYpvmF1KU75FOc +dkqIVyiZVnEO0VNNUAFsxofYHkLvx1HeiQJOBBMBCgA4AhsvBQsJCAcDBRUKCQgL +BRYCAwEAAh4BAheAFiEEdI8Vss+bqPAkFV5u18krcPocgU0FAl35lHAACgkQ18kr +cPocgU2GYA//V2qBuqfIs8DXjKDVxsQEMu6Donci3vj5Xi4kn/f2MRoL9d/pA4k2 +AL+s835tS79o8oDFcmqLErqaFSNXXhhnNoWD/ShE8GqtN4FV7vXb6pK6miNYChCC +V94IALqT5fU7kpG0nenD4QZyfnWNhCk20eqZy9AmfgtLfML6eEh3Tc23SFPnSx6q +rEz/w5hf/1ECTBS2F+HXgROd0oKTG8uPw0YdCDrguRX+Wh8gZ7vyc5TeU0rLoEvJ +UzrgncQTEaaT17EhUfI7IexfJH96k3fsIZquAjTHz9KtjAiVBfpUC/egNC0G1/i+ +vlPmxt0rBPTM9npW69+maBXMKdeiKvEVywIY69sXju/W1nO0LqJCWxNQ5V5L223t +KCNqn2YCUA/hb0sLKNGvox5SRm7yS/6QvDHDwQmNY+LXyWqS0uTeXfinlgN5sc4m +L4hqceRTGHRj/SoamlfxRfjcFXHJdiEcaJIwWA5FRu67FIIZXx37+d1QtispkDqf +Qg5yiRPbaDTjB9TSlz5p9LAM0PJuZbaFSWIDN9dL5tLRzHVxH0jO0EwcoYRs7eMr +S191dHxffINrQIBdwc/cILQwS3/cKGvYrL4wOyxvjfQvT1SRHs/kHRES1c5qI6s6 +cvyYu4/35gFHZNcvLyOMr74x7arVOTlQ+tXqYN9aym/ANP91Os+QnA2JAlQEEwEK +AD4CGy8FCwkIBwMFFQoJCAsFFgIDAQACHgECF4AWIQR0jxWyz5uo8CQVXm7XyStw ++hyBTQUCWrNa+QUJDSe0zgAKCRDXyStw+hyBTa9mD/9YHi+CyW+9OMAoBGANE2xh +V3NVMQF7Yg0RA7+tLQdzeYffI2djDN2pcSYbbb7OOMVh9Bl5ikV8tft3BLwUnZm/ +5LiZcPIKQmv2e5VV2lg12khKL/6AxV02mL1dt7EcX89L8HRH/slYJzhcKN5OJRP5 +dmHmWN8B9eKuGOSuzYbCMV58tokEkZyfSUjB/dpIy7670cwJncV5eUV0CwZWYP+4 +uHkCOnbYplI8uOBaZ602mKLq+AX9UWpXcSUi854wyWgJSKicswcxysj2Ryw7Qsaf +ticKJa1yh4e3cg2tBKlRguj00EUiuSK3mC/AtHuhdjpbNxbO5AJ/XNhGNIwX+1MT +NAb7qnV5cmzM9LOUgnF1yxO1dQ6wBBSoxbs7rrumIfN+wXyngEyviESCQEI2CIQD +9YsnzLGp4Jb3P0TyWH9sYIfdWE7ZwBXrFr+VcP3AI5E23aW3CH5VcR1ldzKlU67T +AgXpBv+ZM3mufhLBzLFGQsLh6PmZC9X4Z+C92SNoA8mwF4Kn9mXXfjdr504D1mkr +qtxwRypmDNiryhdtN9k4vInkTGpPk9YORJR+l0LBc0n/vKxRsqmcUDxNK1R5eYeP +9jnY3C8NdC+icC+iSnG7KpgygiRvppE8RFeksKUHaYFLc1TP3qgC2ARCO6uCsloU +cLgWafUVqUd1yiKI7m+0EokEHAQQAQgABgUCU0sgdgAKCRCKr4jW2E5BrqMrIACM +9KBf2FD1IQhe/6j0ah54LfXCdQKfG9C0PXXJ7aytnM2EMEwWJh3SZkE0UNrxtWNC +5qGh3TgGPIzNc4oZnrNgx8lSDdDzeZtXULhQmluZWauc+21JOeUMhfN+/fIfANqo +aKl5T+WexqgYBcvw4+wBKwSRZkWAjXp1YtnNQSQSuNzsv3P/cElY8qqsnONFBgV9 +Y8ZpTgm0FuIloZAVXjlR9YIbGsOPNxmDDDDYAvscr6NYOfJPut9LEeTakJd30fSo +wnLka2zqpbZBFzFWVz1V+hbBAt3L30Q19nebg30a0XfwVlesWY4maMEfyd39ejhV +NezUaQzcE84ay79gqonq0I07bALtqNcc8EW7lfYVoRXiQSkwtk1ecj8uWAYghO5c +Cr2AtKebDLvtK3bXnowjIdpc76aJt/U6xXzP7NyEb9cjbKnwTAqwVCCY76vJM01y +mmPaM6AUapUaVbCTyZ9tWAD4wME51STB04I/7Yct3WJSYQ5+mToV6MTYv8DucYRf +ErBsZIT0J8LbszXuwjivZLclFTmO21lqcy5zGtIT8jPLlxemoVrcnpYCWhmSLH2N +qHs5CfVT5AVrxOKomH99g8fPgG7FiMvD6Xn2csDu1UMEGWSpcM/Pklasgqt2e/Xw +VjQZ/vghBcBA95Ngc1mQe5BqxVORJv7/NFe3fVsMDhpbka6nF3eaW6vwoGzmctLo +8JsGkL/0VC5xpZ0H1mRXjKCd+Lsu2DZoXHlwflo+OsXKLSOXGfRm3pDICi1HopdE +7g0gKbTSSwoOQONRZr7X058xt4A9nH0mcy8Cn2hpRd01Cdtkn9LlIVEHeZUJivbf +k9zDPPH1O5d4j/KUMWtLq5cm4QcWqV2ttqzd7X8m61bJooytBom40iYlY2NZdzDU +5iw3Y0h2foq1sdttsUScyHiCdr6Tc2OdeChbYyW6w/llmVLW0rc6BfmfY3wUVCDI +3wGwO97UHIaUjdMUTOx4t/AIHjqeXkNY3weEA/VvInwY9ext8XGYaz8zVKihKaWU +6E6t3WTAmzKX3XVJr/CX6+7+8f+h5OGLAAkhbopMsj2G3kb7E3bguMZdXYsypwgh +PFI+k5tXuf+fFmsdKOh8FbUUV5brHFTgaO96doS9b2LpZcqcNh1glVsNRwtapRcw +s3jNrbhWNasO18jmk4rGwsf0drgHl3U2qCrBxwNmy1iL6T3hnrI61CupuOzuIkQR +TlX6Bj4CIVEk+hsOfuN83hCL9yZ7/QFbBuZrGE1sRLSdhmTUKvM05ZpMMdn2opz+ +ldI/f8ZBU4y8vNNSbIKz7D5zPZI3p9p2T6Bl/Pb21rYp/6vj3hGUX4U/cZwuM6A2 +rpJCQtMF2IErQ2X5LkMGtEBNYXR0IFNpY2tlciAoQXBhY2hlIFNvZnR3YXJlIEZv +dW5kYXRpb24pIDxtYXR0c2lja2VyQGFwYWNoZS5vcmc+iF0EEhEIAB0WIQTolmUg +2iTpZC4Rml8Tlx2jlHW9XQUCXOy2DwAKCRATlx2jlHW9XTd7AKCLFG+FXUhq8af/ +NPQ1OnMetctLlACfbu+u56pK+3FaTj8EOcocUzTELvOJAhwEEAEKAAYFAlzcbFUA +CgkQgauuqCDenlRGww/+IQ67aOjLB3aF/lvMtTrUxbZq/us8FHDQgd4vjvYmCnEl ++rDjMZYLZQ43ZjevD0yxPjf5dPhAAG97J6mrzYnrWpk9EccYIA+jRTkvmzFMrOch +hju6TITLos92fYiycRE3vHeR6Z8HZMYn0AwwDFFeDLtDsNtCG1mP03qS+FfiMVmD +xAJ3BurID3g9t5ORWou9lTxukZ3asfH/qkJ4GEDjEolMGtZCVv9i5Gk6YqOMKXPe +y5sySGLXfaGWJlM2lD62IeBbeoCqbQnHV5ThCB+vVPXrWY99a7cp/IRUpCE9LrWI +rgd2BUW5KTM2JAR+WFYZv9M9XoVdydoTIMFAv3EJSIr1Bmh2hkuNgejhI5QJXiHZ +D5bW9iU477obYJ0lzbl+8n7Q8GerxgJt4S0cIP908f2R7LPRKk/h1i8GxUyC7j34 +IUditjpdvedIh6L6+SzOLh+QPlgyMwvU4qlCpHcN43yx6fqHIEIG49R6ezL9lUpR +THhdLYpcK2ucjSMmMPZZGCgmyMks18A0y8/LIVTgV+fSr4n8vLSv/5MJAKgsJGxM +ODcDmqBPF3yED84nv+T5u+XcpwS//fZQu9izbSSrLOQQvvPgHp62qDZMnT2vqEhH +7MG2GScWDRtG+QHmxX+j6eE8kQg0qPbivkgFG7lLscLh5OsoH6IBtTzDN8qQivaJ +AjMEEAEIAB0WIQRTyTWCGqanVb0zfbU1lTles9jhugUCX2jS/wAKCRA1lTles9jh +uvPnD/9SD4TzLldnzdum/S1+jXY4txK/9qvwvXS5D2F7BlR3hL002YbRSxi2blcy +TfgyHhdTppO0qSY2aUGLu6O7sp9KdwtHuNK4JvKVFUUIcykWeUq5uLCPHgc31pP8 +QwFOwlzA4zZj7IJkjiCEz4NKwA8sHPn2LFbQhypEp02urXpJzgzLThKd0mCqr9Fe +z52jZvzSpDrpaLCFG6qBDnvdOuqJc1chjWexhk+JynIJya/T8YLGdugedfDfe+Sj +q4vW6izjbXMTt6NtuyoKhA2pHlmLJhhwGHdF9Q5mG+KJ4SKE1MLPFyi7bDo7vsl3 +hdixqLFvDCsT3eNTcRlUQlaZgCrT0k/A+1G7sYwYqoiUAAESNQmR2UnGBjePi4c4 +6AX/3zwiy25TAkMfiNh1xDUEUke5WoVau//RZZzUQFyqexbb8mtTjfe6zUKPrgup +vtBuT5B3s8i+NCzkzB6auw2LuDj9mTBkHC7JdeuSOnYpul1pvdRvqiNJyfCmU3Ox +rh5IO/dD/E3qHAOeKOmFPecvp0k1Os7YDpy0Pct4zUDN1+8DqncXgev8H5i4BRQX +Hsva0XsLIYKkBGgHRq1v5ZpPpwuoFzIgDhq5zFiQGkwoRvmiAi37cIKlwFKh9Ory +r9qdjaqpjLqUf83G7TDbplXu0TuQ873ZdgK5mJ1XnJNA8M1vv4kCMwQQAQgAHRYh +BMR7x23wGSyylGW7z0ex1q0OaCycBQJfaMMPAAoJEEex1q0OaCycbV0P/3xtjkVi +oU/qHXKxuj4BZOFyc7AjEIKeXjbvlG6P3ndXwkeGb20tfruVe5c0zZjOovw786Oe +p5Dzv/NihsRTUwkrekcTJEUm/mqb6EPdp0srChmIPeYbuFo0V2JN4te1fwrLaOc9 +kIxo+Jtv2BdvMyoqD3bdZWPKNYT4kT13jBluBi9M+NGkp/6ACO3nFlpTv5ntWrVh +GhY7aEjMEcjQPghU/oSl4YQeLs0jVw/fBb+ci86MszQKplGOxIevNNctzcPBVZXV +UXTGIea2lyzrxTsYJwaDElQJP3ts2Zdpz5rV5mOL2/lUuGNoyEX1rWdNT7V0VLC/ +ECOdiuYuJtp4QQSdjV6erWDgiDP+KL3j/gH1QinguvlROSeBFyFAuApBCOo3f63F +l4vi0CYO9hQv7WC8qaS/HdtG9zpaUX2JsfwuLgafhJTfYAspJyDaSspwWfgfpU/T +RCCRNaHJdKtcWamBn2WloGPqAogeJk/zKQSJMCgnDoUUpyEp3kN1xifUcS4gMmRm +VniBkwJJ/kLW9h1mLbKLlO17BRvmWIorJqdUGQverWO7nLRxGGPMXjSQnkYvb7kL +j6GdnM78jhxlcLJYpHjYhZNdxEg+eOslAkolP8Tc6Pkt/bdUO78WhX606EwNJ4qL +SddxPTI2ikBDd57VJK2HbnMDdpQmhshrNZCjiQIzBBABCAAdFiEE64pkgPCjyOvB +539Cr8Wv7pbkaswFAmM+/vgACgkQr8Wv7pbkasygqA//VGhHiq3SlU835cTn384N +bv3ehFkEP8S/6SDtxSyaytI9cds9BkJc/c33x16SLH7WzP6WgB98kyCujqXk3YJe +XorkRNIAYc9KTHNgjBHXfWsXgngUVImdS7VsNDcGrNI1vb85nUuHFYp8XZZ1aiDr +qWhN+6dVKOqAQIupPg0E64a3BRM4QzmxT+srVJ0a48k5GJqiKw5vutknN8anNETh +1M9O9ZLMOPwAbXgzFVWQFuvp05rEi9pIU9/37yXF8wAyEIbiiFjIECK33ipa4wW4 +GcQscymREQHQqidzDEj2xcJmLjSVLRzFluScCBbzGZDMbeLpb4IRhqpMqalH9t4P +wTOmphQclt+RLhLvv8XUXPYYZUlYLjZKIdwf1RkeCpmCx/whH8q94l3VzplT4Wse +jXtIJ8nISzdT46jpk1lBM7a587PVvv6JqOzqPLWc8dtiSm0V7iVVyZj92UIWXqSz +MGrmW6b1fuNMaYYCZE25NqogC0kUIQiIU/PWCBpsL1X2487/bzIo8abNomeLYl6f +gZa0JTge6Q0VmOQYbmG/GYt9+qXd9A99XSciuLoO1osHiXG9hpI9c1HezdH6OrJp +nMP1jleuJlluXBpXCBhp8wYDvtPtj+aQZyeTD0KMWLVEC6odi3PgLo1D2eNHyE/Y +i4SlYYpkjXY1a1HzJSsm0kKJAjMEEAEKAB0WIQQp5POBE99wfXIqbvkf6a9zEY8a +fAUCXOCcJQAKCRAf6a9zEY8afL59D/9m6GuRS9ROir7CGKzVCuHjH0Lilid4TzxG +KX2TY4cbfOm43di7dQA0JCXYo4aZ3Fn4frBYqolfdKwj36DKFQB62J8o//2JefIG +jwvgeaAIIXZTVutOzjqvjVxDaCW4jH2q1M+vD8UYgE3jSkB8t27J3uYt4DD5b9hx +yYumRh8U+NOyWnTG9/XvDsew+Hr7PpMNVMMydGtjxZxJq/sH3rnwtTBOlW3eXeRt +2I4Ya6WOtRAGXsK2OMbKQSoMbBgyYk6WRypFenJPpJUQLbqfE3zvDw9F5V3h4sBl +86tzcU7263bK4RQ30Jf3IMJ24CZ0dwPYfxiQCaDe/3m7b5qwZXTcyFP7R7W1J46z +Mj6k8krBL9m5vR3TXVasjAonZy6FFuVcBg9bX9CrtVanfLzV5FzMUIwt270Q12t7 +DK2OJGwK5gmjN8e+sj1JEcL9ZOJ0Z7DSlXnxApmqfLhZV+vEbhJqqYMDNXGy73MN +E8LVgMO2+VQh8xZi6IB+lVRTgoqqSPKDiHDHogrfECTvdkGZq6TtFUtIOLYxqxm9 +wHdFFBuvOIor3sWEErrPtLJhzseQXDWp3qwSCBIuule3EU0YAO2yKzk+x8Lyw/w3 +ZVeBcCL2SjSzTj+4X7oQPFRaiit1DDjoZktzgxnxH3r7PYXAKSdsvyRqnaJldMYW +YUXd/BeGKokCUQQTAQoAOwIbLwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgBYhBHSP +FbLPm6jwJBVebtfJK3D6HIFNBQJd+ZUOAhkBAAoJENfJK3D6HIFN+XsP/02zkoy9 +KyMuNLzw6Xaix/bpcDS5zMe8Q7UnGL0kDqeN7AWq7wK7Z2YqaPCBx/X8cm1RDGjZ +aoRf3yPhPbzU2FVPWC689wOc/Np0JR6FsxMWoXQFeE57JpkEMUwH6e7B6q3zHJBd +nK2UlpPo4kpSqOwUgBQ5Nwx1PAz89NKu0NE68S0KoRoy28b3eZgbYK/3w9eR2XQK +PbhJwJ8xrprrqA3NO3yc8TPbZcpjO2NPWJM/q3heevbMpwgPriyJKad3FR6F8FC2 +QjBoOhJ7uD/fNgTGFQWLc/ZiaLclbm8bN4N25KZfgLRWpMCcRG18R6NvRfpfhyZb +XtkbxhvPuW/rS4+h1r5n6RdKEV13L8J0WaDRz1LBe+FtAuF3dFHOHQk+sXRDL5xd +LuHJlWjJCdOrxSr+Axl5YGddF8v3dcn+hLVp/M+iK1p33LQOiWQtDmITi/n1yxvU +BasbFEvyktyQu8wzqgFi/I0Dzw7ud0ZtxYlAJ84GI8i34uKSZa56Kc1LuFZAmTjL +jsIim7zUZmVSiPBP9+1LaWLZp/8BbPHuY9UgNMeraQF+lHzMjoqP/ZN276Lq2erK +eTL9YLJBBNzbjFmQRlpUUGzc1JvMUSHVS6II86e+Jxc0OkdIMP+b6KHwOuZMWJ+i +Crawv47G5M3ACkiuGsYmw/59wwt+IxUl0tMtiQJUBBMBCAA+FiEEdI8Vss+bqPAk +FV5u18krcPocgU0FAlqzX1sCGy8FCQ0ntM4FCwkIBwIGFQoJCAsCBBYCAwECHgEC +F4AACgkQ18krcPocgU360w/9FnxO+V7UdFFAM9dC2eBIfku46Tfj8ZGeLVzmhPyK +iNtaS5M/E4vKCDW8pvQaHNN3uWPebopbsiMzy/pEXLRT8eBIJhgbuf7QD3So0aOy +fz9/es715RNfR11cCxult2RtKtLg4yeQQuh40q1PxRmKRWW0WhIb4x1kKJPGhbkx +EtLsh4AJnoatw5DH9Njh3qgpSIomjl6K1kxYa4rYhIx6gRgRniBjNxIcR3HlVunt +q6UVttouFEsZ1SHETc5ow2q/Y2G1OGoh3Y0CqtG2+PzTU265FF9duRzY/WuIZCaX +pRK/ZjzcQeZzbPwD2F+wa62ewSFalH8gYwQX4wCJbFIkS1wxWIehf9nbhIsQBR22 +ZCmbb9VzDTnRIi5gKP1boGAqDMQDST3Oh+/Vh3ffpvJ8E7ybiKeXnXI9rf25pjp7 +ODgCSxd6bilHV9HK+8R++XIkjx2sTkfaHXTOqdpifd+vH8T9X6gZqB6ghwvlKnP2 +uPz1nQ/4zgiPF6i6CLLnGHquWS1Qqugr9R/wkFQbtQqitVksH3OdelMgjNglxKC1 +LMjlQssLx4RGYKXACpikfP3es5Ay3eudJ1J4P5I5vyA/2OEtTw1iS1CyeWKQk7dL +Li0HVT89Rh3FJhd+le0Dq9z9sX+zC7AdJIZxLYcdrhEi7808YxZvyiSVIZCU6sAG +07y5Ag0EUy9AqwEQAMh4ghhyombSS6FYyXEJR5Mo+EAnaMuqJsz0k1YE4Zf5es/l +P6WL45lv9/aMPX2AeVTPCEmDgkqNudhUF2kK61cCaLhK9b+QvFTPsuj/0zvJFKHW +oiCUS2USbfxZpGAB9mvHKCdpcM+Ig8jCjbeVyL9vb/of3y2rCsVKWdXEEL4xU6Ir +1rDvRPcaFL+n9XkrxRo7E6hhB5wvdSArl4TUofHJtpx74hKdNP4zCD3I4WZBuqPK +FbwW46q10JH3B9h7jaIV9/AuhqSDjeSVfAEC1U/9vi9A80q+BLIG8UGH5qsrR/kV +Z0VN3gWImaatpgkb0gyoWpAjvHDdnKkUPieFe9/+CT4PQPbwmxUhLBdjBGvsfTsa +dYxms1dPkdNoyAuUT9ufNTX5toCKX8fRWukye2XAHdXPMFKhMM1VtmDRMhPQwiCk +dl5qadLnAoVp2voLoY6HCxddfDeTMw0lLXX0a6rFIZqfUaR3765ZyiaJm2EtVXEt +aP8rlQAwiXrcpS5kTqubGf9dYVIBibGFP6SFDrOZ7cRyZV71YlcyZBg/5VQj4Ul6 +bZvjwbVPT3aTBwDJ2xOfbc69YJ6PcgwZ/043ldh+keNr31iVwPakXK915AB1QYP2 +RxkV8MVm4DmxSNZWqEtl+kQHqNOBsVnElW83iHkVDBxyiUo/h+j8zhDp3qEzABEB +AAGJBEQEGAEKAA8FAlMvQKsCGy4FCQeGH4ACKQkQ18krcPocgU3BXSAEGQEKAAYF +AlMvQKsACgkQtMcIk7Yrq+ifzA//Vm60DC7Iedh4cx+e0HWqusD5luXchrGVzCMO +/UNkVHZAn9Yn9buReZW8HCqr8MJZRDuSbLhmyY1IYNZWtLH1Q6raD/9MJ233nIFD +OQqUkq6M8sld+zsMwB5Uy9iLQaWfgLXBVyoIeMCZ20HjTcRh1cdpMpTfi4S65xBr +3Ji2W/zApianwSWK0ZCL+ItC4PVaRpwWsiZO9p3/In2x9+9DbX7DpCxwEdOVpOXi +HmFoaLLSUmWkdos0Tj2Azq85s+8ah6Z4g5h07uLMPFWZrxL8jCdsdD2ZcG9zk1+I +5VKxuYdzBHiofHcZBMbQCtXUPD4wPuyyeKrN0MVgYvNLgZ4Y5YGuLjhX00b0SgQI +DiQOyQrEqJWmYVh0KxYd7Zp6Cj0j1X7svGObcpisrPRxzpQHEN3rfZGzghnuHiU4 +WbZk4QOwxyJkTEo2PIKtoY0Uza93TJUhFvj+auEholhOM0qzWV3W8+BWMDpHhHN5 +OMMy7+4mDQed26OXN2/JZ343rqEADpkm2m8T+O+5+y3+5mmF7C9IEOZggs2/t+28 +jW3SZtQ70KVsKYuLJzLPlFYIWeB6reNSAvbpaINjxm0ZKw5X5N1CzmTuKHkTzdCk +keCgiSSFeE+o7yJNurTMERlUCWba/HBabXaKtB8FZstelfccSeRu5DfzESPd25i3 +4YDAS6i50hAAoh3GjqrSyYpCH7P2/bL57FYYkgEwgk/RxxzXyvr6M8uFa0glXIOM +OU07CznF24g6PatBvJhb77IVTfODVwWKa8Jvb1vWeXHdrKdUzbHc5ch1IlTjTiiD +DOB+zbX+hT6OHCVgVVpptV2WQxUrem/nRg+Y9lD1qt7Fus6zq26ie4WaK70cVuFe +OJ6KzD9tOMLeKq9HcHhpiYeTqW8qxmhvpArI8DwoLdx9XxMyLWGNpXNueBpy6prV +xXLp/RjF8ZDtPhMH7zT0ev+I/MzeJXQ0PT2mpYmiL4AWb1gjo9e3JXYtaLc2XoiF +gS0iZKRrRA8uvVcDVTK8r/BsOca0XX8QwIXJnyhhDauNxMzS2oaIi9XnxLSXrNLW +CWq4KGrKujNGAlYpk3KFSiclvzhVbqpi63Dc0kxNdXQo9EIrGRPG8RI/A0gc8jpm +eGF3LfnqCQcz7Bi13IhUyHEYqxODQLj0kuY40OAgY9rOwaRE42vwZyVt9vEsyOZz +l555gHHyLozgXr/FAZhtXGNjVpeOPmi8isDo0/V8ImiMJvLob9Y1vgegFlU9HGQJ +oO7YrodAHYa6vMfKghphbU9hKbdiSRvWmhsPJRWDXIjVrsjGMI9PYje4h1KHzfSW +XGfM5rCFVX83cckNyPjWgGBYCH9saqelPdXlXc9kBGZI5oa52uG4DzGJBFsEGAEK +ACYCGy4WIQR0jxWyz5uo8CQVXm7XyStw+hyBTQUCWrNbGQUJDSe07gIpwV0gBBkB +CgAGBQJTL0CrAAoJELTHCJO2K6von8wP/1ZutAwuyHnYeHMfntB1qrrA+Zbl3Iax +lcwjDv1DZFR2QJ/WJ/W7kXmVvBwqq/DCWUQ7kmy4ZsmNSGDWVrSx9UOq2g//TCdt +95yBQzkKlJKujPLJXfs7DMAeVMvYi0Gln4C1wVcqCHjAmdtB403EYdXHaTKU34uE +uucQa9yYtlv8wKYmp8ElitGQi/iLQuD1WkacFrImTvad/yJ9sffvQ21+w6QscBHT +laTl4h5haGiy0lJlpHaLNE49gM6vObPvGoemeIOYdO7izDxVma8S/IwnbHQ9mXBv +c5NfiOVSsbmHcwR4qHx3GQTG0ArV1Dw+MD7ssniqzdDFYGLzS4GeGOWBri44V9NG +9EoECA4kDskKxKiVpmFYdCsWHe2aego9I9V+7Lxjm3KYrKz0cc6UBxDd632Rs4IZ +7h4lOFm2ZOEDsMciZExKNjyCraGNFM2vd0yVIRb4/mrhIaJYTjNKs1ld1vPgVjA6 +R4RzeTjDMu/uJg0HndujlzdvyWd+N66hAA6ZJtpvE/jvufst/uZphewvSBDmYILN +v7ftvI1t0mbUO9ClbCmLiycyz5RWCFngeq3jUgL26WiDY8ZtGSsOV+TdQs5k7ih5 +E83QpJHgoIkkhXhPqO8iTbq0zBEZVAlm2vxwWm12irQfBWbLXpX3HEnkbuQ38xEj +3duYt+GAwEuoCRDXyStw+hyBTWnFD/9nK8Dft/W92efnGQuZu9CKAZ0grx+eIt5X +g/N8iYDBD6Ocp5q84NJOGR43sRkHv2k6VCzKBLegfmAcJPmCSvfbsUwtweR9T3P4 +T4QBxlRySVtKSw5ZtiOPhXDgCbxiZhRPUXCJtSbpHLTIHefr6+jMQcwz084gxxYU +JwYxsfLk7RqUhA8xsDtcXWK9f+SvqY1hQ5794L6P6FBL8Eg6m+cLaPA/cjl6H90Y +np+cp/gNRb4p/j7IAcsJcTUjj48ckJXuu9HdcYbZBiLZXxX1jY07jRNXdfJ8nJH5 +Kl2DqRK0Z1PnEV0KAglBI9gvrTssxpmOrHoyT3Z2BHqIljsDrP5HW4G0q7NZkmR9 +DTDtr8hlDmbIAmJWMlg7eDUgthJFs8PyneQSpiExQh3m/NW29cTMWQlZPiXoIFhY +tffuJwWMvgEoibQxfMmuq54tkXoy41/iyQF6C13QZ7m9alfeYI62ZGJetSIbLfIf +yQNps0jWmSgcxuQslIrv9z5Mzb3fjh72eBkjQ9jA0LJ+95LmcCHZsZa2pWQSd8bg +wWUxYiU5vBEJOseu/gz4d1na7/zgemlUmn/V4O4Lgg9JvvaxQl9KXmpnznrBENIw +quX4JlEPvw10dquYaCpl4ePXuocHdTB3VfWIFfu8B6Un5T4hb1XicwV/z6ZRHBDn +1VzMaYbOkYkEWwQYAQoAJgIbLhYhBHSPFbLPm6jwJBVebtfJK3D6HIFNBQJgiaol +BQkS/gP6AinBXSAEGQEKAAYFAlMvQKsACgkQtMcIk7Yrq+ifzA//Vm60DC7Iedh4 +cx+e0HWqusD5luXchrGVzCMO/UNkVHZAn9Yn9buReZW8HCqr8MJZRDuSbLhmyY1I +YNZWtLH1Q6raD/9MJ233nIFDOQqUkq6M8sld+zsMwB5Uy9iLQaWfgLXBVyoIeMCZ +20HjTcRh1cdpMpTfi4S65xBr3Ji2W/zApianwSWK0ZCL+ItC4PVaRpwWsiZO9p3/ +In2x9+9DbX7DpCxwEdOVpOXiHmFoaLLSUmWkdos0Tj2Azq85s+8ah6Z4g5h07uLM +PFWZrxL8jCdsdD2ZcG9zk1+I5VKxuYdzBHiofHcZBMbQCtXUPD4wPuyyeKrN0MVg +YvNLgZ4Y5YGuLjhX00b0SgQIDiQOyQrEqJWmYVh0KxYd7Zp6Cj0j1X7svGObcpis +rPRxzpQHEN3rfZGzghnuHiU4WbZk4QOwxyJkTEo2PIKtoY0Uza93TJUhFvj+auEh +olhOM0qzWV3W8+BWMDpHhHN5OMMy7+4mDQed26OXN2/JZ343rqEADpkm2m8T+O+5 ++y3+5mmF7C9IEOZggs2/t+28jW3SZtQ70KVsKYuLJzLPlFYIWeB6reNSAvbpaINj +xm0ZKw5X5N1CzmTuKHkTzdCkkeCgiSSFeE+o7yJNurTMERlUCWba/HBabXaKtB8F +ZstelfccSeRu5DfzESPd25i34YDAS6gJENfJK3D6HIFNERUP/iF3VFTudcRL8lzB +ZCRfSrJkXxfEHEXlZfXqjheLszP4HemF+/GsuG4Q/g8uYUqahWXRY4KfaRcZMfJ4 +iVGfHsLxUkzsAPm7IpdUB9X8sadNbjWIrph6fTedTySLsIZIfV5NICCpx3Nsa/99 +LKN3Qjvt4MuEaJ30wUJrEPKW0ai/a+bm6JmYd0TI80Ke+qhGu+Xyr5+Yff4EnR32 +0zxqBFK2wS6+aH0URDYu3TeCCfKwTr3yaMbg4BtLWNeCiZGWEL22BtPL85AHX458 +BdEY2+oIKu+n4mSUED6ldJCChoLgkypa9JLhByhSWM/mfHxq55roXiuJ9RTp+pry +JZ4Z5vflPX4umBBkkW1ObfReyeTzPfnOEeUAQAcpn9f1BX3ufd/GIQlSwZgNHo3z +izF0c+/2HwNq3G31PkKdMKrBTvmnBCPRhml+SlMq6V99P/nXasOrwN4h3R8Fjd/5 +WPqyBakwRsCH58MYxST3J9abd0QGvx/wZZlJ01GhFBLS2KZYFE1sH5K6zKtQQ39n +4KkiPUb/iDrrjRpBZnaFRPLZbJUdzMrJrcViASg1jDORYo/BgMsvSenLhAD4ewc5 +0NNAghcHIdfORfZUdP4f8AhfZePz8IOhcKLrVsSwzULHQahfLc4bv2nznBrDmPC8 +JwWTgS/m//vJSBGtyFgIp1CfTFQl +=S/pA +-----END PGP PUBLIC KEY BLOCK----- + +pub D9C565AA72BA2FDD +uid grpc-java-team-sonatype + +sub 9121AD263441EEDD +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=t7l/ +-----END PGP PUBLIC KEY BLOCK----- + +pub E16AB52D79FD224F +uid Google Api Client Libraries (Releases) + +sub 5A34A5E06B936F93 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFF/4bYBCADTeOLZiVGNbjlPrwG7UcMl+yXmEqpf9dB1A9cuicH3PWXj0WOb +LSzHjzoRvRekEqSUmgoveey1lPuA2qjOUkXY6Kiyx+oLiG0/ObJHUQW2O+tjSQ0R +ZXKd4ftaw65SLbwYO2JHzj5fLC9j2mZQiRjGs1bWM58c/dOKp1XaOc1/ffcl3L3q +Up64jWH9r3yhPemh5SHo47UxNvItdaJJYnt20azpZj9oq1ebUuQFMaQDc/RTALhf +Xb4BWO+z2PCmChz60i/Ko2ZKPJV2TqPqWO+aklgxTTwZZ0IvgFm/5n3Dtn5p5iGf +qwKkHPJIDWc8cWYtxC608LFdqiAlYmp/oPi5ABEBAAG0T0dvb2dsZSBBcGkgQ2xp +ZW50IExpYnJhcmllcyAoUmVsZWFzZXMpIDxnb29nbGUtYXBpLWNsaWVudC1saWJy +YXJpZXNAZ29vZ2xlLmNvbT6JATgEEwECACIFAlF/4bYCGwMGCwkIBwMCBhUIAgkK +CwQWAgMBAh4BAheAAAoJEOFqtS15/SJP6NYIAMbwdE5S9M/5tIhLPg2arbvnxfh2 +i1e2aKE6PcRlBGeNq8YzWQStIewRhoDbY4MY3dG0nX9wgXU6XFJNxjyjE5Gqpyrc +xEhs6r+HfxlGwB/OCaDMGR89lcWn1xF7uju3Qsdkb6o2JuCSAqOh4M1zIqADSMMq +OjuSJ13GddcUFQ/MEvouE7Leesls9AM724BNZfnyJjIfJqfk38rXCxKpMbxCJ2v2 +louDMu0LClA1efdvDBPOrc8+A74dsVh7cQqMoe5lCqrcoC5apMqlJ71UV7SIBNBr +7+AD6p0ZdGY8C/pTCl+NGe/Skjdqk7uEbmyePpm4BaJTmbwIgiZdGxthUgO5AQ0E +UX/htgEIALToF36j45OitNd4k17BSZJKnuS3uIL3tTw0fRqLv0/3EBaj4zD5Qc5Y +TKFgM66Bb5ybI63cwYhfSBHP2ZRS7oNdDbPd/30jDKNvmcDjIhGLT7bZJwC9SJVi +fHuvtzr6wBR8xoItyYva5D3ax8ZvnzqIbMPeHou+0ZnRYSPjy2c2TxAJTjDOG461 +h9mVXDdK74wL8kQsIxqqYRIeEdmrXMrd/B8IPwuIv8w7LwzadNgRnXaJ5Q5bnMvv +hVLnWKRt5aiQVBxc67FTujjqFF4Y/1UJb311K+1LSqNrTT7As8nhf2Gu/Gb47kw1 +bb7wBdKv2Swx5mYqiW5+ARQU7jCiUVkAEQEAAYkBHwQYAQIACQUCUX/htgIbDAAK +CRDharUtef0iT2SyCADAznSkG/8EdIU5UQhp/lY9h3WLzYI7aARw0IA6O4ijGLwc +ytO7TaWjEzUCMZdw01vAjVH1xNn9QvTgQV+2GyqyBNsjmgGt5/tK/+JtMgXUwr8+ +KsBf3908rOqAAZ3YGyM9N8sRsyfPB/PHfv289sL2IKPxiFTGI0NGS3qOAKQ5TZvV +7OPsP5+yHfeJG/XhCW8p+nkMGpH4rE8Z6NKgLe/WC6J36aQ4kBfYneueH90Dc400 +rfGyL+0Gn1Rzuj2KFuUFK6q/GBlFaNo0azCqtdpcO6C3GpJYtISxpQ1Rp9kSEzSC +L3tOli8Xs6gsruc+vCSIy8lzRw19ZO9G7qhjcHLc +=JOMJ +-----END PGP PUBLIC KEY BLOCK----- + +pub E270B36858DB4EAE +uid Alvaro Sanchez-Mariscal Arnaiz + +sub 5C93E86C3BB11F93 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +ZdsBsEmuo3E+/48zyvLEbrq9 +=ACN0 +-----END PGP PUBLIC KEY BLOCK----- + +pub E2F38302C8075E3D +uid Gradle Inc. + +sub 1B80C80E07BC7190 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +f7TkwC6aybc= +=B8WW +-----END PGP PUBLIC KEY BLOCK----- + +pub E3822B59020A349D +uid Kotlin Libraries Release + +sub 9351716690874F25 +sub 3D5839A2262CBBFB +sub 60EB70DDAAC2EC21 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +dAtUu32DbR29bHQ= +=EIR8 +-----END PGP PUBLIC KEY BLOCK----- + +pub E6EC76B4C6D3AE8E +uid Sandy Zhang + +sub 52410ED7B05AD2E9 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGNBGKRNiwBDAC56nNMaU1QEHCpOnvOHK1rjDKGDolxSyx9rgoTTWpaI9y7JbUT +iajEkzrtTsqjrabCltAY6QGQUz/TdS9MikCPUZM+l9EYKoBACDeKrYMcApHj4eVw +LVqpR2fYzhQQ2Q3kMo4pJ/458L0OiGLK1xh7FB0GUD3mXgVUOxDHPXpHD+NUK47x +YLmMIVxoZvLOentlIrrnx2VcUVR/IsgcKb5QwhmMs3SGkVrOWMgAB85xt/FgZFah +DjLzOi+HZCwQKRbUswo8AD7GiFzLmi2rk/4vu1tQbHZbGPcpu48/GLwrkDJCJSy0 +H9ZqE1AVH8s0cPfUjYyOjpg1BbaTC7Y7Om8PFo9xzQr+GnWqJbp9r5mQyMXBcCaT +lRop4uUznu5JDawoYhbEkn0bMIx3gM396J2jyp7tTcNeVCr7+VnjoinWzawDYxCH +qSxdSmVH4q8qgTPDtoIcKUdLJFUjJV+2Ea92Y/wcKHMvUYUfcjaqP3avl3AZrktP +DhMeqoyMMMKE0VsAEQEAAbQjU2FuZHkgWmhhbmcgPHNhbmR5emhhbmdAZ29vZ2xl +LmNvbT6JAdQEEwEKAD4WIQQuW3PG79LrRTEEwurm7Ha0xtOujgUCYpE2LAIbAwUJ +A8JnAAULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRDm7Ha0xtOujgIlC/sGV3si +mhEKFa3f5Cg+SPeR6FTxXZoqUunvCDnsNjzcXwvusdInKD5YZiSu3GRyvybb8RB9 +Oe0TfWyBXg2UDwIx5IXfpq3ubRh2jFSYWC0uM04rR58D1w1A5AH7EZ4N49b4/Nfm +N9lEMch7x0C1uD9aupGmW+n4IVuaw2RAYjp3W5Sf/Yga3UZLivjrh5y9FXzhAJi3 +fSznHzbZs0gALRJ/SzYLrm/JmQDMLwW6nq7UO+swDimSGwLihaJn+NOcvr/jCEiV +p7nQ9cxm1OU6oIqROR2GJFtDcfKeJEA5IhCc48TyorON96yUoO23U7BJzPOVmS9+ +sFerquQq7HMSMw/9TjznYkegYRcClXiVa/xEqMn+MdzFVwOBkbgvo5xbo0u1FvuT +uAYtIhGq9pWd2DR9VifqGJDsVM7X6u5qBoTZRu0tV9til0OogFUaVytEnZZ2a+aB +aMXrb+yrX4VRaP3AIdqTkfQkTBo22kIi941unbUhKFck95DrS7D/GZFm0FW5AY0E +YpE2LAEMAKyGd+sGmSrCMk5AuYVZBvymKDD7mAXvXTAmiFjFZmfj55XTUk0EWFqh +PP2Ck0WswlCefBout85Z3BONx2eN7OyVEljVK4zcr4P9A73mCCau4iGpgYKWbhyL +I9LOEkdd82zzuOO4Ts2qX7LddwZ8hZlZUUY9F0qED24hD+KptQOeTppviu/ybgR7 +5tyzDQBymJ5N5fGssEREFLTsnVtoF39zfVsLODP7s2YtG+jcMf1fKbN4Q5a9DhVr +UIYuIQcsQKp8qPHK59Bp+42eEIZJcoW1sPMUnxejPjBUdAu0A3dQ7sLLcdAMIy8t +ebmNXYeTIbz1Ws2Djh25KOdj04v2TAV3XfA8S0EQcFyv0C+zp14LMLMZz0IGUibL +T5R1tGlZMrn73TpOg/fqBCXDG6OfzN5j25a/j5HXgWQIS/m0Dfaz62So08qSe+aS +3co3m8UloU+lvKYqn5HYcSeY4rDVzEeQD2AM6lTsaWeaMnVSU2Pij//Glgz0WdQC +Y9wzlTnvtQARAQABiQG8BBgBCgAmFiEELltzxu/S60UxBMLq5ux2tMbTro4FAmKR +NiwCGwwFCQPCZwAACgkQ5ux2tMbTro62dQwAp9grRDjnX+jWnC0al2IJJ63sIRCQ +vRoclc8OS0p0FipMkYm/vzFas1MRUJa4ekE+83eqP0BbfIjjNovLgozJPAWHSuV3 +eBOK5+vSPZMcmO2vpaAIJ9pKctMbfVvF8KONukaF9dpzDmBdolFAaSBQ/dywVjrG +qb4AQJgEs0WkobX8bkRCWL+3seLJ2ABUDgQNJU4IGwe0TF1Ik7ceIHFXuSNzZZNx +j/0yB7kvbgq7y+Th5wNNxPWdvTWscSHm7L0ZPjTqsE/QgF4beTm47ZhS+QUNEtGB +Q5cKh8f6cw8vNFklB4SXFYf0YjbpiNuf7Po0W/rCveGsbLNpF9ZMTbv9T/7JwN/i +YVVhGP4KTgOEb2MFLfTun9XD993vWwjdVvnKZmihCzZVagM8qfYpS/nHJkyXBymY +ejD2ColWB1CGlpxCuwlkvOcsqXogp2AcNOTjOX5fiLQtNUnZnLad1ZmTwxE1Ui0x +MmIzscVR5uuvPq1m2aUkkKLFWLBqkpuelMmW +=W+so +-----END PGP PUBLIC KEY BLOCK----- + +pub E93671C7272B7B3F +uid Rolf Lear (JDOM) (Used to sign JDOM Packages) + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFCPD00BCAC4tY8wMQTsCKyII/mMkUDAkXA2cLM47fY1Wn+iohtgtalUdA0v +AhGvTdFU6/St35rOKNoyLC7Sy30FBYpAEfMB/x9j/CaQtdtGhaQU0hCvtWGhhS3J +BJb3BIzhKuP2mx+6tgSPtP/meiF/K1GV8x4s+4JyrVxSFtqz+yp5szFNbIXA46cg +UWOkzPhwA567Jf/8dUWysXb3lp59DG9anp2BQENwh/EmUhuhlPoM3PeUIPcZAiyD +SMJCR/KooLzE78lAOK14oD8eV0qg3tT0R5RlsNKfFRRoo2bwwPhz0SUVqJlt7ehd +By6ztFKej4M4ZKonnWUiVJhKEGm3dVoEAJTZABEBAAG0PVJvbGYgTGVhciAoSkRP +TSkgKFVzZWQgdG8gc2lnbiBKRE9NIFBhY2thZ2VzKSA8amRvbUB0dWlzLm5ldD6J +ATgEEwECACIFAlCPD00CGw8GCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEOk2 +cccnK3s/HJMIALDETleTycLBl02uRg9ZRwPNWANajpfeJK9yY/SgpVfVn0ExXtY3 +/1Sgc0kZn66c1ohjv3DhLJYTL0GgSfb6FmAkvXMTDfFcm3hMMQKBPTUxRKw+gmgX +ITrrZbXZcEprlF8GWlAcpv/9X+m5X+u24C0nR8tOtwZkwQa9oUKyUajYrt5KUJUN +JoVpd8ZDWspXw7HkdQaC+tMjU1i8rypptfpnSvHFXSgH49pe/EAT1C88mx74eGMR +XGJKL4VdzvNi+m8ECrM1GE9+EHBBLExL7NEd17N75ZYQq5HTQYKEpWZRCewOFJS6 ++QWMp+oawQ7VUApo9bhGSH1E7X0IcVsqVr8= +=bCVv +-----END PGP PUBLIC KEY BLOCK----- + +pub ED2378CD09A08CDE +uid Guillaume Nodet (CODE SIGNING KEY) + +sub 937F1470B7330556 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQINBF7rSgUBEADkkKuARh77nCyorv2LUBebe2i+23AjAN0gkI48HE9dVziQkF3G +LZwUJdgj4vBlkhETv6uMOqdhl06Pl59UYevQ3KGvK96ZNmcjjxBRpV6TkcvO0fcm +68pxPJoNoo+JMD6ppxlpLCgnu45EQCWPHKMJjDEV+rIgbqwtmp9pvG2kjR1KqPKK +VpKCCohTBQwYO/MHAAe5PaVf8e6dKMiJbJB2hAeiOv2zIyl0R1gSu7Qdx86n4Ys3 +LcFUt/Rw61dlLztuKX+ue9QJcPyVv0IZIMG3rKIGOi6enXLa2eQ/HCHQEOI8S2Kg +ZpDCulAzQIA6+6qlH92EsWr+scNQaQcz8WXOk6Ymy+7qqVbXbYn0pw854iIpZ4TM +HK5u6135WE/Owf0ssnUP1QEisGBz/lSOOCrQOTGTSX9X45dYOzxbTEGd21YU8fj/ +9HYC0jR++MOjWhnnWXQHJcG/vL2JRPYS9l08R1e6uj3DPs+XsyBt3PAwukBLj4YR +fVy5VZk5pUX7vy5Kr2QA5HmRAaRWd0UY+kwxm9/cOytGulTRGQE0DTesHdUZLkQU +qt3yH7gH29vkTmrNiTyTk641ByCTh8TUTPqaPnift+HvR3w94Xj/fBqaM7/GzoNF +Kmw/Z2s0B7lqfVTinEKW7OJDumE+SBIdrY2PRgAqb+nB/aUU/aSV/r7q8QARAQAB +tDVHdWlsbGF1bWUgTm9kZXQgKENPREUgU0lHTklORyBLRVkpIDxnbm9kZXRAZ21h +aWwuY29tPokCTgQTAQoAOBYhBNyYIkxkIaelu4fzRu0jeM0JoIzeBQJe60oFAhsD +BQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEO0jeM0JoIzeP+EP/1p6n+kwxWe/ +COznthJo64ylhzw+yrM/aLOf5MLYN4DglMWIT+bz4UlolNa0uiybMgwbiZUY3XuL +4s3jGixubroPy2cUEyvACemDdXIs3PZdvAMNhIDXikI1a4++87nFGBBDVOtoJlUv +8z5FAWGZ4gKFGcNuEsIjYj/5KyrM+U9g/5YfPtu7kfNFxd87jINSsKOODa3ziJCh +vX9ieCiFXtDZ79LPpRAr5H6OqxXzUwp0fRePh/UiGsK2zVgcZNQt3KdxU3+lkeAR +SPTaBm8eNCJUOE5/kMBWd2J/gOanMFnFoldM4oentyBffdKjTCxLscbJFsd+ABrn +ncoCETDiLLA3jfSVLydWzhaSs65T9DTnPszcFtsqJfOHvOJ1FfZy/apQO6Np/M8S +zuhVqdgeFpZKf1MzhgzSq5kykombICaChE0OiLphE7DMoz+ec6N61chNwm4AUJhD +z+hdFTavoWoTacN1QS/FoSSx567kDlaIKg5jcH0jGFynYSeTcy4VoyW3aDN6COtR +4FWsaQ1r7ffiQMoJj1GMcxmXv+YevVZm9h+8ZwUVagToysMOu4G1dHsTa6TAj1QK +dXbONtZhhrAXlQWFKORzJnZ3puKwPwHjBBGEdCLIpvzbCTRybFWJOVctwHsrxu8l +ANs3cCApa1ulT6EqGpiC0WHCUQ4AVxe8iF0EEBEKAB0WIQTqI9sTYNkClIHn8u/s +3+o8tEk7lAUCXutK3AAKCRDs3+o8tEk7lBxeAJ961NytOloqJMoMFThPZE4rh93x +jgCgnAZ7Qt33IkKo20XqSmO1blOgl+q5Ag0EXutKBQEQAME/JKyxLTnH8Isw+5jo +nU1YS0AcC7aDxGl4tiVKo9r/oVfq0+mdCxng89RPRn+7lUe4xWmdwt/eis/BLacW +ejb4+1dA/RliMhoPjwK5OnelXMBANJfckYP02jPhLlldQIyxKkUVUgpoDuuEGgYq +FGStSDyZaPoGxHJbNzt9sjwlx3rodU9HOfaIYJ8ZI+awD5DfVPMf4tiGP8/ZFss8 +qe181iF4pPmvlF/t8BNZR9nbMn4pBSWalD7cnOSP2wqEAJRLUAfI+J7Qb/9uK2Bu +uO4UEVFJvSXrSJ8EKtbcVUmf+rVp8lGc0t61y/m53ExIXfQLUITflg3+Atch4cF2 +Tck6EHc60gy3YMxikXIqqXkBc1slnW4c0Ia0lXsnW1yRDLekyGKi1SrotoAIpbRj +bceRr32aQ2GVwsIPGECK86F0cmQ0IIPAV/VWRph/o3u+7MWRjygpL85w6t9HR9xJ +WqPemOjykVEvFtvPfyTusV2XL0K/m3wxeEG/ZdLgbXgJot+UWEMhmbmflghvskQO +rgpfXXggCEN9FVWN1xENN0Y2yaikvOFvM4hVygy5XXmhWh39zT26IlStGJjzNJjL +83fo8JrW9UbAL5wy61U1hHiY+hCaV4GZtXCszSLqVnoan/LJszNYJSG9NFuUaYjC +QtbXhfcpsDejyo/qd5p/kz/bABEBAAGJAjYEGAEKACAWIQTcmCJMZCGnpbuH80bt +I3jNCaCM3gUCXutKBQIbDAAKCRDtI3jNCaCM3o3eD/0fLl5WSesWt1RbhR2xmMAQ +0AC4ldCxNnsR3BPd72tg4Gjx6O+HoZubjgwLGlY3HLGdM8FbX2nsieBUadkuJcBu +KpMe9cTZTYhjEdxKS+tndSPwScLaK02dI6xMRN77L4h2RS0VoYHc6evWUCS4DsUc +G654wtO8TnkzbMqz3eXaBKyClubRe1sr4HA4FkOqQI483Sngwlr6UTqG0JdbnC1n +GecpNl2gDxMAenl353szFDy7woFpxVsqbDNp3WWfLupakcpLpFjxZ0XC/VKadEpu +3n3cwvB/Dmpzpst4Fz4+2toeEXJdnk+aHjNT+T3Q2CsQF41zRCtsejgHMCRjUfUP +TvxsEGApwFUhY4cO6Inve/JcRTeTcjs6duD7Vf561w6cuj0G7ZUqEtXnJ4XxuZoH +Wp3fTd6RAduqbE2eCDpbKu1NqAweL73q7DNwV+n8C9lI9fiipyAlG+XlXfwREx0A +hpPlbKIRjjMYyLnJiPd3dLY72ktirp9N5EG7t8uMTkzJaZ4qXRLkFEw318XEHGmR +D0488CXWilYvNDXR0PuixKWrcIADu5kOIpF2tLzl/Id2plg5s2nEBe1KHQ576DEc +wsPhV4rB7bKX6TCh4/MrxJndwLtq3W3eeUEIRg+ZMcOhzUVZdQNbN84vE1Pvj1WS +x8r+e54Nkx1FPMjEyKsbPA== +=5N9u +-----END PGP PUBLIC KEY BLOCK----- + +pub EE92349AD86DE446 +uid Thomas Ball + +sub E68665C8F91BDE69 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBGO91akBCADDDpIrW/IohUSJNDu9VOUlnfEOm5VS49uqM0uucLi0BeAhy1Fo +P6Yg1cJkcK66DtnUoTM/JJLyDzJRlKnniLrYCkw8ScvtPdA5cQKJTY5ecn+9ouR2 +SC9GkBMgagbCScP1xE45q5FO+z4kwmcERIKOQ687VAk64QM6hJCupfAd6SqS/X0Q +SGttTNtmj7YBpfnU5iFX05Hj8Zkk7CX439xltO8uJNyBlDVbuUZc3/kRowKPVuuo +TK2mzllVPzE/YT6NUY04wQPmRJx0uWZQUyDBZeckdurpSImdd7sik6Wf6zVGvxvg +MC4oMufZ3EM8R4dssRSIUfnBaQ2o1LS+GVxjABEBAAG0HlRob21hcyBCYWxsIDx0 +YmFsbEBnb29nbGUuY29tPokBVAQTAQgAPhYhBOsbPecXE8nsLofMJu6SNJrYbeRG +BQJjvdWpAhsDBQkDwmcABQsJCAcCBhUKCQgLAgQWAgMBAh4BAheAAAoJEO6SNJrY +beRGckAH/jMk3rKqStppT0t0+gbz85sCuVIlc8wyUdVenq+qi9lRL/vGSp8nNQb3 +KIJ5jm/BAZ7qFMVal/niXVXkpYI2kMpHqRxW3GuWNOcHdOJR+kPuTmM1n81sff6b +mAP3Tyg194vhXQOKW42j74o0PLaCMpavEAADeporcCVA5sirCAsA+uoa0Stk3zR+ +tTYUQ6l1qWu1bY3BFH6/JG0ZnWX5n+1uUhL8KJDWAIZDnRu7pdn0unBHa8GiMnew +KNvhXSiJ2kr85jLr3lhQ3i/hDB7GdYlmlXI+RSroP2oEIpRJ8KegmYzdrNOLB9rI +xa38U2wSrxH+X6QeAx5+fKPs0dW9NJK5AQ0EY73VqQEIANJPIYj9IsxKKOWLOkWv +xAg9o9krIkohBMaOGRsx4RxQyArOCUoaG/qsG3aVOi8wML8hQK6qoXADJ6FBGxQ6 +7G8pperzRSj1O3BJILB6Fd1X8w40S6hSvUAZs+DM1FMuD4mf6yduyZUVIghGRExN +eSb/vfn4KVPqdSAD7uWeQiIUYveaXrwot8+U8tRNgv+LQpCjhm5hvWyIuxxpI+k5 +N07V9y0yRGWiBbgqdmfHVwdEbUSM0sMYUJUZKW+iwf5tZig9LZu3HAf/vyXjBWG6 +zkkjwO8onKFLuhL4jkygHGSawJHwYRgtlknUZ0DMVc451bbhuFHE0dcgQCdAYJsI +66MAEQEAAYkBPAQYAQgAJhYhBOsbPecXE8nsLofMJu6SNJrYbeRGBQJjvdWpAhsM +BQkDwmcAAAoJEO6SNJrYbeRGNC0H/1JBKZZ8+JLGcGefchsEWxcNRN8yBtDtDM8p +EsC99Pt+vzLaAYYFbPVKpzr57zIxZvtm8mUbWOa4Z8eHtzLRQEFirKuvd47YUPOy +Htfdeccr0e7iQQ2rpRmOVrnkKu4LHI+f4jFEm+Pe+3CyLYe/tBKKeBOKjRAWpQi7 +Jz1GQUuu9JFu4fUphzz0z5LybGHa1T7QZ+2ew8kqLl8EEeZAq4x/bulbaX050vfs +gULn1X9AECW0CX/OafvFuSrEZsLUSw0KzmzqMPOLMXOh/EZsop17DqhGe5NO7GoC +ns3XxqjpggME9eCEQooeKHlLCAkX2/XttwVSRlrNsdVb82iKy7E= +=79ua +-----END PGP PUBLIC KEY BLOCK----- + +pub F067A2FD751AE3E4 +uid David Burstr?m + +sub 28CFDE1EB61BB6AA +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mDMEYknmAxYJKwYBBAHaRw8BAQdA/xS5rgP6lF5fl8l+rJB1UiF+7KKDse0PmKYp +TNBH7si0KkRhdmlkIEJ1cnN0csO2bSA8ZGF2aWQuYnVyc3Ryb21AZ21haWwuY29t +PoiaBBMWCgBCFiEEwGEgSPM5O4CyJjm08Gei/XUa4+QFAmJJ5gMCGwMFCQPCZwAF +CwkIBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEPBnov11GuPkKYwBAIxaScxC +vA8+6g678rhLXi4Tol0YBDh/Ol6GBzARrQcKAP4oZnM3pKgtEweUdxaq8FvIHmPf +gbwuAjvhN4puZBVmALg4BGJJ5gMSCisGAQQBl1UBBQEBB0D738vg/hiF3kQg4T8j +jbxaqT6WMKxf2KgpfZ2RUnSSCwMBCAeIfgQYFgoAJhYhBMBhIEjzOTuAsiY5tPBn +ov11GuPkBQJiSeYDAhsMBQkDwmcAAAoJEPBnov11GuPkQlsBAK/3N0pGcULvADnZ +T7Tpk0W7BDSBByrDxvQy+f/l5tI8AP49K0LLVdCZ3ifAS9oHJLP18KhriSE+JZDY +poA5sWHqAA== +=q76I +-----END PGP PUBLIC KEY BLOCK----- + +pub F0D0AE433308B042 +sub 504F10B64E007C78 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=8mcA +-----END PGP PUBLIC KEY BLOCK----- + +pub F3D1600878E85A3D +uid Netty Project Bot + +sub 1C9F436B883DCCF6 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +eOotdxJF6J5yWErznxlExP5YBIHvIQljCyU= +=WKVz +-----END PGP PUBLIC KEY BLOCK----- + +pub F6D4A1D411E9D1AE +uid Christopher Povirk + +sub B5CB27F94F97173B +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBE89LqsBCAC/C7QToaRF8eZgGOxcvp9aG+mFFCMjaRAb4Mh59OYdmUb6ZjfO +9388HPebGbPNR8SHYs0dBIuWY4ZJ7oUTYPswasL8vB0iPFdyHhvkCca+yk0b8ZBM +DmFlISm9HkYpoVjcFUp1oivyeJ5LRTJTd5JGEd/SWFRbB4TimdKXBzej9fIm2zVl +KInEMMd8HnSYE6nm3aNkbyiqhx81bFvl8x6X3ZMWcKs+TAVXdP9uLVvWowUwcApk +xpee442Ld1QfzMqdDnA6bGrp8LN8PZF9AXQ9Z6LTQL3p9PIq/6LPueQjpJWM+2j8 +BfhbW/F2kyHRwVNkjaa68A544shgxJcrxWzJABEBAAG0J0NocmlzdG9waGVyIFBv +dmlyayA8Y3Bvdmlya0Bnb29nbGUuY29tPokBNwQTAQIAIgUCTz0uqwIbAwYLCQgH +AwIGFQgCCQoLBBYCAwECHgECF4AACgkQ9tSh1BHp0a7LHgf2OE0umpZRiFpL8Bqn +Qf38CeDDESZz3UjwWuOKgnGQ6PaI+alctVI3YErVRSzZYhUJnw+JqIXy+kXIoxeQ +Y+IPikdR7aGKSaGrzm3H/jDGmwrp2VWROpVqHSG94UNBjUJvsOJKty4/m1q0n8RO +b3ceD9b4cFAVVesLaPRTyub+1g3tutB8BcJOb9r1wrmS2GsNNBInrt76fnfVOyqy +vtka6yvqqtAcV8ptgnh0BqEPLUNAW0Vr/bqIuAa4wLVnqBXAk36lMIW/B7IkjVMp +3Qs4OqpZ8LaJSAwaWDGCLEFVKMJvuvAEWuRy5tZb1cUb0Q0G25/6P8kYoyHfu4ML +26JtuQENBE89LqsBCAC5hGdMTbbl9XC7DVM86tB1c8A4sOSKrj1st9zHBEl75GjM +qskLWIrFvvnWNOjMQQkt7lePtZyiOqAOy5OPNoscM28MLNEW/B+QnixwxMBl37YZ +iwLw3caDQlGALaVTjBnGxqcudUxt1fYvSVntacfpL4Ynl/QS3w8z+D5XYaPZStoG +EYZqTw4FDo2GYIkFzJiDwGH3RyAP1XWExEwtJbuAHW+ekszsLxjKZ3d611lIiW2Y +O5Vve4b2zhTCrnWzYwQqxey4VgIdPPTFPa77p7s+5qrlXTbXxAZHVa6mSXb2IhQX +nuEVHt/qhgqR5y88pzhh6/oiLQxu9zUfX2Qs5dSvABEBAAGJAR8EGAECAAkFAk89 +LqsCGwwACgkQ9tSh1BHp0a6dJAf8D7j9luvaMHjqrUkQ39RXhTcwFCI28I5IP204 +8ycG9XMnnce628YaSZp9u1vANlo35gyzp+KK0EyqMX95D+knnhoWC5M8YwWuUXKP +Paf+l9+QculUeCzxXkzgAshO23AI6jxW/u7dWM755rmSIKb0yonJKtQ/YO/iU9UH +fZ6gRSpYPGjJ4AKKFb5S12jxMENV35HzDfpbcJRK+6NbbP2Mw1MX5WhVYNBZze6n +s2pv7O1b3CuOqzveckK/1ss9qFQ83N+Hvja/29qTdOTAxwNHV5m/4q8DwZdJkzoA +IAvNOapEdeMYXdRni+jBAN+JPNkqvzt4FoQWgdyjsuef5b7yqQ== +=ppUY +-----END PGP PUBLIC KEY BLOCK----- + +pub FA120A6742234999 +uid Daniel Kurka + +sub 04026365A8FB02C9 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFZgFNwBCADQNAwHdqvWBtnUJ2PoVt5iKhvdFyN8Hc+tRwJEFgp9sCyTLtWV +8IMupyuwXbkalCJT8L84jD4TuvYaEWsDWgXQspZTFiCplsLC+L+pIwM13uvuyp6l +FIXs5uHSHPPsat5OXtDDixh5ZMMdTJH+UxyOiXIwumQGLf9g89DW0/aUh/AVWwIG +dCndwPsEl85TdPAT7oJX/9ASMsYhgLoSDQsSbVG2gg2/5K6lW8ja+kjRO+U3o2fe +LGH5n+xh3j01qq+kmirwK/N8if8usdIqTRIfd8ts7YWGcPfecDTlW/CoAzwd6S0b +L6WjjGwH3gaM2p2f9PWhHD027KiCTv551rChABEBAAG0IkRhbmllbCBLdXJrYSA8 +ZGFua3Vya2FAZ29vZ2xlLmNvbT6JAT4EEwECACgFAlZgFNwCGwMFCQHhM4AGCwkI +BwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEPoSCmdCI0mZvl0H/AocNHsVhhX3hmNT +veypADa7v5tCYnsoDowjUqlgMJkBcfNV07iwZiLi3YIjn/LafFYE1K1jDDyRZeEu +aeTf3+27u9WeiOP0fUwikr+/K3GyvbUYlvBfjix4yOo0/KgXmDsxx0C8WZrOEqj5 +EhU+kXf6i3L+PFE8/IrRV3d9MrhZcDXBpeUjC2OetfC49EwEMezfHpvbckfwadI0 +TC7ZY6EQrlJk/0wqZA2lbsr+Bbjytl17QJf3b7h9ghuq2fp4mj9kOrG76Rp2Si09 +dKCOQ2rlj3cjjB2ihoXtdl6EoR59cQ4WtiJifZ51+jXMwWTFuPv/ddAwoMnnREyD +1CzFWQe5AQ0EVmAU3AEIAKNjBEFznYKTWRo2+tekdDISuEYcoTksBROYtmvWuMe7 +2KnfwCawzcJ+2hGU/qdUFmIXAwtNzn64603B5YqMJaUqRFRgaYcMy1m8yInpLTPy +3SSlvnOeUhwSM4TGxAiCvIkkY9enxxW5h+WslmTrEypFaDgnl3Wrg/1qWraWrk8v +TonxwmP3zNvc9rJyBMsHxDBEzkcRjFXL+CLKAEH0A6emRxfRe4WvXloRwZnvJ/2V +mSjaTkqk7cDhLhmrGmuRnpjSf+j9WW0iIVE3tqIM2j7qy/UAkpDLN7H+OSmLJg6N +70ZRVfuWucCCLdoIaGyE78Q8Aliryy6Iq7xwyX3kYL8AEQEAAYkBJQQYAQIADwUC +VmAU3AIbDAUJAeEzgAAKCRD6EgpnQiNJmVodB/4o/5blxoyCP2geCDamHInv2Ay0 +f3o/w9+M+YHM2SofR25HZolPV60kDC/jhGkwffhyqAphItuPlQEmZxWa6B+D+1JI +MnTpy+1a1itZS2Ou3+CVZG3TKRNDwtzThcladkyw1BJmJmh2H63csy5YZ6h37xJd +vuzQDSp0WiF2dJ9LCOX3/rRsZy0/KRxioj+zg4h5fwk8mIH3+gdpUhqV75dASw76 +xF+wP7RRMowDYxyqdIAUzrmK8TMnQwCyoPz7fVJudqA90tLd974Z66b+ZTepHJf2 +T4KEfCT9zZcRT31dHxv3Pcg6ubMyS/MCBPmF62ctVwIoWVOA9761z5/jqqVV +=nfqi +-----END PGP PUBLIC KEY BLOCK----- + +pub FDC09E28DF98A023 +uid Brent Shaffer + +sub 3F27C05CFD9C2229 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mDMEYedT8xYJKwYBBAHaRw8BAQdAGLX9QU2oZI8FYI/VFNE2aSCfcGYiOT9WVsti +ECHtIoq0JkJyZW50IFNoYWZmZXIgPGJldHRlcmJyZW50QGdvb2dsZS5jb20+iJoE +ExYKAEIWIQTrtKAN3vtFh0xphNP9wJ4o35igIwUCYedT8wIbAwUJA8JnAAULCQgH +AgMiAgEGFQoJCAsCBBYCAwECHgcCF4AACgkQ/cCeKN+YoCPXbAEAhuuUCTtVBG9A +UoUoLkS15TpGA/0byP2dSHm0HOpHte4BAIjujf9ZqT7zJzdr+XOtu9C3YhVGwWxu +J+Q5ERvM+ekCuDgEYedT8xIKKwYBBAGXVQEFAQEHQPjOk8ZBcwjEQRj8qQtQe1h+ +UFG+UeLuCcFEIurWQcwxAwEIB4h+BBgWCgAmFiEE67SgDd77RYdMaYTT/cCeKN+Y +oCMFAmHnU/MCGwwFCQPCZwAACgkQ/cCeKN+YoCOHUQEA5hFI3R2nISkQLcvwHuI6 +wFuIPZpIFH04gVV8QCCDJnMA/2gCOJreWlezmKutTdyczCVaWjDqSNasCztxqdnL +nPgM +=xJIV +-----END PGP PUBLIC KEY BLOCK----- + +pub 012579464D01C06A +uid Herve Boutemy + +sub CB6D56B72FDDF8AA +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +mmjMEm3ptSzLzQWf5nxe0DGHzFdp+62yJA== +=Z1S+ +-----END PGP PUBLIC KEY BLOCK----- + +pub 02216ED811210DAA +uid Chao Zhang + +sub 8C40458A5F28CF7B +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +QNmUnTWAa+1PzUkWuLOG9L23Qeg9sNwOEbmJUQ== +=egCa +-----END PGP PUBLIC KEY BLOCK----- + +pub 0374CF2E8DD1BDFD +uid Sonatype, Inc. (Sonatype release key) + +sub F2E4DE8FA750E060 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +pA== +=OkOT +-----END PGP PUBLIC KEY BLOCK----- + +pub 0729A0AFF8999A87 +uid Kotlin Release + +sub 3FF44D37464BBB7E +sub 6A0975F8B1127B83 +sub 6005789E24E5AD1E +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=p9JH +-----END PGP PUBLIC KEY BLOCK----- + +pub 07D3516820BCF6B1 +uid Ben Manes + +sub 11F4CE313A637CC1 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBF3HgdMBCAC3ET5ipFXdZ9GGMbtsCQ3HGT40saajsNDOdov2nMJxzKkVe3wk +sN3bpgbsqBU9ykVkIhX8zV5+v8DOBzkV0pJ2eLjFa9jBPvNjV+KoK2BAI5pzNzYg +sHPwo1aRXdI0MvCy+7iaIiiGF4/O16AhU4LmALHnaRQZCyuN6VOQ8rlqNvcczwUf +J2DQeLHqR/tsch7S01hGpPAptBeu19PyAlQsntYN0yLCLKoe9dFXWCDkvd1So5LF +6So+ryPqupumBbh4WxCmTp9qwDJYJItjAE0zyPe890FurOtxrFTwtRtX6d6qGKkY +/B4T3r0tTE1EiOUpmSnxmGNItMh7/l5UtnHjABEBAAG0H0JlbiBNYW5lcyA8YmVu +Lm1hbmVzQGdtYWlsLmNvbT6JAU4EEwEIADgWIQRjXuYnNF88HdQisuIH01FoILz2 +sQUCXceB0wIbAwULCQgHAgYVCgkICwIEFgIDAQIeAQIXgAAKCRAH01FoILz2sdoo +B/0YUh73jUMl14MjWvp9zrFHN8h+LqB4NMQcP93RdPTtDKi0a+0h8gQtm0D+K49Q +BQbFztOObfZS3kdJ3VOqmodScWrGtMU3HsYT2ioQalqbYvl9FIPDrlOjHaZgwgyJ +We0DVKHRApbtIh+NxTpQUJtanxgF60ZtOoToZe8XMGc9LaCZcrFxK/AlMdDMgUCx +qzBbXhAcvut2bJVL5B4kLNMABrbUuFMjTNI4JxvgTXKL/jNk6XPtCjdmgIh7mT/G +Mpu9t3i1zegAPdM5N/MAgiGHqm+blANLniSAbZja8Ny7211fwOYoJ546VPwDjL7B +rBlymB3COoYZhql2DcBBg39cuQENBF3HgdMBCACu3VQKKmagcPbcMZOqbDXE5iK3 +0G742rCpf/j3ywnwTZJQ/58HtAi8+/fXxUhTHswoON2TwiiHrHAkObe+K9A+jv0E +xjKVMmQ/sOCYWZDEGMth4yJnzDbT1Tlm/l2i5Lv0ZaD7fTEhtprQNuU06dveTeJs +zDyqtK9T80mvI4+GH59wM80l1y6uj8KA4pY0PdSFgbyS9iAFADGsUsc6t1KiZ5W1 +9odMjDPlQtJ20pm5CvJlDZbYNRJ54CSldZikRvmNRg5mWdRLNfbRMFDLFfcdYLdO +WJXnAt9cKFJC9P//ItZFrlhu3akTH//HF2kxQNW61Sd92/xtFUD/2tN1GlXfABEB +AAGJATYEGAEIACAWIQRjXuYnNF88HdQisuIH01FoILz2sQUCXceB0wIbDAAKCRAH +01FoILz2saySCACibIpnls5wJkfX1B/7tDjWk2hEGZYcASr0xp/DDwSgJ5edByuQ +NQF7RHuCk0ke6IQGfytMLJlXeEIu79DvgPakxBP5iG+c095FbhRu+9nCEkRqQvop +4fA7ZdhuerOyuObWz8+o3Z2RywWPXlK+F/9iJiO/qtvmdORuikJtN9VxgvAUvANZ +RtlzjL296p0TJzGqXhyer46CHl/Yj7TtX6EpnZDgiaQbOWRFOZ5x81xI79bQD7Ew +DzfrwQHbjQDkqhkwOoV6Wq239ZaHh6p7GXHnQkDMQ0H/7Y2tw6PH5VM8fDJkJKF2 +PIukJrUXa06KqrdZ9YxqvSmu5UY6tMSRwGWp +=/wFN +-----END PGP PUBLIC KEY BLOCK----- + +pub 09A79E1E15A04694 +uid Torsten Curdt (Code Signing Key) + +sub 5FB8CE6F93DDEB23 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQINBGAjI8sBEACtiX+/sDZDNo9M42xWgMDEUUBGkObE0opLPe9N15OHQt8Ve2yJ +VW5yW0X0hcBIkaxAG7F/NpjVRN1bLGM3J3URR+XD+Ubq2KJkKW/39RHcP0m60tL2 +pwutYy6+GCN6cRyQpCqIU6W9sksjKOAaER2mv0Ys7PKQhxWOpfV0BHJ5d/1inCUf +/fB55M8HgTtqsGA4wa1n4hwC+4vFvuromgEUAVytKLZHcZmvtGsEnc2KljGPi63w +04uNAYWQBEi1J4Q8JpAQ/VsJuP1nekpSRtVGUepZcQ0HGij4BmJ1ahR1mOnqMXmZ +6jVfQryYpyMTwNOitgkBHGp/Eq12Q12YwgHOoA2TkMcRbsW5pNtyy3AlRKdIDlwt +mdgNoG2ZoYd7MEBhqo31YpHvX5abvPsHRPkLg7nwFllLKW/WZtTkFv4HFhRp6WWJ +K/aurwnIXR8YvveFJ3AWohRgsTut6f5ERKT76rdoMALjERzzU9+A8yPzoqSvpGHz +tMZOgt8ouEDEc+2NFWO/kSJWoH9IWM5mQXGPSea48+dB5q8itqmsI3wzUzUyRu59 +cOo++Ne4BU2HaD9Cc1KIvfduv4SXATOarnxsrr7X5ARGScLbfrHjPDCv20ugCv1S +p9FLK3nqJJEIkkEurrfImWUXvd5poliJr3ky0Rnz2iL++LU7s8/L65cmhwARAQAB +tDNUb3JzdGVuIEN1cmR0IChDb2RlIFNpZ25pbmcgS2V5KSA8dGN1cmR0QHZhZmVy +Lm9yZz6JAk4EEwEKADgWIQR5FW4DUa+GBN6bGGsJp54eFaBGlAUCYCMjywIbAwUL +CQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRAJp54eFaBGlEgZEACkFl525niQTys3 +mniTGYCCm+8CLEbhUxysE6GRgJBRcIKWuktEOyj8qv+IRAmt+4RwWHBEtdXNCIl2 +oOXHLxrHZqtj+yvnw8SmFhl9tpuCGUeITusurhpzxdOyUswtG/bvMksCpn+2dJvJ +YfJPUuoniokrkRutToRggBEPvjKR+U35c055jm5jJzERGJI7AKd9Xu3V4Re3iA+J +kmHc9Ph753cnQ1Fq+SJDX3u0lv69FzY9FjoJk1WFvrYUmqj2GxRciQioDFgfY2rL +Py7cE18pZIYsgJIfULM58Lk2XuzpeCs9USrAug1MqOA/0mKrqbHQkdWFLYBuKlvx +0Vf2oOTn+Su+fQUTYtCPA6HCRPZHez122QZq0qvN/mEY9e0+58BMxLzoTkzYw8Dd +kjCxwN/EYsbTNiOBu0BD9FwkcYwHa94jKpPRYX3CVY5HxCAxDhG2LWXfquXDdZ+9 +yQ8a4N0kcUWBqXR17AincU1ECI/3KD/FksZOj+6e4pEzNmMoTpkWtoFtqYzg+BrC +qr44qmAa8QOYF7bkSaMN99/jLjChfAsEMkygDXezocvam6qLIfbY05GTsSzJsVAf +V1tXyaxF+JFQnOJdsycZeSJeQkXA3GLfYy8q4hoNLUwWOjPE/jX5/hkDe5XY9dPQ +iFFC+qoQta6W1buO/lU5+rF4fZq+OLkCDQRgIyPLARAAxCoCO9QUO4Rc26Chy3+v +J0/CfMs0XK4oqqMVK8dUx5z+uWuCcW9h2CLz2rcAxDOUsWON6vPQnYMNbggNclCW +M0bT3rGc5cN+/JW8Hr2dyuEcQcye9uC8N/nejctRJNXBbSfPDARSb0zFzxk2TVgj +Rc0sshC5lE2fTnR2PQIeM7NDhAwiJyCym00QyqYJEeiRbAh1msgqMuHkd8yrhvYm +H0z0X8bamJ69gQmhwyoydd4yxbr4lHGPb5cDC4BZPFfwqvTOVR5sz/CUY1ROFRUM +QNQ9aqORE/yfw+1C2TP2WN5LEtgXcHoXgqhGQm4JgiwCi+0qMj6H4x7zmmf+6kxy +cHyBXMKjrG0Ytv6RnT5tc13Jtf64qn16RftmlJPrT2/Q1TXPmxClwT8/J5p2xugS +xI8t9n37QlJ9aYbNhow1GXajRliLWf0yru4OgUr9xrpqzLic2ESKlPVUDfrXM1mH +JoQhSufgpjYdEsavrnJAjVG3P4yBgY4qk8RqtOL1g7PQFS1FGJfilkld7N0Vmhmz +JytNUdyblqLztJxz1TVrUh0CVGRLioKvzJFJbgdYg1XicFf/zfdEHWSgKbs02E2p +WwBI2jN9wwpTk5tiFeSnNzoVm6s32KoXAMOOW1MkEOrfzkfVEVo70u0tDP8YICwI +uIZhXAHxizW5pLY7IdTXgZ8AEQEAAYkCNgQYAQoAIBYhBHkVbgNRr4YE3psYawmn +nh4VoEaUBQJgIyPLAhsMAAoJEAmnnh4VoEaUOQwP/3mj+f/bls2MHeK7oDKLv8h9 +v+cXaPSkpt92tc565ajPmUut8Me7xaxyFRY53h7q1QzWo2B+Mo0WXst5YlroKMPk +MUHV1LAYAj1tlZYA7vYLx0cOgh6QksgvxhxtN3KINLajqaYb//0yoaA0yRttLI1q +l1bKZQuN8DtI9OHxjL6j/i/MLeoni8ZFxPSjG4zlxvNjGBa4eIqZkSlu98nw+j4m +7e4oBZa7HHqf4ttO2gjIyA9Hqg1iJ/JwuvIObvFkU+yhsMQ3c6uuDGmMgYv5E3S4 +/4UIOtEz6G4NtIunCsuPNTpu3RpmKdcZ/Asqvflz8S+erV8cS8Pb7R36dE+nkWfv +psI7kQJSrFivxtQ3a5sEUr+ed1/rV6rvGtqai3Wvt/fC1UU/UHE76S720KauZn81 +mM/6nGv6A+cDlCBRBwI51Q1Z70ZJAUi0qRnZ72J2Am9Pb/tlHtcwQaQbR+ja86TI +Uk3ckEcTlqHAInkmUCopxSjqZS0bj256DJMh9CWjymbtZhUXDGik+dfCJMldekD0 +90VdK9TfOHgqAUkWWk23En5VLKUqdfXWj7PlA1X3nMa4hjM2zX5mpyNP8sVqUoo8 +VAVSCxUImjFVVz3JA8V6ep3hWaeJ/vbiaoFt86nrLearqIQ7+jDXPbdA1Su/87Ld +OGftXcgLz7E4WnOPNLnr +=++aH +-----END PGP PUBLIC KEY BLOCK----- + +pub 0AF99366B4D6DE14 +uid Aayush Atharva + +sub 7E67E9DC62B16D82 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mG8EYW5gtxMFK4EEACIDAwQurNDnfSVd8z4gnSDrubm80mw8pzQZ4VmAvyd0wFF6 +O7mo/4WT44qATfIFJ/+P4P9r6Wm97ptEv+VrlThyrPy4EQ10jiw8m3tGNlXySNTe +kYVAT53LWXUiZfPgo3cViXS0J0FheXVzaCBBdGhhcnZhIDxhYXl1c2hAc2hpZWxk +YmxhemUuY29tPoi2BBMTCQA+FiEEW1GHHqORBXPc2DobCvmTZrTW3hQFAmFuYLcC +GwMFCQWjmoAFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AACgkQCvmTZrTW3hT0mQF/ +SqZcqQ2ZA2mJbABvGfVLChG5na+gGKPHDeLZQCGh9AWD8HrF64qb8v1zD4D0zdkR +AYCuYHM5IB9aHsIyxPsJyzcShf7g5CDiDlEOlYo9cYB2CkIyE6H55vGF1ABlzGbN +lZe4cwRhbmC3EgUrgQQAIgMDBCd+J4LMgZVVArwKsKDHaEfQdNhw9RU1/IUzlC5l +mYw99ddsFqNY8hZa9uYC5+L6vx0zkV1uyyVWkC8VQiEXCZUBgzAh2aRwGsILf/3M +qA7nAf1MJ3+a8xEFRvQkiEhEzAMBCQiIngQYEwkAJhYhBFtRhx6jkQVz3Ng6Gwr5 +k2a01t4UBQJhbmC3AhsMBQkFo5qAAAoJEAr5k2a01t4UaVUBgL2w8Bm8iE6d3D66 +l5UJF0gGuZED1CEgMeScEnQbk9cTXj+WA7BKEJwuSXxUR6YeNgF8D0fUTf9wvR5y +5Qls0xzhLaViqHWgn6R9OvBN5BcxOX5YGzR58XM3E/v/gvhdRaVa +=BpiP +-----END PGP PUBLIC KEY BLOCK----- + +pub 0E91C2DE43B72BB1 +uid Peter Palaga +uid Peter Palaga +uid Peter Palaga + +sub 83552A552A0D431C +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +MNW5Qc4ZDKq+ywOElvONMnX4oaQ1 +=Z4Zj +-----END PGP PUBLIC KEY BLOCK----- + +pub 148B1DA88010D4FA +uid Envoy Release Bot + +sub 3685876D55DF89EC +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBGDoiSoBCADNInU5Cw4ZR13r0MVmPDcRAyhd9Z9UeV+SxgFWk7MXjhKIfXlD +VkyCrlSLx8q4vob2BmXuhVeZcoWLitLR7fSW9Dq9UABDw4X2Q+67SZcW02L01+jW +OtzktCFT88KfHXAaSNoc7qGVX3RHOmX1grGUgiPwaSxQPp6OT7Ni7S3ldvGNB/8/ +MUS29jnYzPQYGY0HVPuB8RwP+dkaZ2rBnXos9Vvfz9gIMXUjVckZQLgmedIBy7D3 +rbGlFym68+O8mUhZ2zJvl5SZyumdPjLmAPabaxbOZ7Cnt1h3OROqvKkCJljofBOB +rUsyZoAtQyR2InakDLvxxzj5D49OO6q7UU/lABEBAAG0KUVudm95IFJlbGVhc2Ug +Qm90IDxub3JlcGx5QGVudm95cHJveHkuaW8+iQFSBBMBCAA8FiEE22I6HdxxEDpX +WC9fFIsdqIAQ1PoFAmDoiSoCGwMFCwkIBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheA +AAoJEBSLHaiAENT6ZYsH/2qNZcs4Urxttiz50tdQMl/lFdB72F8kPdEkcUO+IkDa +VSSIQUzv9yU8T3PfUNZ0hMqfnIFjDID1Kn2uRyiBl3yao4vsgb7Zm0mmBw3TeCc1 +B8JELhf2wFmrQOHneq0RLhLa2FxQ2pbBgTJjA2Aj14pxG0qDL38TMPZlh+4MI0/b +48WZSgYDghShj05tDO7oyaS13SkqIBdhg7gL4GhFDwGW/VaSHHCx1yEvJyvJfUyj +ZY6l1LoJgM/ZqpWj9eJbJLn46AftjieU+B2GwKBGZXb4d/5zaHEpjjKPasxqV+RZ +uIkudJ24GCmPHPxd0mUrX8/OHZX83kkurqYF5wwDKdu5AQ0EYOiJKgEIANgUz2PL +cNZKxHH8beANc3+orfZ/8EzrO5FhT/boq1QbgSZ+pFz5Akxm4KtOvjuhKUIB/duX +iR6dcWaQv2jbQ9gjQe/3/dU+lD69pwiydibDFNFFMpLJz704O6JeRFohicPnoCdY +G5JZcIL38XSXtAzOcOWnvjYukbCP59Hfyumkb+trjESuI0EcuFDpckLvEXtMRZnT +wENFN5gFOQi9bBVLoFJXA25O4bdlYzP+uCqPEpOjg5Rn521YU+V1jmFf6LwOh1Km +4bvLNJMet09CP1D+0YUNmAQNFLqo4FwzCuQPcNHhw4ZzBXL6jUPJS5rubLuiP3Ru +EMKZ7zT1QsXQnHkAEQEAAYkBNgQYAQgAIBYhBNtiOh3ccRA6V1gvXxSLHaiAENT6 +BQJg6IkqAhsMAAoJEBSLHaiAENT6MokH/19ZprrMoMut8SSTMAktCh8QOs0kZNNz +PCKvzfH3jtSGDFr4olhBNbD0c4FdhCBAJcrrC9cNp/+U+xvcoY7jm01kX5jzUTdn +qQjZIU4WO5hsY60FrTtBGDdO6EAcHdn6pUXasw1hFbAZT/+/FxFeYdWg33uq5xDB +9t+1mjFzskdp/aaYSfcvfa2vg0Jt7ria2I+OQ84G1TVGViF+CA2NIqDts6DVpT1W +x2JwT1liwiqshLK2gKQT7Vtt+iKNWL6yb4z9RM5ISBN94M19vrk96bnAF6Ll6QLg +OfRxgLFDpILHhENxqjusBp6QRK5umAutH4BQtZd0H0883oWeVpslGh0= +=EjaE +-----END PGP PUBLIC KEY BLOCK----- + +pub 15C71C0A4E0B8EDD +uid Matthias Bl?sing + +sub 891E4C2D471515FE +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +or2DcqTyOw3cjy0= +=nEkq +-----END PGP PUBLIC KEY BLOCK----- + +pub 1939A2520BAB1D90 +sub D068F0D7B6A63980 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFHNxM8BCADYmt+HKkEwu89KQbwV7XIbgwZSfWc7y1HvA2YJpJRXJQsU/Pzv +BhsHnm9ZIScBLIlgE5OUnMNz8ktPDdsFg3j/L0HREXOAqkOFxWx2kANsRo2HmkM3 +67RAu42fJqJcjD2Rs37wMxlSRRGQ+/bp+Bw2HNO1pw7GwrSgmZwzwT4+1pE/TvXQ +Wl+Nhdf3swLyBaSuWHJZT3+JOR0kEGSQuurR+57r6fKDmouWSwAKn1z97JelHuXj +HKZeueCkQvX7dayPP4a1zpoXPcoZhYekFarLWJl411EA3aHIIV8whknsZx/lGGC5 +yF9AVIzHHnhqFC/Fr+GJbwa9oMFXj0pY06ZNABEBAAG5AQ0EUc3EzwEIAK6rZ7kR +p3uj0CrhvuTnLHU7nEs+KvoUZKLyhcIys76sJQ7cnhEygcG7tng/EtK8bI6skLwU +aF4fnPliDj/yIigY08p7TvFL/6HL4cLrIXR9uZe5IdvBKYhy23Ie2JXdLk6zH6jq +5+vBE0IA7ljJUQj0PgiIL92kB73Bn6dPayvtApzctajXvGajYNfOLTYc3n1L/Kqa +y+/UwjB5MJVlmFtZ1a/EAxyb5yHld/s3RKEaeEIpjaoPSJwXKOWNAcLdtgcPcsyf +rV4bkgjx7ABzPvf82gYucthyIx4zPZ29hZfktSV61h7cbJL5HGrk39UcSgfstHbf +BQiTY/1kVN9tuHkAEQEAAYkBHwQYAQIACQUCUc3EzwIbDAAKCRAZOaJSC6sdkEFj +CADEzcJtTbykHeSPGykEtUnApHYM8oZixHWFvDdjkGhePMTvBRJpByS/hdS4Mnb2 +AfBoV696eCFAtm+D6iuOA1OYgc1CnGhilxRVpzjgbD0S6bG0tyiKz1dk0HKkGh36 +wumST1bU2qdA/UN0CoRIA9Csb+mg+h8c+y3QixjbpTSS4shhXpzfj8QsZmPn38S1 +amaSTEv8zqF8pArPU93184TQfJBPrjAShTEitAmX3FQlSL5v5sZms7T5S/kOHkcH +m4zNlwXRJ9avqb8kq2rcDJX4sCe7PjoMX3y2mTk2YezY4LrYbhEeOGcMNg7XOXlh +tBBJ4OuqQtXo65LcT7dK1Uyb +=dJvi +-----END PGP PUBLIC KEY BLOCK----- + +pub 1D5903AF4582BCF4 +uid Sam Gammon + +sub 831EE9CA8C4D7525 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=6CfE +-----END PGP PUBLIC KEY BLOCK----- + +pub 1DB198F93525EC1A +uid SonarSource S.A. + +sub 2161D72E7DCD4258 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +94lprE3g +=kOCz +-----END PGP PUBLIC KEY BLOCK----- + +pub 1F7A8F87B9D8F501 +uid Download + +sub 7D1BE4480B61E2A7 +sub C2148900BCD3C2AF +sub CFF46EE3C17E53E9 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=7vqG +-----END PGP PUBLIC KEY BLOCK----- + +pub 22E44AC0622B91C3 +uid Cedric Beust + +sub BFE9E301CD277BAF +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFpqN94BCACaAb8Afmng1QPu5k5uzLoA1FJnF6Wf31ZU1FzDxHFHLNUYSWN2 +Bg6k95QH5ruZ+Z/QOJSoIB+b3htDklyxd8m+G2KsMIqnQs0BaTN18hb3PFyMIknM +YWkkTPF3nVV9APk73AebTAcd2V1GB7xOP+L3T7tyUcB9/7bDeM3od6qPksdVGNMA +0S32U8SNhe4jw8uXKdFL6PSxgyg9yeu0V7DyR92V9jF+ZicZWxaLeKpf/Vn3MBX8 +JdePR9SCJc8CNj0n/tsvg/aSmGZ3OMZTUYYvrtfgpXUw0WVkyma+T0ANcdDN91uZ +P8lV3o+Ic8f15xwsTePDhMhmtOapIz/85ukFABEBAAG0H0NlZHJpYyBCZXVzdCA8 +Y2VkcmljQGJldXN0LmNvbT6JAU4EEwEIADgWIQTHC4RPAC8h9tK5yHUi5ErAYiuR +wwUCWmo33gIbAwULCQgHAgYVCAkKCwIEFgIDAQIeAQIXgAAKCRAi5ErAYiuRw5Md +B/9ajI8dvk0oUaenxcPCchWQ6pwA2B5w9yQVWQBoJbxMI+pvEqpS6ur7PI+bJ0or +rCyNLiNj/okFuU6yeh9g8eeKIR3984HtBAkGo59TtH9kTg3HDZF2ys5j+tdtcb3r +KrGafc41llryb4XTGiLjcCS4n6q1EmZIJjCwvt1sIO1fo3cBim/1kjhjMgXSpiYz +yB+ve1NaG+f//nfallAnryxFHVfk2/N373cNZTD9bV2FRZs9SSO2mO9BoyG8deSF +x89lwLxK7MeoSH6pAioMMRGoZhNz2Thb9voUjrqS3P3+auwPt//JbhmCR3Zg+upu +n6Aw5q67aj4V959Qra3ZpD/TuQENBFpqN94BCADAfXydE1VYais6o/4JpVQwk9JL +3r2hkgwfN68B2rRvw9ofXZoqaBCFgbw+Nvz15GLmONoiDvP4rb1TsaT2Ti/hTUb3 +ov2W1RJ6OFRmiSkOuOjZHlVslYF2fPlZEXWdJ9PWvoKM/3taaICXy/AVSm1NBera +1l2MsJ1ePr6dpMMDBjUU15rzWm3WOqwBNE34whhOjvU9vDl8u4h1xV96E5B47ZbV +B1pR6y3vSYQgwj6BYkp3Uz2Mg3GQ/nBFoNuwV/F7LiUb5W68wOe8Q98NuREh1ico +/OM+iudjP2LO0vz2sGe6X5UZGwCfbJnlq/fqoPhiyW6HPb1+JHU08kKeY5BJABEB +AAGJATYEGAEIACAWIQTHC4RPAC8h9tK5yHUi5ErAYiuRwwUCWmo33gIbDAAKCRAi +5ErAYiuRw+XKB/0ToXO2daY6/ZlkfK69O8jRBzbhn90/2dePM/qLy5Fe3UaG2sge +uFYbTMGbRPvCpn9E5bceczdhkJKqEj5dPHVhUU6+jeyH/DdDgrcP12SQR2vHg9hR +e0pzVouiMDX4QnUbW09CwpmhymlIp3pXb5jNa4iNxjYIBmuHDEmMP+uW5Ue+e2lg +IAFWRFovZ9C1DCg0YYyGktc47cakq3ENKNU2LFvRcbgoyfjM0EprSUColUUNN3yy +UNc+I+bvGL5swhKqdnRHagbg7kelsn/05oDFGPQHi0/VOlWU7wBh+vUw6lb3Zi7C +obUInUhW3rPu5LubTOtT+oIH7+RSUIEJO1hE +=j2aw +-----END PGP PUBLIC KEY BLOCK----- + +pub 29579F18FA8FD93B +uid Tom Ball + +sub 9DF7F2349731D55B +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFYFiMABCADYpblWssqGxbjTwsyroPh48BwdSKl59zbFKoEHDw87NeWq7fik +h95RkbdeWsQSvduXWgQZsUDq9cLOkuS/ChAMkAAd3MPp1NMdFmAqS7BX5wU5s5I7 +XD+/p51SWLMvgrLxoenmoE04EuQqQiXd4DbU+HGPseiNx+mN0cxPssaZMBBsmi2r +RjwcQrFTaC1iffzh8FKLQvoTDzci//b5bWcxCLbsY9dYcUaDCbBAkL8HzyZUKNE9 +XwXh/Rq8wDakI/VEg/905a9c4xq6Rss6Yn5E4V2SAo2+B3hYmvHFsefaM9kkqvXk +MQ6zjx83LAtzavOzmthjhhPIgCAfoQ5Q5oDzABEBAAG0HVRvbSBCYWxsIDx0YmFs +bDcyNEBnbWFpbC5jb20+iQE4BBMBAgAiBQJWBYjAAhsDBgsJCAcDAgYVCAIJCgsE +FgIDAQIeAQIXgAAKCRApV58Y+o/ZO/3UB/9W+AOZCBUoVTSyu5BDjH9Xm5vY/QmW +jl1/dEcjZ1bFEF242SP0sUC/XcOsaJp/KpvkB9pTkxJ1BGg8YEr3vJrjrD2LLEih +4nZ/lJnfyjx4Sn70GFSNhftuDJbqLA9U/Z6M1tRaZTGk+/PkvCyyyjD/U/pNohxd +r08nojPS1UL2LpI4nA8VPZt9bpOoYaehkyVjD/ChXTSi41Eet04ze7YoyEGMIJl+ +ZcAlkhSQrNNtSbrZ7+Xxl7mv44Hn0F8dlc1i5WpNCqYfWnVSLLBZGi3HxRqpF2HR +VIZuXHWaP8JxHNfwZcOMokAhRlEVckl0qqBnjNl7zuT6xJBiYwgzu64WuQENBFYF +iMABCACdvSlhh2hLe4F1fBMHiZK2HdNp8I3NS8o1E9k0cBM2fTfalIlan6ZIJ2Z+ +JqRwk6MRaKpB2or/0A34+3KfI22SWtsI2lJA2x9qWaiwRidLFFAWdSjTzNroYVkc +wJ5hf2yKN/mH5YRiDSzaqHr5GKKPXHXpT94XqXn+Pj1Lj5ipnqPOerpJ5mlkPPSz +8C5Ve6I+sIqjGKdtrB6kxgIF3kf30izCu3dL0j5vuey2XneRAqETHqmBVMEjFeuE +Y0zJCj7LxQRr0YaaSfrlkIjIxRbhatgxXjQVbbnh0nYAh8dUz/YvsfuyZmLJhRZk +cJxHW8Tt0xxV2oBUBq+IpmvqDoy3ABEBAAGJAR8EGAECAAkFAlYFiMACGwwACgkQ +KVefGPqP2TvmWQgAi9Q5WlckTYzccwvt9F+sRspD8AncDERdwkY6HiInLLNqQSUW +iHU2BaYN2wmSiSeSgwurPtN85nd3XZyhKtXxH0XKC2fTzQWBdyBEh5zT5UevES9n +IzIKurHoG4TsWr9d2XDiDp8q1s4G1cNGYDfD97wpZRbYn8L7hedL07ISEWNdRvBp +brvhme7X0pD8MBKPqUXfLHHaJetmlFKOmu9awzjINlz1C89JdocSln3lLJLE+RGN +N7HmXdwmKjmnC0fo2h8jnOTYekdTM3Ec+uWE8M1WyqZV7WYzoITIfq0uHgyIxCpa +OOejOLKShQW031G/kEvZApAVPHLFM8BdJ5P6Dw== +=RyTv +-----END PGP PUBLIC KEY BLOCK----- + +pub 2A7E27C7D8A43411 +sub 2808F526AB7F971D +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQINBFlub8kBEAC1cTFiuMkpUqWY/40xZF0HW+jMUWWZ7Qi4zd09yEI9ymBPfO/y +Ym19/C2uvalC4u/oyEjBJujgt92TMtYSSQQ/pw/UHHw0oc1cCDFiIWRRHfgZ3vRP +mrjKl9kHN7Xqt6V/JIZRXmcFwd36Gn/1js8kRe54Jxqs/Xp6Sbc1scYRGnk03cAh +1+m/j/ADv+X8HnQ41mgrRXjra8BTOJyOw2kJ3yP2L3Ri2eDx2ZubxQGCFAjummu8 +9x8XNZwbxrIwVTw295E7pPsfV++fSMSotFcmxYCdz5Lfl/qqr9Mvm/40dhajHMjw +wQaf/PsUQk1vXJVPIHRZ91/S1RI9r+nV8+wteoJbVgl5+vAVF9/qPcDST+2cq7if +8zP7dyFnMfTWlz7SNG3fURKSC/Ku3SyP21KOsVj9S54XrVk9pCaC7cdNihh5M/Fr +QvCtj6Vk4RlGVWGKJ5fgSOipxjSDqU1LRS8Ye47BWw7iSsRzO5Q0ZlRtYrADS7+I +L38yn1ZhsijWNLbC12U7LbQQ+8JfTvcOSnfBsi//WVjlZrwrpMcINp7/xk0rs+yx +I+SO3NLnR+WVa4VnqcJeDWp8x7t/3KLpCLLI5CK8zxKcQSv7lKAGjeFxoFj4dnIY +R2FzMpbawVda7Sehema06F+H2yqzItqGEtk1vcrrGRkLxRgA+A1wCEbxOQARAQAB +uQINBFlub8kBEADXWSn4kkf+XEWieokC+U3PnAyTP+TmYbUag7XSi34rZf0xcTya +9po5seEgwXeDSMEVtATZBvXwOTAoJ8P2MA//Sx7BIRe1ZN0kQQZLcjSUtbgypQ5z +Jjr1rOoifiOu1NsHWCWhnlguVt5fIdX1fsJ2lIs0Fhk7ML59St+SyFY+63MOMAj0 +naHuWIMfdwPbc1sC3F2xBlIKYxpNIB//mn4FKWAdjS97sgJwCeTeQlAmrDnPLYLL +/CYKAlg8PDryT2rVaru+AYrNhTmBCtFr+jXTfN145bnf774rTp/gQdsscMTKGO/N +vsRE+SH2Me9c8XL1g8NWOeJpefet5H1A1BzeAvtSuxCCw+HyBEyu14ZdDahg8cUv +BIPChxEvTBWGVcWIli/Qz1zSkJhj9qzH7imVC2k5DLRr1cwBGCqb+hxi4wYA1UeB +n0Ax3QSaDN+ODbbGhnTWhix9wOb24tvugcCO6/Qz1ZqYYXgIJSfmAtjez2nIjiJL +G202Al6guvILQX3p//2LmBZNrJGopQaPXbSn4WsET6CvLWSgLkNRAWJg0q6v2NnX +YzyPAM3d7ATHdc1jFjmS3J7jjeUxt4GxZ0WmJGVfHpfrBkb++leQs7V/YU7vQEdL +UiK8MQ+/ikA254g8Wkhx2prfgUUQ5AVmztriJia9+kXYyqrDy9u6NGbahQARAQAB +iQIlBBgBCAAPBQJZbm/JAhsMBQkB4TOAAAoJECp+J8fYpDQRLkAP/RdZqXndHvWp +cjC2AWceuVE4JY3bEQVD/O+N5YxnktPBPkAZyn0Kq1Ct32z3a+4sGqrVkVwmLoSR +WSjHV8TDq+helh4G6lCtNGrEPibafQrICGCOZBam3fsMpa/q743XVvkFFrpdTHPH +OTOIn0c63dQExvxtn5xzKOD9gA3MVAo+tObkwZGias6dsvxBcsaX+DF9iLwWzayQ +VYfz0rSONtaOf0V2vWY77idNRRYHQKhey3NAVWB6zZ42s6CJr5Fe8RJRca6A1nxb +CK15sKlauNPsVX5vh4TXQMn3lg4WQlmhSwemL02N2VMaNGgv4DJ8GFtvfqmyqFr9 +0IP8HhZcE9FBmwQQdV6LLKxkL3gQgWKRl+vR9h38gdBBcZZIFsfwthakG7j5jlIu +km+2L5QAEULpk+Brp3slz6+kbhxMoWlARqiQlLLKJrtBdDxC3W3VSWj18BOPXk34 +DYHcxREWSRqJM1znFwEwF5wpym3zuxe1J+Izsl4j7OTErkILD3OnhLl5a7SwALrk +cWwJ3FLDOvLkkKcmgRWnDADPSWY0+GH2496VCtv6W9DAXO2WNEaHxW7BZpllIyOy +Z2qdxkvv63o9cNK3fIxa2KjJuE3H8GnCG8H/2MJVMXWXcY/eRg7+5bsERZKYJsD0 +r4jw51Ro+FEIprwBXA0fa74DmkYiNCgF +=FKH0 +-----END PGP PUBLIC KEY BLOCK----- + +pub 36D4E9618F3ADAB5 +sub C4935FA8AC763C70 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGNBGGiftwBDAC94Yhhh/5yO8jYFkg01MPnooXKZEPwxAbAg9wn5iM0tHxhEpkU +zJVYZ+JYq013+Ldp8Of7A/d6hKTtZ0xwSeY7S/WFykIk6tc0P5j0sfFS3pGPDk+W +D3DwUa+8m0PriF7iA57vCOE51znO/IUIA3PG2YAK6jv2/i8MDXOOq3qB7VrbvKGB +kIPubp5PbjvP+LFhLuUReU9m2y/3q9lNFXdd9kE2iScqGmu3FDhRJxBK/WQ2kqiv +sJZjAYeHEVNcc88Ah6vXI73uYrvWVGCErzswYy9UrxCAQ/x2OxUdLw7NTHwjZSYC +JvH5JPPTlDxMgfwTIsmaECtw4QgiVmvDp+RVa9zyrdI++RNr0InsXv9gWMv3p3yf +TF20ZL8znFYVUi6XkeQhZjT4fHwDqDVnxhSAFe3E0cwHFJBQe2EFLljwNy6VYnio +wBr7HrAxczRRqlUy4a3bH5KwiNwwvxgqfdMj9KTVpP9t98/TA36bIohwGFRWB7W4 +i395S90NsTbCh/cAEQEAAbkBjQRhon7cAQwAtPmKcM1/z8sMJnt4sHe3ndXsOdSq +TJbRkAcdyDO1F4qgj5z9wkrlVVKGuVtmJS3qmR901Q+oH+JqM6UeGqhNig4IQvME +iQjjelvKXMX9PPVzlP+ga5Y1/2mnUmgmYXK406CU7aaQ3hs7++XDonnQUt5nWF9d +XT+xK/SDLYMk5i1TNqPVFZBPm44HpIjKGNJXD7Vv/5z62+hKswpLXgYt8Rz95ByG +ncjQ1Lo2M1T1Y/EuwlRoc9RTdyABavSQWVLKIz6kKM4LejajjRvLnybMUug0CJl5 +mni4cHXx9t0pMlG5DE2O3mZLwTgWcJ8cu2CtPxA9iLfVvFAThxk3ZitkEhChBtG9 +/V8D4DiTIht6bd49xkHP5pxtB/fuo9lNb0axSBaOAeant3KA6F6vki+chnGhOFqV +1KJHcxYG7VsG1hYhy5IbZsg4GdcXfTwwF1/mq8kvHfyTkBy6HMDGwpr0ATNnrxO7 +tJTiVqDuxfviGQUjqJIQDns6fM9BI4OfpXyjABEBAAGJAbYEGAEIACAWIQRH62g2 +JF0tQOid+0E21OlhjzratQUCYaJ+3AIbDAAKCRA21OlhjzratRBcDACCfhsaCFvM +JTls5lT/dcTqSCYJYZyDj95DlTiaRNkXnAGrTyE45PnmJLv6FFZzSZdu/eLE8ls2 +MY/KWqnZYYV2Mct/pwDDLSjdAN/NSRe9HeAh2OS1kNeN2SIcoL55gEodKBNSMisY +9N3ylLMxHZPa5LNBo+j9wftEaVi2fTX8LDJFQvUOZ3f7cz3f6u42FeHUqaLm2alH +QSkfTB3yIu8Hmo2EXHh4UfwTmS55OBGLQ91d8neu7PcimqCeadeHW+qY5g5hr5NN +LxMA+n+vwPGcQNxg0lH2XBdlFBbAELEGxMcKbW51QL2h+EdwGzT/nK3Iia/qm3N5 +0Z12j/hhzohlf7TQjhzB43Wbxef94JbKacvng8t/hG3+n8UASQzizCSn/oMkXQom +XdQe5JFgJCroU2CfrdFmZfbkkq9mAi80BLUEAGNTUQrg/W39VX1/klGiXiWtpU8g +q/tSGRQHXTwG53qejlUtKI315ZizOhJiniSDx4fZaK2zB9RlZkrnd1Y= +=KPJF +-----END PGP PUBLIC KEY BLOCK----- + +pub 379CE192D401AB61 +uid Bintray (by JFrog) + +sub 0CFE993CDBE1D0A2 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=7Wyn +-----END PGP PUBLIC KEY BLOCK----- + +pub 37ECFC571637667C +uid Eclipse Project for Common Annotations + +sub 0E325BECB6962A24 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +ziv8Tzf3xLdNBaaURa2e +=klh9 +-----END PGP PUBLIC KEY BLOCK----- + +pub 3AD93C3C677A106E +uid Carl Mastrangelo + +sub 9B2A1B698A113AAD +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +U/UZPX6m9g== +=XXe6 +-----END PGP PUBLIC KEY BLOCK----- + +pub 3D12CA2AC19F3181 +uid Tatu Saloranta (cowtowncoder) + +sub 575D6C921D84AC76 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=hALf +-----END PGP PUBLIC KEY BLOCK----- + +pub 3FAAD2CD5ECBB314 +uid Rob Tompkins + +sub 3260CB2DEF74135B +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +lF+5G+lrwILgoMWRtTc1vbp0S9Y/P6OkLcGdUg== +=VUSH +-----END PGP PUBLIC KEY BLOCK----- + +pub 43203BE58F49479D +uid Viktor Klang + +sub 1364C5E2DF3E99C5 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +4g== +=dPSa +-----END PGP PUBLIC KEY BLOCK----- + +pub 461A804F2609FD89 +uid Stanley Shyiko + +sub 8067ECAA8D58321C +sub 750F9A735EECF640 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=wpe3 +-----END PGP PUBLIC KEY BLOCK----- + +pub 476634A4694E716A +uid Simon Mittermueller (none) + +sub 4CE6E05D128BCFAD +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFE0soEBCADAy/iIRT/lpb+vfDjWs/k1XQNU3mzXoMm1mmS/Z8VOc0jF7sVB +A5z2pC6u2OmEr1oJkhWefX+mU//7kXs6VvUCReE4uheGBlisg/ELEXkTm342TcwS +K+tR/NMk5h1DwxeGR2qc0+zhFcrITiYqCpdaggRVx92syhuYWrG2DtRI3eEz+fys +2WLhAd/AqBTR0ENDZssp5S6tEBcLvU/jAvKv33/+ydg+1Bsw37CqCOO0bR388+ow +uSXSARDJaesnBpUcXT9pbog3Wm9pSzJ2fX1FyFaf3rqIIYEqGk1rEND+AkT2CB08 +BykABpDx0mgR6/pAgQVywCatPuc7wneiZY+LABEBAAG0OlNpbW9uIE1pdHRlcm11 +ZWxsZXIgKG5vbmUpIDxzaW1vbi5taXR0ZXJtdWVsbGVyQGdtYWlsLmNvbT6JATgE +EwECACIFAlE0soECGwMGCwkIBwMCBhUIAgkKCwQWAgMBAh4BAheAAAoJEEdmNKRp +TnFqfr8H/1DXbZ4VzAqqIBhMUWOIvF220gZ6NAxgIP4IAzfuLYKso1pfogbuPzS4 +IzbTZIZv0TXsK7zEzxZY4Oxx5cQaOfRiPOBvkeEC1T8Pf8l9GDQ8ppy0aHPNLgV+ +nloylBUHWuKpTMUHKu3MpwHfwMFZ9ZFsUmgcQ9oYkWcvprH2uOachsuA4BSxXJNe +OGU3aBIG1CR7lGENmkjwZowXhxM7QuYZ7qIR6oFxQCOj9jcV61AQhj5LuKNOJLfx +fAICIeUD8mJP3NcblVNp/Nj656naiLWBsK1sfjGzvLkeTKnFYFMpJqEuLTv7VTx1 +fGJnaq2+2UznsLGgWcMVPg68ZOW5V6i5AQ0EUTSygQEIANTGYOD4HupAmugS69tx +MTAW4GvRQ0s8Li/r/QQQUWPpjo3IkJDA0+kPCe2JRamNJJ2plzndeGUpQIZn+HJS +N8fGRjZG56HG6l0BJmQRFHD/6CzNOOKK6z+8e306DAwQPqDdDpUgpBmbPHZDhCs7 +tvrOhrUesfLQla15MM7n1DEtII9y+AsMGfwrZCd2PeigiRC+/NH/lYObLUPc+NL6 +GrC1ZHrpGoOR+9GQ6voVNY5EIxVlNgoVBxn3ufcFvvghmZe0WyudBHK9ByWeioBI +tHQW5n7eGpljcCUbTpsJmErhjH6KBKSuxPQsyV4TkQMqcsymGW0jhdHXc1/tStF3 +L0kAEQEAAYkBHwQYAQIACQUCUTSygQIbDAAKCRBHZjSkaU5xamOiB/9r943gZZy9 +FJv/NGPnNxCvI3ZusQfntgRfVyIFZLIUeaYDab6RqKTD8ZRgyfO2rmO73DiQ2bnt +zmSPHeAlpKAIhTXfty0g5UICLjr27KocLNt234BKii6go+CDo2+lLUPUAe3cJPFq +ZrtJ3pYLFwS7O43wwhRaO9A7L1uyruoCqql65B6CJcymMEsDnCizRVEAsE2lxenu +fxcM8JIaQlczXTsHYf23vnmLjlXm5HvEAfXE0s7iHo9BMlSLxHWWEqeyrbwMdnn/ +gT8lHGw+SHO173THvhtGuKGkrglD2CA9G5d1ZWgAz3il0fLdBenLH6t1m0x3+P6h +4sUJ04LlldPb +=GdCO +-----END PGP PUBLIC KEY BLOCK----- + +pub 4D8159D6A1159B69 +uid Henri Z. Sweers (Zac Sweers. For Bintray/Maven signings.) + +sub A568CCD291175902 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFUpCooBCACj6t0qOEGqMpX3puhk5W1TXZ1ewSXPS1yaoiFD2rysxjVWmXxG +wvon31ed6PaZqtv+CUCIjbCjJN50dQF6g1I4FLvDcpF8LuLGriYtFW43lJ/GW//G +Ou2fZc0tvNGeUjRikgP5byrIVU9n/9AfOizi/JrN+fIbY4NfZ5ZbNWiCX5B5XjTU +l3GylTXVe5HnoaNIvqGCr+fhe2sqsYi20tZv/JvKMsX8NtHaJ2h8Rf3krbWuvzfd +kw138p56Bn+6VdSntHDqhw7de50lN/dTxgY4feTsDCPheST3mwAcRCI9Zoz1ercO +vrRgq0DMHno4B+C1F+78cwlpIsHcNRlJzQnPABEBAAG0UEhlbnJpIFouIFN3ZWVy +cyAoWmFjIFN3ZWVycy4gRm9yIEJpbnRyYXkvTWF2ZW4gc2lnbmluZ3MuKSA8cGFu +ZGFub21pY0BnbWFpbC5jb20+iQE4BBMBAgAiBQJVKQqKAhsDBgsJCAcDAgYVCAIJ +CgsEFgIDAQIeAQIXgAAKCRBNgVnWoRWbadXKB/wPAksQ5v+sucU6TLZb/jieOYxw +meI2P2MezhdWH+Nq0hSPYJASaXHsVRkJSXrugEiaJzlW9cdlSTXfvtx5eurpLU25 +J7eFVFqYy4Nqpvmwbm2T0LAgJw0GarV/IoiwtB/XgvesYB2BlgZUIWzacwqI6pZj +E6D1bwOI9AJOMJi+yLeYrJ9/ct6ealGzpYPjBHEVP4UGYfSXa+hysp3DeKPu0cFU +PeyjFzfXZQBtR8yuqrzu83W1PhYz/SX48LRStvo7lcou8yGKfM8AHIr2T33eAnE0 +/DyH0xqZfxqkHV6fbFL2zVqXPigsVlzR0wx1at/aiYF4FpByUNvsklhrWrS5uQEN +BFUpCooBCADP8er2+FKG3VRN+LtAM0bdxHMD9KtL7jpp34+aXEdEJbScn/PQVS7u +Y1sF43bxdLE4IoVZqLTd77W9ANiyoc+qXkeVyGgdsPHTfx5GO+R6QwOngiYy4e9j +YlI6E8XoHTmB6uMe+oWdt6RXfLm+h6B0aci8xmjjd7KFlJRi2vqng4nFiabh9E5S +aas0mcRtWvxcV9RG0K4bwoqyU+j76JxEwuMeGjlaRockJWqNhwpHji7a9rV1Uzlo +IGjOuQl5uD5jP5kRmc8HGVeRbD96ZL2Ecrdrktx5s5L5txg5ze/vEAwpToUO5eUG +/Z5TsPpCOnjqQj9frcJ0IlUZfK1splrLABEBAAGJAR8EGAECAAkFAlUpCooCGwwA +CgkQTYFZ1qEVm2nhjAf+OE25D2Q8AYIQB+9VGvbRMOA4xyh1g4HpHotR7EtxCHnM +IeII5DbvaNREdvYpHPyuBx6V6TijhFu6TRApiSTgwFRtM4HAOdMO3k9gn9mAy04s +2FLBWaUpe4siQZwGAnadGDVxFkHDhdjK8Bk78P49rfIJnfe1fwfuCHAW6zayumuf +hEctqkJbK52P4cNuf/la/z1QJDDMPdkc0Vp8yL9RStwtFu9k7OJv9Kw1UcGUNfQL +JUgwHOeKE8N9lJ6xGC7+M+fYERZtErr24JDilsjqzPSofXR9UOh1Urv7KWp2OsV7 +J/McPybng2Q5TK+hLQhgVhTEVQELoDZlpl287XmqrQ== +=+LRN +-----END PGP PUBLIC KEY BLOCK----- + +pub 55C7E5E701832382 +uid Andrey Somov (SnakeYAML) + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mI0EVdDLQQEEAJMtYCaTA56YsP5RzQzPvqVTaR2nZ27qRk36blHB9WmXK+NHpGeH +PHgq59mLPVueo2/M5k/fFrCe36jHePP31gYpFtueeYDfsofHwod0WhsHyC7JfG8d +jEnSczTCmOHRZ3ed9ef6SeWUozYCQAX/tAbpoCthe0lTDYhFhkzVCe/FABEBAAG0 +MUFuZHJleSBTb21vdiAoU25ha2VZQU1MKSA8cHVibGljLnNvbW92QGdtYWlsLmNv +bT6IvgQTAQIAKAUCVdDLQQIbAwUJCWYBgAYLCQgHAwIGFQgCCQoLBBYCAwECHgEC +F4AACgkQVcfl5wGDI4LjiQP/eMEcbkMet6nulUtE3rmRZjq1uSYTPirvtPF8Apwn +VH6a0FepOC0uqNnYLrZiOFR8xy4kq2r1cLkX8iS2AdZlFOHNxXMDSGnnbsATKBdZ +j6NKhQYS/cah2yV52Nnl8+Oox84lWEkYLCmuYB00HlRxytf+jSXxS3SnKpGz/bdG +BViI1QQTAQIAPwIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AWIQQSDW805ift +Oncuu/5Vx+XnAYMjggUCX1s72AUJDy4LFwAKCRBVx+XnAYMjgu5OA/0cqvbr6nQA +t1M9ltPd/hqQ7qbphYIAYuEm1mfwGwROVR0ao8zCATujct+prY4lwaxh4tQJGi57 +yPy3sjdVXAs7bXk7cejcCxXkQejGULm/RDINY5yqwoudvJypZFwYz8bG9DSX8DoO +jHk5ikmB4iJzu6E9yQcjOtEdXage933gDA== +=/cE1 +-----END PGP PUBLIC KEY BLOCK----- + +pub 571A5291E827E1C7 +uid Central Repository sync with maven.java.net (Used for signing artifacts that support syncing maven.java.net with the Central Repository) + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGiBE9iFawRBACJb4OMk3zqMDNvSJKYZ8fGYrPq7yCcf/ykKDkGb2dtPnAZGkSp +3mmNlTsU6s9ARn7BtkhIuM5TdbLs+z+okX62h3F0WW3h+CpfIXyKSgl7uWbhZ5G8 +RSCCRr7A8m6y83npkTVDW6m2oFN2cjFwPLm/vxg1gu5pO+NCwz5iBRHdewCg1idO +Gl6gBAZVNteCRMVnGnX4EhMD/RaYBO2j511h7gR+p+6BBeJTEIA1+tsi+GhTBkS9 +mUMGuD9Z8PyvwL7quGQyXJ/kTe3eB6iyDFn0oemB1w736FQe3vcIX6eePOEiDZs5 +1Uepv7bXI4wn1i3Z3kzynXNKcjCd5ZxAmML5VlQ0zWeE0W18reCjt1P5q5xxBFjw +0L8WA/9aPi4d5VPakzuDvxfKK29BogScTLn2C3fpEnqWsTfpoWSkNXkRsoB4jUU4 +oIqRFMTxwsjUmjVUPOG+YqoeAaVpj+RBpp+V+CqgfNWpnH4caxzODE9f+6RYRCGm +LSq/6OmgZg6t38M5XWVpvk7Ixygs6Vrd99VZyIQPJwSBM/pvA7SfQ2VudHJhbCBS +ZXBvc2l0b3J5IHN5bmMgd2l0aCBtYXZlbi5qYXZhLm5ldCAoVXNlZCBmb3Igc2ln +bmluZyBhcnRpZmFjdHMgdGhhdCBzdXBwb3J0IHN5bmNpbmcgbWF2ZW4uamF2YS5u +ZXQgd2l0aCB0aGUgQ2VudHJhbCBSZXBvc2l0b3J5KSA8Y2VudHJhbEBzb25hdHlw +ZS5jb20+iGAEExECACAFAk9iFawCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAK +CRBXGlKR6Cfhx0GuAJ497rs0V5ZsLuKaJw91EnPmwn5x/wCfbCh/AZ1+6AqvAaSl +84Y498fRoPE= +=oQxC +-----END PGP PUBLIC KEY BLOCK----- + +pub 5796E91EE6619C69 +sub 153E7A3C2B4E5118 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=IF9r +-----END PGP PUBLIC KEY BLOCK----- + +pub 586654072EAD6677 +uid Joel Orlina (Sonatype, Inc.) + +sub 2E74CACB6918A897 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGiBE1VSkkRBACkCgvt26sMi+0X+EOJDMqdK0Sziy06k47LJf1jOg4tTZ2T9QtP +OZ8fD+va/O5+q8Kna993jzcO5n0Nv+R/K3+MvUqSmdITshCIjBt3cC0n6FWndGyl +jY7rOmzdNnvSkMGE3V2fQ18stkJRleqk3EuWwv+EwpxcYeVfCO+UCJGz5wCgtqnZ +JYdRHcDkDYaIZ4eizpbV4d0D/3cgBdpcbSrwIGtft+lDxacaJrWpT5Jh5P0gLlYu ++6PFz8ZIC4+/aOSi4S4mgZxk8dBL8ZBqLqcW9rc//CYKNtPq33sdf9vxcusMIXvS +PBODjDpoOsTJwy51fgCEL14qnp0v14y9p7ejjN5+GipiNY/JHo9S9kTdVhMYqt6x +6a6MA/40vMejIbZ4q3Ia63jbHPi348fLDq3Gp8Wos7Sh2HnLC+pRdC46qX/5wL4t +Vzj78yW9FdH5yeeE6nQLOBWh7PnSfMt2wYHoarEnkkkycP7WLpRME7qsBYqkNUNa +2EQZSy8DnGiayYDij1YPNUHI9kpK6H/e3puhmgNkzrZj26T85LQzSm9lbCBPcmxp +bmEgKFNvbmF0eXBlLCBJbmMuKSA8am9ybGluYUBzb25hdHlwZS5jb20+iGAEExEC +ACAFAk1VSkkCGwMGCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRBYZlQHLq1md1Cy +AJ9Vwm/4tCSR2iaLU6fCV4lnJgDnrgCeIDEdpte6HmX4eIWPHHxULLLP4Zq5Ag0E +TVVKWRAIAOsb3rg3GoeIBQtJdgRUfULCVNEguSJMESQv9xnKgEGeQX9ItVfdMLrv +Lbf4ySyIJ1ShBR8k80Xk8M6C2XA+c14AVUrtPUHmseO53TY0n2VjZD5ms7TOY/cq ++DheTBLzlxNsK85q0jZXOK2+Sliv9aRBIl/83c1iS5kBM76fzLWZqsiuqQsLUvEv +oCmUI2WSzhJ3s4s3nCHHtq+sQkcaLap3FMH1IPozFFJWSlJSsIeE62AxR4XrfGs1 +y6YxA9AEhu/6QWA20T55loV9TT4geDLywxE68eu2rM867Bl2cfU6+tW4RW0Ssg2O +Ymv/+dNe1YErRgKm5JAjWRxp0Jzc47sAAwUIAOgOfDKe+6VLQrVYXwUZ84ipBGgp +/JwqajPzxa8YodPH0Cd8bfw236Qcd9R5MuyjNbi4M2RJ3pLlNGasICt2qloPNJqC +miTcVGXXeaK3haG7Du6bXo7eaJl+pMXRoz3JTrdTPLHOhPgN7EeWtkAv/QbbONps +nNcyiuvund1KX1JaoGj712xk7IrDO47eA7Vc+ply08owIlnjtO3XG0o4GbkZx7Eg +iaG805jbRUz9Q4FHnIE3Ditmo4BrLsy6pG2kJyv0YkSM6pBSFpc/K85WDV4fEwPd +AS3hl0rlThFuxgSHPH1Z7OqNdDnbAKp8xEKnAmb/3hx147fU+VoFd3qcudeISQQY +EQIACQUCTVVKWQIbDAAKCRBYZlQHLq1md0BDAKCz+pK77m8VG8F4ZWyDthIjE4d/ +zACgsgdtDggyRGK8+BKm7HDnceh97sA= +=7XCx +-----END PGP PUBLIC KEY BLOCK----- + +pub 59A252FB1199D873 +sub 92BD2D0B5B21ABA2 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFUBG7QBCADRWXf0Fw05qRhM4cRnGKlOW1ecue1DCxHAtFwoqmAXyTCO+tI0 +MEW5SyXUkX6FsWLl6A2y+KgOs669ogzfQ0rnZMEt4HisRp8wpgk3GWR1/9aKYz/c +ymy2N3BP9cz2fJ9+3PpBccUPL+ydFKpcnEnIwiQK+p9JjEWzJBlrdUc/UEJ0R+n/ +5r/+0+BHiTEMvjAF6/SwyntpTWpu7iEzLv/pfdCuhFKa4yn+9Ciwe3wGtSiue+dh +tqKcd4YxED3oAswObBca3CC2HWWsUEH6EmfT1jUdfy1cq4X5x7AZ26oFYfG+odqW +W5dcB+13VkJtJRzQTO/2HKtITJYC65a1jKt3ABEBAAG5AQ0EVQEbtAEIANsILuU9 +cH/EIEL+OpwIacr/y3/6LG+ok8SKDHIlF6cSpusSsWM6L+RGcZgvCDR0S0EEid44 +yy8wFMvoYSlsXHLN4SqH/rpLIc4CD8DdCLWraKaRZrhtqzNWSsYxEgqo7n1xO6+c +sU17VJArnpkGPHoA7ooZlaGrc0y/rlkTXH++LKqh8niO9Dap46pLFrdgvuyKbq1B +6faAf2JMRyvqy2+fuwfVGTc7DEUUFtwGg7FniDF0zl+3rFG1ud9kH8UWz+GwCwFT +6qhVglgOmtJgw1CSYNeDsQvDB4YTJNnMneMSdM6CkEcRhLp2+lz90+wR0K/a9QBE +1NPubAaRB2uQR4UAEQEAAYkBHwQYAQIACQUCVQEbtAIbDAAKCRBZolL7EZnYc2uJ +CADHHB/Bmc48Ye1xl6T6nbNEiMCdmpIba+JNFnEWcueq4xk0xoXXUSpBnjLaWPQr +VZKHXdMxmmR3BjhtFvsLgeajypLUkVDlKMkdGQtsWXL0abr4cNoMDiXURxlbXgxZ +8+hIs/rKSWKturrCD2V4MXLsQV4xArh1ezkJFEDA3tRGzjjgzg5MwmrmL7H5Pcd6 +vV1Ke60BmvFYvvjRwT4Uw1OD0XluuPOaaiTibhPECc5zLxBz9+eRSsRbxccNEzPY +JS8Xl9+hIw7Y7Od184cOoexxdoI/K52kH7A5yfEj2kXCZm5tYylyKvgGpczWdZuo +V3u1xg+t7/QlghTMoJAA0H5G +=hS0U +-----END PGP PUBLIC KEY BLOCK----- + +pub 5F69AD087600B22C +uid Eric Bruneton + +sub 0440006D577EAE4B +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBE7JURcBCADO+9Dc4/JnB+wX+fq+Fr2zUGSPOT6/qjE5kXL4FEbJKsqDSAKG +VnbtRrsIUdmNIFQmz71bBDFhRBbrSrkz927k8eUPhYtxE2NmmWSuKgrjF4qviPQv +m/7SqGx378m/qw4EvpgGUB8EYif98LYdWp5vsU/zx0Ps9auqvetAzJaL9489oE0F +q8FVhve6BMfUUV7zOTCmJnf438YO68upjU0PVBdfFE6Qx4cgCeWbQGy2cooW5azN +iIenhuYU1qikmxMHq2xZzN4uSTWLGDpimPyz+Y1aTSYJ/bgn9gPStbI9sojWo9SS +5gvNK3XqJzMwxwFow86UcIE0vPD2T6ZlBAXRABEBAAG0IUVyaWMgQnJ1bmV0b24g +PGVicnVuZXRvbkBmcmVlLmZyPokBOAQTAQIAIgUCTslRFwIbAwYLCQgHAwIGFQgC +CQoLBBYCAwECHgECF4AACgkQX2mtCHYAsiwWdQf/ZDnKejrNUOREfAZQYoAmf29G +zPnQ2XVb6ZxoD2kg+b7SyzVL1lnpXw961Ayme9trxztb9KJcxJ6a+oSVIHWoiINS +zx1g+lXCsBRH3Lb5iJTAr2u8+Gyva9+PB60CBmmcsuOjuLBx21N0/E4KpBiwEoWw +5z8HGNVsa4jtRxB+RoQGiilBUIelsI17e3hQWgScIGJdLW5xErlC3WfgtUOL6q4J +mSk/A1R2jmWKOO+WBvGbnOr7mKZd+/h4ohzVVwyC1WrFeFJgEZK7bXPA77Iv/4u+ +al7RuVztBKjrXD0yPwknuxMgyN+Y5f/pqqKncNl0lOtiWayKSxdatBLmGifAgbkB +DQROyVEXAQgA2uNV77VI+ARj1d97b5cY3/er0Mcc8/Q9ctMY+5YpSYDOQF100QBd +OQ8q3IJsfhZeF/iMFlHIUikuSgatb/Ih4lk1+irnERPuV2MNoAw3Fvn3/vwl/Jy0 +ZsQCBSXO54U42TcOXSwNLkYOJaomDiiuo61Rxj7jqijpnydwoFvEi84v6q/Uota3 +MijGMbzU9QyTX8J9OKMeCSUq0uVuk4ezebjv/bwA/ax/qQRIrEHDOOB1LJ5JyLac +K4+h5J8tMkEmWxEQv7MNokRLgbaePqv+tdf1gee4f2fSE3EXKFxjTO2wjLPXCrHS +SI5gecsilQn7ZNxH9g2YUJipn9yj3ywMxQARAQABiQEfBBgBAgAJBQJOyVEXAhsM +AAoJEF9prQh2ALIsrWwH/3s8uN8/gDnbcbTX+7N/ZfQBXJZ+H9GGikmYRJE1xoOe +Et9MOqZyGDTZfGM/qNKeDGfar7pcRQlMK/A4Nts5E6d1OX8fBkUBtYanyyjNLlT3 +yDjO6VaV0SCsgAzNjUZqc4lxS9atN6md5m6lWLAdHghrXuV6LsiKOS+96htchoCv +Tvm7mcPI7w146yJRSyCC5+PybG3ult5Y6QASkwI3ZWB0u0PKUoqglwWngplu+0Fi +b2rxQvL32is4YrYaZ+XwoR6u/Bgv0ZvZiypk17Uk17rDb/JfeLqDn7oW6Hlgi9KO +LbRRIg7vwZVo2Ixco7aGxZp5c4zSfaPvn241v813ZcA= +=A2GR +-----END PGP PUBLIC KEY BLOCK----- + +pub 5F7786DF73E61F56 +uid Ting-Yuan Huang + +sub 73F7734B17EC71F4 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=v4+t +-----END PGP PUBLIC KEY BLOCK----- + +pub 602EC18D20C4661C +sub 4830C9FB8B680A97 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +FKhQ4eOuFNSHamKyekKHiShaICR2aZgq +=6zZo +-----END PGP PUBLIC KEY BLOCK----- + +pub 6425559C47CC79C4 +uid java_re + +sub D547B4A01F74AC1E +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +WugIjrW6eRqMfhWIeF6otn/vBGbp44U= +=+bu2 +-----END PGP PUBLIC KEY BLOCK----- + +pub 6601E5C08DCCBB96 +uid Popma Remko + +sub 0AC07D0BBD11498C +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +Ds1RyzdSprcN2g== +=S4Fa +-----END PGP PUBLIC KEY BLOCK----- + +pub 66B50994442D2D40 +uid Square Clippy + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQINBGDoYisBEACqUDZnT4h6ma6XIzdC6KR++uDbR2VKdhCuv0Og/sHEKkm6ZbG0 +OFB8tAaQx/WlsoQyf3DlLfUEOGDai875Aqor3fbM+E1hrZbQNfsOySKEE52k7PYe +0qGWlnAzINuQaEuZwNw+pjZqPraMlwc/hwzJB8yFNHCv25pCFohK7KXvFGr5Fc6y +NHBp6pM3pnDQ1kbkloDr32YZY2LdrfdkRqwa9STNMcZtM724aaInValFpVGEHolF +dklo9MIsMI6mVHlxi6UwFSSLltUfTXGYY+rt2Q2sLNnEKzK1GvVhK996vrNWCvpr +cdtbTzGE3WK4f2knhqzlaX99OLmkM1ah+p2EkK7HgWM9oEO7SYpNxKe/F/QfRNRS +4W0aokPsEtfKCD7vQ3cRWQXdqFwvksilv+b6pcSrwfAsaCzVuhB3lcIra4MevJcH +ZEbPrfGMi5/MIVtLayglLHSPoZtjQBhlqo8w3nuADR/aFlIUZ6NGOwaz5yXIGVEs +6E1wiuILRAd7ecJ3Zyr/URHjawfHfKMM2tNCJKl48cScBMY61FJ1EmYzwhDw+at5 +D4pCk75eM5/t6VdYQ1cDWm7J3LGXEANMU5aSZMqgVnb4SQEmRxkW7oq3Z+GIkQQf +Sj4OK6Oi4cUpM7b0m7Cbcsoqb6nD27VKD3J5KTYEq3e+78h0VRjhoi0Z+QARAQAB +tCdTcXVhcmUgQ2xpcHB5IDxvcGVuc291cmNlQHNxdWFyZXVwLmNvbT6JAlgEEwEI +AEIWIQTb10Ss563mqlDdWR9mtQmURC0tQAUCYOhiKwIbAwUJJZgGAAULCQgHAgMi +AgEGFQoJCAsCBBYCAwECHgcCF4AACgkQZrUJlEQtLUAY3g//afY6LdX1BtuS7V9S +wh2Z6BLXtLHyp+QnSEhw/KJaqp+my1iWYGfjGl/wQIknz9kUSZ2SOm2IzZKVZHS2 +bjHA0bryTHN7soPz1urjY9v1gZudMxVa1CBPIcJHPXw7SQklmgQCTweaLBqv99kj +zJ4CxApghXeadSgS7O6psHSVZrzg2Zx67kFElDvB1qLAb05KyrTnl40aM9GCAczD +TOFw73nQcRvOEB7p5R+hbGg+txJMmPkMABMXKz5S4yHDk5WzvJ8halDH/ZbCoFCN +E1PvcyK7emW9CL7PjpQwXm2FyfzOaaA+qQfeHhEFtjs/BCL10k1aYqirZqBzYegW +jkI2c8x7xAFb66C+aAColvFfGJVACE8s3V3RkQ3ILrTt6S0MPJjvyshg3cBtx129 +KmKBiWnNj2hoJworiJUFSJel5I1j26cFcjRXR4NM6wHvGpRvvYdtkhEHb9T7RdaI +AQO99mREjAArEqKtRuJe1rPUuUPjie+JKfVi0BaepqFoc0gRzz3veV/oz2bS0hdO +IT8ZBYOhtjlUqDW4XyKOq/ycOpy1rL53jQclV+Ux1UpNHIF8FRRqpT6k4HXFTObV +S24L+kBMh5fXMd4zpCPDo297riXVuFtYc7I2Iuz1DsVG3IToazR9xTVwoVbMq0Xe +x2TLvwon+K9hWV7j+PYxDUkt1Z8= +=71b5 +-----END PGP PUBLIC KEY BLOCK----- + +pub 66D68DAA073BE985 +uid Ceki Gulcu + +sub A1766BE5F812AC2E +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mJMEYvEGpBMFK4EEACMEIwQA6knc/2gtbqDhPh5EzrymR4Hwi1Xf2S0aqMopA1zg +IeZzBgSfL+4fEfpXL4eAzvrk29jIXSizDEOgFpw3PW3Om1gASxub4Jo6EQrRgOdd +OlJl1bajIRC4pAoZafDzhOb+FkjJ61lEJzJ6pQtG0Yi24QWDBfXHkSiQSbZFvcC/ +FTJpZua0GENla2kgR3VsY3UgPGNla2lAcW9zLmNoPojSBBMTCgA4FiEEYCAKxK52 +HxYU1sRnZtaNqgc76YUFAmLxBqQCGwMFCwkIBwIGFQoJCAsCBBYCAwECHgECF4AA +CgkQZtaNqgc76YU7ggIGKhGjOpGq1KupRlH1//DT/h5rfbwY9WCZfCaD3NKD+Ly3 +sOF/Mq/pow9vwEn99nbSVO8fk9s0MysiJwM7QjuOX60CBiMoQDTwZNPRRUVKM7nv +xqOzXTYJNf+XDuAts2WQCRjwZF2uPLVxl3OXkgNC6tmnJxlXVwQ0PQYW+I3aKk59 +mhs4uJcEYvEGpBIFK4EEACMEIwQB2pA7Lzg7+PvGjWsBowHeMYcKfjbAEkXycxVn +WiHpZE3x3fck/SiMKkIr2h7eXLGNlG8GxWQWE4XmWxvvaSpHfiEAteZm+HAWHM2h +CXPg24MuDppCMBATKJLs2ojZJVOpsajIgTrKDZku6/ay/GTV02W+2q186eah4hkb +enJtFGHK4hUDAQoJiLoEGBMKACAWIQRgIArErnYfFhTWxGdm1o2qBzvphQUCYvEG +pAIbDAAKCRBm1o2qBzvphSQsAgdoBwIzWeI+z+SPc0SYWXc/2K8TGVZrpDjmXyo+ +CK0Is7a/3fZMSVf67Hw75+/QDHZcl7MCP54xX6VhJzK9embNvAIHfqe4+a2wInfW +RgteE3ZYglY+89V6yt4j8ZBSrRa4CeB93oM60Ipi00o/vGoO7/ZsxTbdzEZpGPZO +gfhF8IKWDUE= +=fcC5 +-----END PGP PUBLIC KEY BLOCK----- + +pub 6A65176A0FB1CD0B +uid Paul King +uid Paul King +uid Paul King +uid Paul King +uid keybase.io/paulk_asert + +sub EA8543C570FAF804 +sub CA890A5FA09CFD80 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQINBFgMcBMBEAC/xcIVVOOh+F7S0OTzBlFH34s5fDbi6Zto469tZyW1peyWtXAZ +m+2jzFfeTCHaUQO3YjoTy2fPygS4tVD+ew4EAzMG5Uti4kwWZw0PYKz2JO/gl1JY +fKpWWkpKfHsGIFkfsOX6J83J4GVpaNJBUHsmcdep8YNf1nYDGpIZCxufihQXhuuK +x9BPm2SUdeyFwUFdxhGN4JdalxZo+x0pvQ6sKO1hQKK14YZXQxLUV043p3me9lVy +Ubld8kcda0edx3cyhilehib3sZPVhOm8s18GmjV5/ApPnehJN7SueivB2dzzFPN7 +mUwrslti0j2DmTdOImzcz0IT7zErmiV7xtgsgP8jgKEp2LF23VFXuWsKO2yNubQP +shNDKpYMMgJn0PfD5gwYl8FN9Yzj3OKA5wiJpgPjPl2PveZ/+rOS91bQMG1hFc3W +v9ZWSisJAZlNQlfyv36rD12WhwQLlupLo0zPlqp7e/i5ZJBPg4unbAYECtJI5Wqj +Ljhyd0j68QWon1Ripi8ruqXA9MUe7JMy39ZmF3/fLT4rBiHyRVpWkVKjzLlm0Ks4 +f3cNAPxn4FWeTwM+oUzEbpkNpE/swIbR05u1J2y0f+GS6X5t0CSTcHk1VIOnOiTl +wLzSEJe9hNkBuNJjwM9Cod7dbdorq6Qwd0ffPJoTw1SVkHMPwIjikzxU7QARAQAB +tBxQYXVsIEtpbmcgPGtpbmdwQG9jaXdlYi5jb20+iQEcBBABAgAGBQJYcO+0AAoJ +EMjoVWEpccxC3zsH/0Nm5f6zzvLRVevJAn6qIozkKCO3kfHQpyspizDvhOO6oRBn +lC9/7Ejg+Hl2mxtPnLly3V8fE2f6DHw0hTCWHxpzdgmR/sfoqwz7OsY1/miAFDs7 +BCNS+HmToZ3PuvkkIXjPkHjLdAq7Qlp3epSfywXaq0MfZYhexLK3s5pqAc6r5bxm +GgsDvUmw6vUR4I2EPL7Hkq1k2deCTxaEvTv16ESlGYvNSdmWEYHwGDz1n6ZE3sBn +wpqVlIrprIOt/+wmOm5BFwq5w5hZ3SGZttKcJlcfwzwfV9c4+EYbnnpl/WhQZFDR +n+XuI2pnuOqLWMAy8S59HiV6bGqUvqxQobJaenmJAhwEEAEKAAYFAlhzTHUACgkQ +elgJCIR6+eD84Q/+Kate3f4jqwRUEr6cqeqnXOL87V2sbdcKeYtwx3MX8IZ1QhSY ++BquDdVGXIwYzEF8oKm6pNhpWH/GZ6IcHHpKyhnCP27LDJQiH0cVfZkyzyg/Ae47 +uPNxPZl+ElC63jESvM9rbkEQPxlbhEWEZYL4+HbUGeIztjhccOzo6r92J0BkbBdn +V2k7vZkWZDy5zUkMhIyvn09/McaeZfL7MU1V1l+oSG6xQrmU0GheL8F7EMDo8g9m +1sP9nqZ/4iMSJJdyLlnCz751ZH8yjfK0D7ouMo0QAIRZICgaboPSW4mG5kzQuaqi +UHoQwm0i1aB7ZX3W5SStkH+GlChpFxaUutEKRsAWn6CUa/upXjZ6M9cpqiuDBLET +NgcZhx8CGf7Fake9yg1hq02kV7mSNfpjW8mfj6jvyJ/H7QO0U36ztNqg8VS2WfI0 +K3EXggCSUGKOp4SA6wST+aBe9Zlk+WCEZRFlRBuBE7xFcvpRUSn0Myvmi9iyyxnc +Gjgz9f/zrgLWFwNXIjudHEFE0OxlzxQFay3qclLc7uJgRfmr5rURSPBLLdPVRU84 +7CSWZYzc9ehIbsBFCesTiiTFdKFTCPah47JBuXTwDiHMMzW3NoGceihYB8MnaFD1 +e7mz2OvlDpbUs2c4lF0gCSsALBsAsMHY0dqQJhLWN1hslgALz2KzzSP+fBGJAjkE +EwEIACMFAlgMd9wCGwMHCwkIBwMCAQYVCAIJCgsEFgIDAQIeAQIXgAAKCRBqZRdq +D7HNC01ID/0Rph7Vl6JUtv5M00cKL8jNcNM1HeeVG5nT2WNrbHfewYVLJX1Bp1xi +wQRGjGHo3ik6g5YPhFBr/bYUCF7geD7dVkrwwx1hhUUurIvlRKa5FNmgiSojCt5+ +y6H+EO0QL3vISuoRpcEBpAKRLIoOLhzWOF8L6EP/gHY5R4ICcpzdSWkfspRyVmwB +HAL2TLi6sWLTV9dLsu7WXA73gG39NVSIUEiNqzFlstZ5PZ1/U3ZT+nGDgXcdbOvi +l6FxW+ukNbeyVD9+sUVzwuXSpetmhDaGG0omaRyVXpF9nwQ09lCC0/KvNVCdkiW6 +/EmkFX1FTUCA6zpWQmG4Twrzku3Dq2BE99587Bkt624bLKem0vrZ1c/X9XyaDYoA +b+OiPck6UmXuD0upxUxUi5de1YHhKm42hlLPBtNsBR+VflV3KUi0i3dvL//gQ5mF +of9/0V5yNlztKkzSvbTRxwAyTEPC2lVIQCpNAwkeVuElIPdfdljEMIpaSOZjXwm2 +CBTa583LDWqyTLL7VMxaed0W0K8LdHgd0MAg6J44DHaBzvYF3p5C91nqgvTKbc65 +AN5vb0wMLZxUKzdNA52iCyfNI0iYPHFhccH0dpR5Xb+5DOZrguu2TASAYlYOXSqv +fsihG1IWk7BEmh78TjvFcZKPKITLBF8sNz5vG60KHxlfvApOoL6EDLQcUGF1bCBL +aW5nIDxwYXVsa0BhcGFjaGUub3JnPokBHAQQAQIABgUCWHDvtAAKCRDI6FVhKXHM +QsdnB/4lGHIikzTozGrPeEpyzQhWUE88RYPnH3d+4txcyszFyayk6Gwy1FbTKvdi +jvhry4x/XmFffadPfKyetPXfdEKWsCqH4oIuVDS4WLIyx+qPRcfODKJH10W55BJ6 +5hWtHoPAfxNaQJYv9RfgUlumpyxACO9p60p0006JN6PETbKCTiXRaddbzWjU7/i9 +HOCHggC4g/HPAoTvJVwiu6x36bbMmvq/layqouAab+MboQYCQhbx4+rVAxD2v5FY +VMG1oF3y7WaIMzt2WSmIpAIjrv05PdZSCKHDh0KWGHKCF7lIVQbqgDnhyGRzkiHN +VIs79IQL0PhV0F/XB9q+c1MrgBQKiQIcBBABCgAGBQJYc0xuAAoJEHpYCQiEevng +DvEP/AqDgkrFmvzHk3J0LBUxsD4T4DrbY8qlfaNHHZkakttMoFtnbN7ilHvoj+/M +lzUJ7fSTralFbS92yAGOKh+lWUnaQQq/dOP+DHpqxytVDgGJIWkLlhL+iz/5B53Q +1y+MAC5/u5YnXmY3VdTe4y0cr0h9+R39d8s9qNSuH9kY66+ntEESSk5tkXCZx/s8 +QguCvr2GNTgZ/CMjA6/rA/YjFXMud85CBx27tLGkTmiwSfr5Z7b7H2joVhKjh1Me +wvyoiUPVbIRcp3UgHN9iy1SLuPz9B0KS33s2U7jaGbRxGmF0QrYtyitc7Br121vW +jw0QLvha8qVIkRlgsmOIZ893sfUEqGKWtI7OqPPlRT1g7sMeNvGrPIhnG3GfHz7c +UPvdWA51gAjQwmatJmE2/nBaIZwYS/vzyN8GmQyjMqUJ0/hXKeLjFdaDe9PPJszF +KgtcgaRG6z3sXHAwIkysGLeCHuM2gIGZslB97EgnLcqFYZr+ewwOvz1z8SZ+GOiE +IKwXKZsfzBwZocX4atocE2ltjFhEjAA76Buf9s3tG5d66fBcXGMioRLcp9G6NiSY +aGQvWL8V5Vtbs1nIvgj8Op1ek7XbErUWK8sHjYaIvaG+TzUMRlH74rxH7AcAJss/ +Q3iSOurc8asiabQbrml5iM1dkEv1aaIdhg4IdM7rHOW2lOisiQI0BBMBCgAeBQJY +DHATAhsDAwsJBwMVCggCHgECF4ADFgIBAhkBAAoJEGplF2oPsc0LrzcP/3w1z7Ke +iwXUc7fayYeoWIAXJhtYSN32BCHpfOLruDAXA5FaQmqILVzT/Uk3SYYeaapRwJ72 +oon4L1oB+HaZu8WPwKbKJZ2zJiWDWtwC1aIMoRJpykt3GHlkorXLM4bY943eBnLb +FhUi7RpZwfPvrlnblVfUZf+Shxq7CNSwsgaj0CLv68B41HgUgNJeDqCI3DjHQYZ+ +aL6Gb3kJq6dj4iLFM9WfMM3j+orGuc1+nxWa4GuS26rLlT4Tm95uEA508s+hOOZm +MwgFr6AZeF/al46f5jSY35asIIy37IXTX3X+Igky10pEMrMo1XlKOFllyXWBvpZ5 +aGKgp18ZYCeBHXxC85I9JYNUHaAiYVdA8eiLN172dzWvOfCbkYYTvQVXApD2oA85 +BDjLWnsJ3bGERMFnJap+WokGbP/5sEcngozRq0USKlchsN9ij9EGD/AWiUiJaKzP +KCKGblmMmg9wMR9gUakgxUYFK8HsBNG3dX5zaHRiVxSQwupH4alVSdEqhpYQ3wFF +zECcGs7yfxT0gxS9zr5e6BauA66BYkwGcNd7ieNwvWvIMpxBQ+eub5fZ3Ndi7Ys1 +8wiNi4kc754yDFES8CvapSk4wPAP7j8ua+UyhjO9g8NQlulPES8DYiE5PiW8/0fc +4wP4NmAmdHPm5OXE31G657HGQ3tqvmdnthBOtB5QYXVsIEtpbmcgPHBhdWxrQGFz +ZXJ0LmNvbS5hdT6JARwEEAECAAYFAlhw77QACgkQyOhVYSlxzEITwwf/f/SK/dbs +4brOzR9Tx/0D8eSvU72sRO4TH689twpsTDfFucmBbua2vK6MU2EZsnNRXRUQPYDO +rvbS+Box6afn3dF4HqdDXENQJZnMuiPB4KQzUKeRe9doGxGCjErqfHR0/PiAZxVx +62FuXiABrmjmLdOO+3BkEg12z4QE3dz7S2nWuU/lTUDRLGzDY7V86/16lajs7Eg9 +WIyphPfnnnNrhcQrzAPEkwS5GPEnBg9W9yo8t8hD8CJASh8hBXCDmz6uBkYkXvjN +xGIOscDRHt7QxcZS/ByllutWB5uW+rpSHlBH5CmCFrkzCVEFS/b4H2VWUiHmgK5S +/n0U2RHxxhqKBIkCHAQQAQoABgUCWHNMdQAKCRB6WAkIhHr54EXSD/9U9/2gbBYA +uAYuoWjiG2LIHbm4zB0WY71cK3q/aHbEA7PvOJ7QGnd06DeEJsDp4Y54dr8wxwC6 +kSAq/Qtt4CkkYlvZOlsQIXTTrjv5LRSOTjhNexz1N9sdib/gDHfo4KJWDSKNz+br +ASgAhUwfK7GCxV18DLjrsG2d+PsZjpzaEQlXAcToU4hVKDcKCO0OmRw5pIk2vbzy +OFJLISQPmwyzytW+WmV7+eRGf7R5f2rdZ6U9ZSQlQAOkV6iHmqcLTccTnpjUYobb +84MztEhKWX1H4zk5whHzBxFZWwI0rk/Iv7jO49DyvTk0uLKhqwQxCe9RnyJ//3Yj +WeVsVUKY+o6iDGm3wwu7LHFW5lSU676lR3LPVbaz56Zwr1GdpAQQB721P0jdsIy7 +H30jl900rETs8O/IHlQ3UyyBx9pm96pSrDrqRr3ZDbyhj7P1jcFI2aqmZjWc4Ekn +++EB/Xl6CWUzgLhZifSWuvcftfV0dLhIwpe7LcQDxWtMmoNnN2ucdAIUNU5II3Y6 +hXd+HVuxqUIMA6gC/wgxgNPJmtFsj/7Mav6aYFH04WpDrvCUB6h7CuEspsKgGi2v +HPzcELtmtJcWTy274SvgNoal/md4/+x7mBXpLcQphUhf7DzhAcf8iSG0xKocDnpq +XJk0H4PD71ByAVCoJbc0I5/Vqsx/NOCKr4kCMQQTAQoAGwUCWAxwEwIbAwMLCQcD +FQoIAh4BAheAAxYCAQAKCRBqZRdqD7HNC0rxD/9AMTbcAybUWuoHznDgjKOl4OmW +5LAePiKW/nz4AsZHM/+/s4gqoO9ugydRCK9ZVMYNR4ukU1HcgyPaJuUW1jAc40p/ +eACR+f51X5rT4Mv976FvCCzP0IdmTilQUubh0RGEFfPK9FtrTplmqQoDf7ehDo2T +mt71V0P12LUBj5yx35DZBjjvV42wQzfi68oNaJDqKE7xGax8zOPI1/djyEtuTe/N +X+/jXG8DP5hGLo305JZKytQKXeVW3fW0/3VEJ+YvVKEuvpoupy8cVYov8NVfs8YR +RNwictRZEB6/q/RB7yin03rvbhN5zVHWMlseJAPooTNK27zxO28rlv55wZoK0NRD +DJiBGEtF8bCCmdiBQaQdJuHZDfsCbvxL5HPmkUuGW8xbn7+FmW/X3T3VIzR5UNdJ +Rh5Am1nvkdo9tM34c5wOk29VTzdgbN/1g9FvRdZMBGvKrQ45FM5pPi9Oux6HArEb +RhaWUFqNXEatTZtGo+cTj6J8K5Qh1r+GtbeAQvCgq8WF8SY9S4j0vO/TnHYP+Ll+ +CT7DFKQlvHahTetfI8td2xH5Co6RkWLeUF4Z51H0lANZwi0KFI5FDM+rhdD8HKr4 +0b8I/+tublwOXUHm71ltI5eDTxEgkK8a3Ii2zieXwsGGY4TK8XrhXbM3TV46hRwl +v4lYYMIlOK2KZblXSLQlUGF1bCBLaW5nIDxwYXVsLmtpbmcuYXNlcnRAZ21haWwu +Y29tPokBHAQQAQIABgUCWHDvtAAKCRDI6FVhKXHMQsoZCACPMC9+63kHu0/TN/Fx +u0cUAs590wqcfTBqaxIUmgvCMLeVpdQShci68qUBPH2EYZLZGq2rmxM/ho31Zh6V +kOtgEPh8D0odTLL0f2VIJbiDjz7NWlyRd9JgTJXz+IGeB9Aoxh0/op1LBFPWsRE0 +7kx1wmjfgY2B79tc8nsEnZFPvK/YLIi76kJzk/MSa0VyaEJfQxUVTkv4R/lSS799 +OnX6MMzjQH9E6EWjWqGmfL6u26KL/elOZQSIbl+FiYuj7kvVPML7EWIN12IU0mNJ +wia4yXFiTAWbQJySQI39u8DRm09QrizTDqV87tcWLLboxcqs0aP4jfnTpagd/RJX +iTUriQIcBBABCgAGBQJYc0x1AAoJEHpYCQiEevng2ZoP/RC96goAX+cEHOubpMu1 +LSF2gXjJjPFo+2cDdPe4qBegFNt+vbJplNJI5gQ0LZRSMT9NNuh2E2t/FrR0OaLL +AmdBezXZ3I2Vzx9w8sj/9pkqLXQYTkbWV4ylqeeO36U9YV9f1Z18UVO7maQYDA4v +Nmj0hCuuqmC1Jgr9clhr0Ze8uZns49FB+WbYTgirBRSQVSeQGzskYJR8hnJNQcaC +L8F1BiuSCHwTIKz0nSiHm/9m5KSHXDsWaYT++9KQW3BdbApzT3FzcUbC8R5VoYEu +Hs6uDks1/O7uPaynEvVXdur01Th3XPeDMtZ96Xuk7htLZBpzsDS2m0oqC1V9ldCL +pC1E4WpdZKWltvJ5XjUsLuTHlO00+fDiL482bo+qw88JgZ2u21enoqXvxRyF2BqP +6ruZbObSFHc3XjMej0Kml30m6+FZvDoHFoDcUKTDANwrYyJStxMach3p6GgU9Aqr +7CyRLptRHv+oxL2fRqNvpDmm2MHTmudIanX9AuLq8aMdAIh4mBNZaxxIh/8qPY4T +CdBNWBW6EclYElPmb7jWRfGV5mVFRbijd5+ANrYBVBQ5E9nqwT8XVItP6YPwPnKc +xPiEIwrFEZV/s3pKPu7+9+Zopf7Z5j/f4eHQw2tpz4f8ygkayRGJuduhrF/3o2bH +j5Vg2+0GLZNGj5AVJwHbOlPgiQIxBBMBCgAbBQJYDHATAhsDAwsJBwMVCggCHgEC +F4ADFgIBAAoJEGplF2oPsc0LHJkP/1dBsfR9T/mp901Z5BvhLfY7lQpA1sALRtWa +Ugx0Sw1ewrjHlzipFXB6OWTwVemZzifDFk/sechnRiC6QYk9vG+hc/CLhq8OllMM +6l5VtyjKUjqMMu9ie4e72/YyosH3p1GrWpg6oxL09VzCjtKT8lYn9fQBHKXzTtVP +nwkIDdD3K856UaSQy8NTJPkzfZOkkCsY/Yx7cgxStOU2WDspdqq7rs7P+xz5t9Vg +j3GE8ynZthNrF8Qb6F4o7Vv80i1dktK5a27OBIjIrXTHryZdQuNJYC2yKRRuD+Us +99wZSJZhQCVIJSdIv85Pt9420+bgHwX5nSQkn9MzEh5nh8rgFiBKFYku7VpcrwR6 +Hr1Mqik1aaEP1f0vufBcfhsEubqiIoA2Ik204dBGwzrmFPV5lHZ8j2bg6QHoSVQI +e38TcIRMjJm4TS/FqnVLnf5B2pcpl8uYFPLFynNlqEgSxTfvGRw8Grs4cuA4RfRB +X8vPidkWG4g1SDAhcs8UDI/QfPvqqNDxsDePSnrAr3BQN5cH4CsMQv0TVWr0aE5d +BxKSdbND1HV2k1jikGVK/SZFTjdzWgMxzSU2j/gStTbKPVXrBykpLmYXSCVh03WN +ooUrhlq00v79enF1GpDxEV4fbHGUhLdPh3y24CkRt7gkm5LbaYBDuxqSHR8oAZpo +fthBQQDItC9rZXliYXNlLmlvL3BhdWxrX2FzZXJ0IDxwYXVsa19hc2VydEBrZXli +YXNlLmlvPokBHAQQAQIABgUCWHDvtAAKCRDI6FVhKXHMQoUPB/9K33x+Gvg2CzP6 +ZuPGNgyGaR4e5FTz53R0wWmIn77ZxOLHOBx7mg8U4z6ZuUMm4lGVLxgP4Jr4I0fr +RgY5QIjMRbbzVkA2NLY+IcVp4UoL9J2iV87NR+M12p99wYUwRkmQSCfqbShz4waW +NbBR2CCWilvNrsszYDThH9W43BSbwh6KuYeMG490kszZVmUl09Av7/C6ZdUvJPyg +88kxxpEVDKCU1nD2d7l+2PrMpZE+i2Kj5EICGMOF7qcT4bVZIdgvkY10EftSoc+J +ovSGTNps/L3rTJykbFJo5IG1GWqyqFzjV+uSNIUh/6QAKA3b0TxXuPDxx6DeUPTk +n5QGkORIiQIcBBABCgAGBQJYc0x1AAoJEHpYCQiEevngwnUP/j8fkaS58cabcZO2 +PlR9dbVGv9J28LkCoGnP6vrp/xNRQmqtcFyfdX6BMhMdl2F5JSIv/0a/YOwZ4nrl +FUGASLJr/gaBXyyPHf+1ZEJrhnt2J/EUGmNjxlZIwPWviu0IwA1FoxnkIXuK76dD +uws2gwkli47sLQywXaOpQLrtMUegvkU3S/AxuTvK6Giz+GV+Gv6KSVimnPdPBsoI +QxI/gp+u6ytKSrcuoZAlqXM1PpFHjs4s0yobbVeBainG3K8EKxHZ8lXxhSv19TO2 +yQreX8UJbxCL3ajwUwmkPCWflg2PLVaOVIlP+QWTbAbWV65yk9Hkz9d/c55LJ6Wv +iVbyGDi7vaek5ND299v+xlpLQg84+5cDzw1BUxkttJT46u02t1j0AzuMofG7CzOP +bTDMZzHRdMCSV5MeqEovS1t84mKrsK4cvGAU5Y7v6ThMHpqMw2u2vWuGRMLOOKJR +Pnzn4ILSlO01W6ie96rTJIh3dtGYXrh2XoAMW+JsNQaxzsZlb+vpZTvEEj/tuLKR +B06z4ZG2bYet8YBWWu6v5whMjiwtHHQPd66DFj3x/PwNDfVnD8s82wp7bcN2QeOi +PTvBE/ucCJFNnav/bpfD+vArTrRjb76UZWWxXZslI1+TvSN2YZ12LfTsfIkvIXN1 +qr8NZzbeAmWkFR5W1OIYMyNATP4AiQI5BBMBCAAjBQJYDHf6AhsDBwsJCAcDAgEG +FQgCCQoLBBYCAwECHgECF4AACgkQamUXag+xzQswow/9GpjuyZMxZlpheqRv8Ygp +Ho7cepgBC7YO7ZIphEAvelYGuIwXcMquTVN0OkNNE9iYc8vphvFPCHzcqweBKw25 +EOLzvx+DZbs5u5T6HX6MTb1Z+RNKHsP+HGlcEghcg1sSvT65mel3UsOjBv/cgt+8 +xEfRlLooJprjvlUGoT3z/mV5TLBHu2+zK0pfHgZcXC3tuACx2/ozO0WVD0b65UAk +Vf3wRP4yzha3biy1nH/sUKYOA31WooimDRlRvW+Q0TZJLAv9ckdHsRG9lq2cXDn6 +h+jjkgbv0/jGpqziix649gjd3xB4Zbh7fEkd0+AMJOtO5eUkJUfEOB8PX9mz4Tvj +g5995B6Y3G29Ct+pDsHv3zUT9Cvfsw4v4xz2BQa7pCv5+cpWvPt6hlhly1Q6wHMz +iSVWR+4Q0FGfGQMXXMvqa8bxEchGBFL0atCHrCopGj2NBcD1kzalLKS/tIw5gpgv +DHGDJx9bj/D5lxvM6rPtNhAfoOMNdd7gdQcX3asxFTuknSxzZKW3o1y92fejYdv/ +e/ScuhAwbAzoSseOodeKAe9SBn7ePz3ogSxR4Z3K0gX1cDBjjmETFBCigWofxXBy +dc/GXljaXDLtIEmo7ociU92xFaIETCmZMlT2bFGvz7TRDHFv7Ks3Zxn9Y9aNYBxJ +CHAMYa+8HO54fSYhlRMJeou5AQ0EWAxwEwEIAJILxPHY3dmmmonTcC4MmsE5w0lT +3TddOnmXfuUGXQmI0IM/j7KCQJNTLPT8rlgpBgl/K5WYzmrTJ2qFDryeauaXGq8X +FEi6DlWpoTtVaGSzI0A5E63EaL0ujoC6Qofa8rnZWHW6pE+Yrjiq0HX5uTwMTVge +6G3TRcHUDC7iiMi3dYq5Gkz+hJh9uyiXzZ0+3VekO83V63ZvF432pFuUKnu7zc1G +Z28AaIExERLrJXqfxdalAVORFh/vDJWuiY7PP2bzV1YBbkmzlAi+HcYxsUxL7Zud +P45UiucK0kLDRO9NffFnHIwS5oK9gicJkD3Z+uakfAkxdq7v/W7XbO4ct+UAEQEA +AYkDRAQYAQoADwUCWAxwEwUJDwmcAAIbIgEpCRBqZRdqD7HNC8BdIAQZAQoABgUC +WAxwEwAKCRDqhUPFcPr4BCZEB/9T4GiPb/btnfXSPXjm4+GHzDXX1dzBWoKmBIBT +DJzBA1ZSPBs3Zxs+0dylG6nvHhc09cpXXJgiE1UWIvusOLVmT9mYi88Yh200MkHJ +yu1Kyq36kNHLIXey0G9b7cK+hBMkEfds1kJlk0UO/Sy480VqWrPDUJIj/RB0/x8v +uTMYnUYBcP9dUMo83LVWgLOl74kBtQpoNX0OVYCecZ2WIs2x/UoVExeDWsLod8Er +BbbdcRj97ILwStHmnEb0f+xK/7O+ySz96nHrepfNSc231PBHJCR+RkYJOb8Oh3+5 +WMzkGlO2axLzzELobhqlARdvNXydo3KTeY8kxhxWtYOT3pIfPncP/i4X9v+DgSkh +HuHc71kKUKiBetGuCVAFjZS3DDNKNvRyjJmAXmKAFnkTri4yu3+QYEwuZUeTBSXx +h1CZCtLqO7yWtOt3/teH0sf8w7FcExlpfD79k9ysfdpAVKi1wvYJeYE2+/g6yit2 +ImhN6gggWj5j/xXI6CtTg90b0wL+M3L7rU1wHdXN7IDqvpwu7z7sNeMGLLgzUnAR +xGjdWl6G4nJM+xW9DwdOCAYS+vGqa/8L7h8B10Hl7xKk8uzuvnCsGyD6IqkKUGMM +FUWnZIiDYaP1OihCGGVNLWzvsfGWdPdf2bu27DDSi4+NtVv3yeQSa54EC0QRqjrp +irE1d1YfXRQqiHF5m94JCDMdp8iIOe/Ygt3FzpzGvnDqMSe1t3Q6kgL5X7eX315n +gnLmvWkZlgSwDcDMDcZ51gtRYY2kNAIhVM+OHN5sAp3dUEiXI98y0dh+uGED6spz +io+XhI2rKl9TTGvUy4e9vYJTrBhgBKh5B9yp3FvRA3GqmV9L4M5QLGi16OjhhZtG +wLQSg2/xiSktqGGUhBmNrCuZpm1FOhvTsgqDtKw7Y73R40ncwuF/8BR8bVETQZ8f +KjnBafyjDB2oReaf1x128DiCqzxsUFX5meBYq4XnzHAe/p3f2eg6iPzkN0QGi33A +560aWMAoMEwYJdYzmVemU54z6gWzQUL8uQENBFgMcBMBCADbdP0cslUGpTkw26Wg +Dwoq/1IuhLHRZhnri4OkyKsuscgmdNomOpeHh0zzcYZwzz+Hpvt/4x4fOEGp9NTv +LCQf6OAEm4owJbz8BYpGifBof6CnPhTuZFMAHIo+H/HbYHZJxipcqARahHX88wBI +kpV9Bu24qq6g/pkemDN3hWwU0Sn2VcJ8ETIzSDfJ9hVFKbzCnBnt79+Bi/e3vaoP +hDCAWekicXSmjLbwHymAelxt1CJpQUHWEKEvDoyiY6B+TOzUWPKm/r9PDOc/eM/n +Wdphees6VnCJaHGCE+HlYv9ifIbcpIMSAQVojT38mC6yt69oexrUvtHtjG8IYVIp +ozhpABEBAAGJA0QEGAEKAA8FAlgMcBMFCQ8JnAACGwwBKQkQamUXag+xzQvAXSAE +GQEKAAYFAlgMcBMACgkQyokKX6Cc/YA5TAgAl5h5XUOfyQ1VAr3Dsrom0MUEO0JN +/Cj8uH58yhkcUAigDhdnkAu2GtpMgz3/XkeXQh8vRZrFdoePy5/YYflksc2Pc5hR +f0CGYKtr8RQkKmjBpdppJcVVTIK4Azkgx9KkdGmyWeFmUENn2CD3/xRsETOff0PE +0QQHq4ArUEsiqgf3YgJHibuZUIPl0bmTvfDHtmLqZKTxnv97OLgOIXOegkE6wDFJ +3RC9KUQoLLVObTI+H8xwA1KXYFyaitU8TMQM+Hl05bxoD+h33Hud0dUqOTTWG8rN +nid9Ne594nGal+kqkNVcEXlu85iUxeU9AqnAlIXh31Ksl1rsUmdPJDtoR92hD/40 +ZpM9N+E0s9AZ+tJKOZyxf+ZTx+jpvL3U7JoLmCGQg4XzlKX0A0n7ExvricAD8gfh +76qpwTVg5e8UZS9sPhgRl/d7BTigZS3L+IbyUlRL5kG0wIMzoM6woMhfdQ3qhoDI +Y5QJig9odPE7UuVn/WTSYK077kZz6Ct7RsNM/CR8D66lDKUB38nKhcXbyy/WfPmw +NuHRShr3qw0QqwIcoEA8sWmOlbgHBnI2ulCV4qpWwSBOvsFZASCAqlslqcfXLHz0 +t8wCyiqNCY73SC/aTXsnbbNWgR6bFM6Yn2/8m+ihGl187yCBgf88o5EzJXiFMQyG +0x2/rJJvbvBZpNqNBcKG116cFnFP8KOCj6FfuClaqZjj7KHnX4QlUW+Y0Iw8E5ph +1Y7s1hbRoCzcLeyqRgzUKOX13rj8aNdGkiX84TM5xrc6H/QjfmkO3BcKG1Khto/p +YMzMrKAREAxIQ2x8AhaXZVEmgmjys1IBb/mWTajhZhPDDlWaxdE8YsgryrdXIDVg +sgiW1KorJoMy62HNL1bhc3S0ifOPqIxNuWXkFH2GK+fWtr/A7DsnWyWEGk+d5CkG +oxjJp6kyI6lyfkUmZRfMgmSDxBx1nq25Or9reT4VOK7Kd1ckrLDP3fcmXBpPDlGO +sOpznL6YLU4JiwHgbHheWdSmNH2JWMfWgwvQfmLUfg== +=1EL2 +-----END PGP PUBLIC KEY BLOCK----- + +pub 6A97BB242496B68A +sub 374A2ECC99F4A7A0 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGNBGK88f8BDACqAfnTaZazrzbO9vM+3nAdmcW1QR84zwUKneFML/I45kihIW2t +zhcx5JIwl7gK6q9kzRGClMCkSGhq0y9Q8UGR+wAmLJ8bexS998c3rtFfg2/c1zBC +PIPma3rmsh2D+COIi/BppqkceTvnDdZDMu1Xa/ezhgUeb7M/ipYDwqWjKBtAQhsk +hR9XjpBqqG1YN7epFOll/WZ7B30eEEXJn7VBelGXuOPG3EUk91P+QJMToGj7gOmw +HjXVGCyXiBXVdgGo4DUMgwlmg23gsC/L8Z0RjKbx93wwaKmUn+X60ZkUFf0ULQRF +n2P7ZZm/PoSpOfAzpVYK5dTatJzMl3p94fHKA2XaEaW5J3NhzEYVw+x/uPqOrJzY +PxWhZPrvhvfWQwLKMF5Xz9Ti44YgxgF3XDgJglBmIeyVds6lpi53Z7Gkf0o1E8ox ++90AJGjUzZO9oHbGHkUw1DDVxI/N5bBlbyOepyWAjXnV88uKMO2NEWsxn8Apmecb +w/4/oa+yg54igw0AEQEAAbkBjQRivPH/AQwAq4uwPuaet1SeTs6FlyMYXXUhuY7w +1L2qo67WjEeBJUNpJk5DuItn+oZx59zqH1GLpBoESR0b52dc8FNQqcka3R5DZR7N +AZ7Z3CP0dzWp1L1jKnB0SfGimCPxV+T4p73PB0mcOU1OvfR7htVrP9YtNoQKPAmR +3GmrypRrB1KLiFGit2RQOHlC4d87GAB8Q3NAiYMyK//4ZXVJQJHwXg0xgETF/mGQ +TUEAS3AGosrReexPbq6BOQJc73VARRe2/bBspq5mLyVl4m1e5CKZ6iErUE8vwrdV +YAf8BTZ8H40rC4SVCO318z9Rad3pwF7F/ei32+dJBJxGbtYJK4sOrscuDQ2QxTMO +GMfR91mzdLzZqFPpIKuT9S71tEx2m5lVrRkJp08EizOKIKA7ZlxwTZWehbGmsrxy +wxpILfvaurjPrKzXOSkjKh3/CNApTjEQvwJhMUMnaYd0t54cuy4Q+1mv2meh/vvq +zEOTCuVZKHxFjge9UieYymGmJqQP9LvTsujjABEBAAGJAbwEGAEKACYWIQRoR7+m +QRlloj8IxjZql7skJJa2igUCYrzx/wIbDAUJA8JnAAAKCRBql7skJJa2iilGC/9c +qonEr/TezuZWPuoK3dIAj/PdejBXgXBuv6vJaok2TL4HDw2bvMikAKD03MWe54bM +xwXCtGcrUHbLx6dSB9CtcKDEo8I99U3HgS5CPv0eB9IZEgauffwI9AQlGyJk6N0B +2rIabzELrd/X3+IKdpdYHZpbN5bvW+loc833h2ywvOpsovmVEpLvGI0vIbJz5xd/ +ZgSZu8nD0yKT//yTNK6FXPSXroWHAsHpl83Boa96uWPaEiQ6xqRGdKssvrnFNbuO +CpgMHTRUDx3VNQ7WzEgAdFKWo/ykf8+xRN+nwN/Ee7OoUSBURuZ0geSRRsPJT3li +VzhkBZfvUdoo4d4lMfFPlotlsymFEiWhvyj5CP79cRqTvEJWGwWKmXh+UN5h8mLJ +ip/KFR2Hfs/DyiJCf+MW7RY08yP1eNsh1sjipK4sSIerCxTRvgOpq6xAGsv1PYUx +JAIZRCyLG+Ks5+RfmOJZJVIUQmU9i19ciHsBx8ZyPKdO06+rBbrnp6GpGzq11VE= +=9x2A +-----END PGP PUBLIC KEY BLOCK----- + +pub 71B329993BFFCFDD +uid Oracle Maven Release Key 2 + +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQINBGMlBcgBEADGWfKEa7yLYw4vX64KkknEb4TJa+Upyh9vj6n6GxQipS79j8CE +FSdgnvwVEOSFH2qm92un9zzBs012bnuJlZsDz3xMI3/isvi6xc/5sNhVD23Iwcna +ZoQEZK2bK1FqZkFGLKZL0OsoMaYTujhqrsVb+HzteszOo5U+eKvIrOSIJ9pCEZm7 +2LIfag7OjnjNH99w83Uhlwc+R+I9Q1+0lUg4n1OfTWa3V9DR0eeJ3tBUiph7Vx0S +qnzxKHIteiXsV+YTUhoxwfBZIWkPgWzbdpnf8LLRPaSgMboUjT9Wd0N1/UfaRRII +O6YzpQRKpbGgTXKhmHs+ufUULxyhGDEuvx12C3+J+yNgN4aufvLwZrpoW5RunRc2 +utJvRso6Vznt0E7Udrl31lIO8f8gN1Wq2tFjPxwjcPnVdUWTwGBCsIZVuuh15uHu +O1feqfPnPDeKc+yKSaRRfDDFSI3FwAq+0aa3yWS8SyEBpB8ttgSuj/mmFmW/UNxP +aUv2KD3zBli0z3nn9qBvEdWM48tHXHP8831zVZd+DqJWiORj0iIejmfhuwKahfyb +flON+wBJkdc5ftBKGT9YA3fx5kGmgCrjB/PrmG4DRS8pjFJKjx7x/002DJ3NRpTa +Og0d0FqsAMgNCyysPZIzutdwiCRwjiirac23JTWPHvTUCHx9JZyTq1TMdQARAQAB +tDNPcmFjbGUgTWF2ZW4gUmVsZWFzZSBLZXkgMiA8c2VjYWxlcnRfdXNAb3JhY2xl +LmNvbT6JAlQEEwEKAD4WIQTwRjabBrdhrIbZhJ9xsymZO//P3QUCYyUFyAIbAwUJ +AgIpAAULCQgHAwUVCgkICwUWAgMBAAIeAQIXgAAKCRBxsymZO//P3VDaEACBustG +Gr/6ou763TFObJIFzHMzWGUU4Lt9xxkj04aXC1C/ZkQ3T0M4tEE4tlcDLtpHznY1 +kjZCqxGbs31Xq6MVjFHnZxJMUmE0opG4hDFNUMzqKLJASJhVre7Gpauc/axuTlJ9 +QT1rMIej1u5aQLGjNDL7LA+QxITSWEmcHwUtOgt0SNdMvcSPJyPXDrl6kqzll3Gd +SAQ43rRvsmyz6nBcVkI9ZO1yjyDX7/d0Hp0nAON+t9+QyXKsDUumBks4r8aM9zTE +LVJzFX1wdMdJ6nXnrFT0RuvDZHh8chEhjr0KAm2gi3VisaDZ1+K3qabzFnCCAwWG +aRKljY865r2SmYqQ7QzgmYr/aaA2cdysiygBqu2Oh3xl5La7ADQIq1bnKmRh4b4w +MKxL7KCKVGiI325xPAmLSALKmkhNMp7c6Mkq1SXrVbPpAtQkeMsaQIU5tiTWm1mV +3T63Km41GaNVf28a7KM+UHOZ5PhSzxZJFRjAu4iTrf8s31ZxF9ycFYQV4/4CArRm +GlObSMq79ASqotu/v6Dst09c8VzWGsqeauf7SvNNmDKO5E4YfA8A9wIzEy/SBDDh +xtuGv/TT8HXPATHLQ2gztPSKvvhr5rJcv6Lx9WwjDMS4g7rxB4vBF/xh25ZHCIPd +D5q+qTixeCxlxwbPif6yYaZWKnmpk5en67mtdA== +=g66d +-----END PGP PUBLIC KEY BLOCK----- + +pub 734AEF3D43509290 +uid BJ Hargrave (bintray.com osgi organization) + +sub 49D2ED97DAA8B33F +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQENBFRZXAUBCACqPBEjQ7si90PYbccyR/K2tg78HzJfmECvmtE9mKaUpAWGkid8 +xvSWNIunJMqMEyAM6lbyGUE/lQX8k0Ap4qk/UIf9vxdFirmlzD1lhfxDls33Y6et +TxpsRP2Rm0f6fW01R3L275FAvHLkQcOUQVoD407Eb3al41sYy6vdRZpdTJ923w9X +ol0a/6G7wueIMNO4TtxLNGSe+WPjtAWmLOl1H2pg2eOcKR2+finbeWpPZPCjR4I1 +CaMcGfdwv/4goI1b/931t0TlKAyGVhCgTa/1DKtRsJazwtw6MQZkE+/8t4JIuSVx +GlOWUrlU2HCbN+eAHj/5/G0suIw0OZpdtNPBABEBAAG0QUJKIEhhcmdyYXZlIChi +aW50cmF5LmNvbSBvc2dpIG9yZ2FuaXphdGlvbikgPGhhcmdyYXZlQHVzLmlibS5j +b20+iQE4BBMBAgAiBQJUWVwFAhsDBgsJCAcDAgYVCAIJCgsEFgIDAQIeAQIXgAAK +CRBzSu89Q1CSkEDnB/98N/v0GcmGMEOls3kpl2hf2I5rrkx1qNpcWQD5F0YAB4wD +rb1PwjwYVIx1c9JnB0+WlOwmXdsNhAmPfdNq1KEhrRtTBQ88jmm6grqiNFLZsFrq +PxQCcOw6V4rPnFkQvtijqf708v0QdjSaW/HSwM9lCz/u3ljJq6FZGTRwNJBcusqd +vh08mMWWs4Pf39dKyE0CKjmPTKNnQGBoxmFPSrvPoWgBmCtniWR5McIOFuqnzHBA +ACu6t9t0h4sB8Vyov+dLxfUxf6g8SIX3b+FxCsN2vRwie6IvhZ1KFseWAWIQcoS2 +8Pjp+GKYiBhw2qMmbDBEV0gOMGZyetdtCE9JPt5VuQENBFRZXAUBCAC+ddgLBX0/ +BBS+EH6JiIqbFhclAnMEGwIAGyfk7rpvlwwWCFQDYDSRW4AjWwcDV07ckKI+3HQQ ++iLD9xwiMWRSyo8RRbuq2xypbPKd4ET4XtMUuNweMpuyCgOMceMVUd4LbzilopWz +OKCo2NBAExRjMoBGKdTyaCrQ/lEouEGATlzwoOcrewUpWKfG0qb+D3XTZ5Dwqo/y +lCtE1QlZASJGF8jGEMc9UXkMH2e4cg6GUBbgiC0iKA4zwgLKCBaSWNUHt4fhO1pt +3pVPrMaFL/3foLpa63xi9DdpL+LXDhIo165TKOpXwDaeaZoRNC1qRggeLasxeMfL +0Vm9P1DrZteTABEBAAGJAR8EGAECAAkFAlRZXAUCGwwACgkQc0rvPUNQkpCN5gf/ +THiGnRy7LT03PnA4J6AWtL19HLtRm4FXQQC+X5um8abd74HPzAgz0Z2o0rt2gq40 +xHxzyMWmtdpylSrRdfuwlVuVpf8cZDMiXNVXTK/wnByEmqzfwNC5+21s/FHi0bQd +bm5DjHz1jz6RwGUHdTZ0rRWV44VPxtYCZr/fiu++Ra/ysUCCMrNh42UhMfH5yw9p +QZxM5NTPeEXytraMhyldxRYsJNjO7ORKl3jMFivAcnrZFlmiw24KDYEU3QNZZkNx +pr7g2l9VLiFhkM2QIRGVPbVLHzG5wD2L5c9pzhmFbXO1ZWoQMA83C4OFV0+ecnga +/egW1kdpB50keEhf+cLDjw== +=O+F9 +-----END PGP PUBLIC KEY BLOCK----- + +pub 7457CA33C3CE9E15 +uid Colin Decker + +sub ABE9F3126BB741C1 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=Gj90 +-----END PGP PUBLIC KEY BLOCK----- + +pub 79752DB6C966F0B8 +sub AC9F6F1991913E30 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +cJR4YXWx +=IK4j +-----END PGP PUBLIC KEY BLOCK----- + +pub 7A8860944FAD5F62 +uid Sebastian Bazley (ASF CODE SIGNING KEY) + +sub C189C86B813330C4 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +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 +=Q+g9 +-----END PGP PUBLIC KEY BLOCK----- + +pub 7B534D9959CF9EAC +uid BJ Hargrave (Open Source Development) + +sub AB8125964D2BDD05 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mDMEYT9TihYJKwYBBAHaRw8BAQdAaDrFN2sJgHdLg4bsOYutEx+pAp5vEbTH9nW1 +/bjy38q0N0JKIEhhcmdyYXZlIChPcGVuIFNvdXJjZSBEZXZlbG9wbWVudCkgPGJq +QGhhcmdyYXZlLmRldj6IlAQTFgoAPBYhBPT9jR6kpZDXdKa6d3tTTZlZz56sBQJh +P1OKAhsDBQsJCAcCAyICAQYVCgkICwIEFgIDAQIeBwIXgAAKCRB7U02ZWc+erLU4 +AP41OKjdeqYBeTFttJD0wqiX1GJjRrhIoKTClc4uVAKzOQEA8Y7zlmgrfoskYN3m +PNScKzRg+PmFJjkrK6WjBL1JjQ24OARhP1OKEgorBgEEAZdVAQUBAQdADfEVv8zT +V74gEBxMARGut1wS/56Cp0n902kpMCtZJksDAQgHiHgEGBYKACAWIQT0/Y0epKWQ +13Smund7U02ZWc+erAUCYT9TigIbDAAKCRB7U02ZWc+erIV2AP9HcHsn34M+uSAh +8dnXU/Cb1ptM2r2E3atq3wfYplGg5wEAmUisih2mb96CIuFMotoG9mmPeaBkO1nY +jJZKqlKpzQw= +=nhWl +-----END PGP PUBLIC KEY BLOCK----- + +pub 7C30F7B1329DBA87 +uid Ktor Release + +sub 0588BC69A286FF16 +sub 3967D4EDA591B991 +sub 72FF58594F983302 +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: BCPG v1.68 + +mQGNBF+TCd4BDACbIA94MfIWL0SpvZwBddXgx36Lp9GYOWNgGoQCWSvk9vaMrLaI +rEll0xnoP98CfBQYrVSAmHDMhSLBCjNB3V1Sdz8GRdOG7HUffF7Cqwbm3Fxo3H/h ++Tsrodv23NuvKsDpgglUL6nJy5e/FO8y9dcxLXRRVdPFDhJubi08SiUJy9FQbnfA +yb2LuTzXtjDmjEsMZpdpQUlQkk0xNDkrrq+2miwxemVd35cnVQCFP0K7c4T0ksGg +Rf9A2r45DBbPfvwTL+ZbrGtCssUpCneWhPl79UsMxeY+vJjEggqqqRqbHRn6nOQd +3gKSaEqdALZURPzvkKxLUeUUtMk/tkFdsNe/ea7edk6G3MI4dbUY7p0XLS54S9cB +1JUAHNEFtuJQKGWNuwWO58Yun1EBtOdUEvnIIoQ+CIN/XeKrnEIXE3LSblB8BR3H +bqX54BMe9AzsmDQtc5pUOm2pfvCoiv8xFXQznBg24dGqo2A/jMoUnGj6oRj7k8mt +i9AdPLigldr0S0sAEQEAAbQhS3RvciBSZWxlYXNlIDxrdG9yQGpldGJyYWlucy5j +b20+iQHUBBMBCgA+AhsBBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAFiEEOUy0NsVp +FvwB7qSnfDD3sTKduocFAmNRw+wFCQeBIQ4ACgkQfDD3sTKduof1lQv/UJJRC4pq +THPL5w3a58IdCeoT6MzXOeFH0sWPi2OMQ5/+ryzqoA/yPBqUZ2XJg16lJ9zSn5c3 +8kb6O0k3ZGLipOfPBGsiDRDpDoAs+gIJHDRkOVrqSIgLYBquVd0jquWVfdbp1kfR +uO+Ge2Kijqc3uDia7Ux389SE8CUFDDu4D3TuugjDy59P6oU38UqrETXhHQH9bz0F +eRRglSBRh3TxtCU0l0v9EeYdRSqVaOpjWM+I5V/kLwQCSutn4TdH14ZmesxB6HGm +Vjzd04Q73m2qeMFNMmwIzo/GEkZL+mo+4rWnE6cm8l/ZGx1zwzQiYqzxVP6G1XGt +zD5t/qSk+5tCLTuzVLQYfJA9h8ALbpNAgC0BnhFZ8oOdS6YZjANb3sT82Jl2KAok +uewOtIh7LrAxiUlWhqf2pzOYfINCVmhjF3LuR0uHeJ05CgOm7mwUftGZt6y0WgI7 +P4Le9v63Im8lFOzQPUL6kQEg6JSBTSOJSO1MN8Il65m9bDUxmE7Mhj6xiQHUBBMB +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 +=Z3+2 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml new file mode 100644 index 00000000..5961068b --- /dev/null +++ b/gradle/verification-metadata.xml @@ -0,0 +1,438 @@ + + + + true + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 943f0cbf..033e24c4 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 37aef8d3..cd60aa1d 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip +distributionUrl=https\://dl.less.build/toolchains/gradle/gradle-8.4-rc-1-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 65dcd68d..fcb6fca1 100755 --- a/gradlew +++ b/gradlew @@ -85,9 +85,6 @@ done APP_BASE_NAME=${0##*/} APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +130,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -144,7 +144,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +152,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -197,6 +197,10 @@ if "$cygwin" || "$msys" ; then done fi + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Collect all arguments for the java command; # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # shell script including quotes and variable substitutions, so put them in diff --git a/package.json b/package.json index 6d13c82e..ff41edf1 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,10 @@ { "name": "@elide-dev/gradle-plugin", + "version": "1.0.0-beta23", "dependencies": { - "esbuild": "0.16.1" + "esbuild": "0.19.3" }, "devDependencies": { - "@mdx-js/esbuild": "2.2.1" + "@mdx-js/esbuild": "2.3.0" } } diff --git a/plugin-build/build.gradle.kts b/plugin-build/build.gradle.kts index 5d06483d..88319a4f 100644 --- a/plugin-build/build.gradle.kts +++ b/plugin-build/build.gradle.kts @@ -1,3 +1,16 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + @file:Suppress( "UnstableApiUsage", "unused", @@ -7,10 +20,10 @@ import io.gitlab.arturbosch.detekt.Detekt plugins { - id("org.jetbrains.kotlin.kapt") apply false - id("org.jetbrains.kotlinx.kover") - id("io.gitlab.arturbosch.detekt") - id("com.github.ben-manes.versions") + kotlin("kapt") apply false + alias(libs.plugins.kover) + alias(libs.plugins.detekt) + alias(libs.plugins.versionCheck) alias(libs.plugins.ksp) apply false alias(libs.plugins.pluginPublish) apply false alias(libs.plugins.ktlint) @@ -25,8 +38,12 @@ apiValidation { ) } -dependencies { - kover(project(":plugin")) +koverReport { + defaults { + xml { + onCheck = isCI + } + } } allprojects { @@ -40,12 +57,12 @@ allprojects { } ktlint { - debug.set(false) - verbose.set(true) - android.set(false) - outputToConsole.set(true) - ignoreFailures.set(false) - enableExperimentalRules.set(true) + debug = false + verbose = true + android = false + outputToConsole = true + ignoreFailures = false + enableExperimentalRules = true filter { exclude("**/generated/**") include("**/kotlin/**") @@ -53,19 +70,19 @@ allprojects { } detekt { - config = rootProject.files("../config/detekt/detekt.yml") + config.from(rootProject.files("../config/detekt/detekt.yml")) } } tasks.withType().configureEach { reports { - html.required.set(true) - html.outputLocation.set(file("build/reports/detekt.html")) + html.required = true + html.outputLocation = file("build/reports/detekt.html") } } tasks.register("clean", Delete::class.java) { - delete(rootProject.buildDir) + delete(rootProject.layout.buildDirectory) } tasks.wrapper { diff --git a/plugin-build/buildSrc/build.gradle.kts b/plugin-build/buildSrc/build.gradle.kts index 5b10387b..58e90c94 100644 --- a/plugin-build/buildSrc/build.gradle.kts +++ b/plugin-build/buildSrc/build.gradle.kts @@ -1,8 +1,22 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + @file:Suppress( "DSL_SCOPE_VIOLATION", ) -val kotlinVersion = "1.8.21" +val kotlinVersion = "1.9.20-Beta2" +val javaVersion = "17" plugins { `kotlin-dsl` @@ -13,13 +27,30 @@ dependencies { api(kotlin("gradle-plugin")) api(libs.plugin.kotlin.allopen) api(libs.plugin.kotlin.noarg) - api(libs.plugin.kover) - api(libs.plugin.detekt) - api(libs.plugin.sonar) - api(libs.plugin.testLogger) - api(libs.plugin.buildConfig) - api(libs.plugin.versionCheck) implementation(libs.plugin.kotlinx.serialization) implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion") implementation(files(libs.javaClass.superclass.protectionDomain.codeSource.location)) } + +java { + sourceCompatibility = JavaVersion.toVersion(javaVersion) + targetCompatibility = JavaVersion.toVersion(javaVersion) +} + +afterEvaluate { + tasks { + compileKotlin.configure { + kotlinOptions { + jvmTarget = javaVersion + javaParameters = true + } + } + + compileTestKotlin.configure { + kotlinOptions { + jvmTarget = javaVersion + javaParameters = true + } + } + } +} diff --git a/plugin-build/buildSrc/settings.gradle.kts b/plugin-build/buildSrc/settings.gradle.kts index 94dad4b5..f1de28df 100644 --- a/plugin-build/buildSrc/settings.gradle.kts +++ b/plugin-build/buildSrc/settings.gradle.kts @@ -1,18 +1,32 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + pluginManagement { repositories { - mavenCentral() - gradlePluginPortal() + maven("https://gradle.pkg.st/") + maven("https://maven.pkg.st/") maven("https://elide-snapshots.storage-download.googleapis.com/repository/v3/") - google() } } dependencyResolutionManagement { repositories { - mavenCentral() - gradlePluginPortal() + maven("https://maven.pkg.st/") + maven("https://gradle.pkg.st/") maven("https://elide-snapshots.storage-download.googleapis.com/repository/v3/") - google() + maven("https://oss.sonatype.org/content/repositories/snapshots") + maven("https://maven.pkg.jetbrains.space/kotlin/p/dokka/dev") + maven("https://maven.pkg.jetbrains.space/kotlin/p/wasm/experimental") } versionCatalogs { @@ -21,3 +35,5 @@ dependencyResolutionManagement { } } } + +rootProject.name = ("elideGradlePluginBuild") diff --git a/plugin-build/buildSrc/src/main/java/Coordinates.kt b/plugin-build/buildSrc/src/main/java/Coordinates.kt index ba139e99..3f731ead 100644 --- a/plugin-build/buildSrc/src/main/java/Coordinates.kt +++ b/plugin-build/buildSrc/src/main/java/Coordinates.kt @@ -1,7 +1,7 @@ object PluginCoordinates { const val ID = "dev.elide.buildtools.plugin" const val GROUP = "dev.elide.buildtools" - const val VERSION = "1.0.0-beta23" + const val VERSION = "1.0.0-beta27" const val IMPLEMENTATION_CLASS = "dev.elide.buildtools.gradle.plugin.ElidePlugin" } diff --git a/plugin-build/gradle/wrapper/gradle-wrapper.jar b/plugin-build/gradle/wrapper/gradle-wrapper.jar index 943f0cbf..033e24c4 100644 Binary files a/plugin-build/gradle/wrapper/gradle-wrapper.jar and b/plugin-build/gradle/wrapper/gradle-wrapper.jar differ diff --git a/plugin-build/gradle/wrapper/gradle-wrapper.properties b/plugin-build/gradle/wrapper/gradle-wrapper.properties index 2b22d057..33cefb0b 100644 --- a/plugin-build/gradle/wrapper/gradle-wrapper.properties +++ b/plugin-build/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-all.zip +distributionUrl=https\://dl.less.build/toolchains/gradle/gradle-8.3-rc-3-bin.zip networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/plugin-build/gradlew b/plugin-build/gradlew index 65dcd68d..fcb6fca1 100755 --- a/plugin-build/gradlew +++ b/plugin-build/gradlew @@ -85,9 +85,6 @@ done APP_BASE_NAME=${0##*/} APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit -# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. -DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' - # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,10 +130,13 @@ location of your Java installation." fi else JAVACMD=java - which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. @@ -144,7 +144,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac @@ -152,7 +152,7 @@ if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then '' | soft) :;; #( *) # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. - # shellcheck disable=SC3045 + # shellcheck disable=SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -197,6 +197,10 @@ if "$cygwin" || "$msys" ; then done fi + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + # Collect all arguments for the java command; # * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of # shell script including quotes and variable substitutions, so put them in diff --git a/plugin-build/plugin/api/plugin.api b/plugin-build/plugin/api/plugin.api index 2aca0665..88b2c8ba 100644 --- a/plugin-build/plugin/api/plugin.api +++ b/plugin-build/plugin/api/plugin.api @@ -4,6 +4,7 @@ public final class dev/elide/buildtools/gradle/plugin/BuildMode : java/lang/Enum public static final field DEVELOPMENT_NAME Ljava/lang/String; public static final field PRODUCTION Ldev/elide/buildtools/gradle/plugin/BuildMode; public static final field PRODUCTION_NAME Ljava/lang/String; + public static fun getEntries ()Lkotlin/enums/EnumEntries; public static fun valueOf (Ljava/lang/String;)Ldev/elide/buildtools/gradle/plugin/BuildMode; public static fun values ()[Ldev/elide/buildtools/gradle/plugin/BuildMode; } @@ -16,10 +17,11 @@ public class dev/elide/buildtools/gradle/plugin/ElideExtension { public fun (Lorg/gradle/api/Project;)V public final fun disableAutoConfig ()V public final fun enableAutoConfig ()V - public final fun getAutoConfig ()Ljava/util/concurrent/atomic/AtomicBoolean; + public final fun getAutoConfig ()Lorg/gradle/api/provider/Property; + public final fun getInjectDependencies ()Lorg/gradle/api/provider/Property; public final fun getJs ()Ldev/elide/buildtools/gradle/plugin/cfg/ElideJsHandler; public final fun getKotlinPluginOptions ()Ldev/elide/buildtools/gradle/plugin/cfg/ElideKotlinPluginsHandler; - public final fun getMode ()Ldev/elide/buildtools/gradle/plugin/BuildMode; + public final fun getMode ()Lorg/gradle/api/provider/Property; public final fun getServer ()Ldev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler; public final fun getVersion ()Lorg/gradle/api/provider/Property; public final fun hasJsTarget ()Z @@ -27,7 +29,6 @@ public class dev/elide/buildtools/gradle/plugin/ElideExtension { public final fun js (Lorg/gradle/api/Action;)V public final fun kotlinPlugins (Lorg/gradle/api/Action;)V public final fun server (Lorg/gradle/api/Action;)V - public final fun setMode (Ldev/elide/buildtools/gradle/plugin/BuildMode;)V } public final class dev/elide/buildtools/gradle/plugin/ElideExtension$Companion { @@ -60,6 +61,7 @@ public final class dev/elide/buildtools/gradle/plugin/cfg/AssetType : java/lang/ public static final field SCRIPT Ldev/elide/buildtools/gradle/plugin/cfg/AssetType; public static final field STYLESHEET Ldev/elide/buildtools/gradle/plugin/cfg/AssetType; public static final field TEXT Ldev/elide/buildtools/gradle/plugin/cfg/AssetType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; public static fun valueOf (Ljava/lang/String;)Ldev/elide/buildtools/gradle/plugin/cfg/AssetType; public static fun values ()[Ldev/elide/buildtools/gradle/plugin/cfg/AssetType; } @@ -85,6 +87,7 @@ public class dev/elide/buildtools/gradle/plugin/cfg/ElideAssetsHandler$AssetBund public class dev/elide/buildtools/gradle/plugin/cfg/ElideAssetsHandler$AssetCopySpec : org/gradle/api/file/CopySpec { public fun (Lorg/gradle/api/Project;Ldev/elide/buildtools/gradle/plugin/cfg/AssetType;Lorg/gradle/api/model/ObjectFactory;)V + public fun dirPermissions (Lorg/gradle/api/Action;)Lorg/gradle/api/file/CopyProcessingSpec; public synthetic fun eachFile (Lgroovy/lang/Closure;)Lorg/gradle/api/file/CopyProcessingSpec; public fun eachFile (Lgroovy/lang/Closure;)Lorg/gradle/api/file/CopySpec; public synthetic fun eachFile (Lorg/gradle/api/Action;)Lorg/gradle/api/file/CopyProcessingSpec; @@ -101,6 +104,7 @@ public class dev/elide/buildtools/gradle/plugin/cfg/ElideAssetsHandler$AssetCopy public fun expand (Ljava/util/Map;)Lorg/gradle/api/file/CopySpec; public synthetic fun expand (Ljava/util/Map;Lorg/gradle/api/Action;)Lorg/gradle/api/file/ContentFilterable; public fun expand (Ljava/util/Map;Lorg/gradle/api/Action;)Lorg/gradle/api/file/CopySpec; + public fun filePermissions (Lorg/gradle/api/Action;)Lorg/gradle/api/file/CopyProcessingSpec; public fun filesMatching (Ljava/lang/Iterable;Lorg/gradle/api/Action;)Lorg/gradle/api/file/CopySpec; public fun filesMatching (Ljava/lang/String;Lorg/gradle/api/Action;)Lorg/gradle/api/file/CopySpec; public fun filesNotMatching (Ljava/lang/Iterable;Lorg/gradle/api/Action;)Lorg/gradle/api/file/CopySpec; @@ -120,9 +124,11 @@ public class dev/elide/buildtools/gradle/plugin/cfg/ElideAssetsHandler$AssetCopy public synthetic fun from ([Ljava/lang/Object;)Lorg/gradle/api/file/CopySourceSpec; public fun from ([Ljava/lang/Object;)Lorg/gradle/api/file/CopySpec; public fun getDirMode ()Ljava/lang/Integer; + public fun getDirPermissions ()Lorg/gradle/api/provider/Property; public fun getDuplicatesStrategy ()Lorg/gradle/api/file/DuplicatesStrategy; public fun getExcludes ()Ljava/util/Set; public fun getFileMode ()Ljava/lang/Integer; + public fun getFilePermissions ()Lorg/gradle/api/provider/Property; public fun getFilteringCharset ()Ljava/lang/String; public fun getIncludeEmptyDirs ()Z public fun getIncludes ()Ljava/util/Set; @@ -201,6 +207,7 @@ public class dev/elide/buildtools/gradle/plugin/cfg/ElideAssetsHandler$ServerAss public final fun from (Lorg/gradle/api/Action;)V public final fun from (Lorg/gradle/api/Project;)V public final fun from (Lorg/gradle/api/artifacts/Configuration;Lorg/gradle/api/Project;)V + public final fun from (Lorg/gradle/api/internal/catalog/DelegatingProjectDependency;)V public final fun fromProject (Ljava/lang/String;Ljava/lang/String;)V public final fun fromProject (Lorg/gradle/api/Project;Ljava/lang/String;)V public static synthetic fun fromProject$default (Ldev/elide/buildtools/gradle/plugin/cfg/ElideAssetsHandler$ServerAsset;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)V @@ -244,41 +251,15 @@ public class dev/elide/buildtools/gradle/plugin/cfg/ElideKotlinPluginsHandler$Pl public final fun mask (Ljava/lang/String;)V } -public final class dev/elide/buildtools/gradle/plugin/cfg/ElidePluginConfig { - public static final field DEPENDENCY_BASE Ljava/lang/String; - public static final field DEPENDENCY_CATALOG Ljava/lang/String; - public static final field DEPENDENCY_CONVENTION Ljava/lang/String; - public static final field DEPENDENCY_FRONTEND Ljava/lang/String; - public static final field DEPENDENCY_GRAALVM Ljava/lang/String; - public static final field DEPENDENCY_GRAALVM_JS Ljava/lang/String; - public static final field DEPENDENCY_GRAALVM_REACT Ljava/lang/String; - public static final field DEPENDENCY_MODEL Ljava/lang/String; - public static final field DEPENDENCY_PLATFORM Ljava/lang/String; - public static final field DEPENDENCY_PROCESSOR Ljava/lang/String; - public static final field DEPENDENCY_PROTO Ljava/lang/String; - public static final field DEPENDENCY_PROTO_FLATBUFFERS Ljava/lang/String; - public static final field DEPENDENCY_PROTO_KOTLINX Ljava/lang/String; - public static final field DEPENDENCY_PROTO_PROTOBUF Ljava/lang/String; - public static final field DEPENDENCY_SERVER Ljava/lang/String; - public static final field DEPENDENCY_SSG Ljava/lang/String; - public static final field DEPENDENCY_SUBSTRATE Ljava/lang/String; - public static final field DEPENDENCY_TEST Ljava/lang/String; - public static final field ELIDE_LIB_VERSION Ljava/lang/String; - public static final field INSTANCE Ldev/elide/buildtools/gradle/plugin/cfg/ElidePluginConfig; -} - public class dev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler { public fun (Lorg/gradle/api/model/ObjectFactory;)V public final fun assets (Lorg/gradle/api/Action;)V public final fun getActive ()Ljava/util/concurrent/atomic/AtomicBoolean; public final fun getAssets ()Ldev/elide/buildtools/gradle/plugin/cfg/ElideAssetsHandler; - public final fun getSsg ()Ldev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler$StaticSiteHandler; public final fun getSsr ()Ldev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler$ServerSSRHandler; public final fun getSsrRuntime ()Ljava/util/concurrent/atomic/AtomicReference; public final fun hasAssets ()Z - public final fun hasSsgConfig ()Z public final fun hasSsrBundle ()Z - public final fun ssg (Lorg/gradle/api/Action;)V public final fun ssr (Ltools/elide/assets/EmbeddedScriptLanguage;Lorg/gradle/api/Action;)V public static synthetic fun ssr$default (Ldev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler;Ltools/elide/assets/EmbeddedScriptLanguage;Lorg/gradle/api/Action;ILjava/lang/Object;)V } @@ -286,19 +267,16 @@ public class dev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler { public class dev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler$ServerSSRHandler { public fun ()V public final fun bundle (Lorg/gradle/api/Project;Ljava/lang/String;)V + public final fun bundle (Lorg/gradle/api/internal/catalog/DelegatingProjectDependency;Ljava/lang/String;)V public static synthetic fun bundle$default (Ldev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler$ServerSSRHandler;Lorg/gradle/api/Project;Ljava/lang/String;ILjava/lang/Object;)V -} - -public class dev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler$StaticSiteHandler { - public fun ()V - public final fun disable ()V - public final fun enable ()V + public static synthetic fun bundle$default (Ldev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler$ServerSSRHandler;Lorg/gradle/api/internal/catalog/DelegatingProjectDependency;Ljava/lang/String;ILjava/lang/Object;)V } public final class dev/elide/buildtools/gradle/plugin/js/BundleTarget : java/lang/Enum { public static final field EMBEDDED Ldev/elide/buildtools/gradle/plugin/js/BundleTarget; public static final field NODE Ldev/elide/buildtools/gradle/plugin/js/BundleTarget; public static final field WEB Ldev/elide/buildtools/gradle/plugin/js/BundleTarget; + public static fun getEntries ()Lkotlin/enums/EnumEntries; public static fun valueOf (Ljava/lang/String;)Ldev/elide/buildtools/gradle/plugin/js/BundleTarget; public static fun values ()[Ldev/elide/buildtools/gradle/plugin/js/BundleTarget; } @@ -309,6 +287,7 @@ public final class dev/elide/buildtools/gradle/plugin/js/BundleTool : java/lang/ public static final field ESBUILD_NAME Ljava/lang/String; public static final field WEBPACK Ldev/elide/buildtools/gradle/plugin/js/BundleTool; public static final field WEBPACK_NAME Ljava/lang/String; + public static fun getEntries ()Lkotlin/enums/EnumEntries; public static fun valueOf (Ljava/lang/String;)Ldev/elide/buildtools/gradle/plugin/js/BundleTool; public static fun values ()[Ldev/elide/buildtools/gradle/plugin/js/BundleTool; } @@ -321,6 +300,7 @@ public final class dev/elide/buildtools/gradle/plugin/js/BundleType : java/lang/ public static final field Companion Ldev/elide/buildtools/gradle/plugin/js/BundleType$Companion; public static final field ESM Ldev/elide/buildtools/gradle/plugin/js/BundleType; public static final field IIFE Ldev/elide/buildtools/gradle/plugin/js/BundleType; + public static fun getEntries ()Lkotlin/enums/EnumEntries; public static fun valueOf (Ljava/lang/String;)Ldev/elide/buildtools/gradle/plugin/js/BundleType; public static fun values ()[Ldev/elide/buildtools/gradle/plugin/js/BundleType; } @@ -421,17 +401,6 @@ public abstract class dev/elide/buildtools/gradle/plugin/tasks/GenerateAssetGrap public final class dev/elide/buildtools/gradle/plugin/tasks/GenerateAssetGraphTask$Companion { } -public abstract class dev/elide/buildtools/gradle/plugin/tasks/GenerateStaticSiteTask : org/gradle/api/DefaultTask { - public static final field Companion Ldev/elide/buildtools/gradle/plugin/tasks/GenerateStaticSiteTask$Companion; - public fun ()V - public static final fun install (Ldev/elide/buildtools/gradle/plugin/ElideExtension;Lorg/gradle/api/Project;)V - public final fun runAction ()V -} - -public final class dev/elide/buildtools/gradle/plugin/tasks/GenerateStaticSiteTask$Companion { - public final fun install (Ldev/elide/buildtools/gradle/plugin/ElideExtension;Lorg/gradle/api/Project;)V -} - public abstract class dev/elide/buildtools/gradle/plugin/tasks/InflateRuntimeTask : org/gradle/api/DefaultTask { public static final field Companion Ldev/elide/buildtools/gradle/plugin/tasks/InflateRuntimeTask$Companion; public static final field TASK_NAME Ljava/lang/String; diff --git a/plugin-build/plugin/build.gradle.kts b/plugin-build/plugin/build.gradle.kts index d92dd467..8ab2c03e 100644 --- a/plugin-build/plugin/build.gradle.kts +++ b/plugin-build/plugin/build.gradle.kts @@ -1,3 +1,16 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + @file:Suppress( "DSL_SCOPE_VIOLATION", "UnstableApiUsage", @@ -8,25 +21,26 @@ import io.gitlab.arturbosch.detekt.Detekt import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { + `java-gradle-plugin` + kotlin("jvm") kotlin("plugin.noarg") kotlin("plugin.allopen") kotlin("plugin.serialization") id("org.jetbrains.kotlinx.kover") - id("java-gradle-plugin") - id("org.sonarqube") - id("com.adarshr.test-logger") id("com.gradle.plugin-publish") - id("com.github.gmazzo.buildconfig") + alias(libs.plugins.testLogger) + alias(libs.plugins.buildConfig) + alias(libs.plugins.sonar) alias(libs.plugins.shadow) } -val defaultJavaVersion = "11" -val defaultKotlinVersion = "1.8" +val defaultJavaVersion = "17" +val defaultKotlinVersion = "1.9" val defaultElideGroup = "dev.elide" -val elideToolsGroup = "dev.elide" +val elideToolsGroup = "dev.elide.tools" val javaLanguageVersion = project.properties["versions.java.target"] as? String ?: defaultJavaVersion val kotlinLanguageVersion = project.properties["versions.kotlin.language"] as? String ?: defaultKotlinVersion @@ -51,21 +65,15 @@ testlogger { slowThreshold = 30000L } -repositories { - mavenCentral() - gradlePluginPortal() - maven("https://elide-snapshots.storage-download.googleapis.com/repository/v3/") -} - sonarqube { properties { property("sonar.projectKey", "elide-dev_buildtools") property("sonar.organization", "elide-dev") property("sonar.host.url", "https://sonarcloud.io") property("sonar.dynamicAnalysis", "reuseReports") - property("sonar.junit.reportsPath", "$buildDir/reports/") + property("sonar.junit.reportsPath", layout.buildDirectory.dir("reports")) property("sonar.java.coveragePlugin", "jacoco") - property("sonar.coverage.jacoco.xmlReportPaths", "$buildDir/reports/kover/merged/xml/report.xml") + property("sonar.coverage.jacoco.xmlReportPaths", layout.buildDirectory.file("reports/kover/merged/xml/report.xml")) property("sonar.jacoco.reportPath", "build/jacoco/test.exec") property("sonar.sourceEncoding", "UTF-8") } @@ -89,12 +97,9 @@ buildConfig { } dependencyConfig("BASE", "elide-base") - dependencyConfig("PROTO", "elide-proto-core") + dependencyConfig("PROTO_CORE", "elide-proto") dependencyConfig("PROTO_PROTOBUF", "elide-proto-protobuf") - dependencyConfig("PROTO_FLATBUFFERS", "elide-proto-flatbuffers") - dependencyConfig("PROTO_KOTLINX", "elide-proto-kotlinx") dependencyConfig("SERVER", "elide-server") - dependencyConfig("SSG", "elide-ssg") dependencyConfig("MODEL", "elide-model") dependencyConfig("TEST", "elide-test") dependencyConfig("FRONTEND", "elide-frontend") @@ -104,7 +109,7 @@ buildConfig { dependencyConfig("PLATFORM", "elide-platform") dependencyConfig("CATALOG", "elide-bom") - dependencyConfig("PROCESSOR", "elide-ksp-processor", elideToolsGroup) + dependencyConfig("PROCESSOR", "elide-processor", elideToolsGroup) dependencyConfig("SUBSTRATE", "elide-substrate", elideToolsGroup) dependencyConfig("CONVENTION", "elide-convention-plugins", elideToolsGroup) } @@ -131,20 +136,11 @@ pluginBundle { } } -val micronautPlugin = "3.7.9" -val minimumMicronaut = "3.8.8" -val preferredMicronaut = "3.9.1" -val defaultJavaMin = "11" +val minimumMicronaut = "4.0.5" +val preferredMicronaut = "4.1.1" +val defaultJavaMin = "17" val defaultJavaMax = "19" - -val baseJavaMin: Int = ( - if (project.hasProperty("versions.java.minimum")) { - project.properties["versions.java.minimum"] as? String ?: defaultJavaMin - } else { - defaultJavaMin - } -).toInt() - +val baseJavaMin: Int = (defaultJavaMin).toInt() val skipVersions = sortedSetOf( 12, 13, @@ -180,10 +176,6 @@ sourceSets { } } -koverReport { - // Nothing. -} - val embedded: Configuration by configurations.creating val implementation: Configuration by configurations.getting @@ -192,14 +184,23 @@ configurations { runtimeClasspath.get().extendsFrom(embedded) } +configurations.all { + resolutionStrategy { + preferProjectModules() + } +} + dependencies { api(kotlin("gradle-plugin")) + api(libs.protobuf.java) + api(libs.protobuf.util) + api(libs.protobuf.kotlin) api(libs.elide.tools.processor) - implementation(libs.elide.base) - implementation(libs.elide.ssg) - implementation(libs.elide.proto.legacy) + api(libs.elide.base) + api(libs.elide.proto.core) + api(libs.elide.proto.protobuf) +// api(libs.elide.proto.legacy) - implementation(kotlin("stdlib-jdk7")) implementation(kotlin("stdlib-jdk8")) implementation(gradleApi()) api(libs.plugin.node) @@ -210,8 +211,8 @@ dependencies { api("io.micronaut.gradle:micronaut-gradle-plugin") { version { - strictly("[$micronautPlugin, $micronautPlugin]") - prefer(micronautPlugin) + strictly("[$minimumMicronaut, $preferredMicronaut]") + prefer(preferredMicronaut) } } @@ -229,14 +230,7 @@ dependencies { // Elide: Kotlin Plugins implementation(libs.elide.kotlin.plugin.redakt) - // Elide: Embedded Libs - embedded(libs.elide.base) - embedded(libs.elide.ssg) - // Elide: Embedded Tools - embedded(libs.closure.templates) - embedded(libs.closure.compiler) - embedded(libs.closure.stylesheets) embedded(libs.brotli) embedded(libs.brotli.native.osx) embedded(libs.brotli.native.linux) @@ -264,13 +258,12 @@ dependencies { } java { - sourceCompatibility = JavaVersion.VERSION_11 - targetCompatibility = JavaVersion.VERSION_11 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 } kotlin { explicitApi() - jvmToolchain(11) sourceSets.all { languageSettings.apply { @@ -281,30 +274,43 @@ kotlin { } } +tasks.compileKotlin.configure { + kotlinOptions { + apiVersion = kotlinLanguageVersion + languageVersion = kotlinLanguageVersion + jvmTarget = baseJavaMin.toString() + javaParameters = true + allWarningsAsErrors = false + incremental = true + } +} + +tasks.compileTestKotlin.configure { + kotlinOptions { + apiVersion = kotlinLanguageVersion + languageVersion = kotlinLanguageVersion + jvmTarget = baseJavaMin.toString() + javaParameters = true + allWarningsAsErrors = false + incremental = true + } +} + tasks.withType().configureEach { kotlinOptions { - apiVersion = "1.8" - languageVersion = "1.8" - jvmTarget = "11" + apiVersion = kotlinLanguageVersion + languageVersion = kotlinLanguageVersion + jvmTarget = baseJavaMin.toString() javaParameters = true - allWarningsAsErrors = true + allWarningsAsErrors = false incremental = true - freeCompilerArgs = listOf( - "-progressive", - "-Xcontext-receivers", - "-no-stdlib", - "-Xallow-unstable-dependencies", - "-Xemit-jvm-type-annotations", - "-Xjvm-default=all", - "-Xjsr305=strict", - ) } } detekt { - source = files( + source.from(files( "src/main/java" - ) + )) } ktlint { @@ -326,10 +332,11 @@ subprojects { property( "sonar.coverage.jacoco.xmlReportPaths", listOf( - "$buildDir/reports/jacoco/testCodeCoverageReport/testCodeCoverageReport.xml", - "$buildDir/reports/jacoco/testCodeCoverageReport/jacocoTestReport.xml", - "$buildDir/reports/jacoco/test/jacocoTestReport.xml", - "$buildDir/reports/kover/xml/coverage.xml", + layout.buildDirectory.file("reports/jacoco/testCodeCoverageReport/testCodeCoverageReport.xml"), + layout.buildDirectory.file("reports/jacoco/testCodeCoverageReport/jacocoTestReport.xml"), + layout.buildDirectory.file("reports/jacoco/test/jacocoTestReport.xml"), + layout.buildDirectory.file("reports/kover/xml/coverage.xml"), + layout.buildDirectory.file("reports/kover/xml/report.xml"), ) ) } @@ -351,7 +358,7 @@ tasks.create("copyNodeRuntimeAssets") { include("**/*.js") include("**/*.json") } - into("${project.buildDir}/elideJsRuntime/sources") + into(project.layout.buildDirectory.dir("elideJsRuntime/sources")) } tasks.create("packageRuntimeAssets") { @@ -363,14 +370,14 @@ tasks.create("packageRuntimeAssets") { archiveExtension.set("tar.gz") archiveVersion.set("") destinationDirectory.set( - file("${project.buildDir}/resources/main/dev/elide/buildtools/js/runtime") + file(layout.buildDirectory.dir("resources/main/dev/elide/buildtools/js/runtime")) ) dependsOn( tasks.named("copyNodeRuntimeAssets") ) into("/") { - from("${project.buildDir}/elideJsRuntime/sources") + from(layout.buildDirectory.dir("elideJsRuntime/sources")) include( "**/*.json", "**/*.js" @@ -403,7 +410,7 @@ tasks.named("check").configure { dependsOn("test") dependsOn("detekt") dependsOn("ktlintCheck") -// dependsOn("koverReportXml") + dependsOn("koverXmlReport") dependsOn("koverVerify") } diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/ElideExtension.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/ElideExtension.kt index 6cb683c9..dca5fb62 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/ElideExtension.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/ElideExtension.kt @@ -19,7 +19,10 @@ public open class ElideExtension @Inject constructor(project: Project) { public val version: Property = objects.property(String::class.java) /** Whether to auto-configure the build, including injected dependencies. */ - public val autoConfig: AtomicBoolean = AtomicBoolean(true) + public val autoConfig: Property = objects.property(Boolean::class.java).value(true) + + /** Whether to auto-configure the build, including injected dependencies. */ + public val injectDependencies: Property = objects.property(Boolean::class.java).value(true) /** Configuration for JS runtime settings. */ public val js: ElideJsHandler = objects.newInstance(ElideJsHandler::class.java) @@ -83,5 +86,7 @@ public open class ElideExtension @Inject constructor(project: Project) { } /** Operating build mode for a given plugin run. */ - @get:Optional public var mode: BuildMode = BuildMode.PRODUCTION + @get:Optional public val mode: Property = objects.property(BuildMode::class.java).value( + BuildMode.PRODUCTION + ) } diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/ElidePlugin.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/ElidePlugin.kt index b9741a73..af252828 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/ElidePlugin.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/ElidePlugin.kt @@ -8,7 +8,6 @@ import dev.elide.buildtools.gradle.plugin.tasks.ElideDependencies.installElidePr import dev.elide.buildtools.gradle.plugin.tasks.ElideDependencies.installJavaPlatform import dev.elide.buildtools.gradle.plugin.tasks.ElideDependencies.installServerLibs import dev.elide.buildtools.gradle.plugin.tasks.EmbeddedJsBuildTask -import dev.elide.buildtools.gradle.plugin.tasks.GenerateStaticSiteTask import org.gradle.api.Plugin import org.gradle.api.Project @@ -19,7 +18,6 @@ public abstract class ElidePlugin : Plugin { public const val EXTENSION_NAME: String = "elide" } - /** @inheritDoc */ override fun apply(project: Project): Unit = project.run { var kotlinPluginFound = false var isKotlinJVM = false @@ -61,14 +59,6 @@ public abstract class ElidePlugin : Plugin { // versions remain consistent throughout. if (isKotlinJVM) project.installJavaPlatform() } - - // install the SSG compiler task, which will avoid running if the project is not eligible. - if (kotlinPluginFound && !isKotlinJS) { - GenerateStaticSiteTask.install( - elide, - project, - ) - } } // if the embedded JS plugin can be applied (node context, kotlin JS, etc), then do that. diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/cfg/ElideAssetsHandler.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/cfg/ElideAssetsHandler.kt index ba1d3d42..3e98e855 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/cfg/ElideAssetsHandler.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/cfg/ElideAssetsHandler.kt @@ -4,14 +4,13 @@ import org.gradle.api.Action import org.gradle.api.Project import org.gradle.api.artifacts.Configuration import org.gradle.api.file.CopySpec +import org.gradle.api.internal.catalog.DelegatingProjectDependency import org.gradle.api.model.ObjectFactory import tools.elide.assets.ManifestFormat import tools.elide.crypto.HashAlgorithm import tools.elide.data.CompressionMode import java.io.File -import java.util.EnumSet -import java.util.SortedSet -import java.util.TreeSet +import java.util.* import java.util.concurrent.ConcurrentSkipListMap import java.util.concurrent.atomic.AtomicBoolean import java.util.concurrent.atomic.AtomicInteger @@ -215,6 +214,22 @@ public open class ElideAssetsHandler @Inject constructor( ) } + /** + * Pull an asset from somewhere else in a Gradle project where the plugin is equipped; in this case, using a + * symbolic project dependency. + * + * @param accessor Symbolic dependency. + */ + public fun from(accessor: DelegatingProjectDependency): Unit = accessor.dependencyProject.let { project -> + projectDeps.get().add( + InterProjectAssetHandler.fromProject( + objects, + project.path, + BROWSER_DIST_TARGET, + ) + ) + } + /** * Pull an asset from somewhere else in a Gradle project where the plugin is equipped; in this case, using a * [block] to configure the dependency mapping. diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler.kt index f131cb08..8c1f2e4b 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/cfg/ElideServerHandler.kt @@ -2,15 +2,12 @@ package dev.elide.buildtools.gradle.plugin.cfg import org.gradle.api.Action import org.gradle.api.Project +import org.gradle.api.internal.catalog.DelegatingProjectDependency import org.gradle.api.model.ObjectFactory import tools.elide.assets.EmbeddedScriptLanguage -import java.util.SortedSet -import java.util.concurrent.ConcurrentSkipListSet import java.util.concurrent.atomic.AtomicBoolean -import java.util.concurrent.atomic.AtomicInteger import java.util.concurrent.atomic.AtomicReference import javax.inject.Inject -import elide.tool.ssg.SiteCompilerParams.Options as CompilerOptions /** Elide JVM server target settings. */ @Suppress("MemberVisibilityCanBePrivate", "unused") @@ -29,9 +26,6 @@ public open class ElideServerHandler @Inject constructor(objects: ObjectFactory) /** Server embedded SSR configuration. */ public val ssr: ServerSSRHandler = objects.newInstance(ServerSSRHandler::class.java) - /** Static site generator (SSG) configuration. */ - public val ssg: StaticSiteHandler = objects.newInstance(StaticSiteHandler::class.java) - /** Server SSR runtime configuration. */ public val ssrRuntime: AtomicReference = AtomicReference(defaultScriptLanguage) @@ -40,22 +34,11 @@ public open class ElideServerHandler @Inject constructor(objects: ObjectFactory) return ssr.hasBundle() } - /** @return True if the user has configured an SSG target from their build script. */ - public fun hasSsgConfig(): Boolean { - return ssg.enabled.get() - } - /** @return Whether the user has configured assets */ public fun hasAssets(): Boolean { return assets.active.get() } - /** Configure SSG compilation pass. */ - public fun ssg(action: Action) { - ssg.enabled.set(true) - action.execute(ssg) - } - /** Configure server-embedded assets. */ public fun assets(action: Action) { action.execute(assets) @@ -92,51 +75,14 @@ public open class ElideServerHandler @Inject constructor(objects: ObjectFactory) targetProject.set(project.path) targetConfiguration.set(configuration) } - } - - /** Configures SSG (static site generator) features for Elide server targets. */ - public open class StaticSiteHandler { - /** Whether the user configured a static site target in their build script. */ - internal val enabled: AtomicBoolean = AtomicBoolean(false) - - /** Explicit manifest path; if not provided, one will be calculated/resolved. */ - internal val manifest: AtomicReference = AtomicReference(null) - - /** Explicit output path; if not provided, one will be calculated. */ - internal val output: AtomicReference = AtomicReference(null) - - /** Explicit target app path; if not provided, one will be calculated. */ - internal val target: AtomicReference = AtomicReference(null) - - /** Whether to run the SSG site task in verbose mode. */ - internal val verbose: AtomicBoolean = AtomicBoolean(CompilerOptions.DEFAULTS.verbose) - /** Whether to run the SSG site task in debug mode. */ - internal val debug: AtomicBoolean = AtomicBoolean(CompilerOptions.DEFAULTS.debug) - - /** Whether to allow colorized/dynamic output. */ - internal val pretty: AtomicBoolean = AtomicBoolean(CompilerOptions.DEFAULTS.pretty) - - /** Whether to crawl for additional assets. */ - internal val crawl: AtomicBoolean = AtomicBoolean(CompilerOptions.DEFAULTS.crawl) - - /** Response timeout to apply when operating in HTTP mode. */ - internal val timeout: AtomicInteger = AtomicInteger(CompilerOptions.DEFAULT_REQUEST_TIMEOUT) - - /** Response timeout to apply when operating in HTTP mode. */ - internal val extraOrigins: SortedSet = ConcurrentSkipListSet() - - /** Whether to ignore cert errors when operating in HTTP mode. */ - internal val ignoreCertErrors: AtomicBoolean = AtomicBoolean(CompilerOptions.DEFAULTS.ignoreCertErrors) - - /** Enable a static site build run for a given server target. */ - public fun enable() { - enabled.set(true) - } - - /** Disable a static site build run for a given server target. */ - public fun disable() { - enabled.set(false) + /** Inject the specified JS bundle as an SSR application script, using a symbolic project dependency. */ + public fun bundle( + accessor: DelegatingProjectDependency, + configuration: String = defaultSsrConfiguration, + ): Unit = accessor.dependencyProject.let { project -> + targetProject.set(project.path) + targetConfiguration.set(configuration) } } } diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/kotlin/AbstractCompilerPluginHost.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/kotlin/AbstractCompilerPluginHost.kt index ffd2d773..097b876b 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/kotlin/AbstractCompilerPluginHost.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/kotlin/AbstractCompilerPluginHost.kt @@ -22,12 +22,12 @@ import org.jetbrains.kotlin.gradle.plugin.SubpluginOption internal abstract class AbstractCompilerPluginHost protected constructor ( private val pluginId: String, private val groupId: String = defaultPluginGroup, - private val artifactId: String = "kotlin-$pluginId-plugin", + private val artifactId: String = "$pluginId-plugin", private val version: String = ELIDE_LIB_VERSION, ) : KotlinCompilerPluginSupportPlugin { internal companion object { // Default plugin group. - internal const val defaultPluginGroup: String = "dev.elide" + internal const val defaultPluginGroup: String = "dev.elide.tools.kotlin.plugin" } /** Plugin configuration, delivered via Gradle. */ @@ -36,20 +36,16 @@ internal abstract class AbstractCompilerPluginHost): Boolean = true - /** @inheritDoc */ override fun getCompilerPluginId(): String = pluginId - /** @inheritDoc */ override fun getPluginArtifact(): SubpluginArtifact = SubpluginArtifact( groupId = groupId, artifactId = artifactId, version = version, ) - /** @inheritDoc */ override fun applyToCompilation(kotlinCompilation: KotlinCompilation<*>): Provider> { val project = kotlinCompilation.target.project val extension = project.extensions.getByType(ElideExtension::class.java) diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/kotlin/RedaktPluginHost.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/kotlin/RedaktPluginHost.kt index 6787a58a..8348640d 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/kotlin/RedaktPluginHost.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/kotlin/RedaktPluginHost.kt @@ -13,10 +13,8 @@ import org.jetbrains.kotlin.gradle.plugin.SubpluginOption /** Host plugin for the Redakt compiler plugin for Kotlin. */ // @TODO(sgammon): symbolic plugin ID @Internal internal class RedaktPluginHost : AbstractCompilerPluginHost(pluginId) { - /** @inheritDoc */ override fun resolve(config: ElideKotlinPluginsHandler): RedaktHandler = config.redaktOptions - /** @inheritDoc */ override fun configure(extension: ElideExtension, project: Project): List = listOf( SubpluginOption( key = "enabled", diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleAssetsBuildTask.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleAssetsBuildTask.kt index ce65f611..03cbbbb7 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleAssetsBuildTask.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleAssetsBuildTask.kt @@ -410,7 +410,6 @@ public abstract class BundleAssetsBuildTask : BundleBaseTask() { ) internal abstract val assets: ListProperty - /** @inheritDoc */ override fun runAction() { // nothing at this time } diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleBaseTask.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleBaseTask.kt index ae6b176e..e93ff4eb 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleBaseTask.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleBaseTask.kt @@ -88,21 +88,21 @@ public abstract class BundleBaseTask : DefaultTask() { // resolve the inflate-runtime task installed on the root project, or if there is not one, create it. return try { if ( - project.rootProject.tasks.findByPath(":${InflateRuntimeTask.TASK_NAME}") != null + project.tasks.findByName(InflateRuntimeTask.TASK_NAME) != null ) { - project.rootProject.tasks.named(InflateRuntimeTask.TASK_NAME, InflateRuntimeTask::class.java) + project.tasks.named(InflateRuntimeTask.TASK_NAME, InflateRuntimeTask::class.java) .get() } else { InflateRuntimeTask.install( extension, - project.rootProject, + project, ) } } catch (noSuchTask: UnknownTaskException) { // install it InflateRuntimeTask.install( extension, - project.rootProject, + project, ) } } diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleWriteTask.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleWriteTask.kt index 6ec843db..78480a4b 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleWriteTask.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/BundleWriteTask.kt @@ -65,7 +65,6 @@ public abstract class BundleWriteTask : BundleBaseTask() { } } - /** @inheritDoc */ override fun runAction() { val sourceTask = project.tasks.named(sourceTaskName.get(), BundleSpecTask::class.java).get() val assetSpec = sourceTask.assetSpec.get() diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/ElideDependencies.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/ElideDependencies.kt index 80165192..61ea34ec 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/ElideDependencies.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/ElideDependencies.kt @@ -13,7 +13,8 @@ import dev.elide.buildtools.gradle.plugin.cfg.ElidePluginConfig.DEPENDENCY_GRAAL import dev.elide.buildtools.gradle.plugin.cfg.ElidePluginConfig.DEPENDENCY_MODEL import dev.elide.buildtools.gradle.plugin.cfg.ElidePluginConfig.DEPENDENCY_PLATFORM import dev.elide.buildtools.gradle.plugin.cfg.ElidePluginConfig.DEPENDENCY_PROCESSOR -import dev.elide.buildtools.gradle.plugin.cfg.ElidePluginConfig.DEPENDENCY_PROTO +import dev.elide.buildtools.gradle.plugin.cfg.ElidePluginConfig.DEPENDENCY_PROTO_CORE +import dev.elide.buildtools.gradle.plugin.cfg.ElidePluginConfig.DEPENDENCY_PROTO_PROTOBUF import dev.elide.buildtools.gradle.plugin.cfg.ElidePluginConfig.DEPENDENCY_SERVER import dev.elide.buildtools.gradle.plugin.cfg.ElidePluginConfig.DEPENDENCY_SUBSTRATE import dev.elide.buildtools.gradle.plugin.cfg.ElidePluginConfig.DEPENDENCY_TEST @@ -33,7 +34,7 @@ internal object ElideDependencies { private const val libraryGroup = "dev.elide" /** Default Group ID for tooling dependencies. */ - private const val toolsGroup = "dev.elide" + private const val toolsGroup = "dev.elide.tools" /** Enumerates supported dependency targets (Gradle configurations) for Elide dependency injection. */ internal enum class DependencyTarget constructor ( @@ -145,8 +146,16 @@ internal object ElideDependencies { ), /** Protocol Buffers package. */ - PROTO( - spec = DEPENDENCY_PROTO, + PROTO_CORE( + spec = DEPENDENCY_PROTO_CORE, + config = DependencyVisibility.API, + type = DependencyTarget.MAIN, + supports = EnumSet.of(DependencyPlatform.JVM), + ), + + /** Protocol Buffers package. */ + PROTO_PROTOBUF( + spec = DEPENDENCY_PROTO_PROTOBUF, config = DependencyVisibility.API, type = DependencyTarget.MAIN, supports = EnumSet.of(DependencyPlatform.JVM), @@ -192,19 +201,14 @@ internal object ElideDependencies { supports = EnumSet.of(DependencyPlatform.JS), ); - /** @inheritDoc */ override val target: DependencyTarget get() = type - /** @inehritDoc */ override val visibility: DependencyVisibility get() = config - /** @inheritDoc */ override val artifactId: String get() = spec.substringAfter(":") - /** @inheritDoc */ override val groupId: String get() = spec.ifBlank { libraryGroup }.substringBefore(":") - /** @inheritDoc */ override val platforms: EnumSet get() = supports } @@ -281,8 +285,11 @@ internal object ElideDependencies { /** `model` library. */ val MODEL = ElideDependency.CommonLibrary(Package.MODEL) - /** `proto` library. */ - val PROTO = ElideDependency.JVMLibrary(Package.PROTO) + /** `proto-core` library. */ + val PROTO_CORE = ElideDependency.JVMLibrary(Package.PROTO_CORE) + + /** `proto-protobuf` library. */ + val PROTO_PROTOBUF = ElideDependency.JVMLibrary(Package.PROTO_PROTOBUF) /** `server` library. */ val SERVER = ElideDependency.JVMLibrary(Package.SERVER) @@ -449,6 +456,9 @@ internal object ElideDependencies { logger.debug("[Elide]: Dependency '${spec.groupId}:${spec.artifactId}' requested") } val extension = extensions.getByType(ElideExtension::class.java) + if (!extension.injectDependencies.get()) { + return // skip if instructed + } val configuration = resolveConfigurationForSpec(spec) // check for an existing dependency diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/EmbeddedJsBuildTask.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/EmbeddedJsBuildTask.kt index ca7d7720..cbfbf912 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/EmbeddedJsBuildTask.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/EmbeddedJsBuildTask.kt @@ -202,7 +202,7 @@ public abstract class EmbeddedJsBuildTask : BundleSpecTask + BuildMode.entries.forEach { mode -> setupEmbeddedEsbuildTask( mode, project, @@ -217,7 +217,7 @@ public abstract class EmbeddedJsBuildTask : BundleSpecTask + BuildMode.entries.forEach { mode -> setupBrowserWebpackBuildTask( mode, project, @@ -233,40 +233,37 @@ public abstract class EmbeddedJsBuildTask : BundleSpecTask Unit): EmbeddedScript { return embeddedScript(builderOp) } - /** @inheritDoc */ override fun assetCatalog(): EmbeddedBundleSpec.() -> Unit = { module = libraryName filename = outputBundleName.get() @@ -654,19 +649,16 @@ public abstract class EmbeddedJsBuildTask : BundleSpecTask EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel.ES2017 "2018" -> EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel.ES2018 "2019" -> EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel.ES2019 - "2020", - "2021", - "2022" -> EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel.ES2020 - // @TODO(sgammon): fix JVM base for proto so this can be re-enabled + "2020" -> EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel.ES2020 + else -> EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel.ES2020 // "2021" -> EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel.ES2021 // "2022" -> EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel.ES2022 - else -> EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel.ES2020 +// else -> EmbeddedScriptMetadata.JsScriptMetadata.JsLanguageLevel.ES2022 } } } } - /** @inheritDoc */ override fun runAction() { processShim.get().writeText( renderTemplateVals(processShimTemplate) diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/GenerateAssetGraphTask.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/GenerateAssetGraphTask.kt index 88012986..347337cd 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/GenerateAssetGraphTask.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/GenerateAssetGraphTask.kt @@ -53,7 +53,6 @@ import java.util.zip.CRC32 import java.util.zip.Deflater import java.util.zip.DeflaterOutputStream import javax.inject.Inject -import kotlin.streams.toList /** Task to interpret server-side asset configuration and content into a compiled asset bundle. */ @Suppress("UnstableApiUsage", "SameParameterValue", "LargeClass") @@ -102,7 +101,7 @@ public abstract class GenerateAssetGraphTask @Inject constructor(objects: Object var digestTarget = digester.digest() if (rounds - 1 > 0) { - (1 until rounds).forEach { _ -> + for (round in (1 until rounds)) { digester = algo.digester()!! digestTarget = digester.digest(digestTarget) } @@ -185,7 +184,6 @@ public abstract class GenerateAssetGraphTask @Inject constructor(objects: Object .edgeOrder(ElementOrder.stable()) .immutable() - /** @inheritDoc */ override fun runAction() { val inputs = inputFiles.get() val assetModules = assetModules.get() @@ -557,7 +555,6 @@ public abstract class GenerateAssetGraphTask @Inject constructor(objects: Object }.toList() } - @Suppress("USELESS_ELVIS") private fun buildAssetDescriptor( hashAlgorithm: HashAlgorithm, collectedBuilders: List>, diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/GenerateStaticSiteTask.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/GenerateStaticSiteTask.kt deleted file mode 100644 index 89d046a7..00000000 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/GenerateStaticSiteTask.kt +++ /dev/null @@ -1,68 +0,0 @@ -package dev.elide.buildtools.gradle.plugin.tasks - -import dev.elide.buildtools.gradle.plugin.ElideExtension -import org.gradle.api.DefaultTask -import org.gradle.api.Project -import org.gradle.api.tasks.TaskAction - -/** - * # Task: Generate Static Site - * - * This task implements the Static Site Generator (SSG) tooling for the Elide plugin. It is responsible for executing - * built app handlers to produce a static site at build time, based on the manifest created by the KSP-based route - * processor. - */ -public abstract class GenerateStaticSiteTask : DefaultTask() { - public companion object { - private const val TASK_NAME: String = "generateStaticSite" - private const val KSP_TASK: String = "kspKotlin" - - // After determining the SSG build is eligible to run, apply plugins, then build/install tasks. - @JvmStatic public fun install(extension: ElideExtension, project: Project) { - project.afterEvaluate { - installIfEligible(extension, project) - } - } - - // Determine whether the SSG compiler can run, and if so, install it. - @JvmStatic private fun installIfEligible(extension: ElideExtension, project: Project) { - if (!extension.server.hasSsgConfig()) { - return // no need to subscribe - } - project.pluginManager.withPlugin("com.google.devtools.ksp") { - val producer = project.tasks.findByName(KSP_TASK) - val assetBuilder = project.tasks.findByName(BundleAssetsBuildTask.TASK_NAME) - - when { - // make sure KSP is installed and working - producer == null && extension.server.hasSsgConfig() -> error( - "Cannot run SSG compiler: KSP task not found. Please make sure KSP is installed and applied." - ) - - // make sure this task has an asset bundle target - assetBuilder == null -> error( - "Cannot run SSG compiler: asset builder task not found" - ) - - // otherwise we're ready to rock - else -> project.tasks.create(TASK_NAME, GenerateStaticSiteTask::class.java) { - it.description = "Generate a static site from this app" - it.group = "build" - it.enabled = extension.server.hasSsgConfig() - it.dependsOn.addAll(listOf( - producer, - assetBuilder, - )) - } - } - } - } - } - - /** - * Run the action to fulfill SSG build settings, by generating a static site from the target application. - */ - @TaskAction public fun runAction() { - project.logger.lifecycle("Generating site via SSG...") - } -} diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/InflateRuntimeTask.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/InflateRuntimeTask.kt index 004f2603..d0fff1fb 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/InflateRuntimeTask.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/InflateRuntimeTask.kt @@ -36,7 +36,7 @@ public abstract class InflateRuntimeTask : DefaultTask() { init { with(project) { destinationDirectory.set( - file("${rootProject.buildDir}/js/elideRuntime") + file(layout.buildDirectory.dir("js/elideRuntime")) ) modulesPath.set( file("${destinationDirectory.get()}/node_modules") @@ -46,7 +46,7 @@ public abstract class InflateRuntimeTask : DefaultTask() { RUNTIME_PKG ) ?: throw FileNotFoundException( "Failed to locate JS runtime package. This is an internal error; please report it to the Elide " + - "project at https://github.com/elide-dev/elide/issues." + "team at https://github.com/elide-dev/elide/issues." ) ) } diff --git a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/Versions.kt b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/Versions.kt index c1588c5e..3aaa008b 100644 --- a/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/Versions.kt +++ b/plugin-build/plugin/src/main/java/dev/elide/buildtools/gradle/plugin/tasks/Versions.kt @@ -3,7 +3,7 @@ package dev.elide.buildtools.gradle.plugin.tasks /** Versions of build tools depended on by the embedded JS build task. */ public object Versions { /** Embedded `esbuild` default version. */ - public const val esbuild: String = "0.16.17" + public const val esbuild: String = "0.18.17" /** Embedded `prepack` default version. */ public const val prepack: String = "0.2.54" diff --git a/plugin-build/plugin/src/main/node/runtime/emotion-server/index.d.ts b/plugin-build/plugin/src/main/node/runtime/emotion-server/index.d.ts index 8e66a539..474da37a 100644 --- a/plugin-build/plugin/src/main/node/runtime/emotion-server/index.d.ts +++ b/plugin-build/plugin/src/main/node/runtime/emotion-server/index.d.ts @@ -1,3 +1,16 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + import type { EmotionCache } from "@emotion/utils"; interface EmotionCriticalToChunks { diff --git a/plugin-build/plugin/src/main/node/runtime/emotion-server/index.js b/plugin-build/plugin/src/main/node/runtime/emotion-server/index.js index 4c0fab5c..6cf8032c 100644 --- a/plugin-build/plugin/src/main/node/runtime/emotion-server/index.js +++ b/plugin-build/plugin/src/main/node/runtime/emotion-server/index.js @@ -1,3 +1,16 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + function createExtractCriticalToChunks(cache) { return function (html) { const RGX = new RegExp(`${cache.key}-([a-zA-Z0-9-_]+)`, "gm"); diff --git a/plugin-build/plugin/src/main/node/runtime/stream/index.js b/plugin-build/plugin/src/main/node/runtime/stream/index.js index 19591a8d..03925c04 100644 --- a/plugin-build/plugin/src/main/node/runtime/stream/index.js +++ b/plugin-build/plugin/src/main/node/runtime/stream/index.js @@ -1,3 +1,16 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + const { Readable, Writable, diff --git a/plugin-build/settings.gradle.kts b/plugin-build/settings.gradle.kts index 0b983ea2..936eaa69 100644 --- a/plugin-build/settings.gradle.kts +++ b/plugin-build/settings.gradle.kts @@ -1,25 +1,42 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + @file:Suppress("UnstableApiUsage") pluginManagement { repositories { - mavenCentral() - gradlePluginPortal() + maven("https://gradle.pkg.st/") + maven("https://maven.pkg.st/") maven("https://elide-snapshots.storage-download.googleapis.com/repository/v3/") } } plugins { - id("org.gradle.toolchains.foojay-resolver-convention") version("0.5.0") + id("build.less") version("1.0.0-beta1") + id("com.gradle.enterprise") version("3.15") + id("org.gradle.toolchains.foojay-resolver-convention") version("0.7.0") } dependencyResolutionManagement { - repositoriesMode.set( - RepositoriesMode.PREFER_PROJECT - ) + repositoriesMode = RepositoriesMode.FAIL_ON_PROJECT_REPOS + repositories { - mavenCentral() - gradlePluginPortal() + maven("https://maven.pkg.st/") + maven("https://gradle.pkg.st/") maven("https://elide-snapshots.storage-download.googleapis.com/repository/v3/") + maven("https://maven.pkg.jetbrains.space/kotlin/p/wasm/experimental") + maven("https://maven.pkg.jetbrains.space/public/p/compose/dev/") + mavenLocal() } versionCatalogs { create("libs") { @@ -28,37 +45,11 @@ dependencyResolutionManagement { } } -rootProject.name = ("dev.elide.buildtools.gradle") +rootProject.name = ("elideGradlePlugin") include( ":plugin" ) -val cacheUsername: String? by settings -val cachePassword: String? by settings -val cachePush: String? by settings -val remoteCache = System.getenv("GRADLE_CACHE_REMOTE")?.toBoolean() ?: false -val localCache = System.getenv("GRADLE_LOCAL_REMOTE")?.toBoolean() ?: true - -buildCache { - local { - isEnabled = localCache - } - - if (remoteCache) { - remote { - isEnabled = true - isPush = (cachePush ?: System.getenv("GRADLE_CACHE_PUSH")) == "true" - url = uri("https://gradle.less.build/cache/generic/") - when (val pswd = cachePassword ?: System.getenv("GRADLE_CACHE_PASSWORD")) { - null -> {} - else -> credentials { - username = cacheUsername ?: System.getenv("GRADLE_CACHE_USERNAME") ?: "apikey" - password = pswd - } - } - } - } -} - enableFeaturePreview("STABLE_CONFIGURATION_CACHE") +enableFeaturePreview("GROOVY_COMPILATION_AVOIDANCE") diff --git a/settings-gradle.lockfile b/settings-gradle.lockfile new file mode 100644 index 00000000..709a43f7 --- /dev/null +++ b/settings-gradle.lockfile @@ -0,0 +1,4 @@ +# This is a Gradle generated file for dependency locking. +# Manual edits can break the build and are not advised. +# This file is expected to be part of source control. +empty=incomingCatalogForLibs0 diff --git a/settings.gradle.kts b/settings.gradle.kts index 21d51c87..be34056f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,40 +1,46 @@ +/* + * Copyright (c) 2023 Elide Ventures, LLC. + * + * Licensed under the MIT license (the "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * https://opensource.org/license/mit/ + * + * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on + * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under the License. + */ + +import build.less.plugin.settings.buildless + pluginManagement { repositories { - mavenCentral() - gradlePluginPortal() + maven("https://maven.pkg.st/") + maven("https://gradle.pkg.st/") maven("https://elide-snapshots.storage-download.googleapis.com/repository/v3/") + maven("https://maven.pkg.jetbrains.space/kotlin/p/wasm/experimental") } } plugins { - id("com.gradle.enterprise") version("3.13.1") - id("org.gradle.toolchains.foojay-resolver-convention") version("0.5.0") + id("build.less") version("1.0.0-beta1") + id("com.gradle.enterprise") version("3.15") + id("org.gradle.toolchains.foojay-resolver-convention") version("0.7.0") } dependencyResolutionManagement { - repositoriesMode.set( - RepositoriesMode.PREFER_PROJECT - ) repositories { - mavenCentral() - gradlePluginPortal() + maven("https://maven.pkg.st/") + maven("https://gradle.pkg.st/") maven("https://elide-snapshots.storage-download.googleapis.com/repository/v3/") + maven("https://oss.sonatype.org/content/repositories/snapshots") + maven("https://maven.pkg.jetbrains.space/kotlin/p/dokka/dev") + maven("https://maven.pkg.jetbrains.space/kotlin/p/wasm/experimental") + mavenLocal() } } rootProject.name = "elide-gradle-plugin" - -val buildExamples: String? by settings -if (buildExamples == "true") { - include( - ":example:fullstack:browser", - ":example:fullstack:node", - ":example:fullstack:server", - ":example:static:frontend", - ":example:static:server", - ":example:mixed", - ) -} includeBuild("plugin-build") gradleEnterprise { @@ -44,32 +50,8 @@ gradleEnterprise { } } -val cacheUsername: String? by settings -val cachePassword: String? by settings -val cachePush: String? by settings -val remoteCache = System.getenv("GRADLE_CACHE_REMOTE")?.toBoolean() ?: false -val localCache = System.getenv("GRADLE_LOCAL_REMOTE")?.toBoolean() ?: true - -buildCache { - local { - isEnabled = localCache - } - - if (remoteCache) { - remote { - isEnabled = true - isPush = (cachePush ?: System.getenv("GRADLE_CACHE_PUSH")) == "true" - isUseExpectContinue = true - url = uri(System.getenv("CACHE_ENDPOINT") ?: "https://gradle.less.build/cache/generic/") - when (val pswd = cachePassword ?: System.getenv("GRADLE_CACHE_PASSWORD")) { - null -> {} - else -> credentials { - username = cacheUsername ?: System.getenv("GRADLE_CACHE_USERNAME") ?: "apikey" - password = pswd - } - } - } - } +buildless { + // nothing at this time } enableFeaturePreview("STABLE_CONFIGURATION_CACHE")