{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.model.Cause$UserIdCause",
          "shortDescription" : "Started by user Pooja Ravi",
          "userId" : "pooja",
          "userName" : "Pooja Ravi"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/main" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 13,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
            "branch" : [
              {
                "SHA1" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
                "name" : "refs/remotes/origin/main"
              }
            ]
          },
          "revision" : {
            "SHA1" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
            "branch" : [
              {
                "SHA1" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
                "name" : "refs/remotes/origin/main"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
        "branch" : [
          {
            "SHA1" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
            "name" : "refs/remotes/origin/main"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/UstadMobile/Respect.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    {
      "displayPath" : "respect-app-compose-debug.apk",
      "fileName" : "respect-app-compose-debug.apk",
      "relativePath" : "respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk"
    },
    {
      "displayPath" : "respect-app-compose-release.apk",
      "fileName" : "respect-app-compose-release.apk",
      "relativePath" : "respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk"
    },
    {
      "displayPath" : "respect-cli.zip",
      "fileName" : "respect-cli.zip",
      "relativePath" : "respect-cli/build/distributions/respect-cli.zip"
    }
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#13",
  "duration" : 106561,
  "estimatedDuration" : 115562,
  "executor" : None,
  "fullDisplayName" : "RESPECT-Primary #13",
  "id" : "13",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 13,
  "queueId" : 3292,
  "result" : "SUCCESS",
  "timestamp" : 1752984929621,
  "url" : "https://devserver3.ustadmobile.com/jenkins/job/RESPECT-Primary/13/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "LICENSE"
        ],
        "commitId" : "f682a3a56594520da8437a8ba68fddae6cbee7a2",
        "timestamp" : 1752751354000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Create LICENSE\u000a",
        "date" : "2025-07-17 15:22:34 +0400",
        "id" : "f682a3a56594520da8437a8ba68fddae6cbee7a2",
        "msg" : "Create LICENSE",
        "paths" : [
          {
            "editType" : "add",
            "file" : "LICENSE"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect.db"
        ],
        "commitId" : "7de1b0182c567cfe256dd66757ca76fb7c9ea17a",
        "timestamp" : 1752752105000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove respect.db file\u000a",
        "date" : "2025-07-17 15:35:05 +0400",
        "id" : "7de1b0182c567cfe256dd66757ca76fb7c9ea17a",
        "msg" : "Remove respect.db file",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect.db"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/StringResponse.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MergedHeaders.kt",
          "respect-lib-ihttp-core/build.gradle.kts",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeadersImpl.kt",
          "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/ByteArrayExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithTextBody.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHeadersBuilder.kt",
          "respect-lib-ihttp-core/src/jsMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.js.kt",
          "respect-lib-ihttp-iostreams/.gitignore",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/StringExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/IHttpResponse.kt",
          "respect-lib-ihttp-core/src/androidMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.android.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MapHttpHeadersAdapter.kt",
          "gradle/libs.versions.toml",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequest.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderImpl.kt",
          "respect-lib-ihttp-core/README.md",
          "respect-lib-ihttp-core/.gitignore",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeader.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/MapExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeadersExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/BaseHttpRequest.kt",
          "respect-lib-ihttp-core/src/jvmMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.jvm.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaders.kt",
          "respect-lib-ihttp-iostreams/build.gradle.kts",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/IHeaderExt.kt",
          "settings.gradle.kts",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithByteBody.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithFormUrlEncodedData.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/KtorIHeadersAdapter.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeaderListExt.kt",
          "respect-lib-ihttp-iostreams/README.md",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/RequestBuilder.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/directives/DirectivesToMap.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MappedHttpHeaders.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/ByteArrayResponse.kt"
        ],
        "commitId" : "03770701764956050605ced4788255410fd14ccd",
        "timestamp" : 1752822943000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add lib-ihttp-core and lib-ihttp-iostreams\u000a",
        "date" : "2025-07-18 11:15:43 +0400",
        "id" : "03770701764956050605ced4788255410fd14ccd",
        "msg" : "Add lib-ihttp-core and lib-ihttp-iostreams",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/BaseHttpRequest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/StringResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/ByteArrayExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/ByteArrayResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithFormUrlEncodedData.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MergedHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/KtorIHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/jvmMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.jvm.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/IHeaderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithTextBody.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/androidMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.android.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/README.md"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/jsMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.js.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/README.md"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MappedHttpHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/RequestBuilder.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithByteBody.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MapHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeadersImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeaderListExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/MapExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/directives/DirectivesToMap.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/IHttpResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHeadersBuilder.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-ihttp-okhttp/build.gradle.kts",
          "settings.gradle.kts",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/HttpRequestOkHttpAdapter.kt",
          "gradle/libs.versions.toml",
          "respect-lib-ihttp-okhttp/.gitignore",
          "respect-lib-ihttp-nanohttpd/build.gradle.kts",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/OkHttpHeadersAdapter.kt",
          "respect-lib-ihttp-okhttp/consumer-rules.pro",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/OkHttpRequestAdapter.kt",
          "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdRequestAdapter.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/OkHttpResponseAdapter.kt",
          "respect-lib-ihttp-okhttp/proguard-rules.pro",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/IHttpHeadersAsOkHttpHeadersAdapter.kt",
          "respect-lib-ihttp-nanohttpd/.gitignore",
          "respect-lib-ihttp-okhttp/src/commonMain/AndroidManifest.xml",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt",
          "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdResponseAdapter.kt"
        ],
        "commitId" : "0a501d75eaea676ed271dd799ee68c708cc88b5b",
        "timestamp" : 1752824183000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add lib-ihttp-okhttp and lib-ihttp-nanohttpd\u000a",
        "date" : "2025-07-18 11:36:23 +0400",
        "id" : "0a501d75eaea676ed271dd799ee68c708cc88b5b",
        "msg" : "Add lib-ihttp-okhttp and lib-ihttp-nanohttpd",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/OkHttpRequestAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/consumer-rules.pro"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdRequestAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/IHttpHeadersAsOkHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/OkHttpResponseAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/HttpRequestOkHttpAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdResponseAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/OkHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/.gitignore"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/RequestExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NapierLogInit.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/ContentRange.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndLocks.kt",
          "gradle/libs.versions.toml",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/AddNewEntryTriggerCallback.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashCacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/ByteArrayResponse.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ByteBufferExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/DatabaseExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/CouponHeader.kt",
          "respect-lib-cache/src/jvmTest/resources/testfile1.png",
          "respect-lib-cache/src/jvmTest/resources/ustadmobile-epub.js",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheControlHeader.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ByteArrayExt.kt",
          "respect-lib-cache/README.md",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CachedResponseStatus.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreResult.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/RangeRequestNotSatisfiableException.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseValidityChecker.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HeadersBuilderExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/FileMimeTypeHelperImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/NapierLoggingAdapter.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/FileAssert.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/LifeCycleOwnerDistributedCacheInit.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePathsProvider.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePing.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ConcurrentSafeMapOf.kt",
          "respect-lib-cache/.gitignore",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePong.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePaths.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/date/ParseHttpDate.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/StringResponse.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessChecker.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5Digest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/DefaultCacheCompressionFilter.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImplTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/InputStreamExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/integrity/Sha256Integrity.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelperExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ResourcesDispatcher.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlDirectivesUtil.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/SourceExt.kt",
          "respect-lib-cache/src/jvmTest/resources/childrens-literature.epub",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RetentionLockDao.kt",
          "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/NullOutputStream.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/CacheResponse.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/io/RangeInputStreamTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNeighborDiscoveryListener.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/UstadCacheLogger.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-lib-cache/src/jvmTest/resources/testfile2.png",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CompressionType.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreProgressListener.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/OutputStreamExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheEntryToStore.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelper.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-xxhash/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RequestedEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseCacheabilityCheckerExt.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt",
          "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/15.json",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/partial/ContentRangeTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StringExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpResponseExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LruMap.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/RangeInputStream.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntries.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ClearNeighborsCallback.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt",
          "respect-lib-cache/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NewCacheEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntriesTest.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestJvm.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemCommonExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheConstants.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/XXStringHasherExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCacheWhatWithIdAndPayload.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePacket.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImplTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/composites/NeighborCacheEntryAndNeighborCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HeaderOverrideHttpResponse.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheTrimmer.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/LastModifiedHeader.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheStorageCompressionFilter.kt",
          "settings.gradle.kts",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestAndroid.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityChecker.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/ValidatedEntry.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNsdAndroid.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/RequestCacheControlHeader.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/DistributedCacheInterceptor.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadDbDiscoveryListener.kt"
        ],
        "commitId" : "c0b7ef589a0301b8021beac105264f26a2059eec",
        "timestamp" : 1752848578000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress: UstadCache compiles and UstadCacheJvmTest passes.\u000a",
        "date" : "2025-07-18 18:22:58 +0400",
        "id" : "c0b7ef589a0301b8021beac105264f26a2059eec",
        "msg" : "Work in progress: UstadCache compiles and UstadCacheJvmTest passes.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CompressionType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/OutputStreamExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/AddNewEntryTriggerCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCacheWhatWithIdAndPayload.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/integrity/Sha256Integrity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/testfile2.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/DistributedCacheInterceptor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/XXStringHasherExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NapierLogInit.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/NapierLoggingAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RequestedEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/NullOutputStream.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadDbDiscoveryListener.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/15.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/ValidatedEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RetentionLockDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNeighborDiscoveryListener.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ByteBufferExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheEntryToStore.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePong.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePaths.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/partial/ContentRangeTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreResult.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/SourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/InputStreamExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/composites/NeighborCacheEntryAndNeighborCache.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreProgressListener.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/CouponHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelperExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemCommonExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/RequestCacheControlHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/testfile1.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5Digest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNsdAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelper.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/RangeInputStream.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImplTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/ustadmobile-epub.js"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HeaderOverrideHttpResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/RequestExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/LifeCycleOwnerDistributedCacheInit.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/ContentRange.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/DatabaseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePathsProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/RangeRequestNotSatisfiableException.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/io/RangeInputStreamTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/FileAssert.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/CacheResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImplTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlDirectivesUtil.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntriesTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntries.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseValidityChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashCacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/README.md"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NewCacheEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestJvm.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndLocks.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LruMap.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ClearNeighborsCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/DefaultCacheCompressionFilter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/UstadCacheLogger.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/date/ParseHttpDate.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/ByteArrayResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ResourcesDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheControlHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/childrens-literature.epub"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/StringResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseCacheabilityCheckerExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePing.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/LastModifiedHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ConcurrentSafeMapOf.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/FileMimeTypeHelperImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheTrimmer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePacket.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CachedResponseStatus.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HeadersBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheStorageCompressionFilter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ByteArrayExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xxhash/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
        ],
        "commitId" : "9aa76227bbd32093b6a5e3715b2e6706610337a6",
        "timestamp" : 1752850598000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Convert UstadCache functions to asynchronous (suspended) because Room multiplatform does not support synchronous (blocking) queries.\u000a",
        "date" : "2025-07-18 18:56:38 +0400",
        "id" : "9aa76227bbd32093b6a5e3715b2e6706610337a6",
        "msg" : "Convert UstadCache functions to asynchronous (suspended) because Room multiplatform does not support synchronous (blocking) queries.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
        ],
        "commitId" : "a5ec99ea92fae848eccade25b1885030ded7eb15",
        "timestamp" : 1752858327000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix DistributedCacheHashtableIntegrationTest - nested use of runBlocking caused database deadlock.\u000a",
        "date" : "2025-07-18 21:05:27 +0400",
        "id" : "a5ec99ea92fae848eccade25b1885030ded7eb15",
        "msg" : "Fix DistributedCacheHashtableIntegrationTest - nested use of runBlocking caused database deadlock.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/ext/FileExt.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetAndroidSdCardDirUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/CachePathsProviderAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/README.md",
          "respect-app-compose/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/OfflineStorageOption.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageSettingUseCase.kt"
        ],
        "commitId" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
        "timestamp" : 1752938308000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update respect-app-compose to use UstadCache for OKHttp and Coil image loading.\u000a",
        "date" : "2025-07-19 19:18:28 +0400",
        "id" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
        "msg" : "Update respect-app-compose to use UstadCache for OKHttp and Coil image loading.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetAndroidSdCardDirUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageSettingUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/OfflineStorageOption.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/CachePathsProviderAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/ext/FileExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/README.md"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
      "fullName" : "Mike Dawson"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
      "fullName" : "noreply"
    }
  ]
}