browserscale-ts 1.9.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -91,7 +91,8 @@ Browser automation that doesn't guess. Waits, clicks and frames are handled insi
91
91
  service worker passes through it. No attach race, nothing slips.
92
92
  - **Capture that never pauses the page** — `captureNetwork` streams every
93
93
  finished request with the headers and cookies actually put on the wire, each
94
- redirect hop as its own exchange, bodies copied off to the side.
94
+ redirect hop as its own exchange. Bodies stay with the browser, byte for
95
+ byte, and you pull only the ones you want with `readNetworkBody`.
95
96
  - **Catch one call and change it** — wait for a request or response, block,
96
97
  mock, rewrite headers or bodies, or answer a whole navigation yourself with
97
98
  `loadHTML`.
@@ -211,7 +212,8 @@ reports the element that occluded the click.
211
212
  | `browser.evaluate(expr)` | Run JS in the page/frame and get a typed value back. |
212
213
  | `browser.runScript(source)` | Run JavaScript beside the browser, where cross-origin frames are property access and every step is local; `startScript` leaves it running, `followScript` watches one already going. |
213
214
  | `browser.getObservation(opts?)` | Compact, node-handle-tagged view of the visible page across frames; `opts` tunes budgets and format. |
214
- | `browser.captureNetwork(opts, onExchange)` | Stream every request the session completes, optionally with response bodies. |
215
+ | `browser.captureNetwork(opts, onExchange)` | Stream every request the session completes; exchanges carry body ids, not bodies. |
216
+ | `browser.readNetworkBody(bodyId)` / `readNetworkBodyRange(...)` | Read a captured request or response body, whole or a slice at a time. |
215
217
  | `browser.mirrorDom(opts, onChange, onResync?)` | Live, incrementally updated copy of the page's DOM across every frame. |
216
218
  | `browser.solveCaptcha(opts?)` | Solve an interactive challenge in the live browser. |
217
219
  | `browser.getUsage()` | CPU time, memory (min / average / peak), renderers and frames the session has used so far. |
package/dist/browser.d.ts CHANGED
@@ -5,7 +5,7 @@ export { BrowserConfig } from "./config.ts";
5
5
  export { Locator, css, js, node, at, AllFrames } from "./locator.ts";
6
6
  export { DefaultWaitTimeoutMs, DefaultVisible, DefaultSteadyMs, } from "./defaults.ts";
7
7
  export { BrowserScaleError, ClickError, FillError, DragError, ScrollError, MoveError, SelectOptionError, WaitError, } from "./errors.ts";
8
- export type { Rect, FrameInfo, PageInfo, Header, InterceptedRequest, InterceptedResponse, NetworkExchange, NetworkResourceType, NetworkServedFrom, NetworkBodies, NetworkCaptureOptions, WaitResult, WaitConditionStatus, OccluderInfo, ElementRef, NavigateResult, EvaluateResult, ElementResult, DragResult, SelectOptionResult, ScreenshotResult, ReadCanvasResult, DOMResult, InspectResult, RentResponse, BrowserInfo, SessionUsage, } from "./types.ts";
8
+ export type { Rect, FrameInfo, PageInfo, Header, InterceptedRequest, InterceptedResponse, NetworkExchange, NetworkResourceType, NetworkServedFrom, NetworkBodies, NetworkBody, NetworkBodyRange, NetworkCaptureOptions, WaitResult, WaitConditionStatus, OccluderInfo, ElementRef, NavigateResult, EvaluateResult, ElementResult, DragResult, SelectOptionResult, ScreenshotResult, ReadCanvasResult, DOMResult, InspectResult, RentResponse, BrowserInfo, SessionUsage, } from "./types.ts";
9
9
  export type { Button, ClickAction, ClickOpts, FillOpts, SelectOpts, WaitOpts, WaitUntil, NavigateOpts, LoadHTMLOpts, GetDOMOpts, GetObservationOpts, ScreenshotOpts, ReadCanvasOpts, } from "./options.ts";
10
10
  export { type RequestPattern, type HeaderModification, type HeaderModificationAction, } from "./network.ts";
11
11
  export { ScriptRun, ScriptFollow, type ScriptEvent, type ScriptEventHandler, type ScriptFinished, type ScriptLogEntry, type ScriptResult, type ScriptRunInfo, } from "./scripts.ts";
@@ -3799,7 +3799,7 @@ function serviceDesc(file, path, ...paths) {
3799
3799
  }
3800
3800
 
3801
3801
  // src/gen/wrc_pb.ts
3802
- var file_wrc = /* @__PURE__ */ fileDesc("Cgl3cmMucHJvdG8SD2Jyb3dzZXJzY2FsZS52MSI7CgRSZWN0EgkKAXgYASABKAESCQoBeRgCIAEoARINCgV3aWR0aBgDIAEoARIOCgZoZWlnaHQYBCABKAEihgIKCUZyYW1lSW5mbxIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSEAoIaXNfb29waWYYAyABKAgSFgoOaGFzX2pzX2NvbnRleHQYBCABKAgSEgoKaXNfbG9hZGluZxgFIAEoCBISCgppc192aXNpYmxlGAYgASgIEiwKDWFic29sdXRlX3JlY3QYByABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIsCg1yZWxhdGl2ZV9yZWN0GAggASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSLAoIY2hpbGRyZW4YCSADKAsyGi5icm93c2Vyc2NhbGUudjEuRnJhbWVJbmZvIqwBCghQYWdlSW5mbxIPCgdwYWdlX2lkGAEgASgJEhoKEmJyb3dzZXJfY29udGV4dF9pZBgCIAEoCRILCgN1cmwYAyABKAkSDQoFdGl0bGUYBCABKAkSJwoIdmlld3BvcnQYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIuCgpmcmFtZV90cmVlGAYgASgLMhouYnJvd3NlcnNjYWxlLnYxLkZyYW1lSW5mbyIlCgZIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSKAAQoSSW50ZXJjZXB0ZWRSZXF1ZXN0Eg4KBm1ldGhvZBgBIAEoCRILCgN1cmwYAiABKAkSKAoHaGVhZGVycxgDIAMoCzIXLmJyb3dzZXJzY2FsZS52MS5IZWFkZXISDAoEYm9keRgEIAEoCRIVCg1yZXNvdXJjZV90eXBlGAUgASgJIm8KE0ludGVyY2VwdGVkUmVzcG9uc2USCwoDdXJsGAEgASgJEhMKC3N0YXR1c19jb2RlGAIgASgFEigKB2hlYWRlcnMYAyADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEgwKBGJvZHkYBCABKAkijgEKEkhlYWRlck1vZGlmaWNhdGlvbhIMCgRuYW1lGAEgASgJEhIKBXZhbHVlGAIgASgJSACIAQESDgoGYWN0aW9uGAMgASgJEhMKBmJlZm9yZRgEIAEoCUgBiAEBEhIKBWFmdGVyGAUgASgJSAKIAQFCCAoGX3ZhbHVlQgkKB19iZWZvcmVCCAoGX2FmdGVyIk0KEkNvb2tpZVBhcnRpdGlvbktleRIWCg50b3BfbGV2ZWxfc2l0ZRgBIAEoCRIfChdoYXNfY3Jvc3Nfc2l0ZV9hbmNlc3RvchgCIAEoCCK/AwoLQ29va2llUGFyYW0SDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIOCgZkb21haW4YBCABKAkSDAoEcGF0aBgFIAEoCRITCgZzZWN1cmUYBiABKAhIAYgBARIWCglodHRwX29ubHkYByABKAhIAogBARIWCglzYW1lX3NpdGUYCCABKAlIA4gBARIUCgdleHBpcmVzGAkgASgBSASIAQESFQoIcHJpb3JpdHkYCiABKAlIBYgBARIaCg1zb3VyY2Vfc2NoZW1lGAsgASgJSAaIAQESGAoLc291cmNlX3BvcnQYDCABKAVIB4gBARI/Cg1wYXJ0aXRpb25fa2V5GA0gASgLMiMuYnJvd3NlcnNjYWxlLnYxLkNvb2tpZVBhcnRpdGlvbktleUgIiAEBQgYKBF91cmxCCQoHX3NlY3VyZUIMCgpfaHR0cF9vbmx5QgwKCl9zYW1lX3NpdGVCCgoIX2V4cGlyZXNCCwoJX3ByaW9yaXR5QhAKDl9zb3VyY2Vfc2NoZW1lQg4KDF9zb3VyY2VfcG9ydEIQCg5fcGFydGl0aW9uX2tleSKtAQoNV2FpdENvbmRpdGlvbhIVCghzZWxlY3RvchgBIAEoCUgAiAEBEhoKDWpzX2V4cHJlc3Npb24YAiABKAlIAYgBARIUCgd2aXNpYmxlGAMgASgISAKIAQESGAoLc3RlYWR5X3RpbWUYBCABKAFIA4gBAUILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCgoIX3Zpc2libGVCDgoMX3N0ZWFkeV90aW1lIswBCgpXYWl0UmVzdWx0Eg0KBWluZGV4GAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg8KB3N1Y2Nlc3MYByABKAgSLgoFZXJyb3IYBiABKAsyGi5icm93c2Vyc2NhbGUudjEuV2FpdEVycm9ySACIAQFCCAoGX2Vycm9yIuwBChNXYWl0Q29uZGl0aW9uU3RhdHVzEg0KBWluZGV4GAEgASgFEg0KBXN0YXRlGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRIQCghmcmFtZV9pZBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEioKBmJvdW5kcxgGIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0SACIAQESNAoIb2NjbHVkZXIYByABKAsyHS5icm93c2Vyc2NhbGUudjEuT2NjbHVkZXJJbmZvSAGIAQFCCQoHX2JvdW5kc0ILCglfb2NjbHVkZXIiZAoJV2FpdEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRI4Cgpjb25kaXRpb25zGAMgAygLMiQuYnJvd3NlcnNjYWxlLnYxLldhaXRDb25kaXRpb25TdGF0dXMipgEKDUVsZW1lbnRSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIlCgZib3VuZHMYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIOCgZyb290X3gYBiABKAESDgoGcm9vdF95GAcgASgBItIDCgxPY2NsdWRlckluZm8SFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEg8KAmlkGAQgASgJSACIAQESFwoKY2xhc3NfbmFtZRgFIAEoCUgBiAEBEhEKBHRleHQYBiABKAlIAogBARIlCgZib3VuZHMYByABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIbCg5wb2ludGVyX2V2ZW50cxgIIAEoCUgDiAEBEhcKCnZpc2liaWxpdHkYCSABKAlIBIgBARIUCgdvcGFjaXR5GAogASgBSAWIAQESFAoHel9pbmRleBgLIAEoCUgGiAEBEiUKGGhpdHRhYmxlX3doaWxlX2ludmlzaWJsZRgMIAEoCEgHiAEBEhUKCHBvc2l0aW9uGA0gASgJSAiIAQFCBQoDX2lkQg0KC19jbGFzc19uYW1lQgcKBV90ZXh0QhEKD19wb2ludGVyX2V2ZW50c0INCgtfdmlzaWJpbGl0eUIKCghfb3BhY2l0eUIKCghfel9pbmRleEIbChlfaGl0dGFibGVfd2hpbGVfaW52aXNpYmxlQgsKCV9wb3NpdGlvbiItCgxDb21tYW5kRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIl0KDUNvbW1hbmRSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIxCgVlcnJvchgCIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IioAEKCkNsaWNrRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjQKCG9jY2x1ZGVyGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLk9jY2x1ZGVySW5mb0gAiAEBEhwKD2V2YWRlX2F0dGVtcHRlZBgEIAEoCEgBiAEBQgsKCV9vY2NsdWRlckISChBfZXZhZGVfYXR0ZW1wdGVkIt8BCgtDbGlja1Jlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAESLwoFZXJyb3IYCCABKAsyGy5icm93c2Vyc2NhbGUudjEuQ2xpY2tFcnJvckgAiAEBQggKBl9lcnJvciKeAgoMUmVhY3Rpb25JbmZvEhMKC3JlYWN0aW9uX2lkGAEgASgJEhsKDm1hdGNoX3NlbGVjdG9yGAIgASgJSACIAQESIAoTbWF0Y2hfanNfZXhwcmVzc2lvbhgDIAEoCUgBiAEBEhwKD2FjdGlvbl9zZWxlY3RvchgEIAEoCUgCiAEBEiEKFGFjdGlvbl9qc19leHByZXNzaW9uGAUgASgJSAOIAQESEAoIZnJhbWVfaWQYBiABKAkSDwoHdmlzaWJsZRgHIAEoCEIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CEgoQX2FjdGlvbl9zZWxlY3RvckIXChVfYWN0aW9uX2pzX2V4cHJlc3Npb24i1gMKEkFkZFJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIbCg5tYXRjaF9zZWxlY3RvchgEIAEoCUgAiAEBEiAKE21hdGNoX2pzX2V4cHJlc3Npb24YBSABKAlIAYgBARIVCghmcmFtZV9pZBgGIAEoCUgCiAEBEhQKB3Zpc2libGUYByABKAhIA4gBARIcCg9hY3Rpb25fc2VsZWN0b3IYCCABKAlIBIgBARIhChRhY3Rpb25fanNfZXhwcmVzc2lvbhgJIAEoCUgFiAEBEhMKBmJ1dHRvbhgKIAEoCUgGiAEBEhgKC2NsaWNrX2NvdW50GAsgASgFSAeIAQESFQoIaW50ZXJ2YWwYDCABKAFICIgBAUIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgoKCF92aXNpYmxlQhIKEF9hY3Rpb25fc2VsZWN0b3JCFwoVX2FjdGlvbl9qc19leHByZXNzaW9uQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgsKCV9pbnRlcnZhbCJ4ChNBZGRSZWFjdGlvblJlc3BvbnNlEhMKC3JlYWN0aW9uX2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIlEKFVJlbW92ZVJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoLcmVhY3Rpb25faWQYAyABKAkidwoWUmVtb3ZlUmVhY3Rpb25SZXNwb25zZRIPCgdyZW1vdmVkGAEgASgIEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIkwKFExpc3RSZWFjdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJIpcBChVMaXN0UmVhY3Rpb25zUmVzcG9uc2USMAoJcmVhY3Rpb25zGAEgAygLMh0uYnJvd3NlcnNjYWxlLnYxLlJlYWN0aW9uSW5mbxIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciLpAQoKRWxlbWVudFJlZhIXCg9iYWNrZW5kX25vZGVfaWQYASABKAUSEAoIdGFnX25hbWUYAiABKAkSDwoCaWQYAyABKAlIAIgBARIRCgRuYW1lGAQgASgJSAGIAQESFwoKY2xhc3NfbmFtZRgFIAEoCUgCiAEBEhcKCmlucHV0X3R5cGUYBiABKAlIA4gBARIRCgR0ZXh0GAcgASgJSASIAQESEAoIZWRpdGFibGUYCCABKAhCBQoDX2lkQgcKBV9uYW1lQg0KC19jbGFzc19uYW1lQg0KC19pbnB1dF90eXBlQgcKBV90ZXh0Iu4CCglGaWxsRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjUKC2NsaWNrX2Vycm9yGAMgASgLMhsuYnJvd3NlcnNjYWxlLnYxLkNsaWNrRXJyb3JIAIgBARIkChdmb2N1c2VkX2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgBiAEBEjkKD2ZvY3VzZWRfZWxlbWVudBgFIAEoCzIbLmJyb3dzZXJzY2FsZS52MS5FbGVtZW50UmVmSAKIAQESHAoPdGFyZ2V0X2VkaXRhYmxlGAYgASgISAOIAQESIAoTdGFyZ2V0X3ZhbHVlX2xlbmd0aBgHIAEoBUgEiAEBQg4KDF9jbGlja19lcnJvckIaChhfZm9jdXNlZF9iYWNrZW5kX25vZGVfaWRCEgoQX2ZvY3VzZWRfZWxlbWVudEISChBfdGFyZ2V0X2VkaXRhYmxlQhYKFF90YXJnZXRfdmFsdWVfbGVuZ3RoIqIBCgpGaWxsUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAESLgoFZXJyb3IYCCABKAsyGi5icm93c2Vyc2NhbGUudjEuRmlsbEVycm9ySACIAQFCCAoGX2Vycm9yIsIBCgpEcmFnUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEg8KB3N0YXJ0X3gYBCABKAESDwoHc3RhcnRfeRgFIAEoARINCgVlbmRfeBgGIAEoARINCgVlbmRfeRgHIAEoARIuCgVlcnJvchgIIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5EcmFnRXJyb3JIAIgBAUIICgZfZXJyb3IicQoJRHJhZ0Vycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRI1CgtjbGlja19lcnJvchgDIAEoCzIbLmJyb3dzZXJzY2FsZS52MS5DbGlja0Vycm9ySACIAQFCDgoMX2NsaWNrX2Vycm9yIq4BChJTZWxlY3RPcHRpb25SZXN1bHQSFgoOc2VsZWN0ZWRfaW5kZXgYASABKAUSFgoOc2VsZWN0ZWRfdmFsdWUYAiABKAkSFQoNc2VsZWN0ZWRfdGV4dBgDIAEoCRIPCgdzdWNjZXNzGAQgASgIEjYKBWVycm9yGAUgASgLMiIuYnJvd3NlcnNjYWxlLnYxLlNlbGVjdE9wdGlvbkVycm9ySACIAQFCCAoGX2Vycm9yIjIKEVNlbGVjdE9wdGlvbkVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLBAQoMU2Nyb2xsUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhIKCmlzX3Zpc2libGUYBCABKAgSJQoGYm91bmRzGAUgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSMAoFZXJyb3IYCCABKAsyHC5icm93c2Vyc2NhbGUudjEuU2Nyb2xsRXJyb3JIAIgBAUIICgZfZXJyb3IiLAoLU2Nyb2xsRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIt0BCgpNb3ZlUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhIKCmlzX3Zpc2libGUYBCABKAgSJQoGYm91bmRzGAUgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSDgoGcm9vdF94GAYgASgBEg4KBnJvb3RfeRgHIAEoARIuCgVlcnJvchgIIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5Nb3ZlRXJyb3JIAIgBAUIICgZfZXJyb3IiKgoJTW92ZUVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLmAQoPU2V0UHJveHlSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIXCgpwcm94eV9ob3N0GAMgASgJSACIAQESFwoKcHJveHlfcG9ydBgEIAEoBUgBiAEBEhsKDnByb3h5X3VzZXJuYW1lGAUgASgJSAKIAQESGwoOcHJveHlfcGFzc3dvcmQYBiABKAlIA4gBAUINCgtfcHJveHlfaG9zdEINCgtfcHJveHlfcG9ydEIRCg9fcHJveHlfdXNlcm5hbWVCEQoPX3Byb3h5X3Bhc3N3b3JkIjYKD0dldFBhZ2VzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkiigEKEEdldFBhZ2VzUmVzcG9uc2USKAoFcGFnZXMYASADKAsyGS5icm93c2Vyc2NhbGUudjEuUGFnZUluZm8SDwoHc3VjY2VzcxgCIAEoCBIxCgVlcnJvchgDIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IipAEKDFNlc3Npb25Vc2FnZRIRCgl3YWxsX3RpbWUYASABKAESEAoIY3B1X3RpbWUYAiABKAESEgoKbWluX21lbW9yeRgDIAEoARIWCg5hdmVyYWdlX21lbW9yeRgEIAEoARITCgtwZWFrX21lbW9yeRgFIAEoARIWCg5yZW5kZXJlcnNfdXNlZBgGIAEoBRIWCg5mcmFtZXNfY3JlYXRlZBgHIAEoBSI2Cg9HZXRVc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIo4BChBHZXRVc2FnZVJlc3BvbnNlEiwKBXVzYWdlGAEgASgLMh0uYnJvd3NlcnNjYWxlLnYxLlNlc3Npb25Vc2FnZRIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciKaAQoPTmF2aWdhdGVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA3VybBgEIAEoCRIVCghyZWZlcnJlchgFIAEoCUgAiAEBEhQKB3RpbWVvdXQYBiABKAFIAYgBAUILCglfcmVmZXJyZXJCCgoIX3RpbWVvdXQifwoQTmF2aWdhdGVSZXNwb25zZRIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSDwoHc3VjY2VzcxgDIAEoCBIxCgVlcnJvchgEIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IitgEKD0xvYWRIVE1MUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRILCgN1cmwYBCABKAkSDAoEaHRtbBgFIAEoCRIoCgdoZWFkZXJzGAYgAygLMhcuYnJvd3NlcnNjYWxlLnYxLkhlYWRlchIYCgtzdGF0dXNfY29kZRgHIAEoBUgAiAEBQg4KDF9zdGF0dXNfY29kZSJ/Cg9FdmFsdWF0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSEgoKZXhwcmVzc2lvbhgEIAEoCRIVCghmcmFtZV9pZBgFIAEoCUgAiAEBQgsKCV9mcmFtZV9pZCLEAQoQRXZhbHVhdGVSZXNwb25zZRIOCgZyZXN1bHQYASABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAIgASgFEhIKCmlzX3Zpc2libGUYAyABKAgSJQoGYm91bmRzGAQgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSDwoHc3VjY2VzcxgFIAEoCBIxCgVlcnJvchgGIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IiwgEKEFdhaXRGb3JBbnlQYXJhbXMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSMgoKY29uZGl0aW9ucxgEIAMoCzIeLmJyb3dzZXJzY2FsZS52MS5XYWl0Q29uZGl0aW9uEhUKCGZyYW1lX2lkGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9mcmFtZV9pZEIKCghfdGltZW91dCL1AgoTU2VsZWN0T3B0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhIKBWluZGV4GAggASgFSASIAQESEgoFdmFsdWUYCSABKAlIBYgBARIRCgR0ZXh0GAogASgJSAaIAQESGAoLZmlyZV9ldmVudHMYCyABKAhIB4gBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCCAoGX2luZGV4QggKBl92YWx1ZUIHCgVfdGV4dEIOCgxfZmlyZV9ldmVudHMi7wEKD1Njcm9sbFRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZCKZAgoNTW92ZVRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEg4KAXgYCCABKAFIBIgBARIOCgF5GAkgASgBSAWIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgQKAl94QgQKAl95IoIDCgxDbGlja1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARITCgZidXR0b24YCCABKAlIBIgBARIYCgtjbGlja19jb3VudBgJIAEoBUgFiAEBEg4KAXgYCiABKAFIBogBARIOCgF5GAsgASgBSAeIAQESEwoGYWN0aW9uGAwgASgJSAiIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgQKAl94QgQKAl95QgkKB19hY3Rpb24igwMKC0RyYWdSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESFQoIb2Zmc2V0X3gYCCABKAFIBIgBARIVCghvZmZzZXRfeRgJIAEoAUgFiAEBEhcKCmFic29sdXRlX3gYCiABKAFIBogBARIXCgphYnNvbHV0ZV95GAsgASgBSAeIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgsKCV9vZmZzZXRfeEILCglfb2Zmc2V0X3lCDQoLX2Fic29sdXRlX3hCDQoLX2Fic29sdXRlX3ki7wIKC0ZpbGxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESDAoEdGV4dBgIIAEoCRIYCgtjbGVhcl9maXJzdBgJIAEoCEgEiAEBEhQKB3RpbWVvdXQYCiABKAFIBYgBARIYCgtzdGVhZHlfdGltZRgLIAEoAUgGiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIOCgxfY2xlYXJfZmlyc3RCCgoIX3RpbWVvdXRCDgoMX3N0ZWFkeV90aW1lIkwKE1NldEJsb2NrTGlzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJImEKFVNldFN0YXRpY1BhdGhzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEQoJYmxvYl9uYW1lGAQgASgJIogBChhXYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhMKC2Fib3J0X2ZsYWdzGAQgAygFEhQKB3RpbWVvdXQYBSABKAFIAIgBAUIKCghfdGltZW91dCKuAQoZV2FpdEZvckFueVJlcXVlc3RSZXNwb25zZRINCgVpbmRleBgBIAEoBRI0CgdyZXF1ZXN0GAIgASgLMiMuYnJvd3NlcnNjYWxlLnYxLkludGVyY2VwdGVkUmVxdWVzdBIPCgdzdWNjZXNzGAMgASgIEjEKBWVycm9yGAQgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciKJAQoZV2FpdEZvckFueVJlc3BvbnNlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEwoLYWJvcnRfZmxhZ3MYBCADKAUSFAoHdGltZW91dBgFIAEoAUgAiAEBQgoKCF90aW1lb3V0IrEBChpXYWl0Rm9yQW55UmVzcG9uc2VSZXNwb25zZRINCgVpbmRleBgBIAEoBRI2CghyZXNwb25zZRgCIAEoCzIkLmJyb3dzZXJzY2FsZS52MS5JbnRlcmNlcHRlZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYAyABKAgSMQoFZXJyb3IYBCABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIsoBChRNb2RpZnlSZXF1ZXN0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoLdXJsX3BhdHRlcm4YAyABKAkSOgoNbW9kaWZpY2F0aW9ucxgEIAMoCzIjLmJyb3dzZXJzY2FsZS52MS5IZWFkZXJNb2RpZmljYXRpb24SEQoEYm9keRgFIAEoCUgAiAEBEhQKB3RpbWVvdXQYBiABKAFIAYgBAUIHCgVfYm9keUIKCghfdGltZW91dCKbAQoVTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEjQKB3JlcXVlc3QYASABKAsyIy5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXF1ZXN0Eg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIoYBChpTdGFydE5ldHdvcmtDYXB0dXJlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSDgoGYm9kaWVzGAQgASgJEhUKDWJvZHlfcGF0dGVybnMYBSADKAlKBAgGEAdKBAgHEAgiQAoZU3RvcE5ldHdvcmtDYXB0dXJlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkiewoaU3RvcE5ldHdvcmtDYXB0dXJlUmVzcG9uc2USDwoHc3RvcHBlZBgBIAEoCBIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciJECh1TdHJlYW1OZXR3b3JrRXhjaGFuZ2VzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkiWwoUTmV0d29ya0V4Y2hhbmdlRXZlbnQSMgoIZXhjaGFuZ2UYASABKAsyIC5icm93c2Vyc2NhbGUudjEuTmV0d29ya0V4Y2hhbmdlEg8KB2Ryb3BwZWQYAiABKAQitAUKD05ldHdvcmtFeGNoYW5nZRISCgpyZXF1ZXN0X2lkGAEgASgJEhAKCGNoYWluX2lkGAIgASgJEhYKDnJlZGlyZWN0X2luZGV4GAMgASgFEhAKCGZyYW1lX2lkGAQgASgJEhAKCGlzX29vcGlmGAUgASgIEhUKDXJlc291cmNlX3R5cGUYBiABKAkSDgoGbWV0aG9kGAcgASgJEgsKA3VybBgIIAEoCRIVCg1pbml0aWF0b3JfdXJsGAkgASgJEjAKD3JlcXVlc3RfaGVhZGVycxgKIAMoCzIXLmJyb3dzZXJzY2FsZS52MS5IZWFkZXISIAoYcmVxdWVzdF9oZWFkZXJzX2FyZV93aXJlGAsgASgIEhQKDHJlcXVlc3RfYm9keRgMIAEoDBIeChZyZXF1ZXN0X2JvZHlfdHJ1bmNhdGVkGA0gASgIEhQKDGhhc19yZXNwb25zZRgOIAEoCBITCgtzdGF0dXNfY29kZRgPIAEoBRITCgtzdGF0dXNfdGV4dBgQIAEoCRIRCgltaW1lX3R5cGUYESABKAkSEAoIcHJvdG9jb2wYEiABKAkSFgoOcmVtb3RlX2FkZHJlc3MYEyABKAkSEwoLc2VydmVkX2Zyb20YFCABKAkSMQoQcmVzcG9uc2VfaGVhZGVycxgVIAMoCzIXLmJyb3dzZXJzY2FsZS52MS5IZWFkZXISIQoZcmVzcG9uc2VfaGVhZGVyc19hcmVfd2lyZRgWIAEoCBIVCg1yZXNwb25zZV9ib2R5GBcgASgMEh8KF3Jlc3BvbnNlX2JvZHlfdHJ1bmNhdGVkGBggASgIEh4KFnJlc3BvbnNlX2JvZHlfY2FwdHVyZWQYGSABKAgSGwoTZW5jb2RlZF9kYXRhX2xlbmd0aBgaIAEoAxINCgVlcnJvchgbIAEoCSI4ChFHZXRDb29raWVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkikQEKEkdldENvb2tpZXNSZXNwb25zZRItCgdjb29raWVzGAEgAygLMhwuYnJvd3NlcnNjYWxlLnYxLkNvb2tpZVBhcmFtEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yImcKEVNldENvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRItCgdjb29raWVzGAMgAygLMhwuYnJvd3NlcnNjYWxlLnYxLkNvb2tpZVBhcmFtIjoKE0NsZWFyQ29va2llc1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIikKC1N0b3JhZ2VJdGVtEgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCSJRChJTdG9yYWdlT3JpZ2luRW50cnkSDgoGb3JpZ2luGAEgASgJEisKBWl0ZW1zGAIgAygLMhwuYnJvd3NlcnNjYWxlLnYxLlN0b3JhZ2VJdGVtIlgKEUdldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIpgBChJHZXRTdG9yYWdlUmVzcG9uc2USNAoHc3RvcmFnZRgBIAMoCzIjLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlT3JpZ2luRW50cnkSDwoHc3VjY2VzcxgCIAEoCBIxCgVlcnJvchgDIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IimAEKEVNldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRI0CgdzdG9yYWdlGAMgAygLMiMuYnJvd3NlcnNjYWxlLnYxLlN0b3JhZ2VPcmlnaW5FbnRyeRIYCgtjbGVhcl9maXJzdBgEIAEoCEgAiAEBQg4KDF9jbGVhcl9maXJzdCJaChNDbGVhclN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIiwKC0Ric2NTZXNzaW9uEgwKBHNpdGUYASABKAkSDwoHc2Vzc2lvbhgCIAEoCSLYAgoLQXV0aFNlc3Npb24SFAoHZ2FpYV9pZBgBIAEoCUgAiAEBEhIKBWVtYWlsGAIgASgJSAGIAQESGgoNcmVmcmVzaF90b2tlbhgDIAEoCUgCiAEBEiAKE3dyYXBwZWRfYmluZGluZ19rZXkYBCABKAlIA4gBARIkChdzaWduaW5fc2NvcGVkX2RldmljZV9pZBgFIAEoCUgEiAEBEhkKDHN5bmNfY29uc2VudBgGIAEoCEgFiAEBEjMKDWRic2Nfc2Vzc2lvbnMYByADKAsyHC5icm93c2Vyc2NhbGUudjEuRGJzY1Nlc3Npb25CCgoIX2dhaWFfaWRCCAoGX2VtYWlsQhAKDl9yZWZyZXNoX3Rva2VuQhYKFF93cmFwcGVkX2JpbmRpbmdfa2V5QhoKGF9zaWduaW5fc2NvcGVkX2RldmljZV9pZEIPCg1fc3luY19jb25zZW50IjwKFUdldEF1dGhTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkipgEKFkdldEF1dGhTZXNzaW9uUmVzcG9uc2USMgoHc2Vzc2lvbhgBIAEoCzIcLmJyb3dzZXJzY2FsZS52MS5BdXRoU2Vzc2lvbkgAiAEBEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySAGIAQFCCgoIX3Nlc3Npb25CCAoGX2Vycm9yImsKFVNldEF1dGhTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSLQoHc2Vzc2lvbhgDIAEoCzIcLmJyb3dzZXJzY2FsZS52MS5BdXRoU2Vzc2lvbiKHAQoNR2V0RE9NUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIVCghmcmFtZV9pZBgEIAEoCUgAiAEBEhIKBWRlcHRoGAUgASgFSAGIAQFCCwoJX2ZyYW1lX2lkQggKBl9kZXB0aCJrCg5HZXRET01SZXNwb25zZRILCgNkb20YASABKAkSDwoHc3VjY2VzcxgCIAEoCBIxCgVlcnJvchgDIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IimQQKFUdldE9ic2VydmF0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIjChZtYXhfZWxlbWVudHNfcGVyX2ZyYW1lGAQgASgFSACIAQESHAoPbWF4X3RleHRfbGVuZ3RoGAUgASgFSAGIAQESEwoGZm9ybWF0GAYgASgJSAKIAQESHQoQbWF4X3RvdGFsX3Rva2VucxgHIAEoBUgDiAEBEhsKDmluY2x1ZGVfYm91bmRzGAggASgISASIAQESGgoNdmlld3BvcnRfb25seRgJIAEoCEgFiAEBEhwKD2JhY2tlbmRfbm9kZV9pZBgKIAEoBUgGiAEBEhUKCHNlbGVjdG9yGAsgASgJSAeIAQESGgoNanNfZXhwcmVzc2lvbhgMIAEoCUgIiAEBEhUKCGZyYW1lX2lkGA0gASgJSAmIAQFCGQoXX21heF9lbGVtZW50c19wZXJfZnJhbWVCEgoQX21heF90ZXh0X2xlbmd0aEIJCgdfZm9ybWF0QhMKEV9tYXhfdG90YWxfdG9rZW5zQhEKD19pbmNsdWRlX2JvdW5kc0IQCg5fdmlld3BvcnRfb25seUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWQikwEKFkdldE9ic2VydmF0aW9uUmVzcG9uc2USEwoLb2JzZXJ2YXRpb24YASABKAkSDwoHc3VjY2VzcxgDIAEoCBIxCgVlcnJvchgEIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3JKBAgCEANSEG9ic2VydmF0aW9uX2pzb24ibQoRR2V0RE9NSGFzaFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSFQoIZnJhbWVfaWQYBCABKAlIAIgBAUILCglfZnJhbWVfaWQiIgoSR2V0RE9NSGFzaFJlc3BvbnNlEgwKBGhhc2gYASABKAkigAEKFVN0YXJ0RG9tTWlycm9yUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEgoFZGVwdGgYBCABKAVIAIgBARITCgZwaWVyY2UYBSABKAhIAYgBAUIICgZfZGVwdGhCCQoHX3BpZXJjZUoECAMQBCKZAQoWU3RhcnREb21NaXJyb3JSZXNwb25zZRIMCgRyb290GAEgASgJEhAKCGZyYW1lX2lkGAIgASgJEgsKA3NlcRgDIAEoBBIPCgdzdWNjZXNzGAUgASgIEjEKBWVycm9yGAYgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvckoECAQQBSJBChRTdG9wRG9tTWlycm9yUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAlKBAgDEAQilwEKFUdldERvbUNoaWxkcmVuUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhUKCGZyYW1lX2lkGAQgASgJSACIAQESEgoFZGVwdGgYBSABKAVIAYgBAUILCglfZnJhbWVfaWRCCAoGX2RlcHRoIoUBChZHZXREb21DaGlsZHJlblJlc3BvbnNlEhAKCGNoaWxkcmVuGAEgASgJEgsKA3NlcRgCIAEoBBIPCgdzdWNjZXNzGAMgASgIEjEKBWVycm9yGAQgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciJ8ChhSZWxlYXNlRG9tU3VidHJlZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRIVCghmcmFtZV9pZBgEIAEoCUgAiAEBQgsKCV9mcmFtZV9pZCJ4ChRSZXZlYWxEb21Ob2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhUKCGZyYW1lX2lkGAQgASgJSACIAQFCCwoJX2ZyYW1lX2lkIoABChVSZXZlYWxEb21Ob2RlUmVzcG9uc2USDAoEcGF0aBgBIAEoCRILCgNzZXEYAiABKAQSDwoHc3VjY2VzcxgDIAEoCBIxCgVlcnJvchgEIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IiYAoVR2V0RG9tUmV2aXNpb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIVCghmcmFtZV9pZBgDIAEoCUgAiAEBQgsKCV9mcmFtZV9pZCJ4ChZHZXREb21SZXZpc2lvblJlc3BvbnNlEhAKCHJldmlzaW9uGAEgASgEEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIj0KFlN0cmVhbURvbUV2ZW50c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIjkKCURvbVVwZGF0ZRIQCghmcmFtZV9pZBgBIAEoCRILCgNzZXEYAiABKAQSDQoFZWRpdHMYAyABKAkiIQoJRG9tUmVzeW5jEg4KBnJlYXNvbhgCIAEoCUoECAEQAiJ7CghEb21FdmVudBIsCgZ1cGRhdGUYASABKAsyGi5icm93c2Vyc2NhbGUudjEuRG9tVXBkYXRlSAASLAoGcmVzeW5jGAIgASgLMhouYnJvd3NlcnNjYWxlLnYxLkRvbVJlc3luY0gAQgcKBWV2ZW50SgQIAxAESgQIBBAFImYKGEluc3BlY3RBdFBvc2l0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIJCgF4GAQgASgBEgkKAXkYBSABKAEi9wEKGUluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEhQKDHRleHRfY29udGVudBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEiUKBmJvdW5kcxgGIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg8KB3N1Y2Nlc3MYByABKAgSMQoFZXJyb3IYCCABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIokBChRIaWdobGlnaHROb2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYBCABKAUSFQoIZnJhbWVfaWQYBSABKAlIAIgBAUILCglfZnJhbWVfaWQiVwoRSW5zZXJ0VGV4dFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSDAoEdGV4dBgEIAEoCSJ7CgtUeXBlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIMCgR0ZXh0GAQgASgJEhgKC2NsZWFyX2ZpcnN0GAUgASgISACIAQFCDgoMX2NsZWFyX2ZpcnN0IroBCg9QcmVzc0tleVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDa2V5GAQgASgJEhEKBGNvZGUYBSABKAlIAIgBARIWCgltb2RpZmllcnMYBiABKAVIAYgBARIVCghsb2NhdGlvbhgHIAEoBUgCiAEBQgcKBV9jb2RlQgwKCl9tb2RpZmllcnNCCwoJX2xvY2F0aW9uIrwBChFSZWxlYXNlS2V5UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRILCgNrZXkYBCABKAkSEQoEY29kZRgFIAEoCUgAiAEBEhYKCW1vZGlmaWVycxgGIAEoBUgBiAEBEhUKCGxvY2F0aW9uGAcgASgFSAKIAQFCBwoFX2NvZGVCDAoKX21vZGlmaWVyc0ILCglfbG9jYXRpb24iSwoTR2V0U2VsZWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCSJyChRHZXRTZWxlY3Rpb25SZXNwb25zZRIMCgR0ZXh0GAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIosBChFTY3JlZW5zaG90UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRITCgZmb3JtYXQYBCABKAlIAIgBARIUCgdxdWFsaXR5GAUgASgFSAGIAQFCCQoHX2Zvcm1hdEIKCghfcXVhbGl0eSKWAQoSU2NyZWVuc2hvdFJlc3BvbnNlEhMKC2RhdGFfYmFzZTY0GAEgASgJEg0KBXdpZHRoGAIgASgFEg4KBmhlaWdodBgDIAEoBRIPCgdzdWNjZXNzGAQgASgIEjEKBWVycm9yGAUgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciKTAwoRUmVhZENhbnZhc1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARITCgZmb3JtYXQYCCABKAlIBIgBARIUCgdxdWFsaXR5GAkgASgFSAWIAQESDwoCc3gYCiABKAVIBogBARIPCgJzeRgLIAEoBUgHiAEBEg8KAnN3GAwgASgFSAiIAQESDwoCc2gYDSABKAVICYgBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCCQoHX2Zvcm1hdEIKCghfcXVhbGl0eUIFCgNfc3hCBQoDX3N5QgUKA19zd0IFCgNfc2gi1wEKElJlYWRDYW52YXNSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRITCgtkYXRhX2Jhc2U2NBgEIAEoCRINCgV3aWR0aBgFIAEoBRIOCgZoZWlnaHQYBiABKAUSFAoMb3JpZ2luX2NsZWFuGAcgASgIEjEKBWVycm9yGAggASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciJkChNTb2x2ZUNhcHRjaGFSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRISCgp0aW1lb3V0X21zGAMgASgFEhQKDHJldHJ5X2Ftb3VudBgEIAEoBSImChRTb2x2ZUNhcHRjaGFSZXNwb25zZRIOCgZyZXN1bHQYASABKAkiZQoJSWNlU2VydmVyEgwKBHVybHMYASADKAkSFQoIdXNlcm5hbWUYAiABKAlIAIgBARIXCgpjcmVkZW50aWFsGAMgASgJSAGIAQFCCwoJX3VzZXJuYW1lQg0KC19jcmVkZW50aWFsIj0KFkdldFN0cmVhbUNvbmZpZ1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIkoKF0dldFN0cmVhbUNvbmZpZ1Jlc3BvbnNlEi8KC2ljZV9zZXJ2ZXJzGAEgAygLMhouYnJvd3NlcnNjYWxlLnYxLkljZVNlcnZlciJMChJTdGFydFN0cmVhbVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhEKCW9mZmVyX3NkcBgDIAEoCSKgAQoTU3RhcnRTdHJlYW1SZXNwb25zZRISCgphbnN3ZXJfc2RwGAEgASgJEicKCHZpZXdwb3J0GAIgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSDwoHc3VjY2VzcxgDIAEoCBIxCgVlcnJvchgEIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IiOAoRU3RvcFN0cmVhbVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIkMKDlNjcmlwdExvZ0VudHJ5Eg0KBWxldmVsGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEQoJdGltZXN0YW1wGAMgASgDIkcKEFJ1blNjcmlwdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg4KBnNvdXJjZRgDIAEoCSKFAQoRUnVuU2NyaXB0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIOCgZyZXN1bHQYAiABKAkSDgoGcnVuX2lkGAMgASgJEiwKA2xvZxgEIAMoCzIfLmJyb3dzZXJzY2FsZS52MS5TY3JpcHRMb2dFbnRyeRIRCgl0cnVuY2F0ZWQYBSABKAgiSQoSU3RhcnRTY3JpcHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIOCgZzb3VyY2UYAyABKAkiJQoTU3RhcnRTY3JpcHRSZXNwb25zZRIOCgZydW5faWQYASABKAkiSQoSU3RvcFNjcmlwdHNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIOCgZydW5faWQYAyABKAkiJgoTU3RvcFNjcmlwdHNSZXNwb25zZRIPCgdzdG9wcGVkGAEgASgFIi8KCVNjcmlwdFJ1bhIOCgZydW5faWQYASABKAkSEgoKcnVubmluZ19tcxgCIAEoAyI8ChVMaXN0U2NyaXB0UnVuc1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIkIKFkxpc3RTY3JpcHRSdW5zUmVzcG9uc2USKAoEcnVucxgBIAMoCzIaLmJyb3dzZXJzY2FsZS52MS5TY3JpcHRSdW4iUAoZU3RyZWFtU2NyaXB0RXZlbnRzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDgoGcnVuX2lkGAMgASgJIkoKCVNjcmlwdExvZxIOCgZydW5faWQYASABKAkSLQoEbGluZRgCIAEoCzIfLmJyb3dzZXJzY2FsZS52MS5TY3JpcHRMb2dFbnRyeSJSCg5TY3JpcHRGaW5pc2hlZBIOCgZydW5faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIOCgZyZXN1bHQYAyABKAkSDwoHc3RvcHBlZBgEIAEoCCKHAQoLU2NyaXB0RXZlbnQSKQoDbG9nGAEgASgLMhouYnJvd3NlcnNjYWxlLnYxLlNjcmlwdExvZ0gAEjMKCGZpbmlzaGVkGAIgASgLMh8uYnJvd3NlcnNjYWxlLnYxLlNjcmlwdEZpbmlzaGVkSAASDwoHZHJvcHBlZBgDIAEoBEIHCgVldmVudDLdKQoHQnJvd3NlchJMCghTZXRQcm94eRIgLmJyb3dzZXJzY2FsZS52MS5TZXRQcm94eVJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJPCghHZXRQYWdlcxIgLmJyb3dzZXJzY2FsZS52MS5HZXRQYWdlc1JlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuR2V0UGFnZXNSZXNwb25zZRJPCghHZXRVc2FnZRIgLmJyb3dzZXJzY2FsZS52MS5HZXRVc2FnZVJlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuR2V0VXNhZ2VSZXNwb25zZRJPCghOYXZpZ2F0ZRIgLmJyb3dzZXJzY2FsZS52MS5OYXZpZ2F0ZVJlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuTmF2aWdhdGVSZXNwb25zZRJMCghMb2FkSFRNTBIgLmJyb3dzZXJzY2FsZS52MS5Mb2FkSFRNTFJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJPCghFdmFsdWF0ZRIgLmJyb3dzZXJzY2FsZS52MS5FdmFsdWF0ZVJlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuRXZhbHVhdGVSZXNwb25zZRJMCgpXYWl0Rm9yQW55EiEuYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlQYXJhbXMaGy5icm93c2Vyc2NhbGUudjEuV2FpdFJlc3VsdBJZCgxTZWxlY3RPcHRpb24SJC5icm93c2Vyc2NhbGUudjEuU2VsZWN0T3B0aW9uUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TZWxlY3RPcHRpb25SZXN1bHQSSwoIU2Nyb2xsVG8SIC5icm93c2Vyc2NhbGUudjEuU2Nyb2xsVG9SZXF1ZXN0Gh0uYnJvd3NlcnNjYWxlLnYxLlNjcm9sbFJlc3VsdBJFCgZNb3ZlVG8SHi5icm93c2Vyc2NhbGUudjEuTW92ZVRvUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5Nb3ZlUmVzdWx0EkQKBUNsaWNrEh0uYnJvd3NlcnNjYWxlLnYxLkNsaWNrUmVxdWVzdBocLmJyb3dzZXJzY2FsZS52MS5DbGlja1Jlc3VsdBJBCgREcmFnEhwuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXF1ZXN0GhsuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXN1bHQSQQoERmlsbBIcLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVzdWx0ElgKC0FkZFJlYWN0aW9uEiMuYnJvd3NlcnNjYWxlLnYxLkFkZFJlYWN0aW9uUmVxdWVzdBokLmJyb3dzZXJzY2FsZS52MS5BZGRSZWFjdGlvblJlc3BvbnNlEmEKDlJlbW92ZVJlYWN0aW9uEiYuYnJvd3NlcnNjYWxlLnYxLlJlbW92ZVJlYWN0aW9uUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5SZW1vdmVSZWFjdGlvblJlc3BvbnNlEl4KDUxpc3RSZWFjdGlvbnMSJS5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1JlcXVlc3QaJi5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1Jlc3BvbnNlElQKDFNldEJsb2NrTGlzdBIkLmJyb3dzZXJzY2FsZS52MS5TZXRCbG9ja0xpc3RSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSWAoOU2V0U3RhdGljUGF0aHMSJi5icm93c2Vyc2NhbGUudjEuU2V0U3RhdGljUGF0aHNSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSagoRV2FpdEZvckFueVJlcXVlc3QSKS5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlcXVlc3RSZXF1ZXN0GiouYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlSZXF1ZXN0UmVzcG9uc2USbQoSV2FpdEZvckFueVJlc3BvbnNlEiouYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlSZXNwb25zZVJlcXVlc3QaKy5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlc3BvbnNlUmVzcG9uc2USXgoNTW9kaWZ5UmVxdWVzdBIlLmJyb3dzZXJzY2FsZS52MS5Nb2RpZnlSZXF1ZXN0UmVxdWVzdBomLmJyb3dzZXJzY2FsZS52MS5Nb2RpZnlSZXF1ZXN0UmVzcG9uc2USYgoTU3RhcnROZXR3b3JrQ2FwdHVyZRIrLmJyb3dzZXJzY2FsZS52MS5TdGFydE5ldHdvcmtDYXB0dXJlUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0Em0KElN0b3BOZXR3b3JrQ2FwdHVyZRIqLmJyb3dzZXJzY2FsZS52MS5TdG9wTmV0d29ya0NhcHR1cmVSZXF1ZXN0GisuYnJvd3NlcnNjYWxlLnYxLlN0b3BOZXR3b3JrQ2FwdHVyZVJlc3BvbnNlEnEKFlN0cmVhbU5ldHdvcmtFeGNoYW5nZXMSLi5icm93c2Vyc2NhbGUudjEuU3RyZWFtTmV0d29ya0V4Y2hhbmdlc1JlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuTmV0d29ya0V4Y2hhbmdlRXZlbnQwARJVCgpHZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXNwb25zZRJQCgpTZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLlNldENvb2tpZXNSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSVAoMQ2xlYXJDb29raWVzEiQuYnJvd3NlcnNjYWxlLnYxLkNsZWFyQ29va2llc1JlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJVCgpHZXRTdG9yYWdlEiIuYnJvd3NlcnNjYWxlLnYxLkdldFN0b3JhZ2VSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLkdldFN0b3JhZ2VSZXNwb25zZRJQCgpTZXRTdG9yYWdlEiIuYnJvd3NlcnNjYWxlLnYxLlNldFN0b3JhZ2VSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSVAoMQ2xlYXJTdG9yYWdlEiQuYnJvd3NlcnNjYWxlLnYxLkNsZWFyU3RvcmFnZVJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJhCg5HZXRBdXRoU2Vzc2lvbhImLmJyb3dzZXJzY2FsZS52MS5HZXRBdXRoU2Vzc2lvblJlcXVlc3QaJy5icm93c2Vyc2NhbGUudjEuR2V0QXV0aFNlc3Npb25SZXNwb25zZRJYCg5TZXRBdXRoU2Vzc2lvbhImLmJyb3dzZXJzY2FsZS52MS5TZXRBdXRoU2Vzc2lvblJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJJCgZHZXRET00SHi5icm93c2Vyc2NhbGUudjEuR2V0RE9NUmVxdWVzdBofLmJyb3dzZXJzY2FsZS52MS5HZXRET01SZXNwb25zZRJVCgpHZXRET01IYXNoEiIuYnJvd3NlcnNjYWxlLnYxLkdldERPTUhhc2hSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLkdldERPTUhhc2hSZXNwb25zZRJhCg5HZXRPYnNlcnZhdGlvbhImLmJyb3dzZXJzY2FsZS52MS5HZXRPYnNlcnZhdGlvblJlcXVlc3QaJy5icm93c2Vyc2NhbGUudjEuR2V0T2JzZXJ2YXRpb25SZXNwb25zZRJqChFJbnNwZWN0QXRQb3NpdGlvbhIpLmJyb3dzZXJzY2FsZS52MS5JbnNwZWN0QXRQb3NpdGlvblJlcXVlc3QaKi5icm93c2Vyc2NhbGUudjEuSW5zcGVjdEF0UG9zaXRpb25SZXNwb25zZRJWCg1IaWdobGlnaHROb2RlEiUuYnJvd3NlcnNjYWxlLnYxLkhpZ2hsaWdodE5vZGVSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSYQoOU3RhcnREb21NaXJyb3ISJi5icm93c2Vyc2NhbGUudjEuU3RhcnREb21NaXJyb3JSZXF1ZXN0GicuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0RG9tTWlycm9yUmVzcG9uc2USVgoNU3RvcERvbU1pcnJvchIlLmJyb3dzZXJzY2FsZS52MS5TdG9wRG9tTWlycm9yUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0EmEKDkdldERvbUNoaWxkcmVuEiYuYnJvd3NlcnNjYWxlLnYxLkdldERvbUNoaWxkcmVuUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5HZXREb21DaGlsZHJlblJlc3BvbnNlEl4KEVJlbGVhc2VEb21TdWJ0cmVlEikuYnJvd3NlcnNjYWxlLnYxLlJlbGVhc2VEb21TdWJ0cmVlUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0El4KDVJldmVhbERvbU5vZGUSJS5icm93c2Vyc2NhbGUudjEuUmV2ZWFsRG9tTm9kZVJlcXVlc3QaJi5icm93c2Vyc2NhbGUudjEuUmV2ZWFsRG9tTm9kZVJlc3BvbnNlEmEKDkdldERvbVJldmlzaW9uEiYuYnJvd3NlcnNjYWxlLnYxLkdldERvbVJldmlzaW9uUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5HZXREb21SZXZpc2lvblJlc3BvbnNlElcKD1N0cmVhbURvbUV2ZW50cxInLmJyb3dzZXJzY2FsZS52MS5TdHJlYW1Eb21FdmVudHNSZXF1ZXN0GhkuYnJvd3NlcnNjYWxlLnYxLkRvbUV2ZW50MAESVQoKU2NyZWVuc2hvdBIiLmJyb3dzZXJzY2FsZS52MS5TY3JlZW5zaG90UmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TY3JlZW5zaG90UmVzcG9uc2USVQoKUmVhZENhbnZhcxIiLmJyb3dzZXJzY2FsZS52MS5SZWFkQ2FudmFzUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5SZWFkQ2FudmFzUmVzcG9uc2USUAoKSW5zZXJ0VGV4dBIiLmJyb3dzZXJzY2FsZS52MS5JbnNlcnRUZXh0UmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0EkQKBFR5cGUSHC5icm93c2Vyc2NhbGUudjEuVHlwZVJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJMCghQcmVzc0tleRIgLmJyb3dzZXJzY2FsZS52MS5QcmVzc0tleVJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJQCgpSZWxlYXNlS2V5EiIuYnJvd3NlcnNjYWxlLnYxLlJlbGVhc2VLZXlSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSWwoMR2V0U2VsZWN0aW9uEiQuYnJvd3NlcnNjYWxlLnYxLkdldFNlbGVjdGlvblJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuR2V0U2VsZWN0aW9uUmVzcG9uc2USWwoMU29sdmVDYXB0Y2hhEiQuYnJvd3NlcnNjYWxlLnYxLlNvbHZlQ2FwdGNoYVJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuU29sdmVDYXB0Y2hhUmVzcG9uc2USZAoPR2V0U3RyZWFtQ29uZmlnEicuYnJvd3NlcnNjYWxlLnYxLkdldFN0cmVhbUNvbmZpZ1JlcXVlc3QaKC5icm93c2Vyc2NhbGUudjEuR2V0U3RyZWFtQ29uZmlnUmVzcG9uc2USWAoLU3RhcnRTdHJlYW0SIy5icm93c2Vyc2NhbGUudjEuU3RhcnRTdHJlYW1SZXF1ZXN0GiQuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0U3RyZWFtUmVzcG9uc2USUAoKU3RvcFN0cmVhbRIiLmJyb3dzZXJzY2FsZS52MS5TdG9wU3RyZWFtUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0ElIKCVJ1blNjcmlwdBIhLmJyb3dzZXJzY2FsZS52MS5SdW5TY3JpcHRSZXF1ZXN0GiIuYnJvd3NlcnNjYWxlLnYxLlJ1blNjcmlwdFJlc3BvbnNlElgKC1N0YXJ0U2NyaXB0EiMuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0U2NyaXB0UmVxdWVzdBokLmJyb3dzZXJzY2FsZS52MS5TdGFydFNjcmlwdFJlc3BvbnNlElgKC1N0b3BTY3JpcHRzEiMuYnJvd3NlcnNjYWxlLnYxLlN0b3BTY3JpcHRzUmVxdWVzdBokLmJyb3dzZXJzY2FsZS52MS5TdG9wU2NyaXB0c1Jlc3BvbnNlEmEKDkxpc3RTY3JpcHRSdW5zEiYuYnJvd3NlcnNjYWxlLnYxLkxpc3RTY3JpcHRSdW5zUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5MaXN0U2NyaXB0UnVuc1Jlc3BvbnNlEmAKElN0cmVhbVNjcmlwdEV2ZW50cxIqLmJyb3dzZXJzY2FsZS52MS5TdHJlYW1TY3JpcHRFdmVudHNSZXF1ZXN0GhwuYnJvd3NlcnNjYWxlLnYxLlNjcmlwdEV2ZW50MAFCM1oxZ2l0aHViLmNvbS9icm93c2Vyc2NhbGUvYnJvd3NlcnNjYWxlLWdvL2dlbmVyYXRlZGIGcHJvdG8z", [file_google_protobuf_empty]);
3802
+ var file_wrc = /* @__PURE__ */ fileDesc("Cgl3cmMucHJvdG8SD2Jyb3dzZXJzY2FsZS52MSI7CgRSZWN0EgkKAXgYASABKAESCQoBeRgCIAEoARINCgV3aWR0aBgDIAEoARIOCgZoZWlnaHQYBCABKAEihgIKCUZyYW1lSW5mbxIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSEAoIaXNfb29waWYYAyABKAgSFgoOaGFzX2pzX2NvbnRleHQYBCABKAgSEgoKaXNfbG9hZGluZxgFIAEoCBISCgppc192aXNpYmxlGAYgASgIEiwKDWFic29sdXRlX3JlY3QYByABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIsCg1yZWxhdGl2ZV9yZWN0GAggASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSLAoIY2hpbGRyZW4YCSADKAsyGi5icm93c2Vyc2NhbGUudjEuRnJhbWVJbmZvIqwBCghQYWdlSW5mbxIPCgdwYWdlX2lkGAEgASgJEhoKEmJyb3dzZXJfY29udGV4dF9pZBgCIAEoCRILCgN1cmwYAyABKAkSDQoFdGl0bGUYBCABKAkSJwoIdmlld3BvcnQYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIuCgpmcmFtZV90cmVlGAYgASgLMhouYnJvd3NlcnNjYWxlLnYxLkZyYW1lSW5mbyIlCgZIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSKAAQoSSW50ZXJjZXB0ZWRSZXF1ZXN0Eg4KBm1ldGhvZBgBIAEoCRILCgN1cmwYAiABKAkSKAoHaGVhZGVycxgDIAMoCzIXLmJyb3dzZXJzY2FsZS52MS5IZWFkZXISDAoEYm9keRgEIAEoCRIVCg1yZXNvdXJjZV90eXBlGAUgASgJIm8KE0ludGVyY2VwdGVkUmVzcG9uc2USCwoDdXJsGAEgASgJEhMKC3N0YXR1c19jb2RlGAIgASgFEigKB2hlYWRlcnMYAyADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEgwKBGJvZHkYBCABKAkijgEKEkhlYWRlck1vZGlmaWNhdGlvbhIMCgRuYW1lGAEgASgJEhIKBXZhbHVlGAIgASgJSACIAQESDgoGYWN0aW9uGAMgASgJEhMKBmJlZm9yZRgEIAEoCUgBiAEBEhIKBWFmdGVyGAUgASgJSAKIAQFCCAoGX3ZhbHVlQgkKB19iZWZvcmVCCAoGX2FmdGVyIk0KEkNvb2tpZVBhcnRpdGlvbktleRIWCg50b3BfbGV2ZWxfc2l0ZRgBIAEoCRIfChdoYXNfY3Jvc3Nfc2l0ZV9hbmNlc3RvchgCIAEoCCK/AwoLQ29va2llUGFyYW0SDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIOCgZkb21haW4YBCABKAkSDAoEcGF0aBgFIAEoCRITCgZzZWN1cmUYBiABKAhIAYgBARIWCglodHRwX29ubHkYByABKAhIAogBARIWCglzYW1lX3NpdGUYCCABKAlIA4gBARIUCgdleHBpcmVzGAkgASgBSASIAQESFQoIcHJpb3JpdHkYCiABKAlIBYgBARIaCg1zb3VyY2Vfc2NoZW1lGAsgASgJSAaIAQESGAoLc291cmNlX3BvcnQYDCABKAVIB4gBARI/Cg1wYXJ0aXRpb25fa2V5GA0gASgLMiMuYnJvd3NlcnNjYWxlLnYxLkNvb2tpZVBhcnRpdGlvbktleUgIiAEBQgYKBF91cmxCCQoHX3NlY3VyZUIMCgpfaHR0cF9vbmx5QgwKCl9zYW1lX3NpdGVCCgoIX2V4cGlyZXNCCwoJX3ByaW9yaXR5QhAKDl9zb3VyY2Vfc2NoZW1lQg4KDF9zb3VyY2VfcG9ydEIQCg5fcGFydGl0aW9uX2tleSKtAQoNV2FpdENvbmRpdGlvbhIVCghzZWxlY3RvchgBIAEoCUgAiAEBEhoKDWpzX2V4cHJlc3Npb24YAiABKAlIAYgBARIUCgd2aXNpYmxlGAMgASgISAKIAQESGAoLc3RlYWR5X3RpbWUYBCABKAFIA4gBAUILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCgoIX3Zpc2libGVCDgoMX3N0ZWFkeV90aW1lIswBCgpXYWl0UmVzdWx0Eg0KBWluZGV4GAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg8KB3N1Y2Nlc3MYByABKAgSLgoFZXJyb3IYBiABKAsyGi5icm93c2Vyc2NhbGUudjEuV2FpdEVycm9ySACIAQFCCAoGX2Vycm9yIuwBChNXYWl0Q29uZGl0aW9uU3RhdHVzEg0KBWluZGV4GAEgASgFEg0KBXN0YXRlGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRIQCghmcmFtZV9pZBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEioKBmJvdW5kcxgGIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0SACIAQESNAoIb2NjbHVkZXIYByABKAsyHS5icm93c2Vyc2NhbGUudjEuT2NjbHVkZXJJbmZvSAGIAQFCCQoHX2JvdW5kc0ILCglfb2NjbHVkZXIiZAoJV2FpdEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRI4Cgpjb25kaXRpb25zGAMgAygLMiQuYnJvd3NlcnNjYWxlLnYxLldhaXRDb25kaXRpb25TdGF0dXMipgEKDUVsZW1lbnRSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIlCgZib3VuZHMYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIOCgZyb290X3gYBiABKAESDgoGcm9vdF95GAcgASgBItIDCgxPY2NsdWRlckluZm8SFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEg8KAmlkGAQgASgJSACIAQESFwoKY2xhc3NfbmFtZRgFIAEoCUgBiAEBEhEKBHRleHQYBiABKAlIAogBARIlCgZib3VuZHMYByABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIbCg5wb2ludGVyX2V2ZW50cxgIIAEoCUgDiAEBEhcKCnZpc2liaWxpdHkYCSABKAlIBIgBARIUCgdvcGFjaXR5GAogASgBSAWIAQESFAoHel9pbmRleBgLIAEoCUgGiAEBEiUKGGhpdHRhYmxlX3doaWxlX2ludmlzaWJsZRgMIAEoCEgHiAEBEhUKCHBvc2l0aW9uGA0gASgJSAiIAQFCBQoDX2lkQg0KC19jbGFzc19uYW1lQgcKBV90ZXh0QhEKD19wb2ludGVyX2V2ZW50c0INCgtfdmlzaWJpbGl0eUIKCghfb3BhY2l0eUIKCghfel9pbmRleEIbChlfaGl0dGFibGVfd2hpbGVfaW52aXNpYmxlQgsKCV9wb3NpdGlvbiItCgxDb21tYW5kRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIl0KDUNvbW1hbmRSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIxCgVlcnJvchgCIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IioAEKCkNsaWNrRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjQKCG9jY2x1ZGVyGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLk9jY2x1ZGVySW5mb0gAiAEBEhwKD2V2YWRlX2F0dGVtcHRlZBgEIAEoCEgBiAEBQgsKCV9vY2NsdWRlckISChBfZXZhZGVfYXR0ZW1wdGVkIt8BCgtDbGlja1Jlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAESLwoFZXJyb3IYCCABKAsyGy5icm93c2Vyc2NhbGUudjEuQ2xpY2tFcnJvckgAiAEBQggKBl9lcnJvciKeAgoMUmVhY3Rpb25JbmZvEhMKC3JlYWN0aW9uX2lkGAEgASgJEhsKDm1hdGNoX3NlbGVjdG9yGAIgASgJSACIAQESIAoTbWF0Y2hfanNfZXhwcmVzc2lvbhgDIAEoCUgBiAEBEhwKD2FjdGlvbl9zZWxlY3RvchgEIAEoCUgCiAEBEiEKFGFjdGlvbl9qc19leHByZXNzaW9uGAUgASgJSAOIAQESEAoIZnJhbWVfaWQYBiABKAkSDwoHdmlzaWJsZRgHIAEoCEIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CEgoQX2FjdGlvbl9zZWxlY3RvckIXChVfYWN0aW9uX2pzX2V4cHJlc3Npb24i1gMKEkFkZFJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIbCg5tYXRjaF9zZWxlY3RvchgEIAEoCUgAiAEBEiAKE21hdGNoX2pzX2V4cHJlc3Npb24YBSABKAlIAYgBARIVCghmcmFtZV9pZBgGIAEoCUgCiAEBEhQKB3Zpc2libGUYByABKAhIA4gBARIcCg9hY3Rpb25fc2VsZWN0b3IYCCABKAlIBIgBARIhChRhY3Rpb25fanNfZXhwcmVzc2lvbhgJIAEoCUgFiAEBEhMKBmJ1dHRvbhgKIAEoCUgGiAEBEhgKC2NsaWNrX2NvdW50GAsgASgFSAeIAQESFQoIaW50ZXJ2YWwYDCABKAFICIgBAUIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgoKCF92aXNpYmxlQhIKEF9hY3Rpb25fc2VsZWN0b3JCFwoVX2FjdGlvbl9qc19leHByZXNzaW9uQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgsKCV9pbnRlcnZhbCJ4ChNBZGRSZWFjdGlvblJlc3BvbnNlEhMKC3JlYWN0aW9uX2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIlEKFVJlbW92ZVJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoLcmVhY3Rpb25faWQYAyABKAkidwoWUmVtb3ZlUmVhY3Rpb25SZXNwb25zZRIPCgdyZW1vdmVkGAEgASgIEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIkwKFExpc3RSZWFjdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJIpcBChVMaXN0UmVhY3Rpb25zUmVzcG9uc2USMAoJcmVhY3Rpb25zGAEgAygLMh0uYnJvd3NlcnNjYWxlLnYxLlJlYWN0aW9uSW5mbxIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciLpAQoKRWxlbWVudFJlZhIXCg9iYWNrZW5kX25vZGVfaWQYASABKAUSEAoIdGFnX25hbWUYAiABKAkSDwoCaWQYAyABKAlIAIgBARIRCgRuYW1lGAQgASgJSAGIAQESFwoKY2xhc3NfbmFtZRgFIAEoCUgCiAEBEhcKCmlucHV0X3R5cGUYBiABKAlIA4gBARIRCgR0ZXh0GAcgASgJSASIAQESEAoIZWRpdGFibGUYCCABKAhCBQoDX2lkQgcKBV9uYW1lQg0KC19jbGFzc19uYW1lQg0KC19pbnB1dF90eXBlQgcKBV90ZXh0Iu4CCglGaWxsRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjUKC2NsaWNrX2Vycm9yGAMgASgLMhsuYnJvd3NlcnNjYWxlLnYxLkNsaWNrRXJyb3JIAIgBARIkChdmb2N1c2VkX2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgBiAEBEjkKD2ZvY3VzZWRfZWxlbWVudBgFIAEoCzIbLmJyb3dzZXJzY2FsZS52MS5FbGVtZW50UmVmSAKIAQESHAoPdGFyZ2V0X2VkaXRhYmxlGAYgASgISAOIAQESIAoTdGFyZ2V0X3ZhbHVlX2xlbmd0aBgHIAEoBUgEiAEBQg4KDF9jbGlja19lcnJvckIaChhfZm9jdXNlZF9iYWNrZW5kX25vZGVfaWRCEgoQX2ZvY3VzZWRfZWxlbWVudEISChBfdGFyZ2V0X2VkaXRhYmxlQhYKFF90YXJnZXRfdmFsdWVfbGVuZ3RoIqIBCgpGaWxsUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAESLgoFZXJyb3IYCCABKAsyGi5icm93c2Vyc2NhbGUudjEuRmlsbEVycm9ySACIAQFCCAoGX2Vycm9yIsIBCgpEcmFnUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEg8KB3N0YXJ0X3gYBCABKAESDwoHc3RhcnRfeRgFIAEoARINCgVlbmRfeBgGIAEoARINCgVlbmRfeRgHIAEoARIuCgVlcnJvchgIIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5EcmFnRXJyb3JIAIgBAUIICgZfZXJyb3IicQoJRHJhZ0Vycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRI1CgtjbGlja19lcnJvchgDIAEoCzIbLmJyb3dzZXJzY2FsZS52MS5DbGlja0Vycm9ySACIAQFCDgoMX2NsaWNrX2Vycm9yIq4BChJTZWxlY3RPcHRpb25SZXN1bHQSFgoOc2VsZWN0ZWRfaW5kZXgYASABKAUSFgoOc2VsZWN0ZWRfdmFsdWUYAiABKAkSFQoNc2VsZWN0ZWRfdGV4dBgDIAEoCRIPCgdzdWNjZXNzGAQgASgIEjYKBWVycm9yGAUgASgLMiIuYnJvd3NlcnNjYWxlLnYxLlNlbGVjdE9wdGlvbkVycm9ySACIAQFCCAoGX2Vycm9yIjIKEVNlbGVjdE9wdGlvbkVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLBAQoMU2Nyb2xsUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhIKCmlzX3Zpc2libGUYBCABKAgSJQoGYm91bmRzGAUgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSMAoFZXJyb3IYCCABKAsyHC5icm93c2Vyc2NhbGUudjEuU2Nyb2xsRXJyb3JIAIgBAUIICgZfZXJyb3IiLAoLU2Nyb2xsRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIt0BCgpNb3ZlUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhIKCmlzX3Zpc2libGUYBCABKAgSJQoGYm91bmRzGAUgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSDgoGcm9vdF94GAYgASgBEg4KBnJvb3RfeRgHIAEoARIuCgVlcnJvchgIIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5Nb3ZlRXJyb3JIAIgBAUIICgZfZXJyb3IiKgoJTW92ZUVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLmAQoPU2V0UHJveHlSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIXCgpwcm94eV9ob3N0GAMgASgJSACIAQESFwoKcHJveHlfcG9ydBgEIAEoBUgBiAEBEhsKDnByb3h5X3VzZXJuYW1lGAUgASgJSAKIAQESGwoOcHJveHlfcGFzc3dvcmQYBiABKAlIA4gBAUINCgtfcHJveHlfaG9zdEINCgtfcHJveHlfcG9ydEIRCg9fcHJveHlfdXNlcm5hbWVCEQoPX3Byb3h5X3Bhc3N3b3JkIjYKD0dldFBhZ2VzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkiigEKEEdldFBhZ2VzUmVzcG9uc2USKAoFcGFnZXMYASADKAsyGS5icm93c2Vyc2NhbGUudjEuUGFnZUluZm8SDwoHc3VjY2VzcxgCIAEoCBIxCgVlcnJvchgDIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IipAEKDFNlc3Npb25Vc2FnZRIRCgl3YWxsX3RpbWUYASABKAESEAoIY3B1X3RpbWUYAiABKAESEgoKbWluX21lbW9yeRgDIAEoARIWCg5hdmVyYWdlX21lbW9yeRgEIAEoARITCgtwZWFrX21lbW9yeRgFIAEoARIWCg5yZW5kZXJlcnNfdXNlZBgGIAEoBRIWCg5mcmFtZXNfY3JlYXRlZBgHIAEoBSI2Cg9HZXRVc2FnZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIo4BChBHZXRVc2FnZVJlc3BvbnNlEiwKBXVzYWdlGAEgASgLMh0uYnJvd3NlcnNjYWxlLnYxLlNlc3Npb25Vc2FnZRIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciKaAQoPTmF2aWdhdGVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA3VybBgEIAEoCRIVCghyZWZlcnJlchgFIAEoCUgAiAEBEhQKB3RpbWVvdXQYBiABKAFIAYgBAUILCglfcmVmZXJyZXJCCgoIX3RpbWVvdXQifwoQTmF2aWdhdGVSZXNwb25zZRIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSDwoHc3VjY2VzcxgDIAEoCBIxCgVlcnJvchgEIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IitgEKD0xvYWRIVE1MUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRILCgN1cmwYBCABKAkSDAoEaHRtbBgFIAEoCRIoCgdoZWFkZXJzGAYgAygLMhcuYnJvd3NlcnNjYWxlLnYxLkhlYWRlchIYCgtzdGF0dXNfY29kZRgHIAEoBUgAiAEBQg4KDF9zdGF0dXNfY29kZSJ/Cg9FdmFsdWF0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSEgoKZXhwcmVzc2lvbhgEIAEoCRIVCghmcmFtZV9pZBgFIAEoCUgAiAEBQgsKCV9mcmFtZV9pZCLEAQoQRXZhbHVhdGVSZXNwb25zZRIOCgZyZXN1bHQYASABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAIgASgFEhIKCmlzX3Zpc2libGUYAyABKAgSJQoGYm91bmRzGAQgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSDwoHc3VjY2VzcxgFIAEoCBIxCgVlcnJvchgGIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IiwgEKEFdhaXRGb3JBbnlQYXJhbXMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSMgoKY29uZGl0aW9ucxgEIAMoCzIeLmJyb3dzZXJzY2FsZS52MS5XYWl0Q29uZGl0aW9uEhUKCGZyYW1lX2lkGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9mcmFtZV9pZEIKCghfdGltZW91dCL1AgoTU2VsZWN0T3B0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhIKBWluZGV4GAggASgFSASIAQESEgoFdmFsdWUYCSABKAlIBYgBARIRCgR0ZXh0GAogASgJSAaIAQESGAoLZmlyZV9ldmVudHMYCyABKAhIB4gBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCCAoGX2luZGV4QggKBl92YWx1ZUIHCgVfdGV4dEIOCgxfZmlyZV9ldmVudHMi7wEKD1Njcm9sbFRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZCKZAgoNTW92ZVRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEg4KAXgYCCABKAFIBIgBARIOCgF5GAkgASgBSAWIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgQKAl94QgQKAl95IoIDCgxDbGlja1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARITCgZidXR0b24YCCABKAlIBIgBARIYCgtjbGlja19jb3VudBgJIAEoBUgFiAEBEg4KAXgYCiABKAFIBogBARIOCgF5GAsgASgBSAeIAQESEwoGYWN0aW9uGAwgASgJSAiIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgQKAl94QgQKAl95QgkKB19hY3Rpb24igwMKC0RyYWdSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESFQoIb2Zmc2V0X3gYCCABKAFIBIgBARIVCghvZmZzZXRfeRgJIAEoAUgFiAEBEhcKCmFic29sdXRlX3gYCiABKAFIBogBARIXCgphYnNvbHV0ZV95GAsgASgBSAeIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgsKCV9vZmZzZXRfeEILCglfb2Zmc2V0X3lCDQoLX2Fic29sdXRlX3hCDQoLX2Fic29sdXRlX3ki7wIKC0ZpbGxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESDAoEdGV4dBgIIAEoCRIYCgtjbGVhcl9maXJzdBgJIAEoCEgEiAEBEhQKB3RpbWVvdXQYCiABKAFIBYgBARIYCgtzdGVhZHlfdGltZRgLIAEoAUgGiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIOCgxfY2xlYXJfZmlyc3RCCgoIX3RpbWVvdXRCDgoMX3N0ZWFkeV90aW1lIkwKE1NldEJsb2NrTGlzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJImEKFVNldFN0YXRpY1BhdGhzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEQoJYmxvYl9uYW1lGAQgASgJIogBChhXYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhMKC2Fib3J0X2ZsYWdzGAQgAygFEhQKB3RpbWVvdXQYBSABKAFIAIgBAUIKCghfdGltZW91dCKuAQoZV2FpdEZvckFueVJlcXVlc3RSZXNwb25zZRINCgVpbmRleBgBIAEoBRI0CgdyZXF1ZXN0GAIgASgLMiMuYnJvd3NlcnNjYWxlLnYxLkludGVyY2VwdGVkUmVxdWVzdBIPCgdzdWNjZXNzGAMgASgIEjEKBWVycm9yGAQgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciKJAQoZV2FpdEZvckFueVJlc3BvbnNlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEwoLYWJvcnRfZmxhZ3MYBCADKAUSFAoHdGltZW91dBgFIAEoAUgAiAEBQgoKCF90aW1lb3V0IrEBChpXYWl0Rm9yQW55UmVzcG9uc2VSZXNwb25zZRINCgVpbmRleBgBIAEoBRI2CghyZXNwb25zZRgCIAEoCzIkLmJyb3dzZXJzY2FsZS52MS5JbnRlcmNlcHRlZFJlc3BvbnNlEg8KB3N1Y2Nlc3MYAyABKAgSMQoFZXJyb3IYBCABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIsoBChRNb2RpZnlSZXF1ZXN0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoLdXJsX3BhdHRlcm4YAyABKAkSOgoNbW9kaWZpY2F0aW9ucxgEIAMoCzIjLmJyb3dzZXJzY2FsZS52MS5IZWFkZXJNb2RpZmljYXRpb24SEQoEYm9keRgFIAEoCUgAiAEBEhQKB3RpbWVvdXQYBiABKAFIAYgBAUIHCgVfYm9keUIKCghfdGltZW91dCKbAQoVTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEjQKB3JlcXVlc3QYASABKAsyIy5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXF1ZXN0Eg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIoYBChpTdGFydE5ldHdvcmtDYXB0dXJlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSDgoGYm9kaWVzGAQgASgJEhUKDWJvZHlfcGF0dGVybnMYBSADKAlKBAgGEAdKBAgHEAgiQAoZU3RvcE5ldHdvcmtDYXB0dXJlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkiewoaU3RvcE5ldHdvcmtDYXB0dXJlUmVzcG9uc2USDwoHc3RvcHBlZBgBIAEoCBIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciJECh1TdHJlYW1OZXR3b3JrRXhjaGFuZ2VzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkiWwoUTmV0d29ya0V4Y2hhbmdlRXZlbnQSMgoIZXhjaGFuZ2UYASABKAsyIC5icm93c2Vyc2NhbGUudjEuTmV0d29ya0V4Y2hhbmdlEg8KB2Ryb3BwZWQYAiABKAQimAYKD05ldHdvcmtFeGNoYW5nZRISCgpyZXF1ZXN0X2lkGAEgASgJEhAKCGNoYWluX2lkGAIgASgJEhYKDnJlZGlyZWN0X2luZGV4GAMgASgFEhAKCGZyYW1lX2lkGAQgASgJEhAKCGlzX29vcGlmGAUgASgIEhUKDXJlc291cmNlX3R5cGUYBiABKAkSDgoGbWV0aG9kGAcgASgJEgsKA3VybBgIIAEoCRIVCg1pbml0aWF0b3JfdXJsGAkgASgJEjAKD3JlcXVlc3RfaGVhZGVycxgKIAMoCzIXLmJyb3dzZXJzY2FsZS52MS5IZWFkZXISIAoYcmVxdWVzdF9oZWFkZXJzX2FyZV93aXJlGAsgASgIEhcKD3JlcXVlc3RfYm9keV9pZBgcIAEoCRIZChFyZXF1ZXN0X2JvZHlfc2l6ZRgdIAEoAxIeChZyZXF1ZXN0X2JvZHlfdHJ1bmNhdGVkGA0gASgIEhQKDGhhc19yZXNwb25zZRgOIAEoCBITCgtzdGF0dXNfY29kZRgPIAEoBRITCgtzdGF0dXNfdGV4dBgQIAEoCRIRCgltaW1lX3R5cGUYESABKAkSEAoIcHJvdG9jb2wYEiABKAkSFgoOcmVtb3RlX2FkZHJlc3MYEyABKAkSEwoLc2VydmVkX2Zyb20YFCABKAkSMQoQcmVzcG9uc2VfaGVhZGVycxgVIAMoCzIXLmJyb3dzZXJzY2FsZS52MS5IZWFkZXISIQoZcmVzcG9uc2VfaGVhZGVyc19hcmVfd2lyZRgWIAEoCBIYChByZXNwb25zZV9ib2R5X2lkGB4gASgJEhoKEnJlc3BvbnNlX2JvZHlfc2l6ZRgfIAEoAxIfChdyZXNwb25zZV9ib2R5X3RydW5jYXRlZBgYIAEoCBIbChNlbmNvZGVkX2RhdGFfbGVuZ3RoGBogASgDEg0KBWVycm9yGBsgASgJSgQIDBANSgQIFxAYSgQIGRAaUgxyZXF1ZXN0X2JvZHlSDXJlc3BvbnNlX2JvZHlSFnJlc3BvbnNlX2JvZHlfY2FwdHVyZWQijQEKFUdldE5ldHdvcmtCb2R5UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHYm9keV9pZBgDIAEoCRITCgZvZmZzZXQYBCABKANIAIgBARITCgZsZW5ndGgYBSABKANIAYgBAUIJCgdfb2Zmc2V0QgkKB19sZW5ndGgimwEKFkdldE5ldHdvcmtCb2R5UmVzcG9uc2USDAoEZGF0YRgBIAEoDBISCgp0b3RhbF9zaXplGAIgASgDEhEKCXRydW5jYXRlZBgDIAEoCBIPCgdzdWNjZXNzGAQgASgIEjEKBWVycm9yGAUgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciI4ChFHZXRDb29raWVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkikQEKEkdldENvb2tpZXNSZXNwb25zZRItCgdjb29raWVzGAEgAygLMhwuYnJvd3NlcnNjYWxlLnYxLkNvb2tpZVBhcmFtEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yImcKEVNldENvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRItCgdjb29raWVzGAMgAygLMhwuYnJvd3NlcnNjYWxlLnYxLkNvb2tpZVBhcmFtIjoKE0NsZWFyQ29va2llc1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIikKC1N0b3JhZ2VJdGVtEgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCSJRChJTdG9yYWdlT3JpZ2luRW50cnkSDgoGb3JpZ2luGAEgASgJEisKBWl0ZW1zGAIgAygLMhwuYnJvd3NlcnNjYWxlLnYxLlN0b3JhZ2VJdGVtIlgKEUdldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIpgBChJHZXRTdG9yYWdlUmVzcG9uc2USNAoHc3RvcmFnZRgBIAMoCzIjLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlT3JpZ2luRW50cnkSDwoHc3VjY2VzcxgCIAEoCBIxCgVlcnJvchgDIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IimAEKEVNldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRI0CgdzdG9yYWdlGAMgAygLMiMuYnJvd3NlcnNjYWxlLnYxLlN0b3JhZ2VPcmlnaW5FbnRyeRIYCgtjbGVhcl9maXJzdBgEIAEoCEgAiAEBQg4KDF9jbGVhcl9maXJzdCJaChNDbGVhclN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIiwKC0Ric2NTZXNzaW9uEgwKBHNpdGUYASABKAkSDwoHc2Vzc2lvbhgCIAEoCSLYAgoLQXV0aFNlc3Npb24SFAoHZ2FpYV9pZBgBIAEoCUgAiAEBEhIKBWVtYWlsGAIgASgJSAGIAQESGgoNcmVmcmVzaF90b2tlbhgDIAEoCUgCiAEBEiAKE3dyYXBwZWRfYmluZGluZ19rZXkYBCABKAlIA4gBARIkChdzaWduaW5fc2NvcGVkX2RldmljZV9pZBgFIAEoCUgEiAEBEhkKDHN5bmNfY29uc2VudBgGIAEoCEgFiAEBEjMKDWRic2Nfc2Vzc2lvbnMYByADKAsyHC5icm93c2Vyc2NhbGUudjEuRGJzY1Nlc3Npb25CCgoIX2dhaWFfaWRCCAoGX2VtYWlsQhAKDl9yZWZyZXNoX3Rva2VuQhYKFF93cmFwcGVkX2JpbmRpbmdfa2V5QhoKGF9zaWduaW5fc2NvcGVkX2RldmljZV9pZEIPCg1fc3luY19jb25zZW50IjwKFUdldEF1dGhTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkipgEKFkdldEF1dGhTZXNzaW9uUmVzcG9uc2USMgoHc2Vzc2lvbhgBIAEoCzIcLmJyb3dzZXJzY2FsZS52MS5BdXRoU2Vzc2lvbkgAiAEBEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySAGIAQFCCgoIX3Nlc3Npb25CCAoGX2Vycm9yImsKFVNldEF1dGhTZXNzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSLQoHc2Vzc2lvbhgDIAEoCzIcLmJyb3dzZXJzY2FsZS52MS5BdXRoU2Vzc2lvbiKHAQoNR2V0RE9NUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIVCghmcmFtZV9pZBgEIAEoCUgAiAEBEhIKBWRlcHRoGAUgASgFSAGIAQFCCwoJX2ZyYW1lX2lkQggKBl9kZXB0aCJrCg5HZXRET01SZXNwb25zZRILCgNkb20YASABKAkSDwoHc3VjY2VzcxgCIAEoCBIxCgVlcnJvchgDIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IimQQKFUdldE9ic2VydmF0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIjChZtYXhfZWxlbWVudHNfcGVyX2ZyYW1lGAQgASgFSACIAQESHAoPbWF4X3RleHRfbGVuZ3RoGAUgASgFSAGIAQESEwoGZm9ybWF0GAYgASgJSAKIAQESHQoQbWF4X3RvdGFsX3Rva2VucxgHIAEoBUgDiAEBEhsKDmluY2x1ZGVfYm91bmRzGAggASgISASIAQESGgoNdmlld3BvcnRfb25seRgJIAEoCEgFiAEBEhwKD2JhY2tlbmRfbm9kZV9pZBgKIAEoBUgGiAEBEhUKCHNlbGVjdG9yGAsgASgJSAeIAQESGgoNanNfZXhwcmVzc2lvbhgMIAEoCUgIiAEBEhUKCGZyYW1lX2lkGA0gASgJSAmIAQFCGQoXX21heF9lbGVtZW50c19wZXJfZnJhbWVCEgoQX21heF90ZXh0X2xlbmd0aEIJCgdfZm9ybWF0QhMKEV9tYXhfdG90YWxfdG9rZW5zQhEKD19pbmNsdWRlX2JvdW5kc0IQCg5fdmlld3BvcnRfb25seUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWQikwEKFkdldE9ic2VydmF0aW9uUmVzcG9uc2USEwoLb2JzZXJ2YXRpb24YASABKAkSDwoHc3VjY2VzcxgDIAEoCBIxCgVlcnJvchgEIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3JKBAgCEANSEG9ic2VydmF0aW9uX2pzb24ibQoRR2V0RE9NSGFzaFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSFQoIZnJhbWVfaWQYBCABKAlIAIgBAUILCglfZnJhbWVfaWQiIgoSR2V0RE9NSGFzaFJlc3BvbnNlEgwKBGhhc2gYASABKAkigAEKFVN0YXJ0RG9tTWlycm9yUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEgoFZGVwdGgYBCABKAVIAIgBARITCgZwaWVyY2UYBSABKAhIAYgBAUIICgZfZGVwdGhCCQoHX3BpZXJjZUoECAMQBCKZAQoWU3RhcnREb21NaXJyb3JSZXNwb25zZRIMCgRyb290GAEgASgJEhAKCGZyYW1lX2lkGAIgASgJEgsKA3NlcRgDIAEoBBIPCgdzdWNjZXNzGAUgASgIEjEKBWVycm9yGAYgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvckoECAQQBSJBChRTdG9wRG9tTWlycm9yUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAlKBAgDEAQilwEKFUdldERvbUNoaWxkcmVuUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhUKCGZyYW1lX2lkGAQgASgJSACIAQESEgoFZGVwdGgYBSABKAVIAYgBAUILCglfZnJhbWVfaWRCCAoGX2RlcHRoIoUBChZHZXREb21DaGlsZHJlblJlc3BvbnNlEhAKCGNoaWxkcmVuGAEgASgJEgsKA3NlcRgCIAEoBBIPCgdzdWNjZXNzGAMgASgIEjEKBWVycm9yGAQgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciJ8ChhSZWxlYXNlRG9tU3VidHJlZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRIVCghmcmFtZV9pZBgEIAEoCUgAiAEBQgsKCV9mcmFtZV9pZCJ4ChRSZXZlYWxEb21Ob2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhUKCGZyYW1lX2lkGAQgASgJSACIAQFCCwoJX2ZyYW1lX2lkIoABChVSZXZlYWxEb21Ob2RlUmVzcG9uc2USDAoEcGF0aBgBIAEoCRILCgNzZXEYAiABKAQSDwoHc3VjY2VzcxgDIAEoCBIxCgVlcnJvchgEIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IiYAoVR2V0RG9tUmV2aXNpb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIVCghmcmFtZV9pZBgDIAEoCUgAiAEBQgsKCV9mcmFtZV9pZCJ4ChZHZXREb21SZXZpc2lvblJlc3BvbnNlEhAKCHJldmlzaW9uGAEgASgEEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIj0KFlN0cmVhbURvbUV2ZW50c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIjkKCURvbVVwZGF0ZRIQCghmcmFtZV9pZBgBIAEoCRILCgNzZXEYAiABKAQSDQoFZWRpdHMYAyABKAkiIQoJRG9tUmVzeW5jEg4KBnJlYXNvbhgCIAEoCUoECAEQAiJ7CghEb21FdmVudBIsCgZ1cGRhdGUYASABKAsyGi5icm93c2Vyc2NhbGUudjEuRG9tVXBkYXRlSAASLAoGcmVzeW5jGAIgASgLMhouYnJvd3NlcnNjYWxlLnYxLkRvbVJlc3luY0gAQgcKBWV2ZW50SgQIAxAESgQIBBAFImYKGEluc3BlY3RBdFBvc2l0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIJCgF4GAQgASgBEgkKAXkYBSABKAEi9wEKGUluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEhQKDHRleHRfY29udGVudBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEiUKBmJvdW5kcxgGIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg8KB3N1Y2Nlc3MYByABKAgSMQoFZXJyb3IYCCABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIokBChRIaWdobGlnaHROb2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYBCABKAUSFQoIZnJhbWVfaWQYBSABKAlIAIgBAUILCglfZnJhbWVfaWQiVwoRSW5zZXJ0VGV4dFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSDAoEdGV4dBgEIAEoCSJ7CgtUeXBlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIMCgR0ZXh0GAQgASgJEhgKC2NsZWFyX2ZpcnN0GAUgASgISACIAQFCDgoMX2NsZWFyX2ZpcnN0IroBCg9QcmVzc0tleVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDa2V5GAQgASgJEhEKBGNvZGUYBSABKAlIAIgBARIWCgltb2RpZmllcnMYBiABKAVIAYgBARIVCghsb2NhdGlvbhgHIAEoBUgCiAEBQgcKBV9jb2RlQgwKCl9tb2RpZmllcnNCCwoJX2xvY2F0aW9uIrwBChFSZWxlYXNlS2V5UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRILCgNrZXkYBCABKAkSEQoEY29kZRgFIAEoCUgAiAEBEhYKCW1vZGlmaWVycxgGIAEoBUgBiAEBEhUKCGxvY2F0aW9uGAcgASgFSAKIAQFCBwoFX2NvZGVCDAoKX21vZGlmaWVyc0ILCglfbG9jYXRpb24iSwoTR2V0U2VsZWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCSJyChRHZXRTZWxlY3Rpb25SZXNwb25zZRIMCgR0ZXh0GAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIosBChFTY3JlZW5zaG90UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRITCgZmb3JtYXQYBCABKAlIAIgBARIUCgdxdWFsaXR5GAUgASgFSAGIAQFCCQoHX2Zvcm1hdEIKCghfcXVhbGl0eSKWAQoSU2NyZWVuc2hvdFJlc3BvbnNlEhMKC2RhdGFfYmFzZTY0GAEgASgJEg0KBXdpZHRoGAIgASgFEg4KBmhlaWdodBgDIAEoBRIPCgdzdWNjZXNzGAQgASgIEjEKBWVycm9yGAUgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciKTAwoRUmVhZENhbnZhc1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARITCgZmb3JtYXQYCCABKAlIBIgBARIUCgdxdWFsaXR5GAkgASgFSAWIAQESDwoCc3gYCiABKAVIBogBARIPCgJzeRgLIAEoBUgHiAEBEg8KAnN3GAwgASgFSAiIAQESDwoCc2gYDSABKAVICYgBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCCQoHX2Zvcm1hdEIKCghfcXVhbGl0eUIFCgNfc3hCBQoDX3N5QgUKA19zd0IFCgNfc2gi1wEKElJlYWRDYW52YXNSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRITCgtkYXRhX2Jhc2U2NBgEIAEoCRINCgV3aWR0aBgFIAEoBRIOCgZoZWlnaHQYBiABKAUSFAoMb3JpZ2luX2NsZWFuGAcgASgIEjEKBWVycm9yGAggASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciJkChNTb2x2ZUNhcHRjaGFSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRISCgp0aW1lb3V0X21zGAMgASgFEhQKDHJldHJ5X2Ftb3VudBgEIAEoBSImChRTb2x2ZUNhcHRjaGFSZXNwb25zZRIOCgZyZXN1bHQYASABKAkiZQoJSWNlU2VydmVyEgwKBHVybHMYASADKAkSFQoIdXNlcm5hbWUYAiABKAlIAIgBARIXCgpjcmVkZW50aWFsGAMgASgJSAGIAQFCCwoJX3VzZXJuYW1lQg0KC19jcmVkZW50aWFsIj0KFkdldFN0cmVhbUNvbmZpZ1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIkoKF0dldFN0cmVhbUNvbmZpZ1Jlc3BvbnNlEi8KC2ljZV9zZXJ2ZXJzGAEgAygLMhouYnJvd3NlcnNjYWxlLnYxLkljZVNlcnZlciJMChJTdGFydFN0cmVhbVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhEKCW9mZmVyX3NkcBgDIAEoCSKgAQoTU3RhcnRTdHJlYW1SZXNwb25zZRISCgphbnN3ZXJfc2RwGAEgASgJEicKCHZpZXdwb3J0GAIgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSDwoHc3VjY2VzcxgDIAEoCBIxCgVlcnJvchgEIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IiOAoRU3RvcFN0cmVhbVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIkMKDlNjcmlwdExvZ0VudHJ5Eg0KBWxldmVsGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSEQoJdGltZXN0YW1wGAMgASgDIkcKEFJ1blNjcmlwdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg4KBnNvdXJjZRgDIAEoCSKFAQoRUnVuU2NyaXB0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIOCgZyZXN1bHQYAiABKAkSDgoGcnVuX2lkGAMgASgJEiwKA2xvZxgEIAMoCzIfLmJyb3dzZXJzY2FsZS52MS5TY3JpcHRMb2dFbnRyeRIRCgl0cnVuY2F0ZWQYBSABKAgiSQoSU3RhcnRTY3JpcHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIOCgZzb3VyY2UYAyABKAkiJQoTU3RhcnRTY3JpcHRSZXNwb25zZRIOCgZydW5faWQYASABKAkiSQoSU3RvcFNjcmlwdHNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIOCgZydW5faWQYAyABKAkiJgoTU3RvcFNjcmlwdHNSZXNwb25zZRIPCgdzdG9wcGVkGAEgASgFIi8KCVNjcmlwdFJ1bhIOCgZydW5faWQYASABKAkSEgoKcnVubmluZ19tcxgCIAEoAyI8ChVMaXN0U2NyaXB0UnVuc1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIkIKFkxpc3RTY3JpcHRSdW5zUmVzcG9uc2USKAoEcnVucxgBIAMoCzIaLmJyb3dzZXJzY2FsZS52MS5TY3JpcHRSdW4iUAoZU3RyZWFtU2NyaXB0RXZlbnRzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDgoGcnVuX2lkGAMgASgJIkoKCVNjcmlwdExvZxIOCgZydW5faWQYASABKAkSLQoEbGluZRgCIAEoCzIfLmJyb3dzZXJzY2FsZS52MS5TY3JpcHRMb2dFbnRyeSJSCg5TY3JpcHRGaW5pc2hlZBIOCgZydW5faWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIOCgZyZXN1bHQYAyABKAkSDwoHc3RvcHBlZBgEIAEoCCKHAQoLU2NyaXB0RXZlbnQSKQoDbG9nGAEgASgLMhouYnJvd3NlcnNjYWxlLnYxLlNjcmlwdExvZ0gAEjMKCGZpbmlzaGVkGAIgASgLMh8uYnJvd3NlcnNjYWxlLnYxLlNjcmlwdEZpbmlzaGVkSAASDwoHZHJvcHBlZBgDIAEoBEIHCgVldmVudDLAKgoHQnJvd3NlchJMCghTZXRQcm94eRIgLmJyb3dzZXJzY2FsZS52MS5TZXRQcm94eVJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJPCghHZXRQYWdlcxIgLmJyb3dzZXJzY2FsZS52MS5HZXRQYWdlc1JlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuR2V0UGFnZXNSZXNwb25zZRJPCghHZXRVc2FnZRIgLmJyb3dzZXJzY2FsZS52MS5HZXRVc2FnZVJlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuR2V0VXNhZ2VSZXNwb25zZRJPCghOYXZpZ2F0ZRIgLmJyb3dzZXJzY2FsZS52MS5OYXZpZ2F0ZVJlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuTmF2aWdhdGVSZXNwb25zZRJMCghMb2FkSFRNTBIgLmJyb3dzZXJzY2FsZS52MS5Mb2FkSFRNTFJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJPCghFdmFsdWF0ZRIgLmJyb3dzZXJzY2FsZS52MS5FdmFsdWF0ZVJlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuRXZhbHVhdGVSZXNwb25zZRJMCgpXYWl0Rm9yQW55EiEuYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlQYXJhbXMaGy5icm93c2Vyc2NhbGUudjEuV2FpdFJlc3VsdBJZCgxTZWxlY3RPcHRpb24SJC5icm93c2Vyc2NhbGUudjEuU2VsZWN0T3B0aW9uUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TZWxlY3RPcHRpb25SZXN1bHQSSwoIU2Nyb2xsVG8SIC5icm93c2Vyc2NhbGUudjEuU2Nyb2xsVG9SZXF1ZXN0Gh0uYnJvd3NlcnNjYWxlLnYxLlNjcm9sbFJlc3VsdBJFCgZNb3ZlVG8SHi5icm93c2Vyc2NhbGUudjEuTW92ZVRvUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5Nb3ZlUmVzdWx0EkQKBUNsaWNrEh0uYnJvd3NlcnNjYWxlLnYxLkNsaWNrUmVxdWVzdBocLmJyb3dzZXJzY2FsZS52MS5DbGlja1Jlc3VsdBJBCgREcmFnEhwuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXF1ZXN0GhsuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXN1bHQSQQoERmlsbBIcLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVzdWx0ElgKC0FkZFJlYWN0aW9uEiMuYnJvd3NlcnNjYWxlLnYxLkFkZFJlYWN0aW9uUmVxdWVzdBokLmJyb3dzZXJzY2FsZS52MS5BZGRSZWFjdGlvblJlc3BvbnNlEmEKDlJlbW92ZVJlYWN0aW9uEiYuYnJvd3NlcnNjYWxlLnYxLlJlbW92ZVJlYWN0aW9uUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5SZW1vdmVSZWFjdGlvblJlc3BvbnNlEl4KDUxpc3RSZWFjdGlvbnMSJS5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1JlcXVlc3QaJi5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1Jlc3BvbnNlElQKDFNldEJsb2NrTGlzdBIkLmJyb3dzZXJzY2FsZS52MS5TZXRCbG9ja0xpc3RSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSWAoOU2V0U3RhdGljUGF0aHMSJi5icm93c2Vyc2NhbGUudjEuU2V0U3RhdGljUGF0aHNSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSagoRV2FpdEZvckFueVJlcXVlc3QSKS5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlcXVlc3RSZXF1ZXN0GiouYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlSZXF1ZXN0UmVzcG9uc2USbQoSV2FpdEZvckFueVJlc3BvbnNlEiouYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlSZXNwb25zZVJlcXVlc3QaKy5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlc3BvbnNlUmVzcG9uc2USXgoNTW9kaWZ5UmVxdWVzdBIlLmJyb3dzZXJzY2FsZS52MS5Nb2RpZnlSZXF1ZXN0UmVxdWVzdBomLmJyb3dzZXJzY2FsZS52MS5Nb2RpZnlSZXF1ZXN0UmVzcG9uc2USYgoTU3RhcnROZXR3b3JrQ2FwdHVyZRIrLmJyb3dzZXJzY2FsZS52MS5TdGFydE5ldHdvcmtDYXB0dXJlUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0Em0KElN0b3BOZXR3b3JrQ2FwdHVyZRIqLmJyb3dzZXJzY2FsZS52MS5TdG9wTmV0d29ya0NhcHR1cmVSZXF1ZXN0GisuYnJvd3NlcnNjYWxlLnYxLlN0b3BOZXR3b3JrQ2FwdHVyZVJlc3BvbnNlEnEKFlN0cmVhbU5ldHdvcmtFeGNoYW5nZXMSLi5icm93c2Vyc2NhbGUudjEuU3RyZWFtTmV0d29ya0V4Y2hhbmdlc1JlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuTmV0d29ya0V4Y2hhbmdlRXZlbnQwARJhCg5HZXROZXR3b3JrQm9keRImLmJyb3dzZXJzY2FsZS52MS5HZXROZXR3b3JrQm9keVJlcXVlc3QaJy5icm93c2Vyc2NhbGUudjEuR2V0TmV0d29ya0JvZHlSZXNwb25zZRJVCgpHZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXNwb25zZRJQCgpTZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLlNldENvb2tpZXNSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSVAoMQ2xlYXJDb29raWVzEiQuYnJvd3NlcnNjYWxlLnYxLkNsZWFyQ29va2llc1JlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJVCgpHZXRTdG9yYWdlEiIuYnJvd3NlcnNjYWxlLnYxLkdldFN0b3JhZ2VSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLkdldFN0b3JhZ2VSZXNwb25zZRJQCgpTZXRTdG9yYWdlEiIuYnJvd3NlcnNjYWxlLnYxLlNldFN0b3JhZ2VSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSVAoMQ2xlYXJTdG9yYWdlEiQuYnJvd3NlcnNjYWxlLnYxLkNsZWFyU3RvcmFnZVJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJhCg5HZXRBdXRoU2Vzc2lvbhImLmJyb3dzZXJzY2FsZS52MS5HZXRBdXRoU2Vzc2lvblJlcXVlc3QaJy5icm93c2Vyc2NhbGUudjEuR2V0QXV0aFNlc3Npb25SZXNwb25zZRJYCg5TZXRBdXRoU2Vzc2lvbhImLmJyb3dzZXJzY2FsZS52MS5TZXRBdXRoU2Vzc2lvblJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJJCgZHZXRET00SHi5icm93c2Vyc2NhbGUudjEuR2V0RE9NUmVxdWVzdBofLmJyb3dzZXJzY2FsZS52MS5HZXRET01SZXNwb25zZRJVCgpHZXRET01IYXNoEiIuYnJvd3NlcnNjYWxlLnYxLkdldERPTUhhc2hSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLkdldERPTUhhc2hSZXNwb25zZRJhCg5HZXRPYnNlcnZhdGlvbhImLmJyb3dzZXJzY2FsZS52MS5HZXRPYnNlcnZhdGlvblJlcXVlc3QaJy5icm93c2Vyc2NhbGUudjEuR2V0T2JzZXJ2YXRpb25SZXNwb25zZRJqChFJbnNwZWN0QXRQb3NpdGlvbhIpLmJyb3dzZXJzY2FsZS52MS5JbnNwZWN0QXRQb3NpdGlvblJlcXVlc3QaKi5icm93c2Vyc2NhbGUudjEuSW5zcGVjdEF0UG9zaXRpb25SZXNwb25zZRJWCg1IaWdobGlnaHROb2RlEiUuYnJvd3NlcnNjYWxlLnYxLkhpZ2hsaWdodE5vZGVSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSYQoOU3RhcnREb21NaXJyb3ISJi5icm93c2Vyc2NhbGUudjEuU3RhcnREb21NaXJyb3JSZXF1ZXN0GicuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0RG9tTWlycm9yUmVzcG9uc2USVgoNU3RvcERvbU1pcnJvchIlLmJyb3dzZXJzY2FsZS52MS5TdG9wRG9tTWlycm9yUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0EmEKDkdldERvbUNoaWxkcmVuEiYuYnJvd3NlcnNjYWxlLnYxLkdldERvbUNoaWxkcmVuUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5HZXREb21DaGlsZHJlblJlc3BvbnNlEl4KEVJlbGVhc2VEb21TdWJ0cmVlEikuYnJvd3NlcnNjYWxlLnYxLlJlbGVhc2VEb21TdWJ0cmVlUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0El4KDVJldmVhbERvbU5vZGUSJS5icm93c2Vyc2NhbGUudjEuUmV2ZWFsRG9tTm9kZVJlcXVlc3QaJi5icm93c2Vyc2NhbGUudjEuUmV2ZWFsRG9tTm9kZVJlc3BvbnNlEmEKDkdldERvbVJldmlzaW9uEiYuYnJvd3NlcnNjYWxlLnYxLkdldERvbVJldmlzaW9uUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5HZXREb21SZXZpc2lvblJlc3BvbnNlElcKD1N0cmVhbURvbUV2ZW50cxInLmJyb3dzZXJzY2FsZS52MS5TdHJlYW1Eb21FdmVudHNSZXF1ZXN0GhkuYnJvd3NlcnNjYWxlLnYxLkRvbUV2ZW50MAESVQoKU2NyZWVuc2hvdBIiLmJyb3dzZXJzY2FsZS52MS5TY3JlZW5zaG90UmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TY3JlZW5zaG90UmVzcG9uc2USVQoKUmVhZENhbnZhcxIiLmJyb3dzZXJzY2FsZS52MS5SZWFkQ2FudmFzUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5SZWFkQ2FudmFzUmVzcG9uc2USUAoKSW5zZXJ0VGV4dBIiLmJyb3dzZXJzY2FsZS52MS5JbnNlcnRUZXh0UmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0EkQKBFR5cGUSHC5icm93c2Vyc2NhbGUudjEuVHlwZVJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJMCghQcmVzc0tleRIgLmJyb3dzZXJzY2FsZS52MS5QcmVzc0tleVJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJQCgpSZWxlYXNlS2V5EiIuYnJvd3NlcnNjYWxlLnYxLlJlbGVhc2VLZXlSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSWwoMR2V0U2VsZWN0aW9uEiQuYnJvd3NlcnNjYWxlLnYxLkdldFNlbGVjdGlvblJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuR2V0U2VsZWN0aW9uUmVzcG9uc2USWwoMU29sdmVDYXB0Y2hhEiQuYnJvd3NlcnNjYWxlLnYxLlNvbHZlQ2FwdGNoYVJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuU29sdmVDYXB0Y2hhUmVzcG9uc2USZAoPR2V0U3RyZWFtQ29uZmlnEicuYnJvd3NlcnNjYWxlLnYxLkdldFN0cmVhbUNvbmZpZ1JlcXVlc3QaKC5icm93c2Vyc2NhbGUudjEuR2V0U3RyZWFtQ29uZmlnUmVzcG9uc2USWAoLU3RhcnRTdHJlYW0SIy5icm93c2Vyc2NhbGUudjEuU3RhcnRTdHJlYW1SZXF1ZXN0GiQuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0U3RyZWFtUmVzcG9uc2USUAoKU3RvcFN0cmVhbRIiLmJyb3dzZXJzY2FsZS52MS5TdG9wU3RyZWFtUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0ElIKCVJ1blNjcmlwdBIhLmJyb3dzZXJzY2FsZS52MS5SdW5TY3JpcHRSZXF1ZXN0GiIuYnJvd3NlcnNjYWxlLnYxLlJ1blNjcmlwdFJlc3BvbnNlElgKC1N0YXJ0U2NyaXB0EiMuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0U2NyaXB0UmVxdWVzdBokLmJyb3dzZXJzY2FsZS52MS5TdGFydFNjcmlwdFJlc3BvbnNlElgKC1N0b3BTY3JpcHRzEiMuYnJvd3NlcnNjYWxlLnYxLlN0b3BTY3JpcHRzUmVxdWVzdBokLmJyb3dzZXJzY2FsZS52MS5TdG9wU2NyaXB0c1Jlc3BvbnNlEmEKDkxpc3RTY3JpcHRSdW5zEiYuYnJvd3NlcnNjYWxlLnYxLkxpc3RTY3JpcHRSdW5zUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5MaXN0U2NyaXB0UnVuc1Jlc3BvbnNlEmAKElN0cmVhbVNjcmlwdEV2ZW50cxIqLmJyb3dzZXJzY2FsZS52MS5TdHJlYW1TY3JpcHRFdmVudHNSZXF1ZXN0GhwuYnJvd3NlcnNjYWxlLnYxLlNjcmlwdEV2ZW50MAFCM1oxZ2l0aHViLmNvbS9icm93c2Vyc2NhbGUvYnJvd3NlcnNjYWxlLWdvL2dlbmVyYXRlZGIGcHJvdG8z", [file_google_protobuf_empty]);
3803
3803
  var HeaderSchema = /* @__PURE__ */ messageDesc(file_wrc, 3);
3804
3804
  var HeaderModificationSchema = /* @__PURE__ */ messageDesc(file_wrc, 6);
3805
3805
  var CookiePartitionKeySchema = /* @__PURE__ */ messageDesc(file_wrc, 7);
@@ -3829,46 +3829,47 @@ var ModifyRequestRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 61);
3829
3829
  var StartNetworkCaptureRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 63);
3830
3830
  var StopNetworkCaptureRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 64);
3831
3831
  var StreamNetworkExchangesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 66);
3832
- var GetCookiesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 69);
3833
- var SetCookiesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 71);
3834
- var ClearCookiesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 72);
3835
- var StorageItemSchema = /* @__PURE__ */ messageDesc(file_wrc, 73);
3836
- var StorageOriginEntrySchema = /* @__PURE__ */ messageDesc(file_wrc, 74);
3837
- var GetStorageRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 75);
3838
- var SetStorageRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 77);
3839
- var ClearStorageRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 78);
3840
- var DbscSessionSchema = /* @__PURE__ */ messageDesc(file_wrc, 79);
3841
- var AuthSessionSchema = /* @__PURE__ */ messageDesc(file_wrc, 80);
3842
- var GetAuthSessionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 81);
3843
- var SetAuthSessionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 83);
3844
- var GetDOMRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 84);
3845
- var GetObservationRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 86);
3846
- var GetDOMHashRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 88);
3847
- var StartDomMirrorRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 90);
3848
- var StopDomMirrorRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 92);
3849
- var GetDomChildrenRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 93);
3850
- var ReleaseDomSubtreeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 95);
3851
- var RevealDomNodeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 96);
3852
- var GetDomRevisionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 98);
3853
- var StreamDomEventsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 100);
3854
- var InspectAtPositionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 104);
3855
- var HighlightNodeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 106);
3856
- var InsertTextRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 107);
3857
- var TypeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 108);
3858
- var PressKeyRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 109);
3859
- var ReleaseKeyRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 110);
3860
- var GetSelectionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 111);
3861
- var ScreenshotRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 113);
3862
- var ReadCanvasRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 115);
3863
- var SolveCaptchaRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 117);
3864
- var GetStreamConfigRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 120);
3865
- var StartStreamRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 122);
3866
- var StopStreamRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 124);
3867
- var RunScriptRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 126);
3868
- var StartScriptRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 128);
3869
- var StopScriptsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 130);
3870
- var ListScriptRunsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 133);
3871
- var StreamScriptEventsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 135);
3832
+ var GetNetworkBodyRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 69);
3833
+ var GetCookiesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 71);
3834
+ var SetCookiesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 73);
3835
+ var ClearCookiesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 74);
3836
+ var StorageItemSchema = /* @__PURE__ */ messageDesc(file_wrc, 75);
3837
+ var StorageOriginEntrySchema = /* @__PURE__ */ messageDesc(file_wrc, 76);
3838
+ var GetStorageRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 77);
3839
+ var SetStorageRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 79);
3840
+ var ClearStorageRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 80);
3841
+ var DbscSessionSchema = /* @__PURE__ */ messageDesc(file_wrc, 81);
3842
+ var AuthSessionSchema = /* @__PURE__ */ messageDesc(file_wrc, 82);
3843
+ var GetAuthSessionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 83);
3844
+ var SetAuthSessionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 85);
3845
+ var GetDOMRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 86);
3846
+ var GetObservationRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 88);
3847
+ var GetDOMHashRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 90);
3848
+ var StartDomMirrorRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 92);
3849
+ var StopDomMirrorRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 94);
3850
+ var GetDomChildrenRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 95);
3851
+ var ReleaseDomSubtreeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 97);
3852
+ var RevealDomNodeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 98);
3853
+ var GetDomRevisionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 100);
3854
+ var StreamDomEventsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 102);
3855
+ var InspectAtPositionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 106);
3856
+ var HighlightNodeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 108);
3857
+ var InsertTextRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 109);
3858
+ var TypeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 110);
3859
+ var PressKeyRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 111);
3860
+ var ReleaseKeyRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 112);
3861
+ var GetSelectionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 113);
3862
+ var ScreenshotRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 115);
3863
+ var ReadCanvasRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 117);
3864
+ var SolveCaptchaRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 119);
3865
+ var GetStreamConfigRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 122);
3866
+ var StartStreamRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 124);
3867
+ var StopStreamRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 126);
3868
+ var RunScriptRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 128);
3869
+ var StartScriptRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 130);
3870
+ var StopScriptsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 132);
3871
+ var ListScriptRunsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 135);
3872
+ var StreamScriptEventsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 137);
3872
3873
  var Browser = /* @__PURE__ */ serviceDesc(file_wrc, 0);
3873
3874
 
3874
3875
  // src/errors.ts
@@ -4347,7 +4348,8 @@ function networkExchangeFromProto(e) {
4347
4348
  initiatorUrl: e.initiatorUrl,
4348
4349
  requestHeaders: e.requestHeaders.map(headerFromProto),
4349
4350
  requestHeadersAreWire: e.requestHeadersAreWire,
4350
- requestBody: e.requestBody,
4351
+ requestBodyId: e.requestBodyId,
4352
+ requestBodySize: Number(e.requestBodySize),
4351
4353
  requestBodyTruncated: e.requestBodyTruncated,
4352
4354
  hasResponse: e.hasResponse,
4353
4355
  statusCode: e.statusCode,
@@ -4358,9 +4360,9 @@ function networkExchangeFromProto(e) {
4358
4360
  servedFrom: e.servedFrom,
4359
4361
  responseHeaders: e.responseHeaders.map(headerFromProto),
4360
4362
  responseHeadersAreWire: e.responseHeadersAreWire,
4361
- responseBody: e.responseBody,
4363
+ responseBodyId: e.responseBodyId,
4364
+ responseBodySize: Number(e.responseBodySize),
4362
4365
  responseBodyTruncated: e.responseBodyTruncated,
4363
- responseBodyCaptured: e.responseBodyCaptured,
4364
4366
  encodedDataLength: Number(e.encodedDataLength),
4365
4367
  error: e.error
4366
4368
  };
@@ -4541,8 +4543,8 @@ var NetworkCapture = class {
4541
4543
  }
4542
4544
  /**
4543
4545
  * How many exchanges the server discarded because this reader fell behind.
4544
- * Anything above zero means the log has holes: make the handler cheaper,
4545
- * narrow `patterns`, or stop capturing bodies.
4546
+ * Anything above zero means the log has holes: make the handler cheaper or
4547
+ * narrow `patterns`.
4546
4548
  */
4547
4549
  get dropped() {
4548
4550
  return this.droppedCount;
@@ -6538,6 +6540,91 @@ var CloudBrowser = class {
6538
6540
  throwCommandError("stopNetworkCapture", resp.error);
6539
6541
  return resp.stopped;
6540
6542
  }
6543
+ /**
6544
+ * Reads a whole captured body: an exchange's `requestBodyId` or
6545
+ * `responseBodyId`.
6546
+ *
6547
+ * Bodies are stored by the browser, not sent with the exchange, so reading
6548
+ * one is a separate call. They stay readable after the capture stops, until
6549
+ * the session ends.
6550
+ *
6551
+ * The body is fetched in ranges and assembled in memory. For very large
6552
+ * bodies, use {@link CloudBrowser.readNetworkBodyRange} to process them piece
6553
+ * by piece.
6554
+ *
6555
+ * @param bodyId - `requestBodyId` or `responseBodyId` from a NetworkExchange
6556
+ *
6557
+ * @returns the body and whether the kept body is shorter than the original
6558
+ *
6559
+ * @throws not_found - no body with this id was kept in this session
6560
+ * @throws evicted - the body was dropped to stay within the session's storage
6561
+ * quota; read bodies sooner, or narrow bodyPatterns
6562
+ * @throws unavailable - the body could not be stored or read back
6563
+ *
6564
+ * @example
6565
+ * const capture = await browser.captureNetwork(
6566
+ * { patterns: ["*\/api/*"], bodies: "text" },
6567
+ * (ex) => {
6568
+ * if (!ex.responseBodyId) return;
6569
+ * void browser.readNetworkBody(ex.responseBodyId).then(({ data }) =>
6570
+ * console.log(ex.url, new TextDecoder().decode(data)),
6571
+ * );
6572
+ * },
6573
+ * );
6574
+ */
6575
+ async readNetworkBody(bodyId) {
6576
+ const parts = [];
6577
+ let offset = 0;
6578
+ for (; ; ) {
6579
+ const r = await this.readNetworkBodyRange(bodyId, offset);
6580
+ parts.push(r.data);
6581
+ offset += r.data.length;
6582
+ if (r.data.length === 0 || offset >= r.totalSize) {
6583
+ if (parts.length === 1) return { data: r.data, truncated: r.truncated };
6584
+ const data = new Uint8Array(offset);
6585
+ let at2 = 0;
6586
+ for (const p of parts) {
6587
+ data.set(p, at2);
6588
+ at2 += p.length;
6589
+ }
6590
+ return { data, truncated: r.truncated };
6591
+ }
6592
+ }
6593
+ }
6594
+ /**
6595
+ * Reads up to `length` bytes of a captured body starting at `offset`.
6596
+ *
6597
+ * A single call returns at most 2 MiB; omit `length` to read that much. Loop
6598
+ * on `offset + data.length` until it reaches `totalSize` to stream a large
6599
+ * body.
6600
+ *
6601
+ * @param bodyId - `requestBodyId` or `responseBodyId` from a NetworkExchange
6602
+ * @param offset - first byte to read (default 0)
6603
+ * @param length - bytes to read (default and maximum 2 MiB)
6604
+ *
6605
+ * @returns NetworkBodyRange with the bytes and the body's total size
6606
+ *
6607
+ * @inheritDoc CloudBrowser.readNetworkBody
6608
+ */
6609
+ async readNetworkBodyRange(bodyId, offset, length) {
6610
+ if (!bodyId) {
6611
+ throw new BrowserScaleError("browserscale.readNetworkBody: bodyId must not be empty");
6612
+ }
6613
+ const req = create(GetNetworkBodyRequestSchema, {
6614
+ sessionId: this.sessionId,
6615
+ apiKey: this.apiKey,
6616
+ bodyId
6617
+ });
6618
+ if (offset && offset > 0) req.offset = BigInt(Math.floor(offset));
6619
+ if (length && length > 0) req.length = BigInt(Math.floor(length));
6620
+ const resp = await this.client.getNetworkBody(req);
6621
+ throwCommandError("getNetworkBody", resp.error);
6622
+ return {
6623
+ data: resp.data,
6624
+ totalSize: Number(resp.totalSize),
6625
+ truncated: resp.truncated
6626
+ };
6627
+ }
6541
6628
  /**
6542
6629
  * Subscribes to the session's capture without arming one, for reading a
6543
6630
  * capture that {@link CloudBrowser.startNetworkCapture} armed elsewhere.
package/dist/client.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import type { Transport } from "@connectrpc/connect";
2
2
  import type { Locator } from "./locator.ts";
3
- import type { DOMResult, DragResult, ElementResult, EvaluateResult, InterceptedRequest, InterceptedResponse, InspectResult, NavigateResult, NetworkCaptureOptions, PageInfo, ScreenshotResult, ReadCanvasResult, SelectOptionResult, SessionUsage, WaitResult, IceServer, StreamAnswer, ReactionInfo } from "./types.ts";
3
+ import type { DOMResult, DragResult, ElementResult, EvaluateResult, InterceptedRequest, InterceptedResponse, InspectResult, NavigateResult, NetworkBody, NetworkBodyRange, NetworkCaptureOptions, PageInfo, ScreenshotResult, ReadCanvasResult, SelectOptionResult, SessionUsage, WaitResult, IceServer, StreamAnswer, ReactionInfo } from "./types.ts";
4
4
  import type { ClickOpts, FillOpts, GetDOMOpts, GetObservationOpts, LoadHTMLOpts, NavigateOpts, ReactionOpts, ScreenshotOpts, ReadCanvasOpts, SelectOpts, WaitOpts } from "./options.ts";
5
5
  import type { HeaderModification, RequestPattern } from "./network.ts";
6
6
  import { NetworkCapture, type NetworkExchangeHandler } from "./network-capture.ts";
@@ -846,6 +846,55 @@ export declare class CloudBrowser {
846
846
  * is a no-op rather than a failure, so there are no error codes to branch on.
847
847
  */
848
848
  stopNetworkCapture(): Promise<boolean>;
849
+ /**
850
+ * Reads a whole captured body: an exchange's `requestBodyId` or
851
+ * `responseBodyId`.
852
+ *
853
+ * Bodies are stored by the browser, not sent with the exchange, so reading
854
+ * one is a separate call. They stay readable after the capture stops, until
855
+ * the session ends.
856
+ *
857
+ * The body is fetched in ranges and assembled in memory. For very large
858
+ * bodies, use {@link CloudBrowser.readNetworkBodyRange} to process them piece
859
+ * by piece.
860
+ *
861
+ * @param bodyId - `requestBodyId` or `responseBodyId` from a NetworkExchange
862
+ *
863
+ * @returns the body and whether the kept body is shorter than the original
864
+ *
865
+ * @throws not_found - no body with this id was kept in this session
866
+ * @throws evicted - the body was dropped to stay within the session's storage
867
+ * quota; read bodies sooner, or narrow bodyPatterns
868
+ * @throws unavailable - the body could not be stored or read back
869
+ *
870
+ * @example
871
+ * const capture = await browser.captureNetwork(
872
+ * { patterns: ["*\/api/*"], bodies: "text" },
873
+ * (ex) => {
874
+ * if (!ex.responseBodyId) return;
875
+ * void browser.readNetworkBody(ex.responseBodyId).then(({ data }) =>
876
+ * console.log(ex.url, new TextDecoder().decode(data)),
877
+ * );
878
+ * },
879
+ * );
880
+ */
881
+ readNetworkBody(bodyId: string): Promise<NetworkBody>;
882
+ /**
883
+ * Reads up to `length` bytes of a captured body starting at `offset`.
884
+ *
885
+ * A single call returns at most 2 MiB; omit `length` to read that much. Loop
886
+ * on `offset + data.length` until it reaches `totalSize` to stream a large
887
+ * body.
888
+ *
889
+ * @param bodyId - `requestBodyId` or `responseBodyId` from a NetworkExchange
890
+ * @param offset - first byte to read (default 0)
891
+ * @param length - bytes to read (default and maximum 2 MiB)
892
+ *
893
+ * @returns NetworkBodyRange with the bytes and the body's total size
894
+ *
895
+ * @inheritDoc CloudBrowser.readNetworkBody
896
+ */
897
+ readNetworkBodyRange(bodyId: string, offset?: number, length?: number): Promise<NetworkBodyRange>;
849
898
  /**
850
899
  * Subscribes to the session's capture without arming one, for reading a
851
900
  * capture that {@link CloudBrowser.startNetworkCapture} armed elsewhere.
package/dist/client.js CHANGED
@@ -2,7 +2,7 @@ import { createClient } from "@connectrpc/connect";
2
2
  import { create } from "@bufbuild/protobuf";
3
3
  import { Browser,
4
4
  // request / response schemas
5
- SetProxyRequestSchema, GetPagesRequestSchema, GetUsageRequestSchema, NavigateRequestSchema, LoadHTMLRequestSchema, EvaluateRequestSchema, WaitForAnyParamsSchema, WaitConditionSchema, ClickRequestSchema, FillRequestSchema, MoveToRequestSchema, ScrollToRequestSchema, DragRequestSchema, SelectOptionRequestSchema, GetDOMRequestSchema, GetDOMHashRequestSchema, GetObservationRequestSchema, ScreenshotRequestSchema, ReadCanvasRequestSchema, SetBlockListRequestSchema, SetStaticPathsRequestSchema, WaitForAnyRequestRequestSchema, WaitForAnyResponseRequestSchema, ModifyRequestRequestSchema, GetCookiesRequestSchema, SetCookiesRequestSchema, ClearCookiesRequestSchema, GetStorageRequestSchema, SetStorageRequestSchema, ClearStorageRequestSchema, GetAuthSessionRequestSchema, SetAuthSessionRequestSchema, InspectAtPositionRequestSchema, HighlightNodeRequestSchema, InsertTextRequestSchema, TypeRequestSchema, PressKeyRequestSchema, ReleaseKeyRequestSchema, GetSelectionRequestSchema, SolveCaptchaRequestSchema, GetStreamConfigRequestSchema, StartStreamRequestSchema, StopStreamRequestSchema, AddReactionRequestSchema, RemoveReactionRequestSchema, ListReactionsRequestSchema, StartNetworkCaptureRequestSchema, StopNetworkCaptureRequestSchema, StartDomMirrorRequestSchema, StopDomMirrorRequestSchema, GetDomChildrenRequestSchema, ReleaseDomSubtreeRequestSchema, RevealDomNodeRequestSchema, GetDomRevisionRequestSchema, StreamDomEventsRequestSchema, StreamNetworkExchangesRequestSchema, RunScriptRequestSchema, StartScriptRequestSchema, StopScriptsRequestSchema, ListScriptRunsRequestSchema, StreamScriptEventsRequestSchema, } from "./gen/wrc_pb.js";
5
+ SetProxyRequestSchema, GetPagesRequestSchema, GetUsageRequestSchema, NavigateRequestSchema, LoadHTMLRequestSchema, EvaluateRequestSchema, WaitForAnyParamsSchema, WaitConditionSchema, ClickRequestSchema, FillRequestSchema, MoveToRequestSchema, ScrollToRequestSchema, DragRequestSchema, SelectOptionRequestSchema, GetDOMRequestSchema, GetDOMHashRequestSchema, GetObservationRequestSchema, ScreenshotRequestSchema, ReadCanvasRequestSchema, SetBlockListRequestSchema, SetStaticPathsRequestSchema, WaitForAnyRequestRequestSchema, WaitForAnyResponseRequestSchema, ModifyRequestRequestSchema, GetCookiesRequestSchema, SetCookiesRequestSchema, ClearCookiesRequestSchema, GetStorageRequestSchema, SetStorageRequestSchema, ClearStorageRequestSchema, GetAuthSessionRequestSchema, SetAuthSessionRequestSchema, InspectAtPositionRequestSchema, HighlightNodeRequestSchema, InsertTextRequestSchema, TypeRequestSchema, PressKeyRequestSchema, ReleaseKeyRequestSchema, GetSelectionRequestSchema, SolveCaptchaRequestSchema, GetStreamConfigRequestSchema, StartStreamRequestSchema, StopStreamRequestSchema, AddReactionRequestSchema, RemoveReactionRequestSchema, ListReactionsRequestSchema, StartNetworkCaptureRequestSchema, StopNetworkCaptureRequestSchema, StartDomMirrorRequestSchema, StopDomMirrorRequestSchema, GetDomChildrenRequestSchema, ReleaseDomSubtreeRequestSchema, RevealDomNodeRequestSchema, GetDomRevisionRequestSchema, StreamDomEventsRequestSchema, StreamNetworkExchangesRequestSchema, GetNetworkBodyRequestSchema, RunScriptRequestSchema, StartScriptRequestSchema, StopScriptsRequestSchema, ListScriptRunsRequestSchema, StreamScriptEventsRequestSchema, } from "./gen/wrc_pb.js";
6
6
  import { BrowserScaleError, CommandError, throwCommandError } from "./errors.js";
7
7
  import { NetworkCapture } from "./network-capture.js";
8
8
  import { ScriptFollow, ScriptRun, scriptLogEntryFromProto, } from "./scripts.js";
@@ -1276,6 +1276,94 @@ export class CloudBrowser {
1276
1276
  throwCommandError("stopNetworkCapture", resp.error);
1277
1277
  return resp.stopped;
1278
1278
  }
1279
+ /**
1280
+ * Reads a whole captured body: an exchange's `requestBodyId` or
1281
+ * `responseBodyId`.
1282
+ *
1283
+ * Bodies are stored by the browser, not sent with the exchange, so reading
1284
+ * one is a separate call. They stay readable after the capture stops, until
1285
+ * the session ends.
1286
+ *
1287
+ * The body is fetched in ranges and assembled in memory. For very large
1288
+ * bodies, use {@link CloudBrowser.readNetworkBodyRange} to process them piece
1289
+ * by piece.
1290
+ *
1291
+ * @param bodyId - `requestBodyId` or `responseBodyId` from a NetworkExchange
1292
+ *
1293
+ * @returns the body and whether the kept body is shorter than the original
1294
+ *
1295
+ * @throws not_found - no body with this id was kept in this session
1296
+ * @throws evicted - the body was dropped to stay within the session's storage
1297
+ * quota; read bodies sooner, or narrow bodyPatterns
1298
+ * @throws unavailable - the body could not be stored or read back
1299
+ *
1300
+ * @example
1301
+ * const capture = await browser.captureNetwork(
1302
+ * { patterns: ["*\/api/*"], bodies: "text" },
1303
+ * (ex) => {
1304
+ * if (!ex.responseBodyId) return;
1305
+ * void browser.readNetworkBody(ex.responseBodyId).then(({ data }) =>
1306
+ * console.log(ex.url, new TextDecoder().decode(data)),
1307
+ * );
1308
+ * },
1309
+ * );
1310
+ */
1311
+ async readNetworkBody(bodyId) {
1312
+ const parts = [];
1313
+ let offset = 0;
1314
+ for (;;) {
1315
+ const r = await this.readNetworkBodyRange(bodyId, offset);
1316
+ parts.push(r.data);
1317
+ offset += r.data.length;
1318
+ if (r.data.length === 0 || offset >= r.totalSize) {
1319
+ if (parts.length === 1)
1320
+ return { data: r.data, truncated: r.truncated };
1321
+ const data = new Uint8Array(offset);
1322
+ let at = 0;
1323
+ for (const p of parts) {
1324
+ data.set(p, at);
1325
+ at += p.length;
1326
+ }
1327
+ return { data, truncated: r.truncated };
1328
+ }
1329
+ }
1330
+ }
1331
+ /**
1332
+ * Reads up to `length` bytes of a captured body starting at `offset`.
1333
+ *
1334
+ * A single call returns at most 2 MiB; omit `length` to read that much. Loop
1335
+ * on `offset + data.length` until it reaches `totalSize` to stream a large
1336
+ * body.
1337
+ *
1338
+ * @param bodyId - `requestBodyId` or `responseBodyId` from a NetworkExchange
1339
+ * @param offset - first byte to read (default 0)
1340
+ * @param length - bytes to read (default and maximum 2 MiB)
1341
+ *
1342
+ * @returns NetworkBodyRange with the bytes and the body's total size
1343
+ *
1344
+ * @inheritDoc CloudBrowser.readNetworkBody
1345
+ */
1346
+ async readNetworkBodyRange(bodyId, offset, length) {
1347
+ if (!bodyId) {
1348
+ throw new BrowserScaleError("browserscale.readNetworkBody: bodyId must not be empty");
1349
+ }
1350
+ const req = create(GetNetworkBodyRequestSchema, {
1351
+ sessionId: this.sessionId,
1352
+ apiKey: this.apiKey,
1353
+ bodyId,
1354
+ });
1355
+ if (offset && offset > 0)
1356
+ req.offset = BigInt(Math.floor(offset));
1357
+ if (length && length > 0)
1358
+ req.length = BigInt(Math.floor(length));
1359
+ const resp = await this.client.getNetworkBody(req);
1360
+ throwCommandError("getNetworkBody", resp.error);
1361
+ return {
1362
+ data: resp.data,
1363
+ totalSize: Number(resp.totalSize),
1364
+ truncated: resp.truncated,
1365
+ };
1366
+ }
1279
1367
  /**
1280
1368
  * Subscribes to the session's capture without arming one, for reading a
1281
1369
  * capture that {@link CloudBrowser.startNetworkCapture} armed elsewhere.