@milaboratories/pl-drivers 1.9.1 → 1.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/clients/upload.cjs +31 -10
- package/dist/clients/upload.cjs.map +1 -1
- package/dist/clients/upload.d.ts +7 -1
- package/dist/clients/upload.js +31 -11
- package/dist/clients/upload.js.map +1 -1
- package/dist/drivers/upload_task.cjs +7 -3
- package/dist/drivers/upload_task.cjs.map +1 -1
- package/dist/drivers/upload_task.d.ts +2 -2
- package/dist/drivers/upload_task.js +8 -4
- package/dist/drivers/upload_task.js.map +1 -1
- package/dist/index.cjs +1 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs +47 -1
- package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs.map +1 -1
- package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.d.ts +36 -0
- package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.js +48 -2
- package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.js.map +1 -1
- package/package.json +6 -5
- package/src/clients/upload.ts +38 -14
- package/src/drivers/upload_task.ts +10 -3
- package/src/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.ts +69 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload_task.js","sources":["../../src/drivers/upload_task.ts"],"sourcesContent":["import type { Watcher } from '@milaboratories/computable';\nimport { ChangeSource } from '@milaboratories/computable';\nimport { resourceIdToString, stringifyWithResourceId } from '@milaboratories/pl-client';\nimport type * as sdk from '@milaboratories/pl-model-common';\nimport type { AsyncPoolController, MiLogger, Signer } from '@milaboratories/ts-helpers';\nimport { asyncPool, CallersCounter } from '@milaboratories/ts-helpers';\nimport type { ClientProgress, ProgressStatus } from '../clients/progress';\nimport type { ClientUpload } from '../clients/upload';\nimport { MTimeError, NoFileForUploading, UnexpectedEOF } from '../clients/upload';\nimport type { ImportResourceSnapshot } from './types';\nimport { ImportFileHandleUploadData } from './types';\nimport assert from 'node:assert';\nimport { ResourceInfo } from '@milaboratories/pl-tree';\n\n/** Holds all info needed to upload a file and a status of uploading\n * and indexing. Also, has a method to update a status of the progress.\n * And holds a change source. */\nexport class UploadTask {\n private readonly change: ChangeSource = new ChangeSource();\n private readonly counter: CallersCounter = new CallersCounter();\n private nMaxUploads: number;\n private nPartsWithThisUploadSpeed = 0;\n private nPartsToIncreaseUpload = 10; // how many parts we have to wait to increase concurrency, 50 mb, 10 parts by 5 mb each.\n\n /** If this is upload progress this field will be defined */\n private uploadData?: ImportFileHandleUploadData;\n public progress: sdk.ImportProgress;\n\n /** If failed, then getting a progress is terminally failed. */\n public failed?: boolean;\n\n /** True if the blob was existed.\n * At this case, the task will show progress == 1.0. */\n private alreadyExisted = false;\n\n constructor(\n private readonly logger: MiLogger,\n private readonly clientBlob: ClientUpload,\n private readonly clientProgress: ClientProgress,\n private readonly maxNConcurrentPartsUpload: number,\n signer: Signer,\n public readonly res: ImportResourceSnapshot,\n ) {\n this.nMaxUploads = this.maxNConcurrentPartsUpload;\n const { uploadData, progress } = newProgress(res, signer);\n this.uploadData = uploadData;\n this.progress = progress;\n }\n\n public getProgress(w: Watcher, callerId: string) {\n this.incCounter(w, callerId);\n\n if (this.failed) {\n this.logger.error(`Uploading terminally failed: ${this.progress.lastError}`);\n throw new Error(this.progress.lastError);\n }\n\n return cloneProgress(this.progress);\n }\n\n public shouldScheduleUpload(): boolean {\n return isMyUpload(this.progress);\n }\n\n /** Uploads a blob if it's not BlobIndex. */\n public async uploadBlobTask() {\n try {\n await uploadBlob(\n this.logger,\n this.clientBlob,\n this.res,\n this.uploadData!,\n this.isComputableDone.bind(this),\n {\n nPartsWithThisUploadSpeed: this.nPartsWithThisUploadSpeed,\n nPartsToIncreaseUpload: this.nPartsToIncreaseUpload,\n currentSpeed: this.nMaxUploads,\n maxSpeed: this.maxNConcurrentPartsUpload,\n },\n );\n this.change.markChanged(`blob upload for ${resourceIdToString(this.res.id)} finished`);\n } catch (e: any) {\n this.setRetriableError(e);\n\n if (isResourceWasDeletedError(e)) {\n this.logger.warn(`resource was deleted while uploading a blob: ${e}`);\n this.change.markChanged(`blob upload for ${resourceIdToString(this.res.id)} aborted, resource was deleted`);\n this.setDone(true);\n\n return;\n }\n\n this.logger.error(`error while uploading a blob: ${e}`);\n this.change.markChanged(`blob upload for ${resourceIdToString(this.res.id)} failed`);\n\n if (nonRecoverableError(e)) {\n this.setTerminalError(e);\n return;\n }\n\n if (isHeadersTimeoutError(e)) {\n // we probably have a slow internet, we need to slow things a bit.\n this.nMaxUploads = decreaseConcurrency(this.logger, this.nMaxUploads, 1);\n }\n\n throw e;\n }\n }\n\n public async updateStatus() {\n try {\n // we do it with timeout in case we have slow internet.\n const status = await this.clientProgress.getStatus(this.res, { timeout: 10000 });\n\n const oldStatus = this.progress.status;\n const newStatus = doneProgressIfExisted(this.alreadyExisted, protoToStatus(status));\n this.progress.status = newStatus;\n this.setDone(status.done);\n\n if (status.done || this.progress.status.progress != oldStatus?.progress) {\n this.change.markChanged(`upload status for ${resourceIdToString(this.res.id)} changed`);\n }\n } catch (e: any) {\n this.setRetriableError(e);\n\n if ((e.name == 'RpcError' && e.code == 'DEADLINE_EXCEEDED') || e?.message?.includes('DEADLINE_EXCEEDED')) {\n this.logger.warn(`deadline exceeded while getting a status of BlobImport`);\n return;\n }\n\n if (isResourceWasDeletedError(e)) {\n this.logger.warn(\n `resource was not found while updating a status of BlobImport: ${e}, ${stringifyWithResourceId(this.res)}`,\n );\n this.change.markChanged(`upload status for ${resourceIdToString(this.res.id)} changed, resource not found`);\n this.setDone(true);\n return;\n }\n\n this.logger.error(`retryable error while updating a status of BlobImport: ${e}`);\n // It was a terminal error, but when a connection drops,\n // this will stop the whole task, so we make it retryable.\n // It was like that:\n // this.change.markChanged();\n // this.setTerminalError(e);\n }\n }\n\n /** Set non-terminal error, that task can be retried. */\n private setRetriableError(e: unknown) {\n this.progress.lastError = String(e);\n }\n\n /** Set a terminal error, the task will throw a error instead of a progress. */\n private setTerminalError(e: unknown) {\n this.progress.lastError = String(e);\n this.progress.done = false;\n this.failed = true;\n }\n\n public setDoneIfOutputSet(res: ImportResourceSnapshot) {\n if (isImportResourceOutputSet(res)) {\n this.setDone(true);\n this.alreadyExisted = true;\n }\n }\n\n private setDone(done: boolean) {\n this.progress.done = done;\n if (done) this.progress.lastError = undefined;\n }\n\n public incCounter(w: Watcher, callerId: string) {\n this.change.attachWatcher(w);\n this.counter.inc(callerId);\n }\n\n public decCounter(callerId: string) {\n return this.counter.dec(callerId);\n }\n\n private isComputableDone() {\n return this.counter.isZero();\n }\n}\n\n/** Uploads a blob if it's not BlobIndex. */\nexport async function uploadBlob(\n logger: MiLogger,\n clientBlob: ClientUpload,\n res: ResourceInfo,\n uploadData: ImportFileHandleUploadData,\n isDoneFn: () => boolean,\n speed: {\n nPartsWithThisUploadSpeed: number,\n nPartsToIncreaseUpload: number,\n currentSpeed: number,\n maxSpeed: number,\n },\n) {\n assert(isUpload(res), 'the upload operation can be done only for BlobUploads');\n const timeout = 10000; // 10 sec instead of standard 5 sec, things might be slow with a slow connection.\n\n if (isDoneFn()) return;\n const parts = await clientBlob.initUpload(res, { timeout });\n logger.info(\n `started to upload blob ${res.id},`\n + ` parts overall: ${parts.overall}, parts remained: ${parts.toUpload.length},`\n + ` number of concurrent uploads: ${speed.currentSpeed}`,\n );\n\n const partUploadFn = (part: bigint) => async (controller: AsyncPoolController) => {\n if (isDoneFn()) return;\n await clientBlob.partUpload(\n res,\n uploadData.localPath,\n BigInt(uploadData.modificationTime),\n part,\n { timeout }\n );\n logger.info(`uploaded chunk ${part}/${parts.overall} of resource: ${res.id}`);\n\n // if we had a network freeze, it will be increased slowly.\n speed.nPartsWithThisUploadSpeed++;\n if (speed.nPartsWithThisUploadSpeed >= speed.nPartsToIncreaseUpload) {\n speed.nPartsWithThisUploadSpeed = 0;\n speed.currentSpeed = increaseConcurrency(logger, speed.currentSpeed, speed.maxSpeed);\n controller.setConcurrency(speed.currentSpeed);\n }\n };\n\n await asyncPool(speed.currentSpeed, parts.toUpload.map(partUploadFn));\n\n if (isDoneFn()) return;\n await clientBlob.finalize(res, { timeout });\n\n logger.info(`uploading of resource ${res.id} finished.`);\n}\n\nfunction newProgress(res: ImportResourceSnapshot, signer: Signer) {\n let isUploadSignMatch: boolean | undefined;\n let uploadData: ImportFileHandleUploadData | undefined;\n if (isUpload(res)) {\n uploadData = ImportFileHandleUploadData.parse(res.data);\n isUploadSignMatch = isSignMatch(signer, uploadData.localPath, uploadData.pathSignature);\n }\n\n return {\n uploadData: uploadData,\n progress: {\n done: false,\n status: undefined,\n isUpload: isUpload(res),\n isUploadSignMatch: isUploadSignMatch,\n lastError: undefined,\n } satisfies sdk.ImportProgress,\n };\n}\n\n/** Returns true if we need to upload the blob that got from this progress. */\nexport function isMyUpload(p: sdk.ImportProgress): boolean {\n return p.isUpload && (p.isUploadSignMatch ?? false);\n}\n\n/** Creates a deep copy of progress,\n * since we do not want to pass a mutable object\n * to API, it led to bugs before.\n * We do not use '...' cloning syntax\n * for the compiler to fail here if we change API. */\nfunction cloneProgress(progress: sdk.ImportProgress): sdk.ImportProgress {\n const cloned: sdk.ImportProgress = {\n done: progress.done,\n isUpload: progress.isUpload,\n isUploadSignMatch: progress.isUploadSignMatch,\n lastError: progress.lastError,\n };\n\n if (progress.status)\n cloned.status = {\n progress: progress.status.progress,\n bytesProcessed: progress.status.bytesProcessed,\n bytesTotal: progress.status.bytesTotal,\n };\n\n return progress;\n}\n\nfunction isImportResourceOutputSet(res: ImportResourceSnapshot) {\n return 'blob' in res.fields\n ? res.fields.blob !== undefined\n : res.fields.incarnation !== undefined;\n}\n\nexport function isUpload(res: ResourceInfo) {\n return res.type.name.startsWith('BlobUpload');\n}\n\nexport function isSignMatch(signer: Signer, path: string, signature: string): boolean {\n try {\n signer.verify(path, signature);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction protoToStatus(proto: ProgressStatus): sdk.ImportStatus {\n return {\n progress: proto.progress ?? 0,\n bytesProcessed: Number(proto.bytesProcessed),\n bytesTotal: Number(proto.bytesTotal),\n };\n}\n\n/** Special hack: if we didn't even start to upload the blob\n * to backend because the result was already there,\n * the backend does show us a status that nothing were uploaded,\n * but we need to show the client that everything is OK.\n * Thus, here we set progress to be 1.0 and all bytes are become processed. */\nfunction doneProgressIfExisted(alreadyExisted: boolean, status: sdk.ImportStatus) {\n if (alreadyExisted && status.bytesTotal != 0 && status.bytesProcessed == 0) {\n return {\n progress: 1.0,\n bytesProcessed: Number(status.bytesTotal),\n bytesTotal: Number(status.bytesTotal),\n };\n }\n\n return status;\n}\n\nexport function isResourceWasDeletedError(e: any) {\n return (\n e.name == 'RpcError'\n && (e.code == 'NOT_FOUND' || e.code == 'ABORTED' || e.code == 'ALREADY_EXISTS')\n );\n}\n\nexport function nonRecoverableError(e: any) {\n return e instanceof MTimeError || e instanceof UnexpectedEOF || e instanceof NoFileForUploading;\n}\n\nfunction isHeadersTimeoutError(e: any) {\n return (e as Error)?.message.includes(`UND_ERR_HEADERS_TIMEOUT`);\n}\n\n/** It's called for every upload success so if everyone is succeeded, we'll double the concurrency. */\nfunction increaseConcurrency(logger: MiLogger, current: number, max: number): number {\n const newConcurrency = Math.min(current + 2, max);\n if (newConcurrency != current)\n logger.info(`uploadTask.increaseConcurrency: increased from ${current} to ${newConcurrency}`)\n\n return newConcurrency;\n}\n\n/** When a error happens, this will half the concurrency level, so the next time\n * we'll try to upload blobs slower. */\nfunction decreaseConcurrency(logger: MiLogger, current: number, min: number): number {\n const newConcurrency = Math.max(Math.round(current / 2), min);\n if (newConcurrency != current)\n logger.info(`uploadTask.decreaseConcurrency: decreased from ${current} to ${newConcurrency}`)\n\n return newConcurrency;\n}\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"upload_task.js","sources":["../../src/drivers/upload_task.ts"],"sourcesContent":["import type { Watcher } from '@milaboratories/computable';\nimport { ChangeSource } from '@milaboratories/computable';\nimport { resourceIdToString, stringifyWithResourceId } from '@milaboratories/pl-client';\nimport type * as sdk from '@milaboratories/pl-model-common';\nimport type { AsyncPoolController, MiLogger, Signer } from '@milaboratories/ts-helpers';\nimport { asyncPool, CallersCounter } from '@milaboratories/ts-helpers';\nimport type { ClientProgress, ProgressStatus } from '../clients/progress';\nimport type { ClientUpload } from '../clients/upload';\nimport { BadRequestError, MTimeError, NoFileForUploading, UnexpectedEOF } from '../clients/upload';\nimport type { ImportResourceSnapshot } from './types';\nimport { ImportFileHandleUploadData } from './types';\nimport assert from 'node:assert';\nimport { ResourceInfo } from '@milaboratories/pl-tree';\n\n/** Holds all info needed to upload a file and a status of uploading\n * and indexing. Also, has a method to update a status of the progress.\n * And holds a change source. */\nexport class UploadTask {\n private readonly change: ChangeSource = new ChangeSource();\n private readonly counter: CallersCounter = new CallersCounter();\n private nMaxUploads: number;\n private nPartsWithThisUploadSpeed = 0;\n private nPartsToIncreaseUpload = 10; // how many parts we have to wait to increase concurrency, 50 mb, 10 parts by 5 mb each.\n\n /** If this is upload progress this field will be defined */\n private uploadData?: ImportFileHandleUploadData;\n public progress: sdk.ImportProgress;\n\n /** If failed, then getting a progress is terminally failed. */\n public failed?: boolean;\n\n /** True if the blob was existed.\n * At this case, the task will show progress == 1.0. */\n private alreadyExisted = false;\n\n constructor(\n private readonly logger: MiLogger,\n private readonly clientBlob: ClientUpload,\n private readonly clientProgress: ClientProgress,\n private readonly maxNConcurrentPartsUpload: number,\n signer: Signer,\n public readonly res: ImportResourceSnapshot,\n ) {\n this.nMaxUploads = this.maxNConcurrentPartsUpload;\n const { uploadData, progress } = newProgress(res, signer);\n this.uploadData = uploadData;\n this.progress = progress;\n }\n\n public getProgress(w: Watcher, callerId: string) {\n this.incCounter(w, callerId);\n\n if (this.failed) {\n this.logger.error(`Uploading terminally failed: ${this.progress.lastError}`);\n throw new Error(this.progress.lastError);\n }\n\n return cloneProgress(this.progress);\n }\n\n public shouldScheduleUpload(): boolean {\n return isMyUpload(this.progress);\n }\n\n /** Uploads a blob if it's not BlobIndex. */\n public async uploadBlobTask() {\n try {\n await uploadBlob(\n this.logger,\n this.clientBlob,\n this.res,\n this.uploadData!,\n this.isComputableDone.bind(this),\n {\n nPartsWithThisUploadSpeed: this.nPartsWithThisUploadSpeed,\n nPartsToIncreaseUpload: this.nPartsToIncreaseUpload,\n currentSpeed: this.nMaxUploads,\n maxSpeed: this.maxNConcurrentPartsUpload,\n },\n );\n this.change.markChanged(`blob upload for ${resourceIdToString(this.res.id)} finished`);\n } catch (e: any) {\n\n if (isResourceWasDeletedError(e)) {\n this.setRetriableError(e);\n this.logger.warn(`resource was deleted while uploading a blob: ${e}`);\n this.change.markChanged(`blob upload for ${resourceIdToString(this.res.id)} aborted, resource was deleted`);\n this.setDone(true);\n\n return;\n }\n\n this.logger.error(`error while uploading a blob: ${e}`);\n this.change.markChanged(`blob upload for ${resourceIdToString(this.res.id)} failed`);\n\n if (nonRecoverableError(e)) {\n this.setTerminalError(e);\n return;\n }\n\n this.setRetriableError(e);\n\n if (isHeadersTimeoutError(e)) {\n // we probably have a slow internet, we need to slow things a bit.\n this.nMaxUploads = decreaseConcurrency(this.logger, this.nMaxUploads, 1);\n }\n\n throw e;\n }\n }\n\n public async updateStatus() {\n try {\n // we do it with timeout in case we have slow internet.\n const status = await this.clientProgress.getStatus(this.res, { timeout: 10000 });\n\n const oldStatus = this.progress.status;\n const newStatus = doneProgressIfExisted(this.alreadyExisted, protoToStatus(status));\n this.progress.status = newStatus;\n this.setDone(status.done);\n\n if (status.done || this.progress.status.progress != oldStatus?.progress) {\n this.change.markChanged(`upload status for ${resourceIdToString(this.res.id)} changed`);\n }\n } catch (e: any) {\n this.setRetriableError(e);\n\n if ((e.name == 'RpcError' && e.code == 'DEADLINE_EXCEEDED') || e?.message?.includes('DEADLINE_EXCEEDED')) {\n this.logger.warn(`deadline exceeded while getting a status of BlobImport`);\n return;\n }\n\n if (isResourceWasDeletedError(e)) {\n this.logger.warn(\n `resource was not found while updating a status of BlobImport: ${e}, ${stringifyWithResourceId(this.res)}`,\n );\n this.change.markChanged(`upload status for ${resourceIdToString(this.res.id)} changed, resource not found`);\n this.setDone(true);\n return;\n }\n\n this.logger.error(`retryable error while updating a status of BlobImport: ${e}`);\n // It was a terminal error, but when a connection drops,\n // this will stop the whole task, so we make it retryable.\n // It was like that:\n // this.change.markChanged();\n // this.setTerminalError(e);\n }\n }\n\n /** Set non-terminal error, that task can be retried. */\n private setRetriableError(e: unknown) {\n this.progress.lastError = String(e);\n }\n\n /** Set a terminal error, the task will throw a error instead of a progress. */\n private setTerminalError(e: unknown) {\n this.progress.lastError = String(e);\n this.progress.done = false;\n this.failed = true;\n }\n\n public setDoneIfOutputSet(res: ImportResourceSnapshot) {\n if (isImportResourceOutputSet(res)) {\n this.setDone(true);\n this.alreadyExisted = true;\n }\n }\n\n private setDone(done: boolean) {\n this.progress.done = done;\n if (done) this.progress.lastError = undefined;\n }\n\n public incCounter(w: Watcher, callerId: string) {\n this.change.attachWatcher(w);\n this.counter.inc(callerId);\n }\n\n public decCounter(callerId: string) {\n return this.counter.dec(callerId);\n }\n\n private isComputableDone() {\n return this.counter.isZero();\n }\n}\n\n/** Uploads a blob if it's not BlobIndex. */\nexport async function uploadBlob(\n logger: MiLogger,\n clientBlob: ClientUpload,\n res: ResourceInfo,\n uploadData: ImportFileHandleUploadData,\n isDoneFn: () => boolean,\n speed: {\n nPartsWithThisUploadSpeed: number,\n nPartsToIncreaseUpload: number,\n currentSpeed: number,\n maxSpeed: number,\n },\n) {\n assert(isUpload(res), 'the upload operation can be done only for BlobUploads');\n const timeout = 10000; // 10 sec instead of standard 5 sec, things might be slow with a slow connection.\n\n if (isDoneFn()) return;\n const parts = await clientBlob.initUpload(res, { timeout });\n logger.info(\n `started to upload blob ${res.id},`\n + ` parts overall: ${parts.overall}, parts remained: ${parts.toUpload.length},`\n + ` number of concurrent uploads: ${speed.currentSpeed}`,\n );\n\n const partUploadFn = (part: bigint) => async (controller: AsyncPoolController) => {\n if (isDoneFn()) return;\n await clientBlob.partUpload(\n res,\n uploadData.localPath,\n BigInt(uploadData.modificationTime),\n part,\n parts.checksumAlgorithm,\n parts.checksumHeader,\n { timeout }\n );\n logger.info(`uploaded chunk ${part}/${parts.overall} of resource: ${res.id}`);\n\n // if we had a network freeze, it will be increased slowly.\n speed.nPartsWithThisUploadSpeed++;\n if (speed.nPartsWithThisUploadSpeed >= speed.nPartsToIncreaseUpload) {\n speed.nPartsWithThisUploadSpeed = 0;\n speed.currentSpeed = increaseConcurrency(logger, speed.currentSpeed, speed.maxSpeed);\n controller.setConcurrency(speed.currentSpeed);\n }\n };\n\n await asyncPool(speed.currentSpeed, parts.toUpload.map(partUploadFn));\n\n if (isDoneFn()) return;\n await clientBlob.finalize(res, { timeout });\n\n logger.info(`uploading of resource ${res.id} finished.`);\n}\n\nfunction newProgress(res: ImportResourceSnapshot, signer: Signer) {\n let isUploadSignMatch: boolean | undefined;\n let uploadData: ImportFileHandleUploadData | undefined;\n if (isUpload(res)) {\n uploadData = ImportFileHandleUploadData.parse(res.data);\n isUploadSignMatch = isSignMatch(signer, uploadData.localPath, uploadData.pathSignature);\n }\n\n return {\n uploadData: uploadData,\n progress: {\n done: false,\n status: undefined,\n isUpload: isUpload(res),\n isUploadSignMatch: isUploadSignMatch,\n lastError: undefined,\n } satisfies sdk.ImportProgress,\n };\n}\n\n/** Returns true if we need to upload the blob that got from this progress. */\nexport function isMyUpload(p: sdk.ImportProgress): boolean {\n return p.isUpload && (p.isUploadSignMatch ?? false);\n}\n\n/** Creates a deep copy of progress,\n * since we do not want to pass a mutable object\n * to API, it led to bugs before.\n * We do not use '...' cloning syntax\n * for the compiler to fail here if we change API. */\nfunction cloneProgress(progress: sdk.ImportProgress): sdk.ImportProgress {\n const cloned: sdk.ImportProgress = {\n done: progress.done,\n isUpload: progress.isUpload,\n isUploadSignMatch: progress.isUploadSignMatch,\n lastError: progress.lastError,\n };\n\n if (progress.status)\n cloned.status = {\n progress: progress.status.progress,\n bytesProcessed: progress.status.bytesProcessed,\n bytesTotal: progress.status.bytesTotal,\n };\n\n return progress;\n}\n\nfunction isImportResourceOutputSet(res: ImportResourceSnapshot) {\n return 'blob' in res.fields\n ? res.fields.blob !== undefined\n : res.fields.incarnation !== undefined;\n}\n\nexport function isUpload(res: ResourceInfo) {\n return res.type.name.startsWith('BlobUpload');\n}\n\nexport function isSignMatch(signer: Signer, path: string, signature: string): boolean {\n try {\n signer.verify(path, signature);\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction protoToStatus(proto: ProgressStatus): sdk.ImportStatus {\n return {\n progress: proto.progress ?? 0,\n bytesProcessed: Number(proto.bytesProcessed),\n bytesTotal: Number(proto.bytesTotal),\n };\n}\n\n/** Special hack: if we didn't even start to upload the blob\n * to backend because the result was already there,\n * the backend does show us a status that nothing were uploaded,\n * but we need to show the client that everything is OK.\n * Thus, here we set progress to be 1.0 and all bytes are become processed. */\nfunction doneProgressIfExisted(alreadyExisted: boolean, status: sdk.ImportStatus) {\n if (alreadyExisted && status.bytesTotal != 0 && status.bytesProcessed == 0) {\n return {\n progress: 1.0,\n bytesProcessed: Number(status.bytesTotal),\n bytesTotal: Number(status.bytesTotal),\n };\n }\n\n return status;\n}\n\nexport function isResourceWasDeletedError(e: any) {\n return (\n e.name == 'RpcError'\n && (e.code == 'NOT_FOUND' || e.code == 'ABORTED' || e.code == 'ALREADY_EXISTS')\n );\n}\n\nexport function nonRecoverableError(e: any) {\n return e instanceof MTimeError ||\n e instanceof UnexpectedEOF ||\n e instanceof NoFileForUploading ||\n e instanceof BadRequestError;\n}\n\nfunction isHeadersTimeoutError(e: any) {\n return (e as Error)?.message.includes(`UND_ERR_HEADERS_TIMEOUT`);\n}\n\n/** It's called for every upload success so if everyone is succeeded, we'll double the concurrency. */\nfunction increaseConcurrency(logger: MiLogger, current: number, max: number): number {\n const newConcurrency = Math.min(current + 2, max);\n if (newConcurrency != current)\n logger.info(`uploadTask.increaseConcurrency: increased from ${current} to ${newConcurrency}`)\n\n return newConcurrency;\n}\n\n/** When a error happens, this will half the concurrency level, so the next time\n * we'll try to upload blobs slower. */\nfunction decreaseConcurrency(logger: MiLogger, current: number, min: number): number {\n const newConcurrency = Math.max(Math.round(current / 2), min);\n if (newConcurrency != current)\n logger.info(`uploadTask.decreaseConcurrency: decreased from ${current} to ${newConcurrency}`)\n\n return newConcurrency;\n}\n"],"names":[],"mappings":"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"}
|
package/dist/index.cjs
CHANGED
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { ClientUpload, MTimeError, NetworkError, NoFileForUploading, UnexpectedEOF } from './clients/upload.js';
|
|
1
|
+
export { BadRequestError, ClientUpload, MTimeError, NetworkError, NoFileForUploading, UnexpectedEOF } from './clients/upload.js';
|
|
2
2
|
export { ClientProgress } from './clients/progress.js';
|
|
3
3
|
export { ClientDownload, UnknownStorageError, WrongLocalFileUrl, getFullPath, newLocalStorageIdsToRoot, parseLocalUrl } from './clients/download.js';
|
|
4
4
|
export { ClientLs } from './clients/ls_api.js';
|
package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs
CHANGED
|
@@ -6,6 +6,20 @@ var runtime = require('@protobuf-ts/runtime');
|
|
|
6
6
|
// @generated by protobuf-ts 2.11.0 with parameter client_generic,optimize_speed,generate_dependencies,force_server_none
|
|
7
7
|
// @generated from protobuf file "github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.proto" (package "MiLaboratories.Controller.Shared", syntax proto3)
|
|
8
8
|
// tslint:disable
|
|
9
|
+
/**
|
|
10
|
+
* @generated from protobuf enum MiLaboratories.Controller.Shared.uploadapi.ChecksumAlgorithm
|
|
11
|
+
*/
|
|
12
|
+
exports.uploadapi_ChecksumAlgorithm = void 0;
|
|
13
|
+
(function (uploadapi_ChecksumAlgorithm) {
|
|
14
|
+
/**
|
|
15
|
+
* @generated from protobuf enum value: CHECKSUM_ALGORITHM_UNSPECIFIED = 0;
|
|
16
|
+
*/
|
|
17
|
+
uploadapi_ChecksumAlgorithm[uploadapi_ChecksumAlgorithm["UNSPECIFIED"] = 0] = "UNSPECIFIED";
|
|
18
|
+
/**
|
|
19
|
+
* @generated from protobuf enum value: CHECKSUM_ALGORITHM_CRC32C = 1;
|
|
20
|
+
*/
|
|
21
|
+
uploadapi_ChecksumAlgorithm[uploadapi_ChecksumAlgorithm["CRC32C"] = 1] = "CRC32C";
|
|
22
|
+
})(exports.uploadapi_ChecksumAlgorithm || (exports.uploadapi_ChecksumAlgorithm = {}));
|
|
9
23
|
// @generated message type with reflection information, may provide speed optimized methods
|
|
10
24
|
class uploadapi$Type extends runtime.MessageType {
|
|
11
25
|
constructor() {
|
|
@@ -134,12 +148,18 @@ class uploadapi_Init_Response$Type extends runtime.MessageType {
|
|
|
134
148
|
constructor() {
|
|
135
149
|
super("MiLaboratories.Controller.Shared.uploadapi.Init.Response", [
|
|
136
150
|
{ no: 1, name: "parts_count", kind: "scalar", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },
|
|
151
|
+
{ no: 3, name: "part_size", kind: "scalar", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },
|
|
152
|
+
{ no: 4, name: "checksum_algorithm", kind: "enum", T: () => ["MiLaboratories.Controller.Shared.uploadapi.ChecksumAlgorithm", exports.uploadapi_ChecksumAlgorithm, "CHECKSUM_ALGORITHM_"] },
|
|
153
|
+
{ no: 5, name: "checksum_header", kind: "scalar", T: 9 /*ScalarType.STRING*/ },
|
|
137
154
|
{ no: 2, name: "uploaded_parts", kind: "scalar", repeat: 1 /*RepeatType.PACKED*/, T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }
|
|
138
155
|
]);
|
|
139
156
|
}
|
|
140
157
|
create(value) {
|
|
141
158
|
const message = globalThis.Object.create((this.messagePrototype));
|
|
142
159
|
message.partsCount = 0n;
|
|
160
|
+
message.partSize = 0n;
|
|
161
|
+
message.checksumAlgorithm = 0;
|
|
162
|
+
message.checksumHeader = "";
|
|
143
163
|
message.uploadedParts = [];
|
|
144
164
|
if (value !== undefined)
|
|
145
165
|
runtime.reflectionMergePartial(this, message, value);
|
|
@@ -153,6 +173,15 @@ class uploadapi_Init_Response$Type extends runtime.MessageType {
|
|
|
153
173
|
case /* uint64 parts_count */ 1:
|
|
154
174
|
message.partsCount = reader.uint64().toBigInt();
|
|
155
175
|
break;
|
|
176
|
+
case /* uint64 part_size */ 3:
|
|
177
|
+
message.partSize = reader.uint64().toBigInt();
|
|
178
|
+
break;
|
|
179
|
+
case /* MiLaboratories.Controller.Shared.uploadapi.ChecksumAlgorithm checksum_algorithm */ 4:
|
|
180
|
+
message.checksumAlgorithm = reader.int32();
|
|
181
|
+
break;
|
|
182
|
+
case /* string checksum_header */ 5:
|
|
183
|
+
message.checksumHeader = reader.string();
|
|
184
|
+
break;
|
|
156
185
|
case /* repeated uint64 uploaded_parts */ 2:
|
|
157
186
|
if (wireType === runtime.WireType.LengthDelimited)
|
|
158
187
|
for (let e = reader.int32() + reader.pos; reader.pos < e;)
|
|
@@ -182,6 +211,15 @@ class uploadapi_Init_Response$Type extends runtime.MessageType {
|
|
|
182
211
|
writer.uint64(message.uploadedParts[i]);
|
|
183
212
|
writer.join();
|
|
184
213
|
}
|
|
214
|
+
/* uint64 part_size = 3; */
|
|
215
|
+
if (message.partSize !== 0n)
|
|
216
|
+
writer.tag(3, runtime.WireType.Varint).uint64(message.partSize);
|
|
217
|
+
/* MiLaboratories.Controller.Shared.uploadapi.ChecksumAlgorithm checksum_algorithm = 4; */
|
|
218
|
+
if (message.checksumAlgorithm !== 0)
|
|
219
|
+
writer.tag(4, runtime.WireType.Varint).int32(message.checksumAlgorithm);
|
|
220
|
+
/* string checksum_header = 5; */
|
|
221
|
+
if (message.checksumHeader !== "")
|
|
222
|
+
writer.tag(5, runtime.WireType.LengthDelimited).string(message.checksumHeader);
|
|
185
223
|
let u = options.writeUnknownFields;
|
|
186
224
|
if (u !== false)
|
|
187
225
|
(u == true ? runtime.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
|
@@ -368,7 +406,8 @@ class uploadapi_GetPartURL_Request$Type extends runtime.MessageType {
|
|
|
368
406
|
{ no: 1, name: "resource_id", kind: "scalar", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },
|
|
369
407
|
{ no: 2, name: "part_number", kind: "scalar", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },
|
|
370
408
|
{ no: 3, name: "uploaded_part_size", kind: "scalar", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },
|
|
371
|
-
{ no: 4, name: "is_internal_use", kind: "scalar", T: 8 /*ScalarType.BOOL*/ }
|
|
409
|
+
{ no: 4, name: "is_internal_use", kind: "scalar", T: 8 /*ScalarType.BOOL*/ },
|
|
410
|
+
{ no: 5, name: "part_checksum", kind: "scalar", T: 9 /*ScalarType.STRING*/ }
|
|
372
411
|
]);
|
|
373
412
|
}
|
|
374
413
|
create(value) {
|
|
@@ -377,6 +416,7 @@ class uploadapi_GetPartURL_Request$Type extends runtime.MessageType {
|
|
|
377
416
|
message.partNumber = 0n;
|
|
378
417
|
message.uploadedPartSize = 0n;
|
|
379
418
|
message.isInternalUse = false;
|
|
419
|
+
message.partChecksum = "";
|
|
380
420
|
if (value !== undefined)
|
|
381
421
|
runtime.reflectionMergePartial(this, message, value);
|
|
382
422
|
return message;
|
|
@@ -398,6 +438,9 @@ class uploadapi_GetPartURL_Request$Type extends runtime.MessageType {
|
|
|
398
438
|
case /* bool is_internal_use */ 4:
|
|
399
439
|
message.isInternalUse = reader.bool();
|
|
400
440
|
break;
|
|
441
|
+
case /* string part_checksum */ 5:
|
|
442
|
+
message.partChecksum = reader.string();
|
|
443
|
+
break;
|
|
401
444
|
default:
|
|
402
445
|
let u = options.readUnknownField;
|
|
403
446
|
if (u === "throw")
|
|
@@ -422,6 +465,9 @@ class uploadapi_GetPartURL_Request$Type extends runtime.MessageType {
|
|
|
422
465
|
/* bool is_internal_use = 4; */
|
|
423
466
|
if (message.isInternalUse !== false)
|
|
424
467
|
writer.tag(4, runtime.WireType.Varint).bool(message.isInternalUse);
|
|
468
|
+
/* string part_checksum = 5; */
|
|
469
|
+
if (message.partChecksum !== "")
|
|
470
|
+
writer.tag(5, runtime.WireType.LengthDelimited).string(message.partChecksum);
|
|
425
471
|
let u = options.writeUnknownFields;
|
|
426
472
|
if (u !== false)
|
|
427
473
|
(u == true ? runtime.UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);
|
package/dist/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.cjs","sources":["../../../../../../../../../src/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.ts"],"sourcesContent":["// @generated by protobuf-ts 2.11.0 with parameter client_generic,optimize_speed,generate_dependencies,force_server_none\n// @generated from protobuf file \"github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.proto\" (package \"MiLaboratories.Controller.Shared\", syntax proto3)\n// tslint:disable\nimport { ServiceType } from \"@protobuf-ts/runtime-rpc\";\nimport { WireType } from \"@protobuf-ts/runtime\";\nimport type { BinaryWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryWriter } from \"@protobuf-ts/runtime\";\nimport type { BinaryReadOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryReader } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport type { PartialMessage } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi\n */\nexport interface uploadapi {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Init\n */\nexport interface uploadapi_Init {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Init.Request\n */\nexport interface uploadapi_Init_Request {\n /**\n * Id of upload resource\n *\n * @generated from protobuf field: uint64 resource_id = 1\n */\n resourceId: bigint;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Init.Response\n */\nexport interface uploadapi_Init_Response {\n /**\n * Number of parts in this upload.\n * For parallel upload support, client can generate any number of part upload URLs\n * at the moment and upload them in parallel.\n * <parts_count> keeps the number of chunks supported by this upload.\n * The parts count is calculated from the planned size of the upload, controller\n * configuration and underlying storage restrictions.\n *\n * @generated from protobuf field: uint64 parts_count = 1\n */\n partsCount: bigint;\n /**\n * List of IDs of parts that were already uploaded by client.\n * Helps client to recover upload and skip already done parts\n * after being interrupted in the middle of the upload\n * (say, because of the restart).\n * Parts enumeration starts from 1.\n *\n * @generated from protobuf field: repeated uint64 uploaded_parts = 2\n */\n uploadedParts: bigint[];\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress\n */\nexport interface uploadapi_UpdateProgress {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Request\n */\nexport interface uploadapi_UpdateProgress_Request {\n /**\n * Id of upload resource\n *\n * @generated from protobuf field: uint64 resource_id = 1\n */\n resourceId: bigint;\n /**\n * Amount of bytes, uploaded since the earlier call to UpdateProgress.\n * This value is just blindly added to the 'bytes_processed' of progress report,\n * so other clients can see the upload progress.\n * If client uploads the data in several streams (several chunks in parallel), it\n * can safely send progress updates individually for each of the streams, just counting\n * bytes uploaded by particular stream.\n *\n * Negative value can be used to report about upload retry: when upload was interrupted,\n * part of the uploaded data is lost and require re-upload.\n *\n * @generated from protobuf field: int64 bytes_processed = 2\n */\n bytesProcessed: bigint;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Response\n */\nexport interface uploadapi_UpdateProgress_Response {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL\n */\nexport interface uploadapi_GetPartURL {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Request\n */\nexport interface uploadapi_GetPartURL_Request {\n /**\n * Id of upload resource\n *\n * @generated from protobuf field: uint64 resource_id = 1\n */\n resourceId: bigint;\n /**\n * Part to be uploaded. It is responsibility of the Client to watch after already uploaded parts:\n * - client can request an URL for the same part twice (request -> request) without errors;\n * - client can request an URL for alrady uploaded part (request -> upload -> request) without errors.\n *\n * Parts enumeration starts from 1.\n *\n * @generated from protobuf field: uint64 part_number = 2\n */\n partNumber: bigint;\n /**\n * Size of the part uploaded by client earlier. Allows controller to count upload progress\n * based on client's input.\n * Client is free to never sent this value (send zeroes in each request).\n *\n * @generated from protobuf field: uint64 uploaded_part_size = 3\n */\n uploadedPartSize: bigint;\n /**\n * Do we need to presign URL for internal use.\n * Controllers could use this if they are trying to download something from internal network.\n * For backward compatibility, by default pl backend will presign external urls.\n *\n * @generated from protobuf field: bool is_internal_use = 4\n */\n isInternalUse: boolean;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader\n */\nexport interface uploadapi_GetPartURL_HTTPHeader {\n /**\n * @generated from protobuf field: string Name = 1\n */\n name: string;\n /**\n * @generated from protobuf field: string Value = 2\n */\n value: string;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Response\n */\nexport interface uploadapi_GetPartURL_Response {\n /**\n * URL for chunk upload\n *\n * @generated from protobuf field: string upload_url = 1\n */\n uploadUrl: string;\n /**\n * HTTP method to use for chunk upload, say 'PUT' or 'POST'.\n *\n * @generated from protobuf field: string method = 2\n */\n method: string;\n /**\n * List of headers with their values, MANDATORY to be sent by the client for the upload.\n * The destination service (the one, that will handle upload request for specific part)\n * may reject the request if it would not keep the given headers.\n *\n * @generated from protobuf field: repeated MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader headers = 3\n */\n headers: uploadapi_GetPartURL_HTTPHeader[];\n /**\n * The number of the _first_ byte in the chunk.\n * Absolute position from the start of the file ( file.seek(<chunk_start>, SEEK_START) ).\n * The client is expected to send [<chunk_start>; <chunk_end>) range.\n *\n * @generated from protobuf field: uint64 chunk_start = 4\n */\n chunkStart: bigint;\n /**\n * The number of the byte _after_ the last to be sent in the chunk.\n * Absolute position from the start of the file.\n * The client is expected to send [<chunk_start>; <chunk_end>) range.\n *\n * @generated from protobuf field: uint64 chunk_end = 5\n */\n chunkEnd: bigint;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize\n */\nexport interface uploadapi_Finalize {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize.Request\n */\nexport interface uploadapi_Finalize_Request {\n /**\n * @generated from protobuf field: uint64 resource_id = 1\n */\n resourceId: bigint;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize.Response\n */\nexport interface uploadapi_Finalize_Response {\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi$Type extends MessageType<uploadapi> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi\", []);\n }\n create(value?: PartialMessage<uploadapi>): uploadapi {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi): uploadapi {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi\n */\nexport const uploadapi = new uploadapi$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Init$Type extends MessageType<uploadapi_Init> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Init\", []);\n }\n create(value?: PartialMessage<uploadapi_Init>): uploadapi_Init {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Init>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Init): uploadapi_Init {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Init, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Init\n */\nexport const uploadapi_Init = new uploadapi_Init$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Init_Request$Type extends MessageType<uploadapi_Init_Request> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Init.Request\", [\n { no: 1, name: \"resource_id\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_Init_Request>): uploadapi_Init_Request {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.resourceId = 0n;\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Init_Request>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Init_Request): uploadapi_Init_Request {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 resource_id */ 1:\n message.resourceId = reader.uint64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Init_Request, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 resource_id = 1; */\n if (message.resourceId !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.resourceId);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Init.Request\n */\nexport const uploadapi_Init_Request = new uploadapi_Init_Request$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Init_Response$Type extends MessageType<uploadapi_Init_Response> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Init.Response\", [\n { no: 1, name: \"parts_count\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"uploaded_parts\", kind: \"scalar\", repeat: 1 /*RepeatType.PACKED*/, T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_Init_Response>): uploadapi_Init_Response {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.partsCount = 0n;\n message.uploadedParts = [];\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Init_Response>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Init_Response): uploadapi_Init_Response {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 parts_count */ 1:\n message.partsCount = reader.uint64().toBigInt();\n break;\n case /* repeated uint64 uploaded_parts */ 2:\n if (wireType === WireType.LengthDelimited)\n for (let e = reader.int32() + reader.pos; reader.pos < e;)\n message.uploadedParts.push(reader.uint64().toBigInt());\n else\n message.uploadedParts.push(reader.uint64().toBigInt());\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Init_Response, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 parts_count = 1; */\n if (message.partsCount !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.partsCount);\n /* repeated uint64 uploaded_parts = 2; */\n if (message.uploadedParts.length) {\n writer.tag(2, WireType.LengthDelimited).fork();\n for (let i = 0; i < message.uploadedParts.length; i++)\n writer.uint64(message.uploadedParts[i]);\n writer.join();\n }\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Init.Response\n */\nexport const uploadapi_Init_Response = new uploadapi_Init_Response$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_UpdateProgress$Type extends MessageType<uploadapi_UpdateProgress> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.UpdateProgress\", []);\n }\n create(value?: PartialMessage<uploadapi_UpdateProgress>): uploadapi_UpdateProgress {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_UpdateProgress>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_UpdateProgress): uploadapi_UpdateProgress {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_UpdateProgress, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress\n */\nexport const uploadapi_UpdateProgress = new uploadapi_UpdateProgress$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_UpdateProgress_Request$Type extends MessageType<uploadapi_UpdateProgress_Request> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Request\", [\n { no: 1, name: \"resource_id\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"bytes_processed\", kind: \"scalar\", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_UpdateProgress_Request>): uploadapi_UpdateProgress_Request {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.resourceId = 0n;\n message.bytesProcessed = 0n;\n if (value !== undefined)\n reflectionMergePartial<uploadapi_UpdateProgress_Request>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_UpdateProgress_Request): uploadapi_UpdateProgress_Request {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 resource_id */ 1:\n message.resourceId = reader.uint64().toBigInt();\n break;\n case /* int64 bytes_processed */ 2:\n message.bytesProcessed = reader.int64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_UpdateProgress_Request, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 resource_id = 1; */\n if (message.resourceId !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.resourceId);\n /* int64 bytes_processed = 2; */\n if (message.bytesProcessed !== 0n)\n writer.tag(2, WireType.Varint).int64(message.bytesProcessed);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Request\n */\nexport const uploadapi_UpdateProgress_Request = new uploadapi_UpdateProgress_Request$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_UpdateProgress_Response$Type extends MessageType<uploadapi_UpdateProgress_Response> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Response\", []);\n }\n create(value?: PartialMessage<uploadapi_UpdateProgress_Response>): uploadapi_UpdateProgress_Response {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_UpdateProgress_Response>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_UpdateProgress_Response): uploadapi_UpdateProgress_Response {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_UpdateProgress_Response, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Response\n */\nexport const uploadapi_UpdateProgress_Response = new uploadapi_UpdateProgress_Response$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_GetPartURL$Type extends MessageType<uploadapi_GetPartURL> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.GetPartURL\", []);\n }\n create(value?: PartialMessage<uploadapi_GetPartURL>): uploadapi_GetPartURL {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_GetPartURL>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_GetPartURL): uploadapi_GetPartURL {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_GetPartURL, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL\n */\nexport const uploadapi_GetPartURL = new uploadapi_GetPartURL$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_GetPartURL_Request$Type extends MessageType<uploadapi_GetPartURL_Request> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Request\", [\n { no: 1, name: \"resource_id\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"part_number\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 3, name: \"uploaded_part_size\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 4, name: \"is_internal_use\", kind: \"scalar\", T: 8 /*ScalarType.BOOL*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_GetPartURL_Request>): uploadapi_GetPartURL_Request {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.resourceId = 0n;\n message.partNumber = 0n;\n message.uploadedPartSize = 0n;\n message.isInternalUse = false;\n if (value !== undefined)\n reflectionMergePartial<uploadapi_GetPartURL_Request>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_GetPartURL_Request): uploadapi_GetPartURL_Request {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 resource_id */ 1:\n message.resourceId = reader.uint64().toBigInt();\n break;\n case /* uint64 part_number */ 2:\n message.partNumber = reader.uint64().toBigInt();\n break;\n case /* uint64 uploaded_part_size */ 3:\n message.uploadedPartSize = reader.uint64().toBigInt();\n break;\n case /* bool is_internal_use */ 4:\n message.isInternalUse = reader.bool();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_GetPartURL_Request, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 resource_id = 1; */\n if (message.resourceId !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.resourceId);\n /* uint64 part_number = 2; */\n if (message.partNumber !== 0n)\n writer.tag(2, WireType.Varint).uint64(message.partNumber);\n /* uint64 uploaded_part_size = 3; */\n if (message.uploadedPartSize !== 0n)\n writer.tag(3, WireType.Varint).uint64(message.uploadedPartSize);\n /* bool is_internal_use = 4; */\n if (message.isInternalUse !== false)\n writer.tag(4, WireType.Varint).bool(message.isInternalUse);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Request\n */\nexport const uploadapi_GetPartURL_Request = new uploadapi_GetPartURL_Request$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_GetPartURL_HTTPHeader$Type extends MessageType<uploadapi_GetPartURL_HTTPHeader> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader\", [\n { no: 1, name: \"Name\", kind: \"scalar\", jsonName: \"Name\", T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: \"Value\", kind: \"scalar\", jsonName: \"Value\", T: 9 /*ScalarType.STRING*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_GetPartURL_HTTPHeader>): uploadapi_GetPartURL_HTTPHeader {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.name = \"\";\n message.value = \"\";\n if (value !== undefined)\n reflectionMergePartial<uploadapi_GetPartURL_HTTPHeader>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_GetPartURL_HTTPHeader): uploadapi_GetPartURL_HTTPHeader {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string Name */ 1:\n message.name = reader.string();\n break;\n case /* string Value */ 2:\n message.value = reader.string();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_GetPartURL_HTTPHeader, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string Name = 1; */\n if (message.name !== \"\")\n writer.tag(1, WireType.LengthDelimited).string(message.name);\n /* string Value = 2; */\n if (message.value !== \"\")\n writer.tag(2, WireType.LengthDelimited).string(message.value);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader\n */\nexport const uploadapi_GetPartURL_HTTPHeader = new uploadapi_GetPartURL_HTTPHeader$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_GetPartURL_Response$Type extends MessageType<uploadapi_GetPartURL_Response> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Response\", [\n { no: 1, name: \"upload_url\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: \"method\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 3, name: \"headers\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => uploadapi_GetPartURL_HTTPHeader },\n { no: 4, name: \"chunk_start\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 5, name: \"chunk_end\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_GetPartURL_Response>): uploadapi_GetPartURL_Response {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.uploadUrl = \"\";\n message.method = \"\";\n message.headers = [];\n message.chunkStart = 0n;\n message.chunkEnd = 0n;\n if (value !== undefined)\n reflectionMergePartial<uploadapi_GetPartURL_Response>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_GetPartURL_Response): uploadapi_GetPartURL_Response {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string upload_url */ 1:\n message.uploadUrl = reader.string();\n break;\n case /* string method */ 2:\n message.method = reader.string();\n break;\n case /* repeated MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader headers */ 3:\n message.headers.push(uploadapi_GetPartURL_HTTPHeader.internalBinaryRead(reader, reader.uint32(), options));\n break;\n case /* uint64 chunk_start */ 4:\n message.chunkStart = reader.uint64().toBigInt();\n break;\n case /* uint64 chunk_end */ 5:\n message.chunkEnd = reader.uint64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_GetPartURL_Response, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string upload_url = 1; */\n if (message.uploadUrl !== \"\")\n writer.tag(1, WireType.LengthDelimited).string(message.uploadUrl);\n /* string method = 2; */\n if (message.method !== \"\")\n writer.tag(2, WireType.LengthDelimited).string(message.method);\n /* repeated MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader headers = 3; */\n for (let i = 0; i < message.headers.length; i++)\n uploadapi_GetPartURL_HTTPHeader.internalBinaryWrite(message.headers[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n /* uint64 chunk_start = 4; */\n if (message.chunkStart !== 0n)\n writer.tag(4, WireType.Varint).uint64(message.chunkStart);\n /* uint64 chunk_end = 5; */\n if (message.chunkEnd !== 0n)\n writer.tag(5, WireType.Varint).uint64(message.chunkEnd);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Response\n */\nexport const uploadapi_GetPartURL_Response = new uploadapi_GetPartURL_Response$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Finalize$Type extends MessageType<uploadapi_Finalize> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Finalize\", []);\n }\n create(value?: PartialMessage<uploadapi_Finalize>): uploadapi_Finalize {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Finalize>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Finalize): uploadapi_Finalize {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Finalize, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize\n */\nexport const uploadapi_Finalize = new uploadapi_Finalize$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Finalize_Request$Type extends MessageType<uploadapi_Finalize_Request> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Finalize.Request\", [\n { no: 1, name: \"resource_id\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_Finalize_Request>): uploadapi_Finalize_Request {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.resourceId = 0n;\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Finalize_Request>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Finalize_Request): uploadapi_Finalize_Request {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 resource_id */ 1:\n message.resourceId = reader.uint64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Finalize_Request, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 resource_id = 1; */\n if (message.resourceId !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.resourceId);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize.Request\n */\nexport const uploadapi_Finalize_Request = new uploadapi_Finalize_Request$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Finalize_Response$Type extends MessageType<uploadapi_Finalize_Response> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Finalize.Response\", []);\n }\n create(value?: PartialMessage<uploadapi_Finalize_Response>): uploadapi_Finalize_Response {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Finalize_Response>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Finalize_Response): uploadapi_Finalize_Response {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Finalize_Response, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize.Response\n */\nexport const uploadapi_Finalize_Response = new uploadapi_Finalize_Response$Type();\n/**\n * @generated ServiceType for protobuf service MiLaboratories.Controller.Shared.Upload\n */\nexport const Upload = new ServiceType(\"MiLaboratories.Controller.Shared.Upload\", [\n { name: \"Init\", options: {}, I: uploadapi_Init_Request, O: uploadapi_Init_Response },\n { name: \"GetPartURL\", options: {}, I: uploadapi_GetPartURL_Request, O: uploadapi_GetPartURL_Response },\n { name: \"UpdateProgress\", options: {}, I: uploadapi_UpdateProgress_Request, O: uploadapi_UpdateProgress_Response },\n { name: \"Finalize\", options: {}, I: uploadapi_Finalize_Request, O: uploadapi_Finalize_Response }\n]);\n"],"names":["MessageType","reflectionMergePartial","UnknownFieldHandler","WireType","ServiceType"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"protocol.cjs","sources":["../../../../../../../../../src/proto/github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.ts"],"sourcesContent":["// @generated by protobuf-ts 2.11.0 with parameter client_generic,optimize_speed,generate_dependencies,force_server_none\n// @generated from protobuf file \"github.com/milaboratory/pl/controllers/shared/grpc/uploadapi/protocol.proto\" (package \"MiLaboratories.Controller.Shared\", syntax proto3)\n// tslint:disable\nimport { ServiceType } from \"@protobuf-ts/runtime-rpc\";\nimport { WireType } from \"@protobuf-ts/runtime\";\nimport type { BinaryWriteOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryWriter } from \"@protobuf-ts/runtime\";\nimport type { BinaryReadOptions } from \"@protobuf-ts/runtime\";\nimport type { IBinaryReader } from \"@protobuf-ts/runtime\";\nimport { UnknownFieldHandler } from \"@protobuf-ts/runtime\";\nimport type { PartialMessage } from \"@protobuf-ts/runtime\";\nimport { reflectionMergePartial } from \"@protobuf-ts/runtime\";\nimport { MessageType } from \"@protobuf-ts/runtime\";\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi\n */\nexport interface uploadapi {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Init\n */\nexport interface uploadapi_Init {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Init.Request\n */\nexport interface uploadapi_Init_Request {\n /**\n * Id of upload resource\n *\n * @generated from protobuf field: uint64 resource_id = 1\n */\n resourceId: bigint;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Init.Response\n */\nexport interface uploadapi_Init_Response {\n /**\n * Number of parts in this upload.\n * For parallel upload support, client can generate any number of part upload URLs\n * at the moment and upload them in parallel.\n * <parts_count> keeps the number of chunks supported by this upload.\n * The parts count is calculated from the planned size of the upload, controller\n * configuration and underlying storage restrictions.\n *\n * @generated from protobuf field: uint64 parts_count = 1\n */\n partsCount: bigint;\n /**\n * @generated from protobuf field: uint64 part_size = 3\n */\n partSize: bigint;\n /**\n * Checksum algorithm to use for the part upload.\n *\n * @generated from protobuf field: MiLaboratories.Controller.Shared.uploadapi.ChecksumAlgorithm checksum_algorithm = 4\n */\n checksumAlgorithm: uploadapi_ChecksumAlgorithm;\n /**\n * Header name to use for the checksum.\n *\n * @generated from protobuf field: string checksum_header = 5\n */\n checksumHeader: string;\n /**\n * List of IDs of parts that were already uploaded by client.\n * Helps client to recover upload and skip already done parts\n * after being interrupted in the middle of the upload\n * (say, because of the restart).\n * Parts enumeration starts from 1.\n *\n * @generated from protobuf field: repeated uint64 uploaded_parts = 2\n */\n uploadedParts: bigint[];\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress\n */\nexport interface uploadapi_UpdateProgress {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Request\n */\nexport interface uploadapi_UpdateProgress_Request {\n /**\n * Id of upload resource\n *\n * @generated from protobuf field: uint64 resource_id = 1\n */\n resourceId: bigint;\n /**\n * Amount of bytes, uploaded since the earlier call to UpdateProgress.\n * This value is just blindly added to the 'bytes_processed' of progress report,\n * so other clients can see the upload progress.\n * If client uploads the data in several streams (several chunks in parallel), it\n * can safely send progress updates individually for each of the streams, just counting\n * bytes uploaded by particular stream.\n *\n * Negative value can be used to report about upload retry: when upload was interrupted,\n * part of the uploaded data is lost and require re-upload.\n *\n * @generated from protobuf field: int64 bytes_processed = 2\n */\n bytesProcessed: bigint;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Response\n */\nexport interface uploadapi_UpdateProgress_Response {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL\n */\nexport interface uploadapi_GetPartURL {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Request\n */\nexport interface uploadapi_GetPartURL_Request {\n /**\n * Id of upload resource\n *\n * @generated from protobuf field: uint64 resource_id = 1\n */\n resourceId: bigint;\n /**\n * Part to be uploaded. It is responsibility of the Client to watch after already uploaded parts:\n * - client can request an URL for the same part twice (request -> request) without errors;\n * - client can request an URL for alrady uploaded part (request -> upload -> request) without errors.\n *\n * Parts enumeration starts from 1.\n *\n * @generated from protobuf field: uint64 part_number = 2\n */\n partNumber: bigint;\n /**\n * Size of the part uploaded by client earlier. Allows controller to count upload progress\n * based on client's input.\n * Client is free to never sent this value (send zeroes in each request).\n *\n * @generated from protobuf field: uint64 uploaded_part_size = 3\n */\n uploadedPartSize: bigint;\n /**\n * Do we need to presign URL for internal use.\n * Controllers could use this if they are trying to download something from internal network.\n * For backward compatibility, by default pl backend will presign external urls.\n *\n * @generated from protobuf field: bool is_internal_use = 4\n */\n isInternalUse: boolean;\n /**\n * Checksum is not used for now, but it is here for case\n * where signing checksum header is required.\n *\n * @generated from protobuf field: string part_checksum = 5\n */\n partChecksum: string;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader\n */\nexport interface uploadapi_GetPartURL_HTTPHeader {\n /**\n * @generated from protobuf field: string Name = 1\n */\n name: string;\n /**\n * @generated from protobuf field: string Value = 2\n */\n value: string;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Response\n */\nexport interface uploadapi_GetPartURL_Response {\n /**\n * URL for chunk upload\n *\n * @generated from protobuf field: string upload_url = 1\n */\n uploadUrl: string;\n /**\n * HTTP method to use for chunk upload, say 'PUT' or 'POST'.\n *\n * @generated from protobuf field: string method = 2\n */\n method: string;\n /**\n * List of headers with their values, MANDATORY to be sent by the client for the upload.\n * The destination service (the one, that will handle upload request for specific part)\n * may reject the request if it would not keep the given headers.\n *\n * @generated from protobuf field: repeated MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader headers = 3\n */\n headers: uploadapi_GetPartURL_HTTPHeader[];\n /**\n * The number of the _first_ byte in the chunk.\n * Absolute position from the start of the file ( file.seek(<chunk_start>, SEEK_START) ).\n * The client is expected to send [<chunk_start>; <chunk_end>) range.\n *\n * @generated from protobuf field: uint64 chunk_start = 4\n */\n chunkStart: bigint;\n /**\n * The number of the byte _after_ the last to be sent in the chunk.\n * Absolute position from the start of the file.\n * The client is expected to send [<chunk_start>; <chunk_end>) range.\n *\n * @generated from protobuf field: uint64 chunk_end = 5\n */\n chunkEnd: bigint;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize\n */\nexport interface uploadapi_Finalize {\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize.Request\n */\nexport interface uploadapi_Finalize_Request {\n /**\n * @generated from protobuf field: uint64 resource_id = 1\n */\n resourceId: bigint;\n}\n/**\n * @generated from protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize.Response\n */\nexport interface uploadapi_Finalize_Response {\n}\n/**\n * @generated from protobuf enum MiLaboratories.Controller.Shared.uploadapi.ChecksumAlgorithm\n */\nexport enum uploadapi_ChecksumAlgorithm {\n /**\n * @generated from protobuf enum value: CHECKSUM_ALGORITHM_UNSPECIFIED = 0;\n */\n UNSPECIFIED = 0,\n /**\n * @generated from protobuf enum value: CHECKSUM_ALGORITHM_CRC32C = 1;\n */\n CRC32C = 1\n}\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi$Type extends MessageType<uploadapi> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi\", []);\n }\n create(value?: PartialMessage<uploadapi>): uploadapi {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi): uploadapi {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi\n */\nexport const uploadapi = new uploadapi$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Init$Type extends MessageType<uploadapi_Init> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Init\", []);\n }\n create(value?: PartialMessage<uploadapi_Init>): uploadapi_Init {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Init>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Init): uploadapi_Init {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Init, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Init\n */\nexport const uploadapi_Init = new uploadapi_Init$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Init_Request$Type extends MessageType<uploadapi_Init_Request> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Init.Request\", [\n { no: 1, name: \"resource_id\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_Init_Request>): uploadapi_Init_Request {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.resourceId = 0n;\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Init_Request>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Init_Request): uploadapi_Init_Request {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 resource_id */ 1:\n message.resourceId = reader.uint64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Init_Request, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 resource_id = 1; */\n if (message.resourceId !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.resourceId);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Init.Request\n */\nexport const uploadapi_Init_Request = new uploadapi_Init_Request$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Init_Response$Type extends MessageType<uploadapi_Init_Response> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Init.Response\", [\n { no: 1, name: \"parts_count\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 3, name: \"part_size\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 4, name: \"checksum_algorithm\", kind: \"enum\", T: () => [\"MiLaboratories.Controller.Shared.uploadapi.ChecksumAlgorithm\", uploadapi_ChecksumAlgorithm, \"CHECKSUM_ALGORITHM_\"] },\n { no: 5, name: \"checksum_header\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: \"uploaded_parts\", kind: \"scalar\", repeat: 1 /*RepeatType.PACKED*/, T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_Init_Response>): uploadapi_Init_Response {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.partsCount = 0n;\n message.partSize = 0n;\n message.checksumAlgorithm = 0;\n message.checksumHeader = \"\";\n message.uploadedParts = [];\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Init_Response>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Init_Response): uploadapi_Init_Response {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 parts_count */ 1:\n message.partsCount = reader.uint64().toBigInt();\n break;\n case /* uint64 part_size */ 3:\n message.partSize = reader.uint64().toBigInt();\n break;\n case /* MiLaboratories.Controller.Shared.uploadapi.ChecksumAlgorithm checksum_algorithm */ 4:\n message.checksumAlgorithm = reader.int32();\n break;\n case /* string checksum_header */ 5:\n message.checksumHeader = reader.string();\n break;\n case /* repeated uint64 uploaded_parts */ 2:\n if (wireType === WireType.LengthDelimited)\n for (let e = reader.int32() + reader.pos; reader.pos < e;)\n message.uploadedParts.push(reader.uint64().toBigInt());\n else\n message.uploadedParts.push(reader.uint64().toBigInt());\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Init_Response, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 parts_count = 1; */\n if (message.partsCount !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.partsCount);\n /* repeated uint64 uploaded_parts = 2; */\n if (message.uploadedParts.length) {\n writer.tag(2, WireType.LengthDelimited).fork();\n for (let i = 0; i < message.uploadedParts.length; i++)\n writer.uint64(message.uploadedParts[i]);\n writer.join();\n }\n /* uint64 part_size = 3; */\n if (message.partSize !== 0n)\n writer.tag(3, WireType.Varint).uint64(message.partSize);\n /* MiLaboratories.Controller.Shared.uploadapi.ChecksumAlgorithm checksum_algorithm = 4; */\n if (message.checksumAlgorithm !== 0)\n writer.tag(4, WireType.Varint).int32(message.checksumAlgorithm);\n /* string checksum_header = 5; */\n if (message.checksumHeader !== \"\")\n writer.tag(5, WireType.LengthDelimited).string(message.checksumHeader);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Init.Response\n */\nexport const uploadapi_Init_Response = new uploadapi_Init_Response$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_UpdateProgress$Type extends MessageType<uploadapi_UpdateProgress> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.UpdateProgress\", []);\n }\n create(value?: PartialMessage<uploadapi_UpdateProgress>): uploadapi_UpdateProgress {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_UpdateProgress>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_UpdateProgress): uploadapi_UpdateProgress {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_UpdateProgress, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress\n */\nexport const uploadapi_UpdateProgress = new uploadapi_UpdateProgress$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_UpdateProgress_Request$Type extends MessageType<uploadapi_UpdateProgress_Request> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Request\", [\n { no: 1, name: \"resource_id\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"bytes_processed\", kind: \"scalar\", T: 3 /*ScalarType.INT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_UpdateProgress_Request>): uploadapi_UpdateProgress_Request {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.resourceId = 0n;\n message.bytesProcessed = 0n;\n if (value !== undefined)\n reflectionMergePartial<uploadapi_UpdateProgress_Request>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_UpdateProgress_Request): uploadapi_UpdateProgress_Request {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 resource_id */ 1:\n message.resourceId = reader.uint64().toBigInt();\n break;\n case /* int64 bytes_processed */ 2:\n message.bytesProcessed = reader.int64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_UpdateProgress_Request, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 resource_id = 1; */\n if (message.resourceId !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.resourceId);\n /* int64 bytes_processed = 2; */\n if (message.bytesProcessed !== 0n)\n writer.tag(2, WireType.Varint).int64(message.bytesProcessed);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Request\n */\nexport const uploadapi_UpdateProgress_Request = new uploadapi_UpdateProgress_Request$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_UpdateProgress_Response$Type extends MessageType<uploadapi_UpdateProgress_Response> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Response\", []);\n }\n create(value?: PartialMessage<uploadapi_UpdateProgress_Response>): uploadapi_UpdateProgress_Response {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_UpdateProgress_Response>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_UpdateProgress_Response): uploadapi_UpdateProgress_Response {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_UpdateProgress_Response, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.UpdateProgress.Response\n */\nexport const uploadapi_UpdateProgress_Response = new uploadapi_UpdateProgress_Response$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_GetPartURL$Type extends MessageType<uploadapi_GetPartURL> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.GetPartURL\", []);\n }\n create(value?: PartialMessage<uploadapi_GetPartURL>): uploadapi_GetPartURL {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_GetPartURL>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_GetPartURL): uploadapi_GetPartURL {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_GetPartURL, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL\n */\nexport const uploadapi_GetPartURL = new uploadapi_GetPartURL$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_GetPartURL_Request$Type extends MessageType<uploadapi_GetPartURL_Request> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Request\", [\n { no: 1, name: \"resource_id\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 2, name: \"part_number\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 3, name: \"uploaded_part_size\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 4, name: \"is_internal_use\", kind: \"scalar\", T: 8 /*ScalarType.BOOL*/ },\n { no: 5, name: \"part_checksum\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_GetPartURL_Request>): uploadapi_GetPartURL_Request {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.resourceId = 0n;\n message.partNumber = 0n;\n message.uploadedPartSize = 0n;\n message.isInternalUse = false;\n message.partChecksum = \"\";\n if (value !== undefined)\n reflectionMergePartial<uploadapi_GetPartURL_Request>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_GetPartURL_Request): uploadapi_GetPartURL_Request {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 resource_id */ 1:\n message.resourceId = reader.uint64().toBigInt();\n break;\n case /* uint64 part_number */ 2:\n message.partNumber = reader.uint64().toBigInt();\n break;\n case /* uint64 uploaded_part_size */ 3:\n message.uploadedPartSize = reader.uint64().toBigInt();\n break;\n case /* bool is_internal_use */ 4:\n message.isInternalUse = reader.bool();\n break;\n case /* string part_checksum */ 5:\n message.partChecksum = reader.string();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_GetPartURL_Request, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 resource_id = 1; */\n if (message.resourceId !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.resourceId);\n /* uint64 part_number = 2; */\n if (message.partNumber !== 0n)\n writer.tag(2, WireType.Varint).uint64(message.partNumber);\n /* uint64 uploaded_part_size = 3; */\n if (message.uploadedPartSize !== 0n)\n writer.tag(3, WireType.Varint).uint64(message.uploadedPartSize);\n /* bool is_internal_use = 4; */\n if (message.isInternalUse !== false)\n writer.tag(4, WireType.Varint).bool(message.isInternalUse);\n /* string part_checksum = 5; */\n if (message.partChecksum !== \"\")\n writer.tag(5, WireType.LengthDelimited).string(message.partChecksum);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Request\n */\nexport const uploadapi_GetPartURL_Request = new uploadapi_GetPartURL_Request$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_GetPartURL_HTTPHeader$Type extends MessageType<uploadapi_GetPartURL_HTTPHeader> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader\", [\n { no: 1, name: \"Name\", kind: \"scalar\", jsonName: \"Name\", T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: \"Value\", kind: \"scalar\", jsonName: \"Value\", T: 9 /*ScalarType.STRING*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_GetPartURL_HTTPHeader>): uploadapi_GetPartURL_HTTPHeader {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.name = \"\";\n message.value = \"\";\n if (value !== undefined)\n reflectionMergePartial<uploadapi_GetPartURL_HTTPHeader>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_GetPartURL_HTTPHeader): uploadapi_GetPartURL_HTTPHeader {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string Name */ 1:\n message.name = reader.string();\n break;\n case /* string Value */ 2:\n message.value = reader.string();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_GetPartURL_HTTPHeader, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string Name = 1; */\n if (message.name !== \"\")\n writer.tag(1, WireType.LengthDelimited).string(message.name);\n /* string Value = 2; */\n if (message.value !== \"\")\n writer.tag(2, WireType.LengthDelimited).string(message.value);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader\n */\nexport const uploadapi_GetPartURL_HTTPHeader = new uploadapi_GetPartURL_HTTPHeader$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_GetPartURL_Response$Type extends MessageType<uploadapi_GetPartURL_Response> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Response\", [\n { no: 1, name: \"upload_url\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 2, name: \"method\", kind: \"scalar\", T: 9 /*ScalarType.STRING*/ },\n { no: 3, name: \"headers\", kind: \"message\", repeat: 2 /*RepeatType.UNPACKED*/, T: () => uploadapi_GetPartURL_HTTPHeader },\n { no: 4, name: \"chunk_start\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ },\n { no: 5, name: \"chunk_end\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_GetPartURL_Response>): uploadapi_GetPartURL_Response {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.uploadUrl = \"\";\n message.method = \"\";\n message.headers = [];\n message.chunkStart = 0n;\n message.chunkEnd = 0n;\n if (value !== undefined)\n reflectionMergePartial<uploadapi_GetPartURL_Response>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_GetPartURL_Response): uploadapi_GetPartURL_Response {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* string upload_url */ 1:\n message.uploadUrl = reader.string();\n break;\n case /* string method */ 2:\n message.method = reader.string();\n break;\n case /* repeated MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader headers */ 3:\n message.headers.push(uploadapi_GetPartURL_HTTPHeader.internalBinaryRead(reader, reader.uint32(), options));\n break;\n case /* uint64 chunk_start */ 4:\n message.chunkStart = reader.uint64().toBigInt();\n break;\n case /* uint64 chunk_end */ 5:\n message.chunkEnd = reader.uint64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_GetPartURL_Response, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* string upload_url = 1; */\n if (message.uploadUrl !== \"\")\n writer.tag(1, WireType.LengthDelimited).string(message.uploadUrl);\n /* string method = 2; */\n if (message.method !== \"\")\n writer.tag(2, WireType.LengthDelimited).string(message.method);\n /* repeated MiLaboratories.Controller.Shared.uploadapi.GetPartURL.HTTPHeader headers = 3; */\n for (let i = 0; i < message.headers.length; i++)\n uploadapi_GetPartURL_HTTPHeader.internalBinaryWrite(message.headers[i], writer.tag(3, WireType.LengthDelimited).fork(), options).join();\n /* uint64 chunk_start = 4; */\n if (message.chunkStart !== 0n)\n writer.tag(4, WireType.Varint).uint64(message.chunkStart);\n /* uint64 chunk_end = 5; */\n if (message.chunkEnd !== 0n)\n writer.tag(5, WireType.Varint).uint64(message.chunkEnd);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.GetPartURL.Response\n */\nexport const uploadapi_GetPartURL_Response = new uploadapi_GetPartURL_Response$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Finalize$Type extends MessageType<uploadapi_Finalize> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Finalize\", []);\n }\n create(value?: PartialMessage<uploadapi_Finalize>): uploadapi_Finalize {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Finalize>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Finalize): uploadapi_Finalize {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Finalize, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize\n */\nexport const uploadapi_Finalize = new uploadapi_Finalize$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Finalize_Request$Type extends MessageType<uploadapi_Finalize_Request> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Finalize.Request\", [\n { no: 1, name: \"resource_id\", kind: \"scalar\", T: 4 /*ScalarType.UINT64*/, L: 0 /*LongType.BIGINT*/ }\n ]);\n }\n create(value?: PartialMessage<uploadapi_Finalize_Request>): uploadapi_Finalize_Request {\n const message = globalThis.Object.create((this.messagePrototype!));\n message.resourceId = 0n;\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Finalize_Request>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Finalize_Request): uploadapi_Finalize_Request {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n case /* uint64 resource_id */ 1:\n message.resourceId = reader.uint64().toBigInt();\n break;\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Finalize_Request, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n /* uint64 resource_id = 1; */\n if (message.resourceId !== 0n)\n writer.tag(1, WireType.Varint).uint64(message.resourceId);\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize.Request\n */\nexport const uploadapi_Finalize_Request = new uploadapi_Finalize_Request$Type();\n// @generated message type with reflection information, may provide speed optimized methods\nclass uploadapi_Finalize_Response$Type extends MessageType<uploadapi_Finalize_Response> {\n constructor() {\n super(\"MiLaboratories.Controller.Shared.uploadapi.Finalize.Response\", []);\n }\n create(value?: PartialMessage<uploadapi_Finalize_Response>): uploadapi_Finalize_Response {\n const message = globalThis.Object.create((this.messagePrototype!));\n if (value !== undefined)\n reflectionMergePartial<uploadapi_Finalize_Response>(this, message, value);\n return message;\n }\n internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: uploadapi_Finalize_Response): uploadapi_Finalize_Response {\n let message = target ?? this.create(), end = reader.pos + length;\n while (reader.pos < end) {\n let [fieldNo, wireType] = reader.tag();\n switch (fieldNo) {\n default:\n let u = options.readUnknownField;\n if (u === \"throw\")\n throw new globalThis.Error(`Unknown field ${fieldNo} (wire type ${wireType}) for ${this.typeName}`);\n let d = reader.skip(wireType);\n if (u !== false)\n (u === true ? UnknownFieldHandler.onRead : u)(this.typeName, message, fieldNo, wireType, d);\n }\n }\n return message;\n }\n internalBinaryWrite(message: uploadapi_Finalize_Response, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter {\n let u = options.writeUnknownFields;\n if (u !== false)\n (u == true ? UnknownFieldHandler.onWrite : u)(this.typeName, message, writer);\n return writer;\n }\n}\n/**\n * @generated MessageType for protobuf message MiLaboratories.Controller.Shared.uploadapi.Finalize.Response\n */\nexport const uploadapi_Finalize_Response = new uploadapi_Finalize_Response$Type();\n/**\n * @generated ServiceType for protobuf service MiLaboratories.Controller.Shared.Upload\n */\nexport const Upload = new ServiceType(\"MiLaboratories.Controller.Shared.Upload\", [\n { name: \"Init\", options: {}, I: uploadapi_Init_Request, O: uploadapi_Init_Response },\n { name: \"GetPartURL\", options: {}, I: uploadapi_GetPartURL_Request, O: uploadapi_GetPartURL_Response },\n { name: \"UpdateProgress\", options: {}, I: uploadapi_UpdateProgress_Request, O: uploadapi_UpdateProgress_Response },\n { name: \"Finalize\", options: {}, I: uploadapi_Finalize_Request, O: uploadapi_Finalize_Response }\n]);\n"],"names":["uploadapi_ChecksumAlgorithm","MessageType","reflectionMergePartial","UnknownFieldHandler","WireType","ServiceType"],"mappings":";;;;;AAAA;AACA;AACA;AAuOA;;AAEG;AACSA;AAAZ,CAAA,UAAY,2BAA2B,EAAA;AACnC;;AAEG;AACH,IAAA,2BAAA,CAAA,2BAAA,CAAA,aAAA,CAAA,GAAA,CAAA,CAAA,GAAA,aAAe;AACf;;AAEG;AACH,IAAA,2BAAA,CAAA,2BAAA,CAAA,QAAA,CAAA,GAAA,CAAA,CAAA,GAAA,QAAU;AACd,CAAC,EATWA,mCAA2B,KAA3BA,mCAA2B,GAAA,EAAA,CAAA,CAAA;AAUvC;AACA,MAAM,cAAe,SAAQC,mBAAsB,CAAA;AAC/C,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,4CAA4C,EAAE,EAAE,CAAC;IAC3D;AACA,IAAA,MAAM,CAAC,KAAiC,EAAA;AACpC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;QAClE,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAAY,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AAC3D,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAkB,EAAA;AACpG,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;AACX,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAAkB,EAAE,MAAqB,EAAE,OAA2B,EAAA;AACtF,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGA,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACsB,IAAI,cAAc;AAC3C;AACA,MAAM,mBAAoB,SAAQF,mBAA2B,CAAA;AACzD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,iDAAiD,EAAE,EAAE,CAAC;IAChE;AACA,IAAA,MAAM,CAAC,KAAsC,EAAA;AACzC,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;QAClE,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAAiB,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AAChE,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAuB,EAAA;AACzG,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;AACX,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAAuB,EAAE,MAAqB,EAAE,OAA2B,EAAA;AAC3F,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGA,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AAC2B,IAAI,mBAAmB;AACrD;AACA,MAAM,2BAA4B,SAAQF,mBAAmC,CAAA;AACzE,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,yDAAyD,EAAE;YAC7D,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC;AACjF,SAAA,CAAC;IACN;AACA,IAAA,MAAM,CAAC,KAA8C,EAAA;AACjD,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;AAClE,QAAA,OAAO,CAAC,UAAU,GAAG,EAAE;QACvB,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAAyB,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AACxE,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAA+B,EAAA;AACjH,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;gBACX,8BAA8B,CAAC;oBAC3B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC/C;AACJ,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAA+B,EAAE,MAAqB,EAAE,OAA2B,EAAA;;AAEnG,QAAA,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE;AACzB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEC,gBAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7D,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGD,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACI,MAAM,sBAAsB,GAAG,IAAI,2BAA2B;AACrE;AACA,MAAM,4BAA6B,SAAQF,mBAAoC,CAAA;AAC3E,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,0DAA0D,EAAE;YAC9D,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,sBAAsB;YACpG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,sBAAsB;YAClG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,CAAC,8DAA8D,EAAED,mCAA2B,EAAE,qBAAqB,CAAC,EAAE;AAClL,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB;AAC9E,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC;AACrH,SAAA,CAAC;IACN;AACA,IAAA,MAAM,CAAC,KAA+C,EAAA;AAClD,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;AAClE,QAAA,OAAO,CAAC,UAAU,GAAG,EAAE;AACvB,QAAA,OAAO,CAAC,QAAQ,GAAG,EAAE;AACrB,QAAA,OAAO,CAAC,iBAAiB,GAAG,CAAC;AAC7B,QAAA,OAAO,CAAC,cAAc,GAAG,EAAE;AAC3B,QAAA,OAAO,CAAC,aAAa,GAAG,EAAE;QAC1B,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAE,8BAAsB,CAA0B,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AACzE,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAgC,EAAA;AAClH,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;gBACX,8BAA8B,CAAC;oBAC3B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC/C;gBACJ,4BAA4B,CAAC;oBACzB,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC7C;gBACJ,2FAA2F,CAAC;AACxF,oBAAA,OAAO,CAAC,iBAAiB,GAAG,MAAM,CAAC,KAAK,EAAE;oBAC1C;gBACJ,kCAAkC,CAAC;AAC/B,oBAAA,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE;oBACxC;gBACJ,0CAA0C,CAAC;AACvC,oBAAA,IAAI,QAAQ,KAAKE,gBAAQ,CAAC,eAAe;AACrC,wBAAA,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,CAAC;AACpD,4BAAA,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;;AAE1D,wBAAA,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;oBAC1D;AACJ,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGD,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAAgC,EAAE,MAAqB,EAAE,OAA2B,EAAA;;AAEpG,QAAA,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE;AACzB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEC,gBAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;;AAE7D,QAAA,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE;AAC9B,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE;AAC9C,YAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE;gBACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,EAAE;QACjB;;AAEA,QAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE;AACvB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;;AAE3D,QAAA,IAAI,OAAO,CAAC,iBAAiB,KAAK,CAAC;AAC/B,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;;AAEnE,QAAA,IAAI,OAAO,CAAC,cAAc,KAAK,EAAE;AAC7B,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;AAC1E,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGD,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACI,MAAM,uBAAuB,GAAG,IAAI,4BAA4B;AACvE;AACA,MAAM,6BAA8B,SAAQF,mBAAqC,CAAA;AAC7E,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,2DAA2D,EAAE,EAAE,CAAC;IAC1E;AACA,IAAA,MAAM,CAAC,KAAgD,EAAA;AACnD,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;QAClE,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAA2B,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AAC1E,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAiC,EAAA;AACnH,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;AACX,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAAiC,EAAE,MAAqB,EAAE,OAA2B,EAAA;AACrG,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGA,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACqC,IAAI,6BAA6B;AACzE;AACA,MAAM,qCAAsC,SAAQF,mBAA6C,CAAA;AAC7F,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,mEAAmE,EAAE;YACvE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,sBAAsB;YACpG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,uBAAuB,CAAC,EAAE,CAAC;AACpF,SAAA,CAAC;IACN;AACA,IAAA,MAAM,CAAC,KAAwD,EAAA;AAC3D,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;AAClE,QAAA,OAAO,CAAC,UAAU,GAAG,EAAE;AACvB,QAAA,OAAO,CAAC,cAAc,GAAG,EAAE;QAC3B,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAAmC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AAClF,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAyC,EAAA;AAC3H,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;gBACX,8BAA8B,CAAC;oBAC3B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC/C;gBACJ,iCAAiC,CAAC;oBAC9B,OAAO,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE;oBAClD;AACJ,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAAyC,EAAE,MAAqB,EAAE,OAA2B,EAAA;;AAE7G,QAAA,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE;AACzB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEC,gBAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;;AAE7D,QAAA,IAAI,OAAO,CAAC,cAAc,KAAK,EAAE;AAC7B,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;AAChE,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGD,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACI,MAAM,gCAAgC,GAAG,IAAI,qCAAqC;AACzF;AACA,MAAM,sCAAuC,SAAQF,mBAA8C,CAAA;AAC/F,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,oEAAoE,EAAE,EAAE,CAAC;IACnF;AACA,IAAA,MAAM,CAAC,KAAyD,EAAA;AAC5D,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;QAClE,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAAoC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AACnF,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAA0C,EAAA;AAC5H,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;AACX,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAA0C,EAAE,MAAqB,EAAE,OAA2B,EAAA;AAC9G,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGA,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACI,MAAM,iCAAiC,GAAG,IAAI,sCAAsC;AAC3F;AACA,MAAM,yBAA0B,SAAQF,mBAAiC,CAAA;AACrE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,uDAAuD,EAAE,EAAE,CAAC;IACtE;AACA,IAAA,MAAM,CAAC,KAA4C,EAAA;AAC/C,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;QAClE,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAAuB,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AACtE,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAA6B,EAAA;AAC/G,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;AACX,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAA6B,EAAE,MAAqB,EAAE,OAA2B,EAAA;AACjG,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGA,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACiC,IAAI,yBAAyB;AACjE;AACA,MAAM,iCAAkC,SAAQF,mBAAyC,CAAA;AACrF,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,+DAA+D,EAAE;YACnE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,sBAAsB;YACpG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,sBAAsB;YACpG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,sBAAsB;AAC3G,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,sBAAsB;AAC5E,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;AACvD,SAAA,CAAC;IACN;AACA,IAAA,MAAM,CAAC,KAAoD,EAAA;AACvD,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;AAClE,QAAA,OAAO,CAAC,UAAU,GAAG,EAAE;AACvB,QAAA,OAAO,CAAC,UAAU,GAAG,EAAE;AACvB,QAAA,OAAO,CAAC,gBAAgB,GAAG,EAAE;AAC7B,QAAA,OAAO,CAAC,aAAa,GAAG,KAAK;AAC7B,QAAA,OAAO,CAAC,YAAY,GAAG,EAAE;QACzB,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAA+B,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AAC9E,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAqC,EAAA;AACvH,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;gBACX,8BAA8B,CAAC;oBAC3B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC/C;gBACJ,8BAA8B,CAAC;oBAC3B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC/C;gBACJ,qCAAqC,CAAC;oBAClC,OAAO,CAAC,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBACrD;gBACJ,gCAAgC,CAAC;AAC7B,oBAAA,OAAO,CAAC,aAAa,GAAG,MAAM,CAAC,IAAI,EAAE;oBACrC;gBACJ,gCAAgC,CAAC;AAC7B,oBAAA,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE;oBACtC;AACJ,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAAqC,EAAE,MAAqB,EAAE,OAA2B,EAAA;;AAEzG,QAAA,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE;AACzB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEC,gBAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;;AAE7D,QAAA,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE;AACzB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;;AAE7D,QAAA,IAAI,OAAO,CAAC,gBAAgB,KAAK,EAAE;AAC/B,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC;;AAEnE,QAAA,IAAI,OAAO,CAAC,aAAa,KAAK,KAAK;AAC/B,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;;AAE9D,QAAA,IAAI,OAAO,CAAC,YAAY,KAAK,EAAE;AAC3B,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;AACxE,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGD,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACI,MAAM,4BAA4B,GAAG,IAAI,iCAAiC;AACjF;AACA,MAAM,oCAAqC,SAAQF,mBAA4C,CAAA;AAC3F,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,kEAAkE,EAAE;YACtE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,wBAAwB;YACrF,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;AAClE,SAAA,CAAC;IACN;AACA,IAAA,MAAM,CAAC,KAAuD,EAAA;AAC1D,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;AAClE,QAAA,OAAO,CAAC,IAAI,GAAG,EAAE;AACjB,QAAA,OAAO,CAAC,KAAK,GAAG,EAAE;QAClB,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAAkC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AACjF,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAwC,EAAA;AAC1H,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;gBACX,uBAAuB,CAAC;AACpB,oBAAA,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE;oBAC9B;gBACJ,wBAAwB,CAAC;AACrB,oBAAA,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;oBAC/B;AACJ,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAAwC,EAAE,MAAqB,EAAE,OAA2B,EAAA;;AAE5G,QAAA,IAAI,OAAO,CAAC,IAAI,KAAK,EAAE;AACnB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEC,gBAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;;AAEhE,QAAA,IAAI,OAAO,CAAC,KAAK,KAAK,EAAE;AACpB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;AACjE,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGD,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACI,MAAM,+BAA+B,GAAG,IAAI,oCAAoC;AACvF;AACA,MAAM,kCAAmC,SAAQF,mBAA0C,CAAA;AACvF,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,gEAAgE,EAAE;AACpE,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB;AACzE,YAAA,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB;YACrE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,0BAA0B,CAAC,EAAE,MAAM,+BAA+B,EAAE;YACxH,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC,sBAAsB;YACpG,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC;AAC/E,SAAA,CAAC;IACN;AACA,IAAA,MAAM,CAAC,KAAqD,EAAA;AACxD,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;AAClE,QAAA,OAAO,CAAC,SAAS,GAAG,EAAE;AACtB,QAAA,OAAO,CAAC,MAAM,GAAG,EAAE;AACnB,QAAA,OAAO,CAAC,OAAO,GAAG,EAAE;AACpB,QAAA,OAAO,CAAC,UAAU,GAAG,EAAE;AACvB,QAAA,OAAO,CAAC,QAAQ,GAAG,EAAE;QACrB,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAAgC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AAC/E,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAsC,EAAA;AACxH,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;gBACX,6BAA6B,CAAC;AAC1B,oBAAA,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE;oBACnC;gBACJ,yBAAyB,CAAC;AACtB,oBAAA,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE;oBAChC;gBACJ,6FAA6F,CAAC;AAC1F,oBAAA,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,+BAA+B,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC1G;gBACJ,8BAA8B,CAAC;oBAC3B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC/C;gBACJ,4BAA4B,CAAC;oBACzB,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC7C;AACJ,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAAsC,EAAE,MAAqB,EAAE,OAA2B,EAAA;;AAE1G,QAAA,IAAI,OAAO,CAAC,SAAS,KAAK,EAAE;AACxB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEC,gBAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC;;AAErE,QAAA,IAAI,OAAO,CAAC,MAAM,KAAK,EAAE;AACrB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;;AAElE,QAAA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE;AAC3C,YAAA,+BAA+B,CAAC,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE;;AAE3I,QAAA,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE;AACzB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;;AAE7D,QAAA,IAAI,OAAO,CAAC,QAAQ,KAAK,EAAE;AACvB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEA,gBAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;AAC3D,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGD,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACI,MAAM,6BAA6B,GAAG,IAAI,kCAAkC;AACnF;AACA,MAAM,uBAAwB,SAAQF,mBAA+B,CAAA;AACjE,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,qDAAqD,EAAE,EAAE,CAAC;IACpE;AACA,IAAA,MAAM,CAAC,KAA0C,EAAA;AAC7C,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;QAClE,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAAqB,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AACpE,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAA2B,EAAA;AAC7G,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;AACX,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAA2B,EAAE,MAAqB,EAAE,OAA2B,EAAA;AAC/F,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGA,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AAC+B,IAAI,uBAAuB;AAC7D;AACA,MAAM,+BAAgC,SAAQF,mBAAuC,CAAA;AACjF,IAAA,WAAA,GAAA;QACI,KAAK,CAAC,6DAA6D,EAAE;YACjE,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC;AACjF,SAAA,CAAC;IACN;AACA,IAAA,MAAM,CAAC,KAAkD,EAAA;AACrD,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;AAClE,QAAA,OAAO,CAAC,UAAU,GAAG,EAAE;QACvB,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAA6B,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AAC5E,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAmC,EAAA;AACrH,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;gBACX,8BAA8B,CAAC;oBAC3B,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;oBAC/C;AACJ,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAAmC,EAAE,MAAqB,EAAE,OAA2B,EAAA;;AAEvG,QAAA,IAAI,OAAO,CAAC,UAAU,KAAK,EAAE;AACzB,YAAA,MAAM,CAAC,GAAG,CAAC,CAAC,EAAEC,gBAAQ,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC;AAC7D,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGD,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACI,MAAM,0BAA0B,GAAG,IAAI,+BAA+B;AAC7E;AACA,MAAM,gCAAiC,SAAQF,mBAAwC,CAAA;AACnF,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,8DAA8D,EAAE,EAAE,CAAC;IAC7E;AACA,IAAA,MAAM,CAAC,KAAmD,EAAA;AACtD,QAAA,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAiB,EAAE;QAClE,IAAI,KAAK,KAAK,SAAS;AACnB,YAAAC,8BAAsB,CAA8B,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC;AAC7E,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,kBAAkB,CAAC,MAAqB,EAAE,MAAc,EAAE,OAA0B,EAAE,MAAoC,EAAA;AACtH,QAAA,IAAI,OAAO,GAAG,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,GAAG,MAAM,CAAC,GAAG,GAAG,MAAM;AAChE,QAAA,OAAO,MAAM,CAAC,GAAG,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,EAAE;YACtC,QAAQ,OAAO;AACX,gBAAA;AACI,oBAAA,IAAI,CAAC,GAAG,OAAO,CAAC,gBAAgB;oBAChC,IAAI,CAAC,KAAK,OAAO;AACb,wBAAA,MAAM,IAAI,UAAU,CAAC,KAAK,CAAC,CAAA,cAAA,EAAiB,OAAO,CAAA,YAAA,EAAe,QAAQ,SAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;oBACvG,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,KAAK,KAAK;wBACX,CAAC,CAAC,KAAK,IAAI,GAAGC,2BAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;;QAE3G;AACA,QAAA,OAAO,OAAO;IAClB;AACA,IAAA,mBAAmB,CAAC,OAAoC,EAAE,MAAqB,EAAE,OAA2B,EAAA;AACxG,QAAA,IAAI,CAAC,GAAG,OAAO,CAAC,kBAAkB;QAClC,IAAI,CAAC,KAAK,KAAK;YACX,CAAC,CAAC,IAAI,IAAI,GAAGA,2BAAmB,CAAC,OAAO,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC;AACjF,QAAA,OAAO,MAAM;IACjB;AACH;AACD;;AAEG;AACI,MAAM,2BAA2B,GAAG,IAAI,gCAAgC;AAC/E;;AAEG;MACU,MAAM,GAAG,IAAIE,sBAAW,CAAC,yCAAyC,EAAE;AAC7E,IAAA,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAC,EAAE,uBAAuB,EAAE;AACpF,IAAA,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,4BAA4B,EAAE,CAAC,EAAE,6BAA6B,EAAE;AACtG,IAAA,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,gCAAgC,EAAE,CAAC,EAAE,iCAAiC,EAAE;AAClH,IAAA,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,0BAA0B,EAAE,CAAC,EAAE,2BAA2B;AACjG,CAAA;;;;;;;;;;;;;"}
|