profile-viewer 0.0.4 → 0.0.5

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.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/dist/029b9e4fd0218d7b09c6.svg +8 -0
  3. data/dist/{136.4ad3301b8aacf759ea70.bundle.js → 136.ad4176dc2a8e5cf33ef3.bundle.js} +2 -2
  4. data/dist/{136.4ad3301b8aacf759ea70.bundle.js.map → 136.ad4176dc2a8e5cf33ef3.bundle.js.map} +1 -1
  5. data/dist/{171.621b9df5978342be5662.bundle.js → 171.37d1e1824587d8df0ae2.bundle.js} +2 -2
  6. data/dist/{171.621b9df5978342be5662.bundle.js.map → 171.37d1e1824587d8df0ae2.bundle.js.map} +1 -1
  7. data/dist/234ed61ab185caff67e3.svg +8 -0
  8. data/dist/280.4edd20bd6228986bbf2e.bundle.js +2 -0
  9. data/dist/280.4edd20bd6228986bbf2e.bundle.js.map +1 -0
  10. data/dist/556.b8d3d4d402ced081615a.bundle.js +2 -0
  11. data/dist/{556.2be67a37a0c61fdc2485.bundle.js.map → 556.b8d3d4d402ced081615a.bundle.js.map} +1 -1
  12. data/dist/874.7cb94ee0732c5a2ca826.bundle.js +2 -0
  13. data/dist/874.7cb94ee0732c5a2ca826.bundle.js.map +1 -0
  14. data/dist/957.2f40be4cef3037bc352b.bundle.js +3 -0
  15. data/dist/957.2f40be4cef3037bc352b.bundle.js.LICENSE.txt +19 -0
  16. data/dist/957.2f40be4cef3037bc352b.bundle.js.map +1 -0
  17. data/dist/999.a1119c25d77e1883c1e1.bundle.js +2 -0
  18. data/dist/999.a1119c25d77e1883c1e1.bundle.js.map +1 -0
  19. data/dist/docs/_navbar.md +3 -3
  20. data/dist/docs/_sidebar.md +28 -28
  21. data/dist/docs/advanced-topics.md +5 -5
  22. data/dist/docs/async-posix-signal-control.md +5 -6
  23. data/dist/docs/bunny-2.md +3 -2
  24. data/dist/docs/bunny.md +29 -26
  25. data/dist/docs/gitpod.md +5 -10
  26. data/dist/docs/guide-android-profiling.md +18 -2
  27. data/dist/docs/guide-filtering-call-trees.md +11 -11
  28. data/dist/docs/guide-getting-started.md +4 -5
  29. data/dist/docs/guide-perf-profiling.md +8 -8
  30. data/dist/docs/guide-profiling-android-directly-on-device.md +14 -13
  31. data/dist/docs/guide-profiling-firefox-android.md +2 -3
  32. data/dist/docs/guide-remote-profiling.md +24 -23
  33. data/dist/docs/guide-removing-profiler.md +1 -0
  34. data/dist/docs/guide-stack-samples-and-call-trees.md +2 -0
  35. data/dist/docs/guide-startup-shutdown.md +14 -9
  36. data/dist/docs/guide-ui-tour-panels.md +4 -3
  37. data/dist/docs/guide-ui-tour-timeline.md +3 -0
  38. data/dist/docs/index.html +21 -18
  39. data/dist/docs/ipc-messages.md +6 -6
  40. data/dist/docs/js/docsify_v4.12.2+.min.js +1 -1
  41. data/dist/docs/memory-allocations.md +4 -4
  42. data/dist/docs/videos.md +10 -10
  43. data/dist/index.html +1 -1
  44. data/dist/locales/be/app.ftl +108 -0
  45. data/dist/locales/de/app.ftl +9 -0
  46. data/dist/locales/el/app.ftl +34 -11
  47. data/dist/locales/en-CA/app.ftl +23 -5
  48. data/dist/locales/en-GB/app.ftl +14 -5
  49. data/dist/locales/en-US/app.ftl +13 -4
  50. data/dist/locales/es-CL/app.ftl +17 -2
  51. data/dist/locales/fr/app.ftl +15 -0
  52. data/dist/locales/fur/app.ftl +16 -0
  53. data/dist/locales/fy-NL/app.ftl +9 -0
  54. data/dist/locales/ia/app.ftl +12 -0
  55. data/dist/locales/it/app.ftl +9 -0
  56. data/dist/locales/kab/app.ftl +12 -0
  57. data/dist/locales/nl/app.ftl +9 -0
  58. data/dist/locales/pt-BR/app.ftl +9 -0
  59. data/dist/locales/ru/app.ftl +9 -0
  60. data/dist/locales/sv-SE/app.ftl +18 -0
  61. data/dist/locales/tr/app.ftl +14 -0
  62. data/dist/locales/uk/app.ftl +18 -0
  63. data/dist/locales/zh-CN/app.ftl +14 -4
  64. data/dist/locales/zh-TW/app.ftl +10 -1
  65. data/dist/main.6cdc9308b67c00785584.bundle.js +198 -0
  66. data/dist/{main.89ba95fadf0fbee4977a.bundle.js.LICENSE.txt → main.6cdc9308b67c00785584.bundle.js.LICENSE.txt} +2 -2
  67. data/dist/main.6cdc9308b67c00785584.bundle.js.map +1 -0
  68. data/dist/photon/index.html +1 -1
  69. data/dist/photon/main.e1d25e5ea6d5812b127b.bundle.js +2 -0
  70. data/dist/photon/main.e1d25e5ea6d5812b127b.bundle.js.map +1 -0
  71. data/dist/sw.js +1 -1
  72. data/dist/sw.js.map +1 -1
  73. data/ruby-bin/profile-viewer +10 -1
  74. data/ruby-bin/profile-viewer-version.rb +1 -1
  75. metadata +24 -17
  76. data/dist/280.b4210a48e650408000c3.bundle.js +0 -2
  77. data/dist/280.b4210a48e650408000c3.bundle.js.map +0 -1
  78. data/dist/556.2be67a37a0c61fdc2485.bundle.js +0 -2
  79. data/dist/874.ca7a11f56438ad874b9d.bundle.js +0 -2
  80. data/dist/874.ca7a11f56438ad874b9d.bundle.js.map +0 -1
  81. data/dist/main.89ba95fadf0fbee4977a.bundle.js +0 -201
  82. data/dist/main.89ba95fadf0fbee4977a.bundle.js.map +0 -1
  83. data/dist/photon/main.fa2aec5d6b214ac1cdb3.bundle.js +0 -2
  84. data/dist/photon/main.fa2aec5d6b214ac1cdb3.bundle.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"999.a1119c25d77e1883c1e1.bundle.js","mappings":"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","sources":["webpack:///./src/profile-logic/import/simpleperf.js","webpack:///./src/profile-logic/import/proto/simpleperf_report.js"],"sourcesContent":["// @flow\n\nimport { simpleperf_report_proto as report } from './proto/simpleperf_report';\n\nimport { PROCESSED_PROFILE_VERSION } from 'firefox-profiler/app-logic/constants';\nimport type { Milliseconds } from 'firefox-profiler/types/units';\nimport type {\n CategoryList,\n CategoryColor,\n FrameTable,\n FuncTable,\n IndexIntoCategoryList,\n IndexIntoFrameTable,\n IndexIntoFuncTable,\n IndexIntoResourceTable,\n IndexIntoStackTable,\n ProfileMeta,\n ResourceTable,\n RawSamplesTable,\n Profile,\n RawThread,\n RawStackTable,\n} from 'firefox-profiler/types/profile';\nimport {\n getEmptyFuncTable,\n getEmptyResourceTable,\n getEmptyFrameTable,\n getEmptyRawStackTable,\n getEmptySamplesTable,\n getEmptyRawMarkerTable,\n getEmptyNativeSymbolTable,\n} from 'firefox-profiler/profile-logic/data-structures';\nimport { StringTable } from 'firefox-profiler/utils/string-table';\nimport { ensureExists } from 'firefox-profiler/utils/flow';\nimport {\n verifyMagic,\n SIMPLEPERF as SIMPLEPERF_MAGIC,\n} from 'firefox-profiler/utils/magic';\n\nimport Long from 'long';\n\nfunction toNumber(value: Long | number): number {\n if (Long.isLong(value)) {\n const longValue: Long = value;\n return longValue.toNumber();\n }\n\n return value;\n}\n\nfunction toMilliseconds(nanoseconds: number | Long): Milliseconds {\n return toNumber(nanoseconds) / 1000_000;\n}\n\nclass Categories {\n static categoryList: CategoryList = [];\n\n static Other = this.createCategory('Other', 'grey');\n static Native = this.createCategory('Native', 'magenta');\n static Java = this.createCategory('Java', 'green');\n static System = this.createCategory('System', 'yellow');\n static Kernel = this.createCategory('Kernel', 'orange');\n\n static toJson(): CategoryList {\n return this.categoryList;\n }\n\n static createCategory(\n name: string,\n color: CategoryColor\n ): IndexIntoCategoryList {\n const index = this.categoryList.length;\n this.categoryList.push({ name, color, subcategories: ['Other'] });\n\n return index;\n }\n}\n\nclass FirefoxResourceTable {\n strings: StringTable;\n\n resourceTable: ResourceTable = getEmptyResourceTable();\n resourcesMap: Map<number, IndexIntoResourceTable> = new Map();\n\n constructor(strings: StringTable) {\n this.strings = strings;\n }\n\n toJson(): ResourceTable {\n return this.resourceTable;\n }\n\n findOrAddResource(file: report.IFile): IndexIntoResourceTable {\n let resourceIndex = this.resourcesMap.get(file.id);\n if (!resourceIndex) {\n this.resourceTable.lib.push(null);\n this.resourceTable.name.push(this.strings.indexForString(file.path));\n this.resourceTable.host.push(null);\n this.resourceTable.type.push(1); // Library\n\n resourceIndex = this.resourceTable.length++;\n this.resourcesMap.set(file.id, resourceIndex);\n }\n\n return resourceIndex;\n }\n}\n\nclass FirefoxFuncTable {\n strings: StringTable;\n\n funcTable: FuncTable = getEmptyFuncTable();\n funcMap: Map<string, IndexIntoFuncTable> = new Map();\n\n constructor(strings: StringTable) {\n this.strings = strings;\n }\n\n toJson(): FuncTable {\n return this.funcTable;\n }\n\n findOrAddFunc(name: string, resourceIndex: number): IndexIntoFuncTable {\n const nameIndex = this.strings.indexForString(name);\n\n const mapKey = `${nameIndex}-${resourceIndex}`;\n\n let funcIndex = this.funcMap.get(mapKey);\n if (!funcIndex) {\n this.funcTable.name.push(nameIndex);\n this.funcTable.isJS.push(false);\n this.funcTable.relevantForJS.push(false);\n this.funcTable.resource.push(resourceIndex);\n this.funcTable.fileName.push(null);\n this.funcTable.lineNumber.push(null);\n this.funcTable.columnNumber.push(null);\n\n funcIndex = this.funcTable.length++;\n this.funcMap.set(mapKey, funcIndex);\n }\n\n return funcIndex;\n }\n}\n\nclass FirefoxFrameTable {\n strings: StringTable;\n\n frameTable: FrameTable = getEmptyFrameTable();\n frameMap: Map<string, IndexIntoFrameTable> = new Map();\n\n constructor(strings: StringTable) {\n this.strings = strings;\n }\n\n toJson(): FrameTable {\n return this.frameTable;\n }\n\n findOrAddFrame(\n funcIndex: IndexIntoFuncTable,\n category: IndexIntoCategoryList\n ): IndexIntoFrameTable {\n const mapKey = `${funcIndex}-${category}`;\n\n let frameIndex = this.frameMap.get(mapKey);\n if (!frameIndex) {\n this.frameTable.address.push(-1);\n this.frameTable.inlineDepth.push(0);\n this.frameTable.category.push(category);\n this.frameTable.subcategory.push(0);\n this.frameTable.func.push(funcIndex);\n this.frameTable.nativeSymbol.push(null);\n this.frameTable.innerWindowID.push(null);\n this.frameTable.line.push(null);\n this.frameTable.column.push(null);\n\n frameIndex = this.frameTable.length++;\n this.frameMap.set(mapKey, frameIndex);\n }\n\n return frameIndex;\n }\n}\n\nclass FirefoxSampleTable {\n strings: StringTable;\n\n stackTable: RawStackTable = getEmptyRawStackTable();\n stackMap: Map<string, IndexIntoStackTable> = new Map();\n\n constructor(strings: StringTable) {\n this.strings = strings;\n }\n\n toJson(): RawStackTable {\n return this.stackTable;\n }\n\n findOrAddStack(\n frameIndex: IndexIntoFrameTable,\n prefix: IndexIntoStackTable | null\n ): IndexIntoStackTable {\n const mapKey = `${frameIndex}-${prefix ?? 'null'}`;\n\n let stackIndex = this.stackMap.get(mapKey);\n if (!stackIndex) {\n this.stackTable.frame.push(frameIndex);\n this.stackTable.prefix.push(prefix);\n\n stackIndex = this.stackTable.length++;\n this.stackMap.set(mapKey, stackIndex);\n }\n\n return stackIndex;\n }\n}\n\nclass FirefoxThread {\n name: string;\n isMainThread: boolean;\n\n tid: number;\n pid: number;\n\n stringArray = [];\n strings = StringTable.withBackingArray(this.stringArray);\n\n sampleTable: RawSamplesTable = getEmptySamplesTable();\n\n stackTable: FirefoxSampleTable = new FirefoxSampleTable(this.strings);\n frameTable: FirefoxFrameTable = new FirefoxFrameTable(this.strings);\n funcTable: FirefoxFuncTable = new FirefoxFuncTable(this.strings);\n resourceTable: FirefoxResourceTable = new FirefoxResourceTable(this.strings);\n\n cpuClockEventId: number = -1;\n\n constructor(thread: report.IThread) {\n this.tid = thread.threadId;\n this.pid = thread.processId;\n\n this.isMainThread = thread.threadId === thread.processId;\n this.name = thread.threadName ?? '';\n }\n\n toJson(): RawThread {\n return {\n processType: 'default',\n processStartupTime: 0,\n processShutdownTime: null,\n registerTime: 0,\n unregisterTime: null,\n pausedRanges: [],\n name: this.name,\n isMainThread: this.isMainThread,\n pid: this.pid.toString(),\n tid: this.tid,\n samples: this.sampleTable,\n markers: getEmptyRawMarkerTable(),\n stackTable: this.stackTable.toJson(),\n frameTable: this.frameTable.toJson(),\n stringArray: this.stringArray,\n funcTable: this.funcTable.toJson(),\n resourceTable: this.resourceTable.toJson(),\n nativeSymbols: getEmptyNativeSymbolTable(),\n };\n }\n\n enableCpuClock(cpuClockEventId: number): void {\n this.cpuClockEventId = cpuClockEventId;\n\n if (cpuClockEventId >= 0) {\n this.sampleTable.weight = [];\n this.sampleTable.weightType = 'tracing-ms';\n }\n }\n\n addSample(sample: report.ISample, fileMap: Map<number, report.IFile>): void {\n let prefixStackId: number | null = null;\n for (const frame of sample.callchain.reverse()) {\n const file: report.IFile = fileMap.get(frame.fileId);\n\n const resourceIndex = this.resourceTable.findOrAddResource(file);\n const methodName =\n frame.symbolId >= 0\n ? file.symbol[frame.symbolId]\n : `${file.path.split(/[\\\\/]/).pop()}+0x${frame.vaddrInFile.toString(16)}`;\n\n const funcIndex = this.funcTable.findOrAddFunc(methodName, resourceIndex);\n\n const filePath = file.path ?? '';\n // const fileInAppData = filePath.startsWith(\"/data/app/\");\n const fileInSystem =\n filePath.startsWith('/apex/') ||\n filePath.startsWith('/system/') ||\n filePath.startsWith('/vendor/');\n\n let category: IndexIntoCategoryList = Categories.Other;\n if (filePath === '[kernel.kallsyms]' || filePath.endsWith('.ko')) {\n category = Categories.Kernel;\n } else if (filePath.endsWith('.so')) {\n category = fileInSystem ? Categories.System : Categories.Native;\n } else if (\n filePath === '[JIT app cache]' ||\n filePath.endsWith('.vdex') ||\n filePath.endsWith('.apk') ||\n filePath.endsWith('.jar') ||\n filePath.endsWith('.oat') ||\n filePath.endsWith('.odex')\n ) {\n const isJavaMethod =\n methodName.startsWith('java.') ||\n methodName.startsWith('javax.') ||\n methodName.startsWith('kotlin.') ||\n methodName.startsWith('kotlinx.') ||\n methodName.startsWith('dalvik.');\n const isAndroidMethod =\n methodName.startsWith('android.') ||\n methodName.startsWith('com.android.') ||\n methodName.startsWith('androidx.') ||\n methodName.startsWith('libcore.');\n category =\n fileInSystem || isAndroidMethod || isJavaMethod\n ? Categories.System\n : Categories.Java;\n }\n\n const frameIndex = this.frameTable.findOrAddFrame(funcIndex, category);\n\n prefixStackId = this.stackTable.findOrAddStack(frameIndex, prefixStackId);\n }\n\n this.sampleTable.stack.push(prefixStackId);\n ensureExists(this.sampleTable.time).push(toMilliseconds(sample.time ?? 0));\n\n if (this.sampleTable.weight) {\n const weight =\n this.cpuClockEventId >= 0 && sample.eventTypeId === this.cpuClockEventId\n ? toMilliseconds(sample.eventCount ?? 0)\n : 0;\n this.sampleTable.weight.push(weight);\n }\n\n this.sampleTable.length++;\n }\n}\n\nclass FirefoxProfile {\n threads: FirefoxThread[] = [];\n threadMap: Map<number, FirefoxThread> = new Map();\n\n fileMap: Map<number, report.IFile> = new Map();\n\n eventTypes: string[];\n cpuClockEventId: number;\n\n appPackageName: ?string | null;\n sampleCount: number = 0;\n lostCount: number = 0;\n\n toJson(): Profile {\n return {\n meta: this.getProfileMeta(),\n libs: [],\n threads: this.threads.map((thread) => thread.toJson()),\n };\n }\n\n getProfileMeta(): ProfileMeta {\n return {\n // The interval at which the threads are sampled.\n interval: 0,\n startTime: 0,\n processType: 0,\n categories: Categories.toJson(),\n product: this.appPackageName ?? 'Android Profile',\n stackwalk: 0,\n // This is the Gecko profile format version (the unprocessed version received directly\n // from the browser.)\n version: 30,\n // This is the processed profile format version.\n preprocessedProfileVersion: PROCESSED_PROFILE_VERSION,\n\n symbolicationNotSupported: true,\n markerSchema: [],\n\n platform: 'Android',\n toolkit: 'android',\n importedFrom: 'Simpleperf',\n\n // Do not distinguish between different stack types?\n usesOnlyOneStackType: true,\n // Hide the \"Look up the function name on Searchfox\" menu entry?\n sourceCodeIsNotOnSearchfox: true,\n // Extra information about the profile, not shown in the \"Profile Info\" panel,\n // but in the more info panel\n extra: [\n {\n label: 'Profile Information',\n entries: [\n {\n label: 'Sample Count',\n format: 'integer',\n value: this.sampleCount,\n },\n {\n label: 'Lost Samples',\n format: 'integer',\n value: this.lostCount,\n },\n {\n label: 'Sampled events',\n format: 'list',\n value: this.eventTypes,\n },\n ],\n },\n ],\n // Keep the defined thread order\n keepProfileThreadOrder: true,\n };\n }\n\n setMetaInfo(metaInfo: report.IMetaInfo | null) {\n this.eventTypes = metaInfo?.eventType ?? [];\n this.appPackageName = metaInfo?.appPackageName;\n\n this.cpuClockEventId =\n (this.eventTypes && this.eventTypes.indexOf('cpu-clock')) ?? -1;\n }\n\n setLostSituation(lost: report.ILostSituation | null) {\n this.sampleCount = toNumber(lost?.sampleCount ?? 0);\n this.lostCount = toNumber(lost?.lostCount ?? 0);\n }\n\n addFile(file: report.IFile) {\n this.fileMap.set(file.id, file);\n }\n\n addThread(thread: report.IThread) {\n const firefoxThread = new FirefoxThread(thread);\n this.threads.push(firefoxThread);\n this.threadMap.set(thread.threadId, firefoxThread);\n }\n\n finalizeThreads() {\n this.threads.forEach((thread) => {\n thread.enableCpuClock(this.cpuClockEventId ?? -1);\n });\n }\n\n addSample(sample: report.ISample): void {\n const thread = this.threadMap.get(sample.threadId);\n\n if (!thread) {\n console.warn(`Thread not found for sample: ${sample.threadId}`);\n return;\n }\n\n thread.addSample(sample, this.fileMap);\n }\n}\n\nexport class SimpleperfReportConverter {\n buffer: ArrayBuffer;\n bufferView: DataView;\n bufferOffset: number = 0;\n\n constructor(buffer: ArrayBuffer) {\n this.buffer = buffer;\n this.bufferView = new DataView(buffer);\n }\n\n readUint16LE() {\n const value = this.bufferView.getUint16(\n this.bufferOffset,\n true /* littleEndian */\n );\n this.bufferOffset += 2;\n return value;\n }\n\n readUint32LE() {\n const value = this.bufferView.getUint32(\n this.bufferOffset,\n true /* littleEndian */\n );\n this.bufferOffset += 4;\n return value;\n }\n\n readMagic() {\n if (!verifyMagic(SIMPLEPERF_MAGIC, this.buffer)) {\n throw new Error('Invalid simpleperf file');\n }\n this.bufferOffset += SIMPLEPERF_MAGIC.length;\n }\n\n readRecord(recordSize: number): report.Record {\n const recordBuffer = this.buffer.slice(\n this.bufferOffset,\n this.bufferOffset + recordSize\n );\n const recordArray = new Uint8Array(recordBuffer);\n this.bufferOffset += recordSize;\n\n return report.Record.decode(recordArray);\n }\n\n process(): Profile {\n this.readMagic();\n\n // Parse version\n this.readUint16LE();\n\n let recordSize = this.readUint32LE();\n\n const targetProfile = new FirefoxProfile();\n\n const samples: report.ISample[] = [];\n let sampleCount = 0;\n\n while (recordSize > 0) {\n const record: report.Record = this.readRecord(recordSize);\n\n switch (record.recordData) {\n case 'sample':\n samples.push(record.sample);\n break;\n case 'lost':\n // Expected only once\n sampleCount = toNumber(record.lost?.sampleCount ?? 0);\n targetProfile.setLostSituation(record.lost);\n break;\n case 'file':\n targetProfile.addFile(record.file);\n break;\n case 'thread':\n targetProfile.addThread(record.thread);\n break;\n case 'metaInfo':\n // Expected only once\n targetProfile.setMetaInfo(record.metaInfo);\n break;\n case 'contextSwitch':\n // Not handled\n break;\n default:\n console.warn(`Unknown record type: ${record.recordData}`);\n break;\n }\n\n recordSize = this.readUint32LE();\n }\n\n if (samples.length !== sampleCount) {\n throw new Error(\"Samples count doesn't match the number of samples read\");\n }\n\n targetProfile.finalizeThreads();\n samples.forEach((sample) => targetProfile.addSample(sample));\n\n return targetProfile.toJson();\n }\n}\n\nexport function convertSimpleperfTraceProfile(\n traceBuffer: ArrayBuffer\n): Profile {\n return new SimpleperfReportConverter(traceBuffer).process();\n}\n","/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\n\"use strict\";\n\nvar $protobuf = require(\"protobufjs/minimal\");\n\n// Common aliases\nvar $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nvar $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\n$root.simpleperf_report_proto = (function() {\n\n /**\n * Namespace simpleperf_report_proto.\n * @exports simpleperf_report_proto\n * @namespace\n */\n var simpleperf_report_proto = {};\n\n simpleperf_report_proto.Sample = (function() {\n\n /**\n * Properties of a Sample.\n * @memberof simpleperf_report_proto\n * @interface ISample\n * @property {number|Long|null} [time] Sample time\n * @property {number|null} [threadId] Sample threadId\n * @property {Array.<simpleperf_report_proto.Sample.ICallChainEntry>|null} [callchain] Sample callchain\n * @property {number|Long|null} [eventCount] Sample eventCount\n * @property {number|null} [eventTypeId] Sample eventTypeId\n * @property {simpleperf_report_proto.Sample.IUnwindingResult|null} [unwindingResult] Sample unwindingResult\n */\n\n /**\n * Constructs a new Sample.\n * @memberof simpleperf_report_proto\n * @classdesc Represents a Sample.\n * @implements ISample\n * @constructor\n * @param {simpleperf_report_proto.ISample=} [properties] Properties to set\n */\n function Sample(properties) {\n this.callchain = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Sample time.\n * @member {number|Long} time\n * @memberof simpleperf_report_proto.Sample\n * @instance\n */\n Sample.prototype.time = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Sample threadId.\n * @member {number} threadId\n * @memberof simpleperf_report_proto.Sample\n * @instance\n */\n Sample.prototype.threadId = 0;\n\n /**\n * Sample callchain.\n * @member {Array.<simpleperf_report_proto.Sample.ICallChainEntry>} callchain\n * @memberof simpleperf_report_proto.Sample\n * @instance\n */\n Sample.prototype.callchain = $util.emptyArray;\n\n /**\n * Sample eventCount.\n * @member {number|Long} eventCount\n * @memberof simpleperf_report_proto.Sample\n * @instance\n */\n Sample.prototype.eventCount = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Sample eventTypeId.\n * @member {number} eventTypeId\n * @memberof simpleperf_report_proto.Sample\n * @instance\n */\n Sample.prototype.eventTypeId = 0;\n\n /**\n * Sample unwindingResult.\n * @member {simpleperf_report_proto.Sample.IUnwindingResult|null|undefined} unwindingResult\n * @memberof simpleperf_report_proto.Sample\n * @instance\n */\n Sample.prototype.unwindingResult = null;\n\n /**\n * Creates a new Sample instance using the specified properties.\n * @function create\n * @memberof simpleperf_report_proto.Sample\n * @static\n * @param {simpleperf_report_proto.ISample=} [properties] Properties to set\n * @returns {simpleperf_report_proto.Sample} Sample instance\n */\n Sample.create = function create(properties) {\n return new Sample(properties);\n };\n\n /**\n * Encodes the specified Sample message. Does not implicitly {@link simpleperf_report_proto.Sample.verify|verify} messages.\n * @function encode\n * @memberof simpleperf_report_proto.Sample\n * @static\n * @param {simpleperf_report_proto.ISample} message Sample message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sample.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.time != null && Object.hasOwnProperty.call(message, \"time\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.time);\n if (message.threadId != null && Object.hasOwnProperty.call(message, \"threadId\"))\n writer.uint32(/* id 2, wireType 0 =*/16).int32(message.threadId);\n if (message.callchain != null && message.callchain.length)\n for (var i = 0; i < message.callchain.length; ++i)\n $root.simpleperf_report_proto.Sample.CallChainEntry.encode(message.callchain[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.eventCount != null && Object.hasOwnProperty.call(message, \"eventCount\"))\n writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.eventCount);\n if (message.eventTypeId != null && Object.hasOwnProperty.call(message, \"eventTypeId\"))\n writer.uint32(/* id 5, wireType 0 =*/40).uint32(message.eventTypeId);\n if (message.unwindingResult != null && Object.hasOwnProperty.call(message, \"unwindingResult\"))\n $root.simpleperf_report_proto.Sample.UnwindingResult.encode(message.unwindingResult, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Sample message, length delimited. Does not implicitly {@link simpleperf_report_proto.Sample.verify|verify} messages.\n * @function encodeDelimited\n * @memberof simpleperf_report_proto.Sample\n * @static\n * @param {simpleperf_report_proto.ISample} message Sample message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Sample.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Sample message from the specified reader or buffer.\n * @function decode\n * @memberof simpleperf_report_proto.Sample\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {simpleperf_report_proto.Sample} Sample\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sample.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.simpleperf_report_proto.Sample();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.time = reader.uint64();\n break;\n }\n case 2: {\n message.threadId = reader.int32();\n break;\n }\n case 3: {\n if (!(message.callchain && message.callchain.length))\n message.callchain = [];\n message.callchain.push($root.simpleperf_report_proto.Sample.CallChainEntry.decode(reader, reader.uint32()));\n break;\n }\n case 4: {\n message.eventCount = reader.uint64();\n break;\n }\n case 5: {\n message.eventTypeId = reader.uint32();\n break;\n }\n case 6: {\n message.unwindingResult = $root.simpleperf_report_proto.Sample.UnwindingResult.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Sample message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof simpleperf_report_proto.Sample\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {simpleperf_report_proto.Sample} Sample\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Sample.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Sample message.\n * @function verify\n * @memberof simpleperf_report_proto.Sample\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Sample.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.time != null && message.hasOwnProperty(\"time\"))\n if (!$util.isInteger(message.time) && !(message.time && $util.isInteger(message.time.low) && $util.isInteger(message.time.high)))\n return \"time: integer|Long expected\";\n if (message.threadId != null && message.hasOwnProperty(\"threadId\"))\n if (!$util.isInteger(message.threadId))\n return \"threadId: integer expected\";\n if (message.callchain != null && message.hasOwnProperty(\"callchain\")) {\n if (!Array.isArray(message.callchain))\n return \"callchain: array expected\";\n for (var i = 0; i < message.callchain.length; ++i) {\n var error = $root.simpleperf_report_proto.Sample.CallChainEntry.verify(message.callchain[i]);\n if (error)\n return \"callchain.\" + error;\n }\n }\n if (message.eventCount != null && message.hasOwnProperty(\"eventCount\"))\n if (!$util.isInteger(message.eventCount) && !(message.eventCount && $util.isInteger(message.eventCount.low) && $util.isInteger(message.eventCount.high)))\n return \"eventCount: integer|Long expected\";\n if (message.eventTypeId != null && message.hasOwnProperty(\"eventTypeId\"))\n if (!$util.isInteger(message.eventTypeId))\n return \"eventTypeId: integer expected\";\n if (message.unwindingResult != null && message.hasOwnProperty(\"unwindingResult\")) {\n var error = $root.simpleperf_report_proto.Sample.UnwindingResult.verify(message.unwindingResult);\n if (error)\n return \"unwindingResult.\" + error;\n }\n return null;\n };\n\n /**\n * Creates a Sample message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof simpleperf_report_proto.Sample\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {simpleperf_report_proto.Sample} Sample\n */\n Sample.fromObject = function fromObject(object) {\n if (object instanceof $root.simpleperf_report_proto.Sample)\n return object;\n var message = new $root.simpleperf_report_proto.Sample();\n if (object.time != null)\n if ($util.Long)\n (message.time = $util.Long.fromValue(object.time)).unsigned = true;\n else if (typeof object.time === \"string\")\n message.time = parseInt(object.time, 10);\n else if (typeof object.time === \"number\")\n message.time = object.time;\n else if (typeof object.time === \"object\")\n message.time = new $util.LongBits(object.time.low >>> 0, object.time.high >>> 0).toNumber(true);\n if (object.threadId != null)\n message.threadId = object.threadId | 0;\n if (object.callchain) {\n if (!Array.isArray(object.callchain))\n throw TypeError(\".simpleperf_report_proto.Sample.callchain: array expected\");\n message.callchain = [];\n for (var i = 0; i < object.callchain.length; ++i) {\n if (typeof object.callchain[i] !== \"object\")\n throw TypeError(\".simpleperf_report_proto.Sample.callchain: object expected\");\n message.callchain[i] = $root.simpleperf_report_proto.Sample.CallChainEntry.fromObject(object.callchain[i]);\n }\n }\n if (object.eventCount != null)\n if ($util.Long)\n (message.eventCount = $util.Long.fromValue(object.eventCount)).unsigned = true;\n else if (typeof object.eventCount === \"string\")\n message.eventCount = parseInt(object.eventCount, 10);\n else if (typeof object.eventCount === \"number\")\n message.eventCount = object.eventCount;\n else if (typeof object.eventCount === \"object\")\n message.eventCount = new $util.LongBits(object.eventCount.low >>> 0, object.eventCount.high >>> 0).toNumber(true);\n if (object.eventTypeId != null)\n message.eventTypeId = object.eventTypeId >>> 0;\n if (object.unwindingResult != null) {\n if (typeof object.unwindingResult !== \"object\")\n throw TypeError(\".simpleperf_report_proto.Sample.unwindingResult: object expected\");\n message.unwindingResult = $root.simpleperf_report_proto.Sample.UnwindingResult.fromObject(object.unwindingResult);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Sample message. Also converts values to other types if specified.\n * @function toObject\n * @memberof simpleperf_report_proto.Sample\n * @static\n * @param {simpleperf_report_proto.Sample} message Sample\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Sample.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.callchain = [];\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, true);\n object.time = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.time = options.longs === String ? \"0\" : 0;\n object.threadId = 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, true);\n object.eventCount = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.eventCount = options.longs === String ? \"0\" : 0;\n object.eventTypeId = 0;\n object.unwindingResult = null;\n }\n if (message.time != null && message.hasOwnProperty(\"time\"))\n if (typeof message.time === \"number\")\n object.time = options.longs === String ? String(message.time) : message.time;\n else\n object.time = options.longs === String ? $util.Long.prototype.toString.call(message.time) : options.longs === Number ? new $util.LongBits(message.time.low >>> 0, message.time.high >>> 0).toNumber(true) : message.time;\n if (message.threadId != null && message.hasOwnProperty(\"threadId\"))\n object.threadId = message.threadId;\n if (message.callchain && message.callchain.length) {\n object.callchain = [];\n for (var j = 0; j < message.callchain.length; ++j)\n object.callchain[j] = $root.simpleperf_report_proto.Sample.CallChainEntry.toObject(message.callchain[j], options);\n }\n if (message.eventCount != null && message.hasOwnProperty(\"eventCount\"))\n if (typeof message.eventCount === \"number\")\n object.eventCount = options.longs === String ? String(message.eventCount) : message.eventCount;\n else\n object.eventCount = options.longs === String ? $util.Long.prototype.toString.call(message.eventCount) : options.longs === Number ? new $util.LongBits(message.eventCount.low >>> 0, message.eventCount.high >>> 0).toNumber(true) : message.eventCount;\n if (message.eventTypeId != null && message.hasOwnProperty(\"eventTypeId\"))\n object.eventTypeId = message.eventTypeId;\n if (message.unwindingResult != null && message.hasOwnProperty(\"unwindingResult\"))\n object.unwindingResult = $root.simpleperf_report_proto.Sample.UnwindingResult.toObject(message.unwindingResult, options);\n return object;\n };\n\n /**\n * Converts this Sample to JSON.\n * @function toJSON\n * @memberof simpleperf_report_proto.Sample\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Sample.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Sample\n * @function getTypeUrl\n * @memberof simpleperf_report_proto.Sample\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Sample.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/simpleperf_report_proto.Sample\";\n };\n\n Sample.CallChainEntry = (function() {\n\n /**\n * Properties of a CallChainEntry.\n * @memberof simpleperf_report_proto.Sample\n * @interface ICallChainEntry\n * @property {number|Long|null} [vaddrInFile] CallChainEntry vaddrInFile\n * @property {number|null} [fileId] CallChainEntry fileId\n * @property {number|null} [symbolId] CallChainEntry symbolId\n * @property {simpleperf_report_proto.Sample.CallChainEntry.ExecutionType|null} [executionType] CallChainEntry executionType\n */\n\n /**\n * Constructs a new CallChainEntry.\n * @memberof simpleperf_report_proto.Sample\n * @classdesc Represents a CallChainEntry.\n * @implements ICallChainEntry\n * @constructor\n * @param {simpleperf_report_proto.Sample.ICallChainEntry=} [properties] Properties to set\n */\n function CallChainEntry(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * CallChainEntry vaddrInFile.\n * @member {number|Long} vaddrInFile\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @instance\n */\n CallChainEntry.prototype.vaddrInFile = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * CallChainEntry fileId.\n * @member {number} fileId\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @instance\n */\n CallChainEntry.prototype.fileId = 0;\n\n /**\n * CallChainEntry symbolId.\n * @member {number} symbolId\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @instance\n */\n CallChainEntry.prototype.symbolId = 0;\n\n /**\n * CallChainEntry executionType.\n * @member {simpleperf_report_proto.Sample.CallChainEntry.ExecutionType} executionType\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @instance\n */\n CallChainEntry.prototype.executionType = 0;\n\n /**\n * Creates a new CallChainEntry instance using the specified properties.\n * @function create\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @static\n * @param {simpleperf_report_proto.Sample.ICallChainEntry=} [properties] Properties to set\n * @returns {simpleperf_report_proto.Sample.CallChainEntry} CallChainEntry instance\n */\n CallChainEntry.create = function create(properties) {\n return new CallChainEntry(properties);\n };\n\n /**\n * Encodes the specified CallChainEntry message. Does not implicitly {@link simpleperf_report_proto.Sample.CallChainEntry.verify|verify} messages.\n * @function encode\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @static\n * @param {simpleperf_report_proto.Sample.ICallChainEntry} message CallChainEntry message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CallChainEntry.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.vaddrInFile != null && Object.hasOwnProperty.call(message, \"vaddrInFile\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.vaddrInFile);\n if (message.fileId != null && Object.hasOwnProperty.call(message, \"fileId\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.fileId);\n if (message.symbolId != null && Object.hasOwnProperty.call(message, \"symbolId\"))\n writer.uint32(/* id 3, wireType 0 =*/24).int32(message.symbolId);\n if (message.executionType != null && Object.hasOwnProperty.call(message, \"executionType\"))\n writer.uint32(/* id 4, wireType 0 =*/32).int32(message.executionType);\n return writer;\n };\n\n /**\n * Encodes the specified CallChainEntry message, length delimited. Does not implicitly {@link simpleperf_report_proto.Sample.CallChainEntry.verify|verify} messages.\n * @function encodeDelimited\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @static\n * @param {simpleperf_report_proto.Sample.ICallChainEntry} message CallChainEntry message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n CallChainEntry.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a CallChainEntry message from the specified reader or buffer.\n * @function decode\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {simpleperf_report_proto.Sample.CallChainEntry} CallChainEntry\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CallChainEntry.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.simpleperf_report_proto.Sample.CallChainEntry();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.vaddrInFile = reader.uint64();\n break;\n }\n case 2: {\n message.fileId = reader.uint32();\n break;\n }\n case 3: {\n message.symbolId = reader.int32();\n break;\n }\n case 4: {\n message.executionType = reader.int32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a CallChainEntry message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {simpleperf_report_proto.Sample.CallChainEntry} CallChainEntry\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n CallChainEntry.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a CallChainEntry message.\n * @function verify\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n CallChainEntry.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.vaddrInFile != null && message.hasOwnProperty(\"vaddrInFile\"))\n if (!$util.isInteger(message.vaddrInFile) && !(message.vaddrInFile && $util.isInteger(message.vaddrInFile.low) && $util.isInteger(message.vaddrInFile.high)))\n return \"vaddrInFile: integer|Long expected\";\n if (message.fileId != null && message.hasOwnProperty(\"fileId\"))\n if (!$util.isInteger(message.fileId))\n return \"fileId: integer expected\";\n if (message.symbolId != null && message.hasOwnProperty(\"symbolId\"))\n if (!$util.isInteger(message.symbolId))\n return \"symbolId: integer expected\";\n if (message.executionType != null && message.hasOwnProperty(\"executionType\"))\n switch (message.executionType) {\n default:\n return \"executionType: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n break;\n }\n return null;\n };\n\n /**\n * Creates a CallChainEntry message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {simpleperf_report_proto.Sample.CallChainEntry} CallChainEntry\n */\n CallChainEntry.fromObject = function fromObject(object) {\n if (object instanceof $root.simpleperf_report_proto.Sample.CallChainEntry)\n return object;\n var message = new $root.simpleperf_report_proto.Sample.CallChainEntry();\n if (object.vaddrInFile != null)\n if ($util.Long)\n (message.vaddrInFile = $util.Long.fromValue(object.vaddrInFile)).unsigned = true;\n else if (typeof object.vaddrInFile === \"string\")\n message.vaddrInFile = parseInt(object.vaddrInFile, 10);\n else if (typeof object.vaddrInFile === \"number\")\n message.vaddrInFile = object.vaddrInFile;\n else if (typeof object.vaddrInFile === \"object\")\n message.vaddrInFile = new $util.LongBits(object.vaddrInFile.low >>> 0, object.vaddrInFile.high >>> 0).toNumber(true);\n if (object.fileId != null)\n message.fileId = object.fileId >>> 0;\n if (object.symbolId != null)\n message.symbolId = object.symbolId | 0;\n switch (object.executionType) {\n default:\n if (typeof object.executionType === \"number\") {\n message.executionType = object.executionType;\n break;\n }\n break;\n case \"NATIVE_METHOD\":\n case 0:\n message.executionType = 0;\n break;\n case \"INTERPRETED_JVM_METHOD\":\n case 1:\n message.executionType = 1;\n break;\n case \"JIT_JVM_METHOD\":\n case 2:\n message.executionType = 2;\n break;\n case \"ART_METHOD\":\n case 3:\n message.executionType = 3;\n break;\n }\n return message;\n };\n\n /**\n * Creates a plain object from a CallChainEntry message. Also converts values to other types if specified.\n * @function toObject\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @static\n * @param {simpleperf_report_proto.Sample.CallChainEntry} message CallChainEntry\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n CallChainEntry.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, true);\n object.vaddrInFile = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.vaddrInFile = options.longs === String ? \"0\" : 0;\n object.fileId = 0;\n object.symbolId = 0;\n object.executionType = options.enums === String ? \"NATIVE_METHOD\" : 0;\n }\n if (message.vaddrInFile != null && message.hasOwnProperty(\"vaddrInFile\"))\n if (typeof message.vaddrInFile === \"number\")\n object.vaddrInFile = options.longs === String ? String(message.vaddrInFile) : message.vaddrInFile;\n else\n object.vaddrInFile = options.longs === String ? $util.Long.prototype.toString.call(message.vaddrInFile) : options.longs === Number ? new $util.LongBits(message.vaddrInFile.low >>> 0, message.vaddrInFile.high >>> 0).toNumber(true) : message.vaddrInFile;\n if (message.fileId != null && message.hasOwnProperty(\"fileId\"))\n object.fileId = message.fileId;\n if (message.symbolId != null && message.hasOwnProperty(\"symbolId\"))\n object.symbolId = message.symbolId;\n if (message.executionType != null && message.hasOwnProperty(\"executionType\"))\n object.executionType = options.enums === String ? $root.simpleperf_report_proto.Sample.CallChainEntry.ExecutionType[message.executionType] === undefined ? message.executionType : $root.simpleperf_report_proto.Sample.CallChainEntry.ExecutionType[message.executionType] : message.executionType;\n return object;\n };\n\n /**\n * Converts this CallChainEntry to JSON.\n * @function toJSON\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n CallChainEntry.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for CallChainEntry\n * @function getTypeUrl\n * @memberof simpleperf_report_proto.Sample.CallChainEntry\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n CallChainEntry.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/simpleperf_report_proto.Sample.CallChainEntry\";\n };\n\n /**\n * ExecutionType enum.\n * @name simpleperf_report_proto.Sample.CallChainEntry.ExecutionType\n * @enum {number}\n * @property {number} NATIVE_METHOD=0 NATIVE_METHOD value\n * @property {number} INTERPRETED_JVM_METHOD=1 INTERPRETED_JVM_METHOD value\n * @property {number} JIT_JVM_METHOD=2 JIT_JVM_METHOD value\n * @property {number} ART_METHOD=3 ART_METHOD value\n */\n CallChainEntry.ExecutionType = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"NATIVE_METHOD\"] = 0;\n values[valuesById[1] = \"INTERPRETED_JVM_METHOD\"] = 1;\n values[valuesById[2] = \"JIT_JVM_METHOD\"] = 2;\n values[valuesById[3] = \"ART_METHOD\"] = 3;\n return values;\n })();\n\n return CallChainEntry;\n })();\n\n Sample.UnwindingResult = (function() {\n\n /**\n * Properties of an UnwindingResult.\n * @memberof simpleperf_report_proto.Sample\n * @interface IUnwindingResult\n * @property {number|null} [rawErrorCode] UnwindingResult rawErrorCode\n * @property {number|Long|null} [errorAddr] UnwindingResult errorAddr\n * @property {simpleperf_report_proto.Sample.UnwindingResult.ErrorCode|null} [errorCode] UnwindingResult errorCode\n */\n\n /**\n * Constructs a new UnwindingResult.\n * @memberof simpleperf_report_proto.Sample\n * @classdesc Represents an UnwindingResult.\n * @implements IUnwindingResult\n * @constructor\n * @param {simpleperf_report_proto.Sample.IUnwindingResult=} [properties] Properties to set\n */\n function UnwindingResult(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * UnwindingResult rawErrorCode.\n * @member {number} rawErrorCode\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @instance\n */\n UnwindingResult.prototype.rawErrorCode = 0;\n\n /**\n * UnwindingResult errorAddr.\n * @member {number|Long} errorAddr\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @instance\n */\n UnwindingResult.prototype.errorAddr = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * UnwindingResult errorCode.\n * @member {simpleperf_report_proto.Sample.UnwindingResult.ErrorCode} errorCode\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @instance\n */\n UnwindingResult.prototype.errorCode = 0;\n\n /**\n * Creates a new UnwindingResult instance using the specified properties.\n * @function create\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @static\n * @param {simpleperf_report_proto.Sample.IUnwindingResult=} [properties] Properties to set\n * @returns {simpleperf_report_proto.Sample.UnwindingResult} UnwindingResult instance\n */\n UnwindingResult.create = function create(properties) {\n return new UnwindingResult(properties);\n };\n\n /**\n * Encodes the specified UnwindingResult message. Does not implicitly {@link simpleperf_report_proto.Sample.UnwindingResult.verify|verify} messages.\n * @function encode\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @static\n * @param {simpleperf_report_proto.Sample.IUnwindingResult} message UnwindingResult message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n UnwindingResult.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.rawErrorCode != null && Object.hasOwnProperty.call(message, \"rawErrorCode\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.rawErrorCode);\n if (message.errorAddr != null && Object.hasOwnProperty.call(message, \"errorAddr\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.errorAddr);\n if (message.errorCode != null && Object.hasOwnProperty.call(message, \"errorCode\"))\n writer.uint32(/* id 3, wireType 0 =*/24).int32(message.errorCode);\n return writer;\n };\n\n /**\n * Encodes the specified UnwindingResult message, length delimited. Does not implicitly {@link simpleperf_report_proto.Sample.UnwindingResult.verify|verify} messages.\n * @function encodeDelimited\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @static\n * @param {simpleperf_report_proto.Sample.IUnwindingResult} message UnwindingResult message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n UnwindingResult.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes an UnwindingResult message from the specified reader or buffer.\n * @function decode\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {simpleperf_report_proto.Sample.UnwindingResult} UnwindingResult\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n UnwindingResult.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.simpleperf_report_proto.Sample.UnwindingResult();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.rawErrorCode = reader.uint32();\n break;\n }\n case 2: {\n message.errorAddr = reader.uint64();\n break;\n }\n case 3: {\n message.errorCode = reader.int32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes an UnwindingResult message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {simpleperf_report_proto.Sample.UnwindingResult} UnwindingResult\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n UnwindingResult.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies an UnwindingResult message.\n * @function verify\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n UnwindingResult.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.rawErrorCode != null && message.hasOwnProperty(\"rawErrorCode\"))\n if (!$util.isInteger(message.rawErrorCode))\n return \"rawErrorCode: integer expected\";\n if (message.errorAddr != null && message.hasOwnProperty(\"errorAddr\"))\n if (!$util.isInteger(message.errorAddr) && !(message.errorAddr && $util.isInteger(message.errorAddr.low) && $util.isInteger(message.errorAddr.high)))\n return \"errorAddr: integer|Long expected\";\n if (message.errorCode != null && message.hasOwnProperty(\"errorCode\"))\n switch (message.errorCode) {\n default:\n return \"errorCode: enum value expected\";\n case 0:\n case 1:\n case 2:\n case 3:\n case 4:\n case 5:\n case 6:\n case 7:\n case 8:\n break;\n }\n return null;\n };\n\n /**\n * Creates an UnwindingResult message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {simpleperf_report_proto.Sample.UnwindingResult} UnwindingResult\n */\n UnwindingResult.fromObject = function fromObject(object) {\n if (object instanceof $root.simpleperf_report_proto.Sample.UnwindingResult)\n return object;\n var message = new $root.simpleperf_report_proto.Sample.UnwindingResult();\n if (object.rawErrorCode != null)\n message.rawErrorCode = object.rawErrorCode >>> 0;\n if (object.errorAddr != null)\n if ($util.Long)\n (message.errorAddr = $util.Long.fromValue(object.errorAddr)).unsigned = true;\n else if (typeof object.errorAddr === \"string\")\n message.errorAddr = parseInt(object.errorAddr, 10);\n else if (typeof object.errorAddr === \"number\")\n message.errorAddr = object.errorAddr;\n else if (typeof object.errorAddr === \"object\")\n message.errorAddr = new $util.LongBits(object.errorAddr.low >>> 0, object.errorAddr.high >>> 0).toNumber(true);\n switch (object.errorCode) {\n default:\n if (typeof object.errorCode === \"number\") {\n message.errorCode = object.errorCode;\n break;\n }\n break;\n case \"ERROR_NONE\":\n case 0:\n message.errorCode = 0;\n break;\n case \"ERROR_UNKNOWN\":\n case 1:\n message.errorCode = 1;\n break;\n case \"ERROR_NOT_ENOUGH_STACK\":\n case 2:\n message.errorCode = 2;\n break;\n case \"ERROR_MEMORY_INVALID\":\n case 3:\n message.errorCode = 3;\n break;\n case \"ERROR_UNWIND_INFO\":\n case 4:\n message.errorCode = 4;\n break;\n case \"ERROR_INVALID_MAP\":\n case 5:\n message.errorCode = 5;\n break;\n case \"ERROR_MAX_FRAME_EXCEEDED\":\n case 6:\n message.errorCode = 6;\n break;\n case \"ERROR_REPEATED_FRAME\":\n case 7:\n message.errorCode = 7;\n break;\n case \"ERROR_INVALID_ELF\":\n case 8:\n message.errorCode = 8;\n break;\n }\n return message;\n };\n\n /**\n * Creates a plain object from an UnwindingResult message. Also converts values to other types if specified.\n * @function toObject\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @static\n * @param {simpleperf_report_proto.Sample.UnwindingResult} message UnwindingResult\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n UnwindingResult.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.rawErrorCode = 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, true);\n object.errorAddr = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.errorAddr = options.longs === String ? \"0\" : 0;\n object.errorCode = options.enums === String ? \"ERROR_NONE\" : 0;\n }\n if (message.rawErrorCode != null && message.hasOwnProperty(\"rawErrorCode\"))\n object.rawErrorCode = message.rawErrorCode;\n if (message.errorAddr != null && message.hasOwnProperty(\"errorAddr\"))\n if (typeof message.errorAddr === \"number\")\n object.errorAddr = options.longs === String ? String(message.errorAddr) : message.errorAddr;\n else\n object.errorAddr = options.longs === String ? $util.Long.prototype.toString.call(message.errorAddr) : options.longs === Number ? new $util.LongBits(message.errorAddr.low >>> 0, message.errorAddr.high >>> 0).toNumber(true) : message.errorAddr;\n if (message.errorCode != null && message.hasOwnProperty(\"errorCode\"))\n object.errorCode = options.enums === String ? $root.simpleperf_report_proto.Sample.UnwindingResult.ErrorCode[message.errorCode] === undefined ? message.errorCode : $root.simpleperf_report_proto.Sample.UnwindingResult.ErrorCode[message.errorCode] : message.errorCode;\n return object;\n };\n\n /**\n * Converts this UnwindingResult to JSON.\n * @function toJSON\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n UnwindingResult.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for UnwindingResult\n * @function getTypeUrl\n * @memberof simpleperf_report_proto.Sample.UnwindingResult\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n UnwindingResult.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/simpleperf_report_proto.Sample.UnwindingResult\";\n };\n\n /**\n * ErrorCode enum.\n * @name simpleperf_report_proto.Sample.UnwindingResult.ErrorCode\n * @enum {number}\n * @property {number} ERROR_NONE=0 ERROR_NONE value\n * @property {number} ERROR_UNKNOWN=1 ERROR_UNKNOWN value\n * @property {number} ERROR_NOT_ENOUGH_STACK=2 ERROR_NOT_ENOUGH_STACK value\n * @property {number} ERROR_MEMORY_INVALID=3 ERROR_MEMORY_INVALID value\n * @property {number} ERROR_UNWIND_INFO=4 ERROR_UNWIND_INFO value\n * @property {number} ERROR_INVALID_MAP=5 ERROR_INVALID_MAP value\n * @property {number} ERROR_MAX_FRAME_EXCEEDED=6 ERROR_MAX_FRAME_EXCEEDED value\n * @property {number} ERROR_REPEATED_FRAME=7 ERROR_REPEATED_FRAME value\n * @property {number} ERROR_INVALID_ELF=8 ERROR_INVALID_ELF value\n */\n UnwindingResult.ErrorCode = (function() {\n var valuesById = {}, values = Object.create(valuesById);\n values[valuesById[0] = \"ERROR_NONE\"] = 0;\n values[valuesById[1] = \"ERROR_UNKNOWN\"] = 1;\n values[valuesById[2] = \"ERROR_NOT_ENOUGH_STACK\"] = 2;\n values[valuesById[3] = \"ERROR_MEMORY_INVALID\"] = 3;\n values[valuesById[4] = \"ERROR_UNWIND_INFO\"] = 4;\n values[valuesById[5] = \"ERROR_INVALID_MAP\"] = 5;\n values[valuesById[6] = \"ERROR_MAX_FRAME_EXCEEDED\"] = 6;\n values[valuesById[7] = \"ERROR_REPEATED_FRAME\"] = 7;\n values[valuesById[8] = \"ERROR_INVALID_ELF\"] = 8;\n return values;\n })();\n\n return UnwindingResult;\n })();\n\n return Sample;\n })();\n\n simpleperf_report_proto.LostSituation = (function() {\n\n /**\n * Properties of a LostSituation.\n * @memberof simpleperf_report_proto\n * @interface ILostSituation\n * @property {number|Long|null} [sampleCount] LostSituation sampleCount\n * @property {number|Long|null} [lostCount] LostSituation lostCount\n */\n\n /**\n * Constructs a new LostSituation.\n * @memberof simpleperf_report_proto\n * @classdesc Represents a LostSituation.\n * @implements ILostSituation\n * @constructor\n * @param {simpleperf_report_proto.ILostSituation=} [properties] Properties to set\n */\n function LostSituation(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * LostSituation sampleCount.\n * @member {number|Long} sampleCount\n * @memberof simpleperf_report_proto.LostSituation\n * @instance\n */\n LostSituation.prototype.sampleCount = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * LostSituation lostCount.\n * @member {number|Long} lostCount\n * @memberof simpleperf_report_proto.LostSituation\n * @instance\n */\n LostSituation.prototype.lostCount = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * Creates a new LostSituation instance using the specified properties.\n * @function create\n * @memberof simpleperf_report_proto.LostSituation\n * @static\n * @param {simpleperf_report_proto.ILostSituation=} [properties] Properties to set\n * @returns {simpleperf_report_proto.LostSituation} LostSituation instance\n */\n LostSituation.create = function create(properties) {\n return new LostSituation(properties);\n };\n\n /**\n * Encodes the specified LostSituation message. Does not implicitly {@link simpleperf_report_proto.LostSituation.verify|verify} messages.\n * @function encode\n * @memberof simpleperf_report_proto.LostSituation\n * @static\n * @param {simpleperf_report_proto.ILostSituation} message LostSituation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n LostSituation.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.sampleCount != null && Object.hasOwnProperty.call(message, \"sampleCount\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint64(message.sampleCount);\n if (message.lostCount != null && Object.hasOwnProperty.call(message, \"lostCount\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.lostCount);\n return writer;\n };\n\n /**\n * Encodes the specified LostSituation message, length delimited. Does not implicitly {@link simpleperf_report_proto.LostSituation.verify|verify} messages.\n * @function encodeDelimited\n * @memberof simpleperf_report_proto.LostSituation\n * @static\n * @param {simpleperf_report_proto.ILostSituation} message LostSituation message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n LostSituation.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a LostSituation message from the specified reader or buffer.\n * @function decode\n * @memberof simpleperf_report_proto.LostSituation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {simpleperf_report_proto.LostSituation} LostSituation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n LostSituation.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.simpleperf_report_proto.LostSituation();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.sampleCount = reader.uint64();\n break;\n }\n case 2: {\n message.lostCount = reader.uint64();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a LostSituation message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof simpleperf_report_proto.LostSituation\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {simpleperf_report_proto.LostSituation} LostSituation\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n LostSituation.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a LostSituation message.\n * @function verify\n * @memberof simpleperf_report_proto.LostSituation\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n LostSituation.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.sampleCount != null && message.hasOwnProperty(\"sampleCount\"))\n if (!$util.isInteger(message.sampleCount) && !(message.sampleCount && $util.isInteger(message.sampleCount.low) && $util.isInteger(message.sampleCount.high)))\n return \"sampleCount: integer|Long expected\";\n if (message.lostCount != null && message.hasOwnProperty(\"lostCount\"))\n if (!$util.isInteger(message.lostCount) && !(message.lostCount && $util.isInteger(message.lostCount.low) && $util.isInteger(message.lostCount.high)))\n return \"lostCount: integer|Long expected\";\n return null;\n };\n\n /**\n * Creates a LostSituation message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof simpleperf_report_proto.LostSituation\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {simpleperf_report_proto.LostSituation} LostSituation\n */\n LostSituation.fromObject = function fromObject(object) {\n if (object instanceof $root.simpleperf_report_proto.LostSituation)\n return object;\n var message = new $root.simpleperf_report_proto.LostSituation();\n if (object.sampleCount != null)\n if ($util.Long)\n (message.sampleCount = $util.Long.fromValue(object.sampleCount)).unsigned = true;\n else if (typeof object.sampleCount === \"string\")\n message.sampleCount = parseInt(object.sampleCount, 10);\n else if (typeof object.sampleCount === \"number\")\n message.sampleCount = object.sampleCount;\n else if (typeof object.sampleCount === \"object\")\n message.sampleCount = new $util.LongBits(object.sampleCount.low >>> 0, object.sampleCount.high >>> 0).toNumber(true);\n if (object.lostCount != null)\n if ($util.Long)\n (message.lostCount = $util.Long.fromValue(object.lostCount)).unsigned = true;\n else if (typeof object.lostCount === \"string\")\n message.lostCount = parseInt(object.lostCount, 10);\n else if (typeof object.lostCount === \"number\")\n message.lostCount = object.lostCount;\n else if (typeof object.lostCount === \"object\")\n message.lostCount = new $util.LongBits(object.lostCount.low >>> 0, object.lostCount.high >>> 0).toNumber(true);\n return message;\n };\n\n /**\n * Creates a plain object from a LostSituation message. Also converts values to other types if specified.\n * @function toObject\n * @memberof simpleperf_report_proto.LostSituation\n * @static\n * @param {simpleperf_report_proto.LostSituation} message LostSituation\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n LostSituation.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n if ($util.Long) {\n var long = new $util.Long(0, 0, true);\n object.sampleCount = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.sampleCount = options.longs === String ? \"0\" : 0;\n if ($util.Long) {\n var long = new $util.Long(0, 0, true);\n object.lostCount = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.lostCount = options.longs === String ? \"0\" : 0;\n }\n if (message.sampleCount != null && message.hasOwnProperty(\"sampleCount\"))\n if (typeof message.sampleCount === \"number\")\n object.sampleCount = options.longs === String ? String(message.sampleCount) : message.sampleCount;\n else\n object.sampleCount = options.longs === String ? $util.Long.prototype.toString.call(message.sampleCount) : options.longs === Number ? new $util.LongBits(message.sampleCount.low >>> 0, message.sampleCount.high >>> 0).toNumber(true) : message.sampleCount;\n if (message.lostCount != null && message.hasOwnProperty(\"lostCount\"))\n if (typeof message.lostCount === \"number\")\n object.lostCount = options.longs === String ? String(message.lostCount) : message.lostCount;\n else\n object.lostCount = options.longs === String ? $util.Long.prototype.toString.call(message.lostCount) : options.longs === Number ? new $util.LongBits(message.lostCount.low >>> 0, message.lostCount.high >>> 0).toNumber(true) : message.lostCount;\n return object;\n };\n\n /**\n * Converts this LostSituation to JSON.\n * @function toJSON\n * @memberof simpleperf_report_proto.LostSituation\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n LostSituation.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for LostSituation\n * @function getTypeUrl\n * @memberof simpleperf_report_proto.LostSituation\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n LostSituation.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/simpleperf_report_proto.LostSituation\";\n };\n\n return LostSituation;\n })();\n\n simpleperf_report_proto.File = (function() {\n\n /**\n * Properties of a File.\n * @memberof simpleperf_report_proto\n * @interface IFile\n * @property {number|null} [id] File id\n * @property {string|null} [path] File path\n * @property {Array.<string>|null} [symbol] File symbol\n * @property {Array.<string>|null} [mangledSymbol] File mangledSymbol\n */\n\n /**\n * Constructs a new File.\n * @memberof simpleperf_report_proto\n * @classdesc Represents a File.\n * @implements IFile\n * @constructor\n * @param {simpleperf_report_proto.IFile=} [properties] Properties to set\n */\n function File(properties) {\n this.symbol = [];\n this.mangledSymbol = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * File id.\n * @member {number} id\n * @memberof simpleperf_report_proto.File\n * @instance\n */\n File.prototype.id = 0;\n\n /**\n * File path.\n * @member {string} path\n * @memberof simpleperf_report_proto.File\n * @instance\n */\n File.prototype.path = \"\";\n\n /**\n * File symbol.\n * @member {Array.<string>} symbol\n * @memberof simpleperf_report_proto.File\n * @instance\n */\n File.prototype.symbol = $util.emptyArray;\n\n /**\n * File mangledSymbol.\n * @member {Array.<string>} mangledSymbol\n * @memberof simpleperf_report_proto.File\n * @instance\n */\n File.prototype.mangledSymbol = $util.emptyArray;\n\n /**\n * Creates a new File instance using the specified properties.\n * @function create\n * @memberof simpleperf_report_proto.File\n * @static\n * @param {simpleperf_report_proto.IFile=} [properties] Properties to set\n * @returns {simpleperf_report_proto.File} File instance\n */\n File.create = function create(properties) {\n return new File(properties);\n };\n\n /**\n * Encodes the specified File message. Does not implicitly {@link simpleperf_report_proto.File.verify|verify} messages.\n * @function encode\n * @memberof simpleperf_report_proto.File\n * @static\n * @param {simpleperf_report_proto.IFile} message File message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n File.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.id != null && Object.hasOwnProperty.call(message, \"id\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.id);\n if (message.path != null && Object.hasOwnProperty.call(message, \"path\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.path);\n if (message.symbol != null && message.symbol.length)\n for (var i = 0; i < message.symbol.length; ++i)\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.symbol[i]);\n if (message.mangledSymbol != null && message.mangledSymbol.length)\n for (var i = 0; i < message.mangledSymbol.length; ++i)\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.mangledSymbol[i]);\n return writer;\n };\n\n /**\n * Encodes the specified File message, length delimited. Does not implicitly {@link simpleperf_report_proto.File.verify|verify} messages.\n * @function encodeDelimited\n * @memberof simpleperf_report_proto.File\n * @static\n * @param {simpleperf_report_proto.IFile} message File message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n File.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a File message from the specified reader or buffer.\n * @function decode\n * @memberof simpleperf_report_proto.File\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {simpleperf_report_proto.File} File\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n File.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.simpleperf_report_proto.File();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.id = reader.uint32();\n break;\n }\n case 2: {\n message.path = reader.string();\n break;\n }\n case 3: {\n if (!(message.symbol && message.symbol.length))\n message.symbol = [];\n message.symbol.push(reader.string());\n break;\n }\n case 4: {\n if (!(message.mangledSymbol && message.mangledSymbol.length))\n message.mangledSymbol = [];\n message.mangledSymbol.push(reader.string());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a File message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof simpleperf_report_proto.File\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {simpleperf_report_proto.File} File\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n File.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a File message.\n * @function verify\n * @memberof simpleperf_report_proto.File\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n File.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.id != null && message.hasOwnProperty(\"id\"))\n if (!$util.isInteger(message.id))\n return \"id: integer expected\";\n if (message.path != null && message.hasOwnProperty(\"path\"))\n if (!$util.isString(message.path))\n return \"path: string expected\";\n if (message.symbol != null && message.hasOwnProperty(\"symbol\")) {\n if (!Array.isArray(message.symbol))\n return \"symbol: array expected\";\n for (var i = 0; i < message.symbol.length; ++i)\n if (!$util.isString(message.symbol[i]))\n return \"symbol: string[] expected\";\n }\n if (message.mangledSymbol != null && message.hasOwnProperty(\"mangledSymbol\")) {\n if (!Array.isArray(message.mangledSymbol))\n return \"mangledSymbol: array expected\";\n for (var i = 0; i < message.mangledSymbol.length; ++i)\n if (!$util.isString(message.mangledSymbol[i]))\n return \"mangledSymbol: string[] expected\";\n }\n return null;\n };\n\n /**\n * Creates a File message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof simpleperf_report_proto.File\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {simpleperf_report_proto.File} File\n */\n File.fromObject = function fromObject(object) {\n if (object instanceof $root.simpleperf_report_proto.File)\n return object;\n var message = new $root.simpleperf_report_proto.File();\n if (object.id != null)\n message.id = object.id >>> 0;\n if (object.path != null)\n message.path = String(object.path);\n if (object.symbol) {\n if (!Array.isArray(object.symbol))\n throw TypeError(\".simpleperf_report_proto.File.symbol: array expected\");\n message.symbol = [];\n for (var i = 0; i < object.symbol.length; ++i)\n message.symbol[i] = String(object.symbol[i]);\n }\n if (object.mangledSymbol) {\n if (!Array.isArray(object.mangledSymbol))\n throw TypeError(\".simpleperf_report_proto.File.mangledSymbol: array expected\");\n message.mangledSymbol = [];\n for (var i = 0; i < object.mangledSymbol.length; ++i)\n message.mangledSymbol[i] = String(object.mangledSymbol[i]);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a File message. Also converts values to other types if specified.\n * @function toObject\n * @memberof simpleperf_report_proto.File\n * @static\n * @param {simpleperf_report_proto.File} message File\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n File.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults) {\n object.symbol = [];\n object.mangledSymbol = [];\n }\n if (options.defaults) {\n object.id = 0;\n object.path = \"\";\n }\n if (message.id != null && message.hasOwnProperty(\"id\"))\n object.id = message.id;\n if (message.path != null && message.hasOwnProperty(\"path\"))\n object.path = message.path;\n if (message.symbol && message.symbol.length) {\n object.symbol = [];\n for (var j = 0; j < message.symbol.length; ++j)\n object.symbol[j] = message.symbol[j];\n }\n if (message.mangledSymbol && message.mangledSymbol.length) {\n object.mangledSymbol = [];\n for (var j = 0; j < message.mangledSymbol.length; ++j)\n object.mangledSymbol[j] = message.mangledSymbol[j];\n }\n return object;\n };\n\n /**\n * Converts this File to JSON.\n * @function toJSON\n * @memberof simpleperf_report_proto.File\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n File.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for File\n * @function getTypeUrl\n * @memberof simpleperf_report_proto.File\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n File.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/simpleperf_report_proto.File\";\n };\n\n return File;\n })();\n\n simpleperf_report_proto.Thread = (function() {\n\n /**\n * Properties of a Thread.\n * @memberof simpleperf_report_proto\n * @interface IThread\n * @property {number|null} [threadId] Thread threadId\n * @property {number|null} [processId] Thread processId\n * @property {string|null} [threadName] Thread threadName\n */\n\n /**\n * Constructs a new Thread.\n * @memberof simpleperf_report_proto\n * @classdesc Represents a Thread.\n * @implements IThread\n * @constructor\n * @param {simpleperf_report_proto.IThread=} [properties] Properties to set\n */\n function Thread(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Thread threadId.\n * @member {number} threadId\n * @memberof simpleperf_report_proto.Thread\n * @instance\n */\n Thread.prototype.threadId = 0;\n\n /**\n * Thread processId.\n * @member {number} processId\n * @memberof simpleperf_report_proto.Thread\n * @instance\n */\n Thread.prototype.processId = 0;\n\n /**\n * Thread threadName.\n * @member {string} threadName\n * @memberof simpleperf_report_proto.Thread\n * @instance\n */\n Thread.prototype.threadName = \"\";\n\n /**\n * Creates a new Thread instance using the specified properties.\n * @function create\n * @memberof simpleperf_report_proto.Thread\n * @static\n * @param {simpleperf_report_proto.IThread=} [properties] Properties to set\n * @returns {simpleperf_report_proto.Thread} Thread instance\n */\n Thread.create = function create(properties) {\n return new Thread(properties);\n };\n\n /**\n * Encodes the specified Thread message. Does not implicitly {@link simpleperf_report_proto.Thread.verify|verify} messages.\n * @function encode\n * @memberof simpleperf_report_proto.Thread\n * @static\n * @param {simpleperf_report_proto.IThread} message Thread message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Thread.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.threadId != null && Object.hasOwnProperty.call(message, \"threadId\"))\n writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.threadId);\n if (message.processId != null && Object.hasOwnProperty.call(message, \"processId\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.processId);\n if (message.threadName != null && Object.hasOwnProperty.call(message, \"threadName\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.threadName);\n return writer;\n };\n\n /**\n * Encodes the specified Thread message, length delimited. Does not implicitly {@link simpleperf_report_proto.Thread.verify|verify} messages.\n * @function encodeDelimited\n * @memberof simpleperf_report_proto.Thread\n * @static\n * @param {simpleperf_report_proto.IThread} message Thread message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Thread.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Thread message from the specified reader or buffer.\n * @function decode\n * @memberof simpleperf_report_proto.Thread\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {simpleperf_report_proto.Thread} Thread\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Thread.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.simpleperf_report_proto.Thread();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.threadId = reader.uint32();\n break;\n }\n case 2: {\n message.processId = reader.uint32();\n break;\n }\n case 3: {\n message.threadName = reader.string();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Thread message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof simpleperf_report_proto.Thread\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {simpleperf_report_proto.Thread} Thread\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Thread.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Thread message.\n * @function verify\n * @memberof simpleperf_report_proto.Thread\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Thread.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.threadId != null && message.hasOwnProperty(\"threadId\"))\n if (!$util.isInteger(message.threadId))\n return \"threadId: integer expected\";\n if (message.processId != null && message.hasOwnProperty(\"processId\"))\n if (!$util.isInteger(message.processId))\n return \"processId: integer expected\";\n if (message.threadName != null && message.hasOwnProperty(\"threadName\"))\n if (!$util.isString(message.threadName))\n return \"threadName: string expected\";\n return null;\n };\n\n /**\n * Creates a Thread message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof simpleperf_report_proto.Thread\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {simpleperf_report_proto.Thread} Thread\n */\n Thread.fromObject = function fromObject(object) {\n if (object instanceof $root.simpleperf_report_proto.Thread)\n return object;\n var message = new $root.simpleperf_report_proto.Thread();\n if (object.threadId != null)\n message.threadId = object.threadId >>> 0;\n if (object.processId != null)\n message.processId = object.processId >>> 0;\n if (object.threadName != null)\n message.threadName = String(object.threadName);\n return message;\n };\n\n /**\n * Creates a plain object from a Thread message. Also converts values to other types if specified.\n * @function toObject\n * @memberof simpleperf_report_proto.Thread\n * @static\n * @param {simpleperf_report_proto.Thread} message Thread\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Thread.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.threadId = 0;\n object.processId = 0;\n object.threadName = \"\";\n }\n if (message.threadId != null && message.hasOwnProperty(\"threadId\"))\n object.threadId = message.threadId;\n if (message.processId != null && message.hasOwnProperty(\"processId\"))\n object.processId = message.processId;\n if (message.threadName != null && message.hasOwnProperty(\"threadName\"))\n object.threadName = message.threadName;\n return object;\n };\n\n /**\n * Converts this Thread to JSON.\n * @function toJSON\n * @memberof simpleperf_report_proto.Thread\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Thread.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Thread\n * @function getTypeUrl\n * @memberof simpleperf_report_proto.Thread\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Thread.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/simpleperf_report_proto.Thread\";\n };\n\n return Thread;\n })();\n\n simpleperf_report_proto.MetaInfo = (function() {\n\n /**\n * Properties of a MetaInfo.\n * @memberof simpleperf_report_proto\n * @interface IMetaInfo\n * @property {Array.<string>|null} [eventType] MetaInfo eventType\n * @property {string|null} [appPackageName] MetaInfo appPackageName\n * @property {string|null} [appType] MetaInfo appType\n * @property {string|null} [androidSdkVersion] MetaInfo androidSdkVersion\n * @property {string|null} [androidBuildType] MetaInfo androidBuildType\n * @property {boolean|null} [traceOffcpu] MetaInfo traceOffcpu\n */\n\n /**\n * Constructs a new MetaInfo.\n * @memberof simpleperf_report_proto\n * @classdesc Represents a MetaInfo.\n * @implements IMetaInfo\n * @constructor\n * @param {simpleperf_report_proto.IMetaInfo=} [properties] Properties to set\n */\n function MetaInfo(properties) {\n this.eventType = [];\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * MetaInfo eventType.\n * @member {Array.<string>} eventType\n * @memberof simpleperf_report_proto.MetaInfo\n * @instance\n */\n MetaInfo.prototype.eventType = $util.emptyArray;\n\n /**\n * MetaInfo appPackageName.\n * @member {string} appPackageName\n * @memberof simpleperf_report_proto.MetaInfo\n * @instance\n */\n MetaInfo.prototype.appPackageName = \"\";\n\n /**\n * MetaInfo appType.\n * @member {string} appType\n * @memberof simpleperf_report_proto.MetaInfo\n * @instance\n */\n MetaInfo.prototype.appType = \"\";\n\n /**\n * MetaInfo androidSdkVersion.\n * @member {string} androidSdkVersion\n * @memberof simpleperf_report_proto.MetaInfo\n * @instance\n */\n MetaInfo.prototype.androidSdkVersion = \"\";\n\n /**\n * MetaInfo androidBuildType.\n * @member {string} androidBuildType\n * @memberof simpleperf_report_proto.MetaInfo\n * @instance\n */\n MetaInfo.prototype.androidBuildType = \"\";\n\n /**\n * MetaInfo traceOffcpu.\n * @member {boolean} traceOffcpu\n * @memberof simpleperf_report_proto.MetaInfo\n * @instance\n */\n MetaInfo.prototype.traceOffcpu = false;\n\n /**\n * Creates a new MetaInfo instance using the specified properties.\n * @function create\n * @memberof simpleperf_report_proto.MetaInfo\n * @static\n * @param {simpleperf_report_proto.IMetaInfo=} [properties] Properties to set\n * @returns {simpleperf_report_proto.MetaInfo} MetaInfo instance\n */\n MetaInfo.create = function create(properties) {\n return new MetaInfo(properties);\n };\n\n /**\n * Encodes the specified MetaInfo message. Does not implicitly {@link simpleperf_report_proto.MetaInfo.verify|verify} messages.\n * @function encode\n * @memberof simpleperf_report_proto.MetaInfo\n * @static\n * @param {simpleperf_report_proto.IMetaInfo} message MetaInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n MetaInfo.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.eventType != null && message.eventType.length)\n for (var i = 0; i < message.eventType.length; ++i)\n writer.uint32(/* id 1, wireType 2 =*/10).string(message.eventType[i]);\n if (message.appPackageName != null && Object.hasOwnProperty.call(message, \"appPackageName\"))\n writer.uint32(/* id 2, wireType 2 =*/18).string(message.appPackageName);\n if (message.appType != null && Object.hasOwnProperty.call(message, \"appType\"))\n writer.uint32(/* id 3, wireType 2 =*/26).string(message.appType);\n if (message.androidSdkVersion != null && Object.hasOwnProperty.call(message, \"androidSdkVersion\"))\n writer.uint32(/* id 4, wireType 2 =*/34).string(message.androidSdkVersion);\n if (message.androidBuildType != null && Object.hasOwnProperty.call(message, \"androidBuildType\"))\n writer.uint32(/* id 5, wireType 2 =*/42).string(message.androidBuildType);\n if (message.traceOffcpu != null && Object.hasOwnProperty.call(message, \"traceOffcpu\"))\n writer.uint32(/* id 6, wireType 0 =*/48).bool(message.traceOffcpu);\n return writer;\n };\n\n /**\n * Encodes the specified MetaInfo message, length delimited. Does not implicitly {@link simpleperf_report_proto.MetaInfo.verify|verify} messages.\n * @function encodeDelimited\n * @memberof simpleperf_report_proto.MetaInfo\n * @static\n * @param {simpleperf_report_proto.IMetaInfo} message MetaInfo message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n MetaInfo.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a MetaInfo message from the specified reader or buffer.\n * @function decode\n * @memberof simpleperf_report_proto.MetaInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {simpleperf_report_proto.MetaInfo} MetaInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n MetaInfo.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.simpleperf_report_proto.MetaInfo();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n if (!(message.eventType && message.eventType.length))\n message.eventType = [];\n message.eventType.push(reader.string());\n break;\n }\n case 2: {\n message.appPackageName = reader.string();\n break;\n }\n case 3: {\n message.appType = reader.string();\n break;\n }\n case 4: {\n message.androidSdkVersion = reader.string();\n break;\n }\n case 5: {\n message.androidBuildType = reader.string();\n break;\n }\n case 6: {\n message.traceOffcpu = reader.bool();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a MetaInfo message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof simpleperf_report_proto.MetaInfo\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {simpleperf_report_proto.MetaInfo} MetaInfo\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n MetaInfo.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a MetaInfo message.\n * @function verify\n * @memberof simpleperf_report_proto.MetaInfo\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n MetaInfo.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.eventType != null && message.hasOwnProperty(\"eventType\")) {\n if (!Array.isArray(message.eventType))\n return \"eventType: array expected\";\n for (var i = 0; i < message.eventType.length; ++i)\n if (!$util.isString(message.eventType[i]))\n return \"eventType: string[] expected\";\n }\n if (message.appPackageName != null && message.hasOwnProperty(\"appPackageName\"))\n if (!$util.isString(message.appPackageName))\n return \"appPackageName: string expected\";\n if (message.appType != null && message.hasOwnProperty(\"appType\"))\n if (!$util.isString(message.appType))\n return \"appType: string expected\";\n if (message.androidSdkVersion != null && message.hasOwnProperty(\"androidSdkVersion\"))\n if (!$util.isString(message.androidSdkVersion))\n return \"androidSdkVersion: string expected\";\n if (message.androidBuildType != null && message.hasOwnProperty(\"androidBuildType\"))\n if (!$util.isString(message.androidBuildType))\n return \"androidBuildType: string expected\";\n if (message.traceOffcpu != null && message.hasOwnProperty(\"traceOffcpu\"))\n if (typeof message.traceOffcpu !== \"boolean\")\n return \"traceOffcpu: boolean expected\";\n return null;\n };\n\n /**\n * Creates a MetaInfo message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof simpleperf_report_proto.MetaInfo\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {simpleperf_report_proto.MetaInfo} MetaInfo\n */\n MetaInfo.fromObject = function fromObject(object) {\n if (object instanceof $root.simpleperf_report_proto.MetaInfo)\n return object;\n var message = new $root.simpleperf_report_proto.MetaInfo();\n if (object.eventType) {\n if (!Array.isArray(object.eventType))\n throw TypeError(\".simpleperf_report_proto.MetaInfo.eventType: array expected\");\n message.eventType = [];\n for (var i = 0; i < object.eventType.length; ++i)\n message.eventType[i] = String(object.eventType[i]);\n }\n if (object.appPackageName != null)\n message.appPackageName = String(object.appPackageName);\n if (object.appType != null)\n message.appType = String(object.appType);\n if (object.androidSdkVersion != null)\n message.androidSdkVersion = String(object.androidSdkVersion);\n if (object.androidBuildType != null)\n message.androidBuildType = String(object.androidBuildType);\n if (object.traceOffcpu != null)\n message.traceOffcpu = Boolean(object.traceOffcpu);\n return message;\n };\n\n /**\n * Creates a plain object from a MetaInfo message. Also converts values to other types if specified.\n * @function toObject\n * @memberof simpleperf_report_proto.MetaInfo\n * @static\n * @param {simpleperf_report_proto.MetaInfo} message MetaInfo\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n MetaInfo.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.arrays || options.defaults)\n object.eventType = [];\n if (options.defaults) {\n object.appPackageName = \"\";\n object.appType = \"\";\n object.androidSdkVersion = \"\";\n object.androidBuildType = \"\";\n object.traceOffcpu = false;\n }\n if (message.eventType && message.eventType.length) {\n object.eventType = [];\n for (var j = 0; j < message.eventType.length; ++j)\n object.eventType[j] = message.eventType[j];\n }\n if (message.appPackageName != null && message.hasOwnProperty(\"appPackageName\"))\n object.appPackageName = message.appPackageName;\n if (message.appType != null && message.hasOwnProperty(\"appType\"))\n object.appType = message.appType;\n if (message.androidSdkVersion != null && message.hasOwnProperty(\"androidSdkVersion\"))\n object.androidSdkVersion = message.androidSdkVersion;\n if (message.androidBuildType != null && message.hasOwnProperty(\"androidBuildType\"))\n object.androidBuildType = message.androidBuildType;\n if (message.traceOffcpu != null && message.hasOwnProperty(\"traceOffcpu\"))\n object.traceOffcpu = message.traceOffcpu;\n return object;\n };\n\n /**\n * Converts this MetaInfo to JSON.\n * @function toJSON\n * @memberof simpleperf_report_proto.MetaInfo\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n MetaInfo.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for MetaInfo\n * @function getTypeUrl\n * @memberof simpleperf_report_proto.MetaInfo\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n MetaInfo.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/simpleperf_report_proto.MetaInfo\";\n };\n\n return MetaInfo;\n })();\n\n simpleperf_report_proto.ContextSwitch = (function() {\n\n /**\n * Properties of a ContextSwitch.\n * @memberof simpleperf_report_proto\n * @interface IContextSwitch\n * @property {boolean|null} [switchOn] ContextSwitch switchOn\n * @property {number|Long|null} [time] ContextSwitch time\n * @property {number|null} [threadId] ContextSwitch threadId\n */\n\n /**\n * Constructs a new ContextSwitch.\n * @memberof simpleperf_report_proto\n * @classdesc Represents a ContextSwitch.\n * @implements IContextSwitch\n * @constructor\n * @param {simpleperf_report_proto.IContextSwitch=} [properties] Properties to set\n */\n function ContextSwitch(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * ContextSwitch switchOn.\n * @member {boolean} switchOn\n * @memberof simpleperf_report_proto.ContextSwitch\n * @instance\n */\n ContextSwitch.prototype.switchOn = false;\n\n /**\n * ContextSwitch time.\n * @member {number|Long} time\n * @memberof simpleperf_report_proto.ContextSwitch\n * @instance\n */\n ContextSwitch.prototype.time = $util.Long ? $util.Long.fromBits(0,0,true) : 0;\n\n /**\n * ContextSwitch threadId.\n * @member {number} threadId\n * @memberof simpleperf_report_proto.ContextSwitch\n * @instance\n */\n ContextSwitch.prototype.threadId = 0;\n\n /**\n * Creates a new ContextSwitch instance using the specified properties.\n * @function create\n * @memberof simpleperf_report_proto.ContextSwitch\n * @static\n * @param {simpleperf_report_proto.IContextSwitch=} [properties] Properties to set\n * @returns {simpleperf_report_proto.ContextSwitch} ContextSwitch instance\n */\n ContextSwitch.create = function create(properties) {\n return new ContextSwitch(properties);\n };\n\n /**\n * Encodes the specified ContextSwitch message. Does not implicitly {@link simpleperf_report_proto.ContextSwitch.verify|verify} messages.\n * @function encode\n * @memberof simpleperf_report_proto.ContextSwitch\n * @static\n * @param {simpleperf_report_proto.IContextSwitch} message ContextSwitch message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ContextSwitch.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.switchOn != null && Object.hasOwnProperty.call(message, \"switchOn\"))\n writer.uint32(/* id 1, wireType 0 =*/8).bool(message.switchOn);\n if (message.time != null && Object.hasOwnProperty.call(message, \"time\"))\n writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.time);\n if (message.threadId != null && Object.hasOwnProperty.call(message, \"threadId\"))\n writer.uint32(/* id 3, wireType 0 =*/24).uint32(message.threadId);\n return writer;\n };\n\n /**\n * Encodes the specified ContextSwitch message, length delimited. Does not implicitly {@link simpleperf_report_proto.ContextSwitch.verify|verify} messages.\n * @function encodeDelimited\n * @memberof simpleperf_report_proto.ContextSwitch\n * @static\n * @param {simpleperf_report_proto.IContextSwitch} message ContextSwitch message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n ContextSwitch.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a ContextSwitch message from the specified reader or buffer.\n * @function decode\n * @memberof simpleperf_report_proto.ContextSwitch\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {simpleperf_report_proto.ContextSwitch} ContextSwitch\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ContextSwitch.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.simpleperf_report_proto.ContextSwitch();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.switchOn = reader.bool();\n break;\n }\n case 2: {\n message.time = reader.uint64();\n break;\n }\n case 3: {\n message.threadId = reader.uint32();\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a ContextSwitch message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof simpleperf_report_proto.ContextSwitch\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {simpleperf_report_proto.ContextSwitch} ContextSwitch\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n ContextSwitch.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a ContextSwitch message.\n * @function verify\n * @memberof simpleperf_report_proto.ContextSwitch\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n ContextSwitch.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n if (message.switchOn != null && message.hasOwnProperty(\"switchOn\"))\n if (typeof message.switchOn !== \"boolean\")\n return \"switchOn: boolean expected\";\n if (message.time != null && message.hasOwnProperty(\"time\"))\n if (!$util.isInteger(message.time) && !(message.time && $util.isInteger(message.time.low) && $util.isInteger(message.time.high)))\n return \"time: integer|Long expected\";\n if (message.threadId != null && message.hasOwnProperty(\"threadId\"))\n if (!$util.isInteger(message.threadId))\n return \"threadId: integer expected\";\n return null;\n };\n\n /**\n * Creates a ContextSwitch message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof simpleperf_report_proto.ContextSwitch\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {simpleperf_report_proto.ContextSwitch} ContextSwitch\n */\n ContextSwitch.fromObject = function fromObject(object) {\n if (object instanceof $root.simpleperf_report_proto.ContextSwitch)\n return object;\n var message = new $root.simpleperf_report_proto.ContextSwitch();\n if (object.switchOn != null)\n message.switchOn = Boolean(object.switchOn);\n if (object.time != null)\n if ($util.Long)\n (message.time = $util.Long.fromValue(object.time)).unsigned = true;\n else if (typeof object.time === \"string\")\n message.time = parseInt(object.time, 10);\n else if (typeof object.time === \"number\")\n message.time = object.time;\n else if (typeof object.time === \"object\")\n message.time = new $util.LongBits(object.time.low >>> 0, object.time.high >>> 0).toNumber(true);\n if (object.threadId != null)\n message.threadId = object.threadId >>> 0;\n return message;\n };\n\n /**\n * Creates a plain object from a ContextSwitch message. Also converts values to other types if specified.\n * @function toObject\n * @memberof simpleperf_report_proto.ContextSwitch\n * @static\n * @param {simpleperf_report_proto.ContextSwitch} message ContextSwitch\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n ContextSwitch.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (options.defaults) {\n object.switchOn = false;\n if ($util.Long) {\n var long = new $util.Long(0, 0, true);\n object.time = options.longs === String ? long.toString() : options.longs === Number ? long.toNumber() : long;\n } else\n object.time = options.longs === String ? \"0\" : 0;\n object.threadId = 0;\n }\n if (message.switchOn != null && message.hasOwnProperty(\"switchOn\"))\n object.switchOn = message.switchOn;\n if (message.time != null && message.hasOwnProperty(\"time\"))\n if (typeof message.time === \"number\")\n object.time = options.longs === String ? String(message.time) : message.time;\n else\n object.time = options.longs === String ? $util.Long.prototype.toString.call(message.time) : options.longs === Number ? new $util.LongBits(message.time.low >>> 0, message.time.high >>> 0).toNumber(true) : message.time;\n if (message.threadId != null && message.hasOwnProperty(\"threadId\"))\n object.threadId = message.threadId;\n return object;\n };\n\n /**\n * Converts this ContextSwitch to JSON.\n * @function toJSON\n * @memberof simpleperf_report_proto.ContextSwitch\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n ContextSwitch.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for ContextSwitch\n * @function getTypeUrl\n * @memberof simpleperf_report_proto.ContextSwitch\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n ContextSwitch.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/simpleperf_report_proto.ContextSwitch\";\n };\n\n return ContextSwitch;\n })();\n\n simpleperf_report_proto.Record = (function() {\n\n /**\n * Properties of a Record.\n * @memberof simpleperf_report_proto\n * @interface IRecord\n * @property {simpleperf_report_proto.ISample|null} [sample] Record sample\n * @property {simpleperf_report_proto.ILostSituation|null} [lost] Record lost\n * @property {simpleperf_report_proto.IFile|null} [file] Record file\n * @property {simpleperf_report_proto.IThread|null} [thread] Record thread\n * @property {simpleperf_report_proto.IMetaInfo|null} [metaInfo] Record metaInfo\n * @property {simpleperf_report_proto.IContextSwitch|null} [contextSwitch] Record contextSwitch\n */\n\n /**\n * Constructs a new Record.\n * @memberof simpleperf_report_proto\n * @classdesc Represents a Record.\n * @implements IRecord\n * @constructor\n * @param {simpleperf_report_proto.IRecord=} [properties] Properties to set\n */\n function Record(properties) {\n if (properties)\n for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n if (properties[keys[i]] != null)\n this[keys[i]] = properties[keys[i]];\n }\n\n /**\n * Record sample.\n * @member {simpleperf_report_proto.ISample|null|undefined} sample\n * @memberof simpleperf_report_proto.Record\n * @instance\n */\n Record.prototype.sample = null;\n\n /**\n * Record lost.\n * @member {simpleperf_report_proto.ILostSituation|null|undefined} lost\n * @memberof simpleperf_report_proto.Record\n * @instance\n */\n Record.prototype.lost = null;\n\n /**\n * Record file.\n * @member {simpleperf_report_proto.IFile|null|undefined} file\n * @memberof simpleperf_report_proto.Record\n * @instance\n */\n Record.prototype.file = null;\n\n /**\n * Record thread.\n * @member {simpleperf_report_proto.IThread|null|undefined} thread\n * @memberof simpleperf_report_proto.Record\n * @instance\n */\n Record.prototype.thread = null;\n\n /**\n * Record metaInfo.\n * @member {simpleperf_report_proto.IMetaInfo|null|undefined} metaInfo\n * @memberof simpleperf_report_proto.Record\n * @instance\n */\n Record.prototype.metaInfo = null;\n\n /**\n * Record contextSwitch.\n * @member {simpleperf_report_proto.IContextSwitch|null|undefined} contextSwitch\n * @memberof simpleperf_report_proto.Record\n * @instance\n */\n Record.prototype.contextSwitch = null;\n\n // OneOf field names bound to virtual getters and setters\n var $oneOfFields;\n\n /**\n * Record recordData.\n * @member {\"sample\"|\"lost\"|\"file\"|\"thread\"|\"metaInfo\"|\"contextSwitch\"|undefined} recordData\n * @memberof simpleperf_report_proto.Record\n * @instance\n */\n Object.defineProperty(Record.prototype, \"recordData\", {\n get: $util.oneOfGetter($oneOfFields = [\"sample\", \"lost\", \"file\", \"thread\", \"metaInfo\", \"contextSwitch\"]),\n set: $util.oneOfSetter($oneOfFields)\n });\n\n /**\n * Creates a new Record instance using the specified properties.\n * @function create\n * @memberof simpleperf_report_proto.Record\n * @static\n * @param {simpleperf_report_proto.IRecord=} [properties] Properties to set\n * @returns {simpleperf_report_proto.Record} Record instance\n */\n Record.create = function create(properties) {\n return new Record(properties);\n };\n\n /**\n * Encodes the specified Record message. Does not implicitly {@link simpleperf_report_proto.Record.verify|verify} messages.\n * @function encode\n * @memberof simpleperf_report_proto.Record\n * @static\n * @param {simpleperf_report_proto.IRecord} message Record message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Record.encode = function encode(message, writer) {\n if (!writer)\n writer = $Writer.create();\n if (message.sample != null && Object.hasOwnProperty.call(message, \"sample\"))\n $root.simpleperf_report_proto.Sample.encode(message.sample, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n if (message.lost != null && Object.hasOwnProperty.call(message, \"lost\"))\n $root.simpleperf_report_proto.LostSituation.encode(message.lost, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n if (message.file != null && Object.hasOwnProperty.call(message, \"file\"))\n $root.simpleperf_report_proto.File.encode(message.file, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n if (message.thread != null && Object.hasOwnProperty.call(message, \"thread\"))\n $root.simpleperf_report_proto.Thread.encode(message.thread, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n if (message.metaInfo != null && Object.hasOwnProperty.call(message, \"metaInfo\"))\n $root.simpleperf_report_proto.MetaInfo.encode(message.metaInfo, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n if (message.contextSwitch != null && Object.hasOwnProperty.call(message, \"contextSwitch\"))\n $root.simpleperf_report_proto.ContextSwitch.encode(message.contextSwitch, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n return writer;\n };\n\n /**\n * Encodes the specified Record message, length delimited. Does not implicitly {@link simpleperf_report_proto.Record.verify|verify} messages.\n * @function encodeDelimited\n * @memberof simpleperf_report_proto.Record\n * @static\n * @param {simpleperf_report_proto.IRecord} message Record message or plain object to encode\n * @param {$protobuf.Writer} [writer] Writer to encode to\n * @returns {$protobuf.Writer} Writer\n */\n Record.encodeDelimited = function encodeDelimited(message, writer) {\n return this.encode(message, writer).ldelim();\n };\n\n /**\n * Decodes a Record message from the specified reader or buffer.\n * @function decode\n * @memberof simpleperf_report_proto.Record\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Message length if known beforehand\n * @returns {simpleperf_report_proto.Record} Record\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Record.decode = function decode(reader, length) {\n if (!(reader instanceof $Reader))\n reader = $Reader.create(reader);\n var end = length === undefined ? reader.len : reader.pos + length, message = new $root.simpleperf_report_proto.Record();\n while (reader.pos < end) {\n var tag = reader.uint32();\n switch (tag >>> 3) {\n case 1: {\n message.sample = $root.simpleperf_report_proto.Sample.decode(reader, reader.uint32());\n break;\n }\n case 2: {\n message.lost = $root.simpleperf_report_proto.LostSituation.decode(reader, reader.uint32());\n break;\n }\n case 3: {\n message.file = $root.simpleperf_report_proto.File.decode(reader, reader.uint32());\n break;\n }\n case 4: {\n message.thread = $root.simpleperf_report_proto.Thread.decode(reader, reader.uint32());\n break;\n }\n case 5: {\n message.metaInfo = $root.simpleperf_report_proto.MetaInfo.decode(reader, reader.uint32());\n break;\n }\n case 6: {\n message.contextSwitch = $root.simpleperf_report_proto.ContextSwitch.decode(reader, reader.uint32());\n break;\n }\n default:\n reader.skipType(tag & 7);\n break;\n }\n }\n return message;\n };\n\n /**\n * Decodes a Record message from the specified reader or buffer, length delimited.\n * @function decodeDelimited\n * @memberof simpleperf_report_proto.Record\n * @static\n * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {simpleperf_report_proto.Record} Record\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {$protobuf.util.ProtocolError} If required fields are missing\n */\n Record.decodeDelimited = function decodeDelimited(reader) {\n if (!(reader instanceof $Reader))\n reader = new $Reader(reader);\n return this.decode(reader, reader.uint32());\n };\n\n /**\n * Verifies a Record message.\n * @function verify\n * @memberof simpleperf_report_proto.Record\n * @static\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\n Record.verify = function verify(message) {\n if (typeof message !== \"object\" || message === null)\n return \"object expected\";\n var properties = {};\n if (message.sample != null && message.hasOwnProperty(\"sample\")) {\n properties.recordData = 1;\n {\n var error = $root.simpleperf_report_proto.Sample.verify(message.sample);\n if (error)\n return \"sample.\" + error;\n }\n }\n if (message.lost != null && message.hasOwnProperty(\"lost\")) {\n if (properties.recordData === 1)\n return \"recordData: multiple values\";\n properties.recordData = 1;\n {\n var error = $root.simpleperf_report_proto.LostSituation.verify(message.lost);\n if (error)\n return \"lost.\" + error;\n }\n }\n if (message.file != null && message.hasOwnProperty(\"file\")) {\n if (properties.recordData === 1)\n return \"recordData: multiple values\";\n properties.recordData = 1;\n {\n var error = $root.simpleperf_report_proto.File.verify(message.file);\n if (error)\n return \"file.\" + error;\n }\n }\n if (message.thread != null && message.hasOwnProperty(\"thread\")) {\n if (properties.recordData === 1)\n return \"recordData: multiple values\";\n properties.recordData = 1;\n {\n var error = $root.simpleperf_report_proto.Thread.verify(message.thread);\n if (error)\n return \"thread.\" + error;\n }\n }\n if (message.metaInfo != null && message.hasOwnProperty(\"metaInfo\")) {\n if (properties.recordData === 1)\n return \"recordData: multiple values\";\n properties.recordData = 1;\n {\n var error = $root.simpleperf_report_proto.MetaInfo.verify(message.metaInfo);\n if (error)\n return \"metaInfo.\" + error;\n }\n }\n if (message.contextSwitch != null && message.hasOwnProperty(\"contextSwitch\")) {\n if (properties.recordData === 1)\n return \"recordData: multiple values\";\n properties.recordData = 1;\n {\n var error = $root.simpleperf_report_proto.ContextSwitch.verify(message.contextSwitch);\n if (error)\n return \"contextSwitch.\" + error;\n }\n }\n return null;\n };\n\n /**\n * Creates a Record message from a plain object. Also converts values to their respective internal types.\n * @function fromObject\n * @memberof simpleperf_report_proto.Record\n * @static\n * @param {Object.<string,*>} object Plain object\n * @returns {simpleperf_report_proto.Record} Record\n */\n Record.fromObject = function fromObject(object) {\n if (object instanceof $root.simpleperf_report_proto.Record)\n return object;\n var message = new $root.simpleperf_report_proto.Record();\n if (object.sample != null) {\n if (typeof object.sample !== \"object\")\n throw TypeError(\".simpleperf_report_proto.Record.sample: object expected\");\n message.sample = $root.simpleperf_report_proto.Sample.fromObject(object.sample);\n }\n if (object.lost != null) {\n if (typeof object.lost !== \"object\")\n throw TypeError(\".simpleperf_report_proto.Record.lost: object expected\");\n message.lost = $root.simpleperf_report_proto.LostSituation.fromObject(object.lost);\n }\n if (object.file != null) {\n if (typeof object.file !== \"object\")\n throw TypeError(\".simpleperf_report_proto.Record.file: object expected\");\n message.file = $root.simpleperf_report_proto.File.fromObject(object.file);\n }\n if (object.thread != null) {\n if (typeof object.thread !== \"object\")\n throw TypeError(\".simpleperf_report_proto.Record.thread: object expected\");\n message.thread = $root.simpleperf_report_proto.Thread.fromObject(object.thread);\n }\n if (object.metaInfo != null) {\n if (typeof object.metaInfo !== \"object\")\n throw TypeError(\".simpleperf_report_proto.Record.metaInfo: object expected\");\n message.metaInfo = $root.simpleperf_report_proto.MetaInfo.fromObject(object.metaInfo);\n }\n if (object.contextSwitch != null) {\n if (typeof object.contextSwitch !== \"object\")\n throw TypeError(\".simpleperf_report_proto.Record.contextSwitch: object expected\");\n message.contextSwitch = $root.simpleperf_report_proto.ContextSwitch.fromObject(object.contextSwitch);\n }\n return message;\n };\n\n /**\n * Creates a plain object from a Record message. Also converts values to other types if specified.\n * @function toObject\n * @memberof simpleperf_report_proto.Record\n * @static\n * @param {simpleperf_report_proto.Record} message Record\n * @param {$protobuf.IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\n Record.toObject = function toObject(message, options) {\n if (!options)\n options = {};\n var object = {};\n if (message.sample != null && message.hasOwnProperty(\"sample\")) {\n object.sample = $root.simpleperf_report_proto.Sample.toObject(message.sample, options);\n if (options.oneofs)\n object.recordData = \"sample\";\n }\n if (message.lost != null && message.hasOwnProperty(\"lost\")) {\n object.lost = $root.simpleperf_report_proto.LostSituation.toObject(message.lost, options);\n if (options.oneofs)\n object.recordData = \"lost\";\n }\n if (message.file != null && message.hasOwnProperty(\"file\")) {\n object.file = $root.simpleperf_report_proto.File.toObject(message.file, options);\n if (options.oneofs)\n object.recordData = \"file\";\n }\n if (message.thread != null && message.hasOwnProperty(\"thread\")) {\n object.thread = $root.simpleperf_report_proto.Thread.toObject(message.thread, options);\n if (options.oneofs)\n object.recordData = \"thread\";\n }\n if (message.metaInfo != null && message.hasOwnProperty(\"metaInfo\")) {\n object.metaInfo = $root.simpleperf_report_proto.MetaInfo.toObject(message.metaInfo, options);\n if (options.oneofs)\n object.recordData = \"metaInfo\";\n }\n if (message.contextSwitch != null && message.hasOwnProperty(\"contextSwitch\")) {\n object.contextSwitch = $root.simpleperf_report_proto.ContextSwitch.toObject(message.contextSwitch, options);\n if (options.oneofs)\n object.recordData = \"contextSwitch\";\n }\n return object;\n };\n\n /**\n * Converts this Record to JSON.\n * @function toJSON\n * @memberof simpleperf_report_proto.Record\n * @instance\n * @returns {Object.<string,*>} JSON object\n */\n Record.prototype.toJSON = function toJSON() {\n return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n };\n\n /**\n * Gets the default type url for Record\n * @function getTypeUrl\n * @memberof simpleperf_report_proto.Record\n * @static\n * @param {string} [typeUrlPrefix] your custom typeUrlPrefix(default \"type.googleapis.com\")\n * @returns {string} The default type url\n */\n Record.getTypeUrl = function getTypeUrl(typeUrlPrefix) {\n if (typeUrlPrefix === undefined) {\n typeUrlPrefix = \"type.googleapis.com\";\n }\n return typeUrlPrefix + \"/simpleperf_report_proto.Record\";\n };\n\n return Record;\n })();\n\n return simpleperf_report_proto;\n})();\n\nmodule.exports = $root;\n"],"names":["toNumber","value","Long","isLong","toMilliseconds","nanoseconds","Categories","toJson","this","categoryList","createCategory","name","color","index","length","push","subcategories","_Categories","Other","Native","Java","System","Kernel","FirefoxResourceTable","constructor","strings","resourceTable","getEmptyResourceTable","resourcesMap","Map","findOrAddResource","file","resourceIndex","get","id","lib","indexForString","path","host","type","set","FirefoxFuncTable","funcTable","getEmptyFuncTable","funcMap","findOrAddFunc","nameIndex","mapKey","funcIndex","isJS","relevantForJS","resource","fileName","lineNumber","columnNumber","FirefoxFrameTable","frameTable","getEmptyFrameTable","frameMap","findOrAddFrame","category","frameIndex","address","inlineDepth","subcategory","func","nativeSymbol","innerWindowID","line","column","FirefoxSampleTable","stackTable","getEmptyRawStackTable","stackMap","findOrAddStack","prefix","stackIndex","frame","FirefoxThread","thread","isMainThread","tid","pid","stringArray","StringTable","withBackingArray","sampleTable","getEmptySamplesTable","cpuClockEventId","threadId","processId","threadName","processType","processStartupTime","processShutdownTime","registerTime","unregisterTime","pausedRanges","toString","samples","markers","getEmptyRawMarkerTable","nativeSymbols","getEmptyNativeSymbolTable","enableCpuClock","weight","weightType","addSample","sample","fileMap","prefixStackId","callchain","reverse","fileId","methodName","symbolId","symbol","split","pop","vaddrInFile","filePath","fileInSystem","startsWith","endsWith","isJavaMethod","isAndroidMethod","stack","ensureExists","time","eventTypeId","eventCount","FirefoxProfile","threads","threadMap","eventTypes","appPackageName","sampleCount","lostCount","meta","getProfileMeta","libs","map","interval","startTime","categories","product","stackwalk","version","preprocessedProfileVersion","PROCESSED_PROFILE_VERSION","symbolicationNotSupported","markerSchema","platform","toolkit","importedFrom","usesOnlyOneStackType","sourceCodeIsNotOnSearchfox","extra","label","entries","format","keepProfileThreadOrder","setMetaInfo","metaInfo","eventType","indexOf","setLostSituation","lost","addFile","addThread","firefoxThread","finalizeThreads","forEach","console","warn","SimpleperfReportConverter","buffer","bufferView","bufferOffset","DataView","readUint16LE","getUint16","readUint32LE","getUint32","readMagic","verifyMagic","SIMPLEPERF_MAGIC","Error","readRecord","recordSize","recordBuffer","slice","recordArray","Uint8Array","report","Record","decode","process","targetProfile","record","recordData","convertSimpleperfTraceProfile","traceBuffer","simpleperf_report_proto","$protobuf","require","$Reader","Reader","$Writer","Writer","$util","util","$root","roots","Sample","properties","keys","Object","i","prototype","fromBits","emptyArray","unwindingResult","create","encode","message","writer","hasOwnProperty","call","uint32","uint64","int32","CallChainEntry","fork","ldelim","UnwindingResult","encodeDelimited","reader","end","undefined","len","pos","tag","skipType","decodeDelimited","verify","isInteger","low","high","Array","isArray","error","fromObject","object","fromValue","unsigned","parseInt","LongBits","TypeError","toObject","options","arrays","defaults","long","longs","String","Number","j","toJSON","toJSONOptions","getTypeUrl","typeUrlPrefix","valuesById","values","executionType","enums","ExecutionType","rawErrorCode","errorAddr","errorCode","ErrorCode","LostSituation","File","mangledSymbol","string","isString","Thread","MetaInfo","appType","androidSdkVersion","androidBuildType","traceOffcpu","bool","Boolean","ContextSwitch","switchOn","$oneOfFields","contextSwitch","defineProperty","oneOfGetter","oneOfSetter","oneofs","module","exports"],"sourceRoot":""}
data/dist/docs/_navbar.md CHANGED
@@ -1,3 +1,3 @@
1
- * [Firefox Profiler](https://profiler.firefox.com/)
2
- * [GitHub](https://github.com/firefox-devtools/profiler)
3
- * [*Firefox Profiler* on Matrix](https://chat.mozilla.org/#/room/#profiler:mozilla.org)
1
+ - [Firefox Profiler](https://profiler.firefox.com/)
2
+ - [GitHub](https://github.com/firefox-devtools/profiler)
3
+ - [_Firefox Profiler_ on Matrix](https://chat.mozilla.org/#/room/#profiler:mozilla.org)
@@ -1,28 +1,28 @@
1
- * [User Guide](/)
2
- * [Getting Started](./guide-getting-started.md)
3
- * [UI Tour: The Timeline](./guide-ui-tour-timeline.md)
4
- * [UI Tour: The Panels](./guide-ui-tour-panels.md)
5
- * [Profiler Fundamentals](./guide-profiler-fundamentals.md)
6
- * [Stack samples and call trees](./guide-stack-samples-and-call-trees.md)
7
- * [Filtering call trees](./guide-filtering-call-trees.md)
8
- * [Profiling Firefox for Android](./guide-profiling-firefox-android.md)
9
- * [Remote Profiling](./guide-remote-profiling.md)
10
- * [Profiling directly on the device](./guide-profiling-android-directly-on-device.md)
11
- * [Memory Allocations](./memory-allocations.md)
12
- * [Removing Profiler](./guide-removing-profiler.md)
13
- * [Advanced Topics](./advanced-topics.md)
14
- * [Profiling Firefox Startup & Shutdown](./guide-startup-shutdown.md)
15
- * [Perf profiling on Linux](./guide-perf-profiling.md)
16
- * [Perf profiling on Android](./guide-android-profiling.md)
17
- * [IPC Messages](./ipc-messages.md)
18
- * [Profiler control using POSIX signals](./async-posix-signal-control.md)
19
- * [Video Tutorials](./videos.md)
20
- * [Firefox Profiler intro](./videos-intro.md)
21
- * [Samples and markers](./videos-samples-markers.md)
22
- * [Call Tree (Part 1) - The basics](./videos-call-tree-1.md)
23
- * [Call Tree (Part 2) - Real recording](./videos-call-tree-2.md)
24
- * [Call Tree (Part 3) - Branching](./videos-call-tree-3.md)
25
- * [Multiple threads and async code](./videos-threads.md)
26
- * [Case Studies](./case-studies.md)
27
- * [2D canvas and worker messaging](./bunny.md)
28
- * [Harnessing parallelism](./bunny-2.md)
1
+ - [User Guide](/)
2
+ - [Getting Started](./guide-getting-started.md)
3
+ - [UI Tour: The Timeline](./guide-ui-tour-timeline.md)
4
+ - [UI Tour: The Panels](./guide-ui-tour-panels.md)
5
+ - [Profiler Fundamentals](./guide-profiler-fundamentals.md)
6
+ - [Stack samples and call trees](./guide-stack-samples-and-call-trees.md)
7
+ - [Filtering call trees](./guide-filtering-call-trees.md)
8
+ - [Profiling Firefox for Android](./guide-profiling-firefox-android.md)
9
+ - [Remote Profiling](./guide-remote-profiling.md)
10
+ - [Profiling directly on the device](./guide-profiling-android-directly-on-device.md)
11
+ - [Memory Allocations](./memory-allocations.md)
12
+ - [Removing Profiler](./guide-removing-profiler.md)
13
+ - [Advanced Topics](./advanced-topics.md)
14
+ - [Profiling Firefox Startup & Shutdown](./guide-startup-shutdown.md)
15
+ - [Perf profiling on Linux](./guide-perf-profiling.md)
16
+ - [Perf profiling on Android](./guide-android-profiling.md)
17
+ - [IPC Messages](./ipc-messages.md)
18
+ - [Profiler control using POSIX signals](./async-posix-signal-control.md)
19
+ - [Video Tutorials](./videos.md)
20
+ - [Firefox Profiler intro](./videos-intro.md)
21
+ - [Samples and markers](./videos-samples-markers.md)
22
+ - [Call Tree (Part 1) - The basics](./videos-call-tree-1.md)
23
+ - [Call Tree (Part 2) - Real recording](./videos-call-tree-2.md)
24
+ - [Call Tree (Part 3) - Branching](./videos-call-tree-3.md)
25
+ - [Multiple threads and async code](./videos-threads.md)
26
+ - [Case Studies](./case-studies.md)
27
+ - [2D canvas and worker messaging](./bunny.md)
28
+ - [Harnessing parallelism](./bunny-2.md)
@@ -3,8 +3,8 @@
3
3
  These pages are suited to more advanced users of the profiler, especially to
4
4
  developers of the Firefox browser.
5
5
 
6
- * [Profiling Firefox Startup & Shutdown](./guide-startup-shutdown.md)
7
- * [Perf profiling on Linux](./guide-perf-profiling.md)
8
- * [Perf profiling on Android](./guide-android-profiling.md)
9
- * [IPC Messages](./ipc-messages.md)
10
- * [Profiler control using POSIX signals](./async-posix-signal-control.md)
6
+ - [Profiling Firefox Startup & Shutdown](./guide-startup-shutdown.md)
7
+ - [Perf profiling on Linux](./guide-perf-profiling.md)
8
+ - [Perf profiling on Android](./guide-android-profiling.md)
9
+ - [IPC Messages](./ipc-messages.md)
10
+ - [Profiler control using POSIX signals](./async-posix-signal-control.md)