browserscale-ts 1.8.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,10 +212,12 @@ 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
- | `browser.stopBrowser()` | Release the rental. |
219
+ | `browser.getUsage()` | CPU time, memory (min / average / peak), renderers and frames the session has used so far. |
220
+ | `browser.stopBrowser()` | Release the rental; resolves with the session's final usage. |
218
221
 
219
222
  Locators: `css(...)`, `js(...)` (target by page logic when CSS can't). Plus
220
223
  cookies, storage, auth/DBSC (`getAuthSession`/`setAuthSession`), network
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, } 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/Cg1wYXJ0aXRpb25fa2V5GA0gASgLMiMuYnJvd3NlcnNjYWxlLnYxLkNvb2tpZVBhcnRpdGlvbktleUgIiAEBQgYKBF91cmxCCQoHX3NlY3VyZUIMCgpfaHR0cF9vbmx5QgwKCl9zYW1lX3NpdGVCCgoIX2V4cGlyZXNCCwoJX3ByaW9yaXR5QhAKDl9zb3VyY2Vfc2NoZW1lQg4KDF9zb3VyY2VfcG9ydEIQCg5fcGFydGl0aW9uX2tleSKtAQoNV2FpdENvbmRpdGlvbhIVCghzZWxlY3RvchgBIAEoCUgAiAEBEhoKDWpzX2V4cHJlc3Npb24YAiABKAlIAYgBARIUCgd2aXNpYmxlGAMgASgISAKIAQESGAoLc3RlYWR5X3RpbWUYBCABKAFIA4gBAUILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCgoIX3Zpc2libGVCDgoMX3N0ZWFkeV90aW1lIswBCgpXYWl0UmVzdWx0Eg0KBWluZGV4GAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg8KB3N1Y2Nlc3MYByABKAgSLgoFZXJyb3IYBiABKAsyGi5icm93c2Vyc2NhbGUudjEuV2FpdEVycm9ySACIAQFCCAoGX2Vycm9yIuwBChNXYWl0Q29uZGl0aW9uU3RhdHVzEg0KBWluZGV4GAEgASgFEg0KBXN0YXRlGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRIQCghmcmFtZV9pZBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEioKBmJvdW5kcxgGIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0SACIAQESNAoIb2NjbHVkZXIYByABKAsyHS5icm93c2Vyc2NhbGUudjEuT2NjbHVkZXJJbmZvSAGIAQFCCQoHX2JvdW5kc0ILCglfb2NjbHVkZXIiZAoJV2FpdEVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRI4Cgpjb25kaXRpb25zGAMgAygLMiQuYnJvd3NlcnNjYWxlLnYxLldhaXRDb25kaXRpb25TdGF0dXMipgEKDUVsZW1lbnRSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIlCgZib3VuZHMYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIOCgZyb290X3gYBiABKAESDgoGcm9vdF95GAcgASgBItIDCgxPY2NsdWRlckluZm8SFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEg8KAmlkGAQgASgJSACIAQESFwoKY2xhc3NfbmFtZRgFIAEoCUgBiAEBEhEKBHRleHQYBiABKAlIAogBARIlCgZib3VuZHMYByABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIbCg5wb2ludGVyX2V2ZW50cxgIIAEoCUgDiAEBEhcKCnZpc2liaWxpdHkYCSABKAlIBIgBARIUCgdvcGFjaXR5GAogASgBSAWIAQESFAoHel9pbmRleBgLIAEoCUgGiAEBEiUKGGhpdHRhYmxlX3doaWxlX2ludmlzaWJsZRgMIAEoCEgHiAEBEhUKCHBvc2l0aW9uGA0gASgJSAiIAQFCBQoDX2lkQg0KC19jbGFzc19uYW1lQgcKBV90ZXh0QhEKD19wb2ludGVyX2V2ZW50c0INCgtfdmlzaWJpbGl0eUIKCghfb3BhY2l0eUIKCghfel9pbmRleEIbChlfaGl0dGFibGVfd2hpbGVfaW52aXNpYmxlQgsKCV9wb3NpdGlvbiItCgxDb21tYW5kRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIl0KDUNvbW1hbmRSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIxCgVlcnJvchgCIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IioAEKCkNsaWNrRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjQKCG9jY2x1ZGVyGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLk9jY2x1ZGVySW5mb0gAiAEBEhwKD2V2YWRlX2F0dGVtcHRlZBgEIAEoCEgBiAEBQgsKCV9vY2NsdWRlckISChBfZXZhZGVfYXR0ZW1wdGVkIt8BCgtDbGlja1Jlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAESLwoFZXJyb3IYCCABKAsyGy5icm93c2Vyc2NhbGUudjEuQ2xpY2tFcnJvckgAiAEBQggKBl9lcnJvciKeAgoMUmVhY3Rpb25JbmZvEhMKC3JlYWN0aW9uX2lkGAEgASgJEhsKDm1hdGNoX3NlbGVjdG9yGAIgASgJSACIAQESIAoTbWF0Y2hfanNfZXhwcmVzc2lvbhgDIAEoCUgBiAEBEhwKD2FjdGlvbl9zZWxlY3RvchgEIAEoCUgCiAEBEiEKFGFjdGlvbl9qc19leHByZXNzaW9uGAUgASgJSAOIAQESEAoIZnJhbWVfaWQYBiABKAkSDwoHdmlzaWJsZRgHIAEoCEIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CEgoQX2FjdGlvbl9zZWxlY3RvckIXChVfYWN0aW9uX2pzX2V4cHJlc3Npb24i1gMKEkFkZFJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIbCg5tYXRjaF9zZWxlY3RvchgEIAEoCUgAiAEBEiAKE21hdGNoX2pzX2V4cHJlc3Npb24YBSABKAlIAYgBARIVCghmcmFtZV9pZBgGIAEoCUgCiAEBEhQKB3Zpc2libGUYByABKAhIA4gBARIcCg9hY3Rpb25fc2VsZWN0b3IYCCABKAlIBIgBARIhChRhY3Rpb25fanNfZXhwcmVzc2lvbhgJIAEoCUgFiAEBEhMKBmJ1dHRvbhgKIAEoCUgGiAEBEhgKC2NsaWNrX2NvdW50GAsgASgFSAeIAQESFQoIaW50ZXJ2YWwYDCABKAFICIgBAUIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgoKCF92aXNpYmxlQhIKEF9hY3Rpb25fc2VsZWN0b3JCFwoVX2FjdGlvbl9qc19leHByZXNzaW9uQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgsKCV9pbnRlcnZhbCJ4ChNBZGRSZWFjdGlvblJlc3BvbnNlEhMKC3JlYWN0aW9uX2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIlEKFVJlbW92ZVJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoLcmVhY3Rpb25faWQYAyABKAkidwoWUmVtb3ZlUmVhY3Rpb25SZXNwb25zZRIPCgdyZW1vdmVkGAEgASgIEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIkwKFExpc3RSZWFjdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJIpcBChVMaXN0UmVhY3Rpb25zUmVzcG9uc2USMAoJcmVhY3Rpb25zGAEgAygLMh0uYnJvd3NlcnNjYWxlLnYxLlJlYWN0aW9uSW5mbxIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciLpAQoKRWxlbWVudFJlZhIXCg9iYWNrZW5kX25vZGVfaWQYASABKAUSEAoIdGFnX25hbWUYAiABKAkSDwoCaWQYAyABKAlIAIgBARIRCgRuYW1lGAQgASgJSAGIAQESFwoKY2xhc3NfbmFtZRgFIAEoCUgCiAEBEhcKCmlucHV0X3R5cGUYBiABKAlIA4gBARIRCgR0ZXh0GAcgASgJSASIAQESEAoIZWRpdGFibGUYCCABKAhCBQoDX2lkQgcKBV9uYW1lQg0KC19jbGFzc19uYW1lQg0KC19pbnB1dF90eXBlQgcKBV90ZXh0Iu4CCglGaWxsRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjUKC2NsaWNrX2Vycm9yGAMgASgLMhsuYnJvd3NlcnNjYWxlLnYxLkNsaWNrRXJyb3JIAIgBARIkChdmb2N1c2VkX2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgBiAEBEjkKD2ZvY3VzZWRfZWxlbWVudBgFIAEoCzIbLmJyb3dzZXJzY2FsZS52MS5FbGVtZW50UmVmSAKIAQESHAoPdGFyZ2V0X2VkaXRhYmxlGAYgASgISAOIAQESIAoTdGFyZ2V0X3ZhbHVlX2xlbmd0aBgHIAEoBUgEiAEBQg4KDF9jbGlja19lcnJvckIaChhfZm9jdXNlZF9iYWNrZW5kX25vZGVfaWRCEgoQX2ZvY3VzZWRfZWxlbWVudEISChBfdGFyZ2V0X2VkaXRhYmxlQhYKFF90YXJnZXRfdmFsdWVfbGVuZ3RoIqIBCgpGaWxsUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAESLgoFZXJyb3IYCCABKAsyGi5icm93c2Vyc2NhbGUudjEuRmlsbEVycm9ySACIAQFCCAoGX2Vycm9yIsIBCgpEcmFnUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEg8KB3N0YXJ0X3gYBCABKAESDwoHc3RhcnRfeRgFIAEoARINCgVlbmRfeBgGIAEoARINCgVlbmRfeRgHIAEoARIuCgVlcnJvchgIIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5EcmFnRXJyb3JIAIgBAUIICgZfZXJyb3IicQoJRHJhZ0Vycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCRI1CgtjbGlja19lcnJvchgDIAEoCzIbLmJyb3dzZXJzY2FsZS52MS5DbGlja0Vycm9ySACIAQFCDgoMX2NsaWNrX2Vycm9yIq4BChJTZWxlY3RPcHRpb25SZXN1bHQSFgoOc2VsZWN0ZWRfaW5kZXgYASABKAUSFgoOc2VsZWN0ZWRfdmFsdWUYAiABKAkSFQoNc2VsZWN0ZWRfdGV4dBgDIAEoCRIPCgdzdWNjZXNzGAQgASgIEjYKBWVycm9yGAUgASgLMiIuYnJvd3NlcnNjYWxlLnYxLlNlbGVjdE9wdGlvbkVycm9ySACIAQFCCAoGX2Vycm9yIjIKEVNlbGVjdE9wdGlvbkVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLBAQoMU2Nyb2xsUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhIKCmlzX3Zpc2libGUYBCABKAgSJQoGYm91bmRzGAUgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSMAoFZXJyb3IYCCABKAsyHC5icm93c2Vyc2NhbGUudjEuU2Nyb2xsRXJyb3JIAIgBAUIICgZfZXJyb3IiLAoLU2Nyb2xsRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIt0BCgpNb3ZlUmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhIKCmlzX3Zpc2libGUYBCABKAgSJQoGYm91bmRzGAUgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSDgoGcm9vdF94GAYgASgBEg4KBnJvb3RfeRgHIAEoARIuCgVlcnJvchgIIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5Nb3ZlRXJyb3JIAIgBAUIICgZfZXJyb3IiKgoJTW92ZUVycm9yEgwKBGNvZGUYASABKAkSDwoHbWVzc2FnZRgCIAEoCSLmAQoPU2V0UHJveHlSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIXCgpwcm94eV9ob3N0GAMgASgJSACIAQESFwoKcHJveHlfcG9ydBgEIAEoBUgBiAEBEhsKDnByb3h5X3VzZXJuYW1lGAUgASgJSAKIAQESGwoOcHJveHlfcGFzc3dvcmQYBiABKAlIA4gBAUINCgtfcHJveHlfaG9zdEINCgtfcHJveHlfcG9ydEIRCg9fcHJveHlfdXNlcm5hbWVCEQoPX3Byb3h5X3Bhc3N3b3JkIjYKD0dldFBhZ2VzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkiigEKEEdldFBhZ2VzUmVzcG9uc2USKAoFcGFnZXMYASADKAsyGS5icm93c2Vyc2NhbGUudjEuUGFnZUluZm8SDwoHc3VjY2VzcxgCIAEoCBIxCgVlcnJvchgDIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IimgEKD05hdmlnYXRlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRILCgN1cmwYBCABKAkSFQoIcmVmZXJyZXIYBSABKAlIAIgBARIUCgd0aW1lb3V0GAYgASgBSAGIAQFCCwoJX3JlZmVycmVyQgoKCF90aW1lb3V0In8KEE5hdmlnYXRlUmVzcG9uc2USEAoIZnJhbWVfaWQYASABKAkSCwoDdXJsGAIgASgJEg8KB3N1Y2Nlc3MYAyABKAgSMQoFZXJyb3IYBCABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIrYBCg9Mb2FkSFRNTFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDdXJsGAQgASgJEgwKBGh0bWwYBSABKAkSKAoHaGVhZGVycxgGIAMoCzIXLmJyb3dzZXJzY2FsZS52MS5IZWFkZXISGAoLc3RhdHVzX2NvZGUYByABKAVIAIgBAUIOCgxfc3RhdHVzX2NvZGUifwoPRXZhbHVhdGVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhIKCmV4cHJlc3Npb24YBCABKAkSFQoIZnJhbWVfaWQYBSABKAlIAIgBAUILCglfZnJhbWVfaWQixAEKEEV2YWx1YXRlUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgCIAEoBRISCgppc192aXNpYmxlGAMgASgIEiUKBmJvdW5kcxgEIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg8KB3N1Y2Nlc3MYBSABKAgSMQoFZXJyb3IYBiABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIsIBChBXYWl0Rm9yQW55UGFyYW1zEhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEjIKCmNvbmRpdGlvbnMYBCADKAsyHi5icm93c2Vyc2NhbGUudjEuV2FpdENvbmRpdGlvbhIVCghmcmFtZV9pZBgFIAEoCUgAiAEBEhQKB3RpbWVvdXQYBiABKAFIAYgBAUILCglfZnJhbWVfaWRCCgoIX3RpbWVvdXQi9QIKE1NlbGVjdE9wdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARISCgVpbmRleBgIIAEoBUgEiAEBEhIKBXZhbHVlGAkgASgJSAWIAQESEQoEdGV4dBgKIAEoCUgGiAEBEhgKC2ZpcmVfZXZlbnRzGAsgASgISAeIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQggKBl9pbmRleEIICgZfdmFsdWVCBwoFX3RleHRCDgoMX2ZpcmVfZXZlbnRzIu8BCg9TY3JvbGxUb1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWQimQIKDU1vdmVUb1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARIOCgF4GAggASgBSASIAQESDgoBeRgJIAEoAUgFiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIECgJfeEIECgJfeSKCAwoMQ2xpY2tSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESEwoGYnV0dG9uGAggASgJSASIAQESGAoLY2xpY2tfY291bnQYCSABKAVIBYgBARIOCgF4GAogASgBSAaIAQESDgoBeRgLIAEoAUgHiAEBEhMKBmFjdGlvbhgMIAEoCUgIiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIJCgdfYnV0dG9uQg4KDF9jbGlja19jb3VudEIECgJfeEIECgJfeUIJCgdfYWN0aW9uIoMDCgtEcmFnUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhUKCG9mZnNldF94GAggASgBSASIAQESFQoIb2Zmc2V0X3kYCSABKAFIBYgBARIXCgphYnNvbHV0ZV94GAogASgBSAaIAQESFwoKYWJzb2x1dGVfeRgLIAEoAUgHiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEILCglfb2Zmc2V0X3hCCwoJX29mZnNldF95Qg0KC19hYnNvbHV0ZV94Qg0KC19hYnNvbHV0ZV95Iu8CCgtGaWxsUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEgwKBHRleHQYCCABKAkSGAoLY2xlYXJfZmlyc3QYCSABKAhIBIgBARIUCgd0aW1lb3V0GAogASgBSAWIAQESGAoLc3RlYWR5X3RpbWUYCyABKAFIBogBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCDgoMX2NsZWFyX2ZpcnN0QgoKCF90aW1lb3V0Qg4KDF9zdGVhZHlfdGltZSJMChNTZXRCbG9ja0xpc3RSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIQCghwYXR0ZXJucxgDIAMoCSJhChVTZXRTdGF0aWNQYXRoc1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhEKCWJsb2JfbmFtZRgEIAEoCSKIAQoYV2FpdEZvckFueVJlcXVlc3RSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIQCghwYXR0ZXJucxgDIAMoCRITCgthYm9ydF9mbGFncxgEIAMoBRIUCgd0aW1lb3V0GAUgASgBSACIAQFCCgoIX3RpbWVvdXQirgEKGVdhaXRGb3JBbnlSZXF1ZXN0UmVzcG9uc2USDQoFaW5kZXgYASABKAUSNAoHcmVxdWVzdBgCIAEoCzIjLmJyb3dzZXJzY2FsZS52MS5JbnRlcmNlcHRlZFJlcXVlc3QSDwoHc3VjY2VzcxgDIAEoCBIxCgVlcnJvchgEIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IiiQEKGVdhaXRGb3JBbnlSZXNwb25zZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhMKC2Fib3J0X2ZsYWdzGAQgAygFEhQKB3RpbWVvdXQYBSABKAFIAIgBAUIKCghfdGltZW91dCKxAQoaV2FpdEZvckFueVJlc3BvbnNlUmVzcG9uc2USDQoFaW5kZXgYASABKAUSNgoIcmVzcG9uc2UYAiABKAsyJC5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXNwb25zZRIPCgdzdWNjZXNzGAMgASgIEjEKBWVycm9yGAQgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciLKAQoUTW9kaWZ5UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhMKC3VybF9wYXR0ZXJuGAMgASgJEjoKDW1vZGlmaWNhdGlvbnMYBCADKAsyIy5icm93c2Vyc2NhbGUudjEuSGVhZGVyTW9kaWZpY2F0aW9uEhEKBGJvZHkYBSABKAlIAIgBARIUCgd0aW1lb3V0GAYgASgBSAGIAQFCBwoFX2JvZHlCCgoIX3RpbWVvdXQimwEKFU1vZGlmeVJlcXVlc3RSZXNwb25zZRI0CgdyZXF1ZXN0GAEgASgLMiMuYnJvd3NlcnNjYWxlLnYxLkludGVyY2VwdGVkUmVxdWVzdBIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciKGAQoaU3RhcnROZXR3b3JrQ2FwdHVyZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEg4KBmJvZGllcxgEIAEoCRIVCg1ib2R5X3BhdHRlcm5zGAUgAygJSgQIBhAHSgQIBxAIIkAKGVN0b3BOZXR3b3JrQ2FwdHVyZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJInsKGlN0b3BOZXR3b3JrQ2FwdHVyZVJlc3BvbnNlEg8KB3N0b3BwZWQYASABKAgSDwoHc3VjY2VzcxgCIAEoCBIxCgVlcnJvchgDIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IiRAodU3RyZWFtTmV0d29ya0V4Y2hhbmdlc1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIlsKFE5ldHdvcmtFeGNoYW5nZUV2ZW50EjIKCGV4Y2hhbmdlGAEgASgLMiAuYnJvd3NlcnNjYWxlLnYxLk5ldHdvcmtFeGNoYW5nZRIPCgdkcm9wcGVkGAIgASgEIrQFCg9OZXR3b3JrRXhjaGFuZ2USEgoKcmVxdWVzdF9pZBgBIAEoCRIQCghjaGFpbl9pZBgCIAEoCRIWCg5yZWRpcmVjdF9pbmRleBgDIAEoBRIQCghmcmFtZV9pZBgEIAEoCRIQCghpc19vb3BpZhgFIAEoCBIVCg1yZXNvdXJjZV90eXBlGAYgASgJEg4KBm1ldGhvZBgHIAEoCRILCgN1cmwYCCABKAkSFQoNaW5pdGlhdG9yX3VybBgJIAEoCRIwCg9yZXF1ZXN0X2hlYWRlcnMYCiADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEiAKGHJlcXVlc3RfaGVhZGVyc19hcmVfd2lyZRgLIAEoCBIUCgxyZXF1ZXN0X2JvZHkYDCABKAwSHgoWcmVxdWVzdF9ib2R5X3RydW5jYXRlZBgNIAEoCBIUCgxoYXNfcmVzcG9uc2UYDiABKAgSEwoLc3RhdHVzX2NvZGUYDyABKAUSEwoLc3RhdHVzX3RleHQYECABKAkSEQoJbWltZV90eXBlGBEgASgJEhAKCHByb3RvY29sGBIgASgJEhYKDnJlbW90ZV9hZGRyZXNzGBMgASgJEhMKC3NlcnZlZF9mcm9tGBQgASgJEjEKEHJlc3BvbnNlX2hlYWRlcnMYFSADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEiEKGXJlc3BvbnNlX2hlYWRlcnNfYXJlX3dpcmUYFiABKAgSFQoNcmVzcG9uc2VfYm9keRgXIAEoDBIfChdyZXNwb25zZV9ib2R5X3RydW5jYXRlZBgYIAEoCBIeChZyZXNwb25zZV9ib2R5X2NhcHR1cmVkGBkgASgIEhsKE2VuY29kZWRfZGF0YV9sZW5ndGgYGiABKAMSDQoFZXJyb3IYGyABKAkiOAoRR2V0Q29va2llc1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIpEBChJHZXRDb29raWVzUmVzcG9uc2USLQoHY29va2llcxgBIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5Db29raWVQYXJhbRIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciJnChFTZXRDb29raWVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSLQoHY29va2llcxgDIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5Db29raWVQYXJhbSI6ChNDbGVhckNvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIpCgtTdG9yYWdlSXRlbRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiUQoSU3RvcmFnZU9yaWdpbkVudHJ5Eg4KBm9yaWdpbhgBIAEoCRIrCgVpdGVtcxgCIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlSXRlbSJYChFHZXRTdG9yYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoGb3JpZ2luGAMgASgJSACIAQFCCQoHX29yaWdpbiKYAQoSR2V0U3RvcmFnZVJlc3BvbnNlEjQKB3N0b3JhZ2UYASADKAsyIy5icm93c2Vyc2NhbGUudjEuU3RvcmFnZU9yaWdpbkVudHJ5Eg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIpgBChFTZXRTdG9yYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSNAoHc3RvcmFnZRgDIAMoCzIjLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlT3JpZ2luRW50cnkSGAoLY2xlYXJfZmlyc3QYBCABKAhIAIgBAUIOCgxfY2xlYXJfZmlyc3QiWgoTQ2xlYXJTdG9yYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoGb3JpZ2luGAMgASgJSACIAQFCCQoHX29yaWdpbiIsCgtEYnNjU2Vzc2lvbhIMCgRzaXRlGAEgASgJEg8KB3Nlc3Npb24YAiABKAki2AIKC0F1dGhTZXNzaW9uEhQKB2dhaWFfaWQYASABKAlIAIgBARISCgVlbWFpbBgCIAEoCUgBiAEBEhoKDXJlZnJlc2hfdG9rZW4YAyABKAlIAogBARIgChN3cmFwcGVkX2JpbmRpbmdfa2V5GAQgASgJSAOIAQESJAoXc2lnbmluX3Njb3BlZF9kZXZpY2VfaWQYBSABKAlIBIgBARIZCgxzeW5jX2NvbnNlbnQYBiABKAhIBYgBARIzCg1kYnNjX3Nlc3Npb25zGAcgAygLMhwuYnJvd3NlcnNjYWxlLnYxLkRic2NTZXNzaW9uQgoKCF9nYWlhX2lkQggKBl9lbWFpbEIQCg5fcmVmcmVzaF90b2tlbkIWChRfd3JhcHBlZF9iaW5kaW5nX2tleUIaChhfc2lnbmluX3Njb3BlZF9kZXZpY2VfaWRCDwoNX3N5bmNfY29uc2VudCI8ChVHZXRBdXRoU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJIqYBChZHZXRBdXRoU2Vzc2lvblJlc3BvbnNlEjIKB3Nlc3Npb24YASABKAsyHC5icm93c2Vyc2NhbGUudjEuQXV0aFNlc3Npb25IAIgBARIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgBiAEBQgoKCF9zZXNzaW9uQggKBl9lcnJvciJrChVTZXRBdXRoU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEi0KB3Nlc3Npb24YAyABKAsyHC5icm93c2Vyc2NhbGUudjEuQXV0aFNlc3Npb24ihwEKDUdldERPTVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSFQoIZnJhbWVfaWQYBCABKAlIAIgBARISCgVkZXB0aBgFIAEoBUgBiAEBQgsKCV9mcmFtZV9pZEIICgZfZGVwdGgiawoOR2V0RE9NUmVzcG9uc2USCwoDZG9tGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSMQoFZXJyb3IYAyABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIpkEChVHZXRPYnNlcnZhdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSIwoWbWF4X2VsZW1lbnRzX3Blcl9mcmFtZRgEIAEoBUgAiAEBEhwKD21heF90ZXh0X2xlbmd0aBgFIAEoBUgBiAEBEhMKBmZvcm1hdBgGIAEoCUgCiAEBEh0KEG1heF90b3RhbF90b2tlbnMYByABKAVIA4gBARIbCg5pbmNsdWRlX2JvdW5kcxgIIAEoCEgEiAEBEhoKDXZpZXdwb3J0X29ubHkYCSABKAhIBYgBARIcCg9iYWNrZW5kX25vZGVfaWQYCiABKAVIBogBARIVCghzZWxlY3RvchgLIAEoCUgHiAEBEhoKDWpzX2V4cHJlc3Npb24YDCABKAlICIgBARIVCghmcmFtZV9pZBgNIAEoCUgJiAEBQhkKF19tYXhfZWxlbWVudHNfcGVyX2ZyYW1lQhIKEF9tYXhfdGV4dF9sZW5ndGhCCQoHX2Zvcm1hdEITChFfbWF4X3RvdGFsX3Rva2Vuc0IRCg9faW5jbHVkZV9ib3VuZHNCEAoOX3ZpZXdwb3J0X29ubHlCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkIpMBChZHZXRPYnNlcnZhdGlvblJlc3BvbnNlEhMKC29ic2VydmF0aW9uGAEgASgJEg8KB3N1Y2Nlc3MYAyABKAgSMQoFZXJyb3IYBCABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9ySgQIAhADUhBvYnNlcnZhdGlvbl9qc29uIm0KEUdldERPTUhhc2hSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQFCCwoJX2ZyYW1lX2lkIiIKEkdldERPTUhhc2hSZXNwb25zZRIMCgRoYXNoGAEgASgJIoABChVTdGFydERvbU1pcnJvclJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhIKBWRlcHRoGAQgASgFSACIAQESEwoGcGllcmNlGAUgASgISAGIAQFCCAoGX2RlcHRoQgkKB19waWVyY2VKBAgDEAQimQEKFlN0YXJ0RG9tTWlycm9yUmVzcG9uc2USDAoEcm9vdBgBIAEoCRIQCghmcmFtZV9pZBgCIAEoCRILCgNzZXEYAyABKAQSDwoHc3VjY2VzcxgFIAEoCBIxCgVlcnJvchgGIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3JKBAgEEAUiQQoUU3RvcERvbU1pcnJvclJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJSgQIAxAEIpcBChVHZXREb21DaGlsZHJlblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRIVCghmcmFtZV9pZBgEIAEoCUgAiAEBEhIKBWRlcHRoGAUgASgFSAGIAQFCCwoJX2ZyYW1lX2lkQggKBl9kZXB0aCKFAQoWR2V0RG9tQ2hpbGRyZW5SZXNwb25zZRIQCghjaGlsZHJlbhgBIAEoCRILCgNzZXEYAiABKAQSDwoHc3VjY2VzcxgDIAEoCBIxCgVlcnJvchgEIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IifAoYUmVsZWFzZURvbVN1YnRyZWVSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSFQoIZnJhbWVfaWQYBCABKAlIAIgBAUILCglfZnJhbWVfaWQieAoUUmV2ZWFsRG9tTm9kZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRIVCghmcmFtZV9pZBgEIAEoCUgAiAEBQgsKCV9mcmFtZV9pZCKAAQoVUmV2ZWFsRG9tTm9kZVJlc3BvbnNlEgwKBHBhdGgYASABKAkSCwoDc2VxGAIgASgEEg8KB3N1Y2Nlc3MYAyABKAgSMQoFZXJyb3IYBCABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yImAKFUdldERvbVJldmlzaW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSFQoIZnJhbWVfaWQYAyABKAlIAIgBAUILCglfZnJhbWVfaWQieAoWR2V0RG9tUmV2aXNpb25SZXNwb25zZRIQCghyZXZpc2lvbhgBIAEoBBIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciI9ChZTdHJlYW1Eb21FdmVudHNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSI5CglEb21VcGRhdGUSEAoIZnJhbWVfaWQYASABKAkSCwoDc2VxGAIgASgEEg0KBWVkaXRzGAMgASgJIiEKCURvbVJlc3luYxIOCgZyZWFzb24YAiABKAlKBAgBEAIiewoIRG9tRXZlbnQSLAoGdXBkYXRlGAEgASgLMhouYnJvd3NlcnNjYWxlLnYxLkRvbVVwZGF0ZUgAEiwKBnJlc3luYxgCIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5Eb21SZXN5bmNIAEIHCgVldmVudEoECAMQBEoECAQQBSJmChhJbnNwZWN0QXRQb3NpdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCQoBeBgEIAEoARIJCgF5GAUgASgBIvcBChlJbnNwZWN0QXRQb3NpdGlvblJlc3BvbnNlEhcKD2JhY2tlbmRfbm9kZV9pZBgBIAEoBRIQCghmcmFtZV9pZBgCIAEoCRIQCgh0YWdfbmFtZRgDIAEoCRIUCgx0ZXh0X2NvbnRlbnQYBCABKAkSEgoKaXNfdmlzaWJsZRgFIAEoCBIlCgZib3VuZHMYBiABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIPCgdzdWNjZXNzGAcgASgIEjEKBWVycm9yGAggASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciKJAQoUSGlnaGxpZ2h0Tm9kZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAQgASgFEhUKCGZyYW1lX2lkGAUgASgJSACIAQFCCwoJX2ZyYW1lX2lkIlcKEUluc2VydFRleHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgwKBHRleHQYBCABKAkiewoLVHlwZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSDAoEdGV4dBgEIAEoCRIYCgtjbGVhcl9maXJzdBgFIAEoCEgAiAEBQg4KDF9jbGVhcl9maXJzdCK6AQoPUHJlc3NLZXlSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA2tleRgEIAEoCRIRCgRjb2RlGAUgASgJSACIAQESFgoJbW9kaWZpZXJzGAYgASgFSAGIAQESFQoIbG9jYXRpb24YByABKAVIAogBAUIHCgVfY29kZUIMCgpfbW9kaWZpZXJzQgsKCV9sb2NhdGlvbiK8AQoRUmVsZWFzZUtleVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDa2V5GAQgASgJEhEKBGNvZGUYBSABKAlIAIgBARIWCgltb2RpZmllcnMYBiABKAVIAYgBARIVCghsb2NhdGlvbhgHIAEoBUgCiAEBQgcKBV9jb2RlQgwKCl9tb2RpZmllcnNCCwoJX2xvY2F0aW9uIksKE0dldFNlbGVjdGlvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkicgoUR2V0U2VsZWN0aW9uUmVzcG9uc2USDAoEdGV4dBgBIAEoCRIPCgdzdWNjZXNzGAIgASgIEjEKBWVycm9yGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRFcnJvckgAiAEBQggKBl9lcnJvciKLAQoRU2NyZWVuc2hvdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSEwoGZm9ybWF0GAQgASgJSACIAQESFAoHcXVhbGl0eRgFIAEoBUgBiAEBQgkKB19mb3JtYXRCCgoIX3F1YWxpdHkilgEKElNjcmVlbnNob3RSZXNwb25zZRITCgtkYXRhX2Jhc2U2NBgBIAEoCRINCgV3aWR0aBgCIAEoBRIOCgZoZWlnaHQYAyABKAUSDwoHc3VjY2VzcxgEIAEoCBIxCgVlcnJvchgFIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IikwMKEVJlYWRDYW52YXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESEwoGZm9ybWF0GAggASgJSASIAQESFAoHcXVhbGl0eRgJIAEoBUgFiAEBEg8KAnN4GAogASgFSAaIAQESDwoCc3kYCyABKAVIB4gBARIPCgJzdxgMIAEoBUgIiAEBEg8KAnNoGA0gASgFSAmIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgkKB19mb3JtYXRCCgoIX3F1YWxpdHlCBQoDX3N4QgUKA19zeUIFCgNfc3dCBQoDX3NoItcBChJSZWFkQ2FudmFzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEwoLZGF0YV9iYXNlNjQYBCABKAkSDQoFd2lkdGgYBSABKAUSDgoGaGVpZ2h0GAYgASgFEhQKDG9yaWdpbl9jbGVhbhgHIAEoCBIxCgVlcnJvchgIIAEoCzIdLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kRXJyb3JIAIgBAUIICgZfZXJyb3IiZAoTU29sdmVDYXB0Y2hhUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEgoKdGltZW91dF9tcxgDIAEoBRIUCgxyZXRyeV9hbW91bnQYBCABKAUiJgoUU29sdmVDYXB0Y2hhUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJImUKCUljZVNlcnZlchIMCgR1cmxzGAEgAygJEhUKCHVzZXJuYW1lGAIgASgJSACIAQESFwoKY3JlZGVudGlhbBgDIAEoCUgBiAEBQgsKCV91c2VybmFtZUINCgtfY3JlZGVudGlhbCI9ChZHZXRTdHJlYW1Db25maWdSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSJKChdHZXRTdHJlYW1Db25maWdSZXNwb25zZRIvCgtpY2Vfc2VydmVycxgBIAMoCzIaLmJyb3dzZXJzY2FsZS52MS5JY2VTZXJ2ZXIiTAoSU3RhcnRTdHJlYW1SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIRCglvZmZlcl9zZHAYAyABKAkioAEKE1N0YXJ0U3RyZWFtUmVzcG9uc2USEgoKYW5zd2VyX3NkcBgBIAEoCRInCgh2aWV3cG9ydBgCIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg8KB3N1Y2Nlc3MYAyABKAgSMQoFZXJyb3IYBCABKAsyHS5icm93c2Vyc2NhbGUudjEuQ29tbWFuZEVycm9ySACIAQFCCAoGX2Vycm9yIjgKEVN0b3BTdHJlYW1SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSJDCg5TY3JpcHRMb2dFbnRyeRINCgVsZXZlbBgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEhEKCXRpbWVzdGFtcBgDIAEoAyJHChBSdW5TY3JpcHRSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIOCgZzb3VyY2UYAyABKAkihQEKEVJ1blNjcmlwdFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSDgoGcmVzdWx0GAIgASgJEg4KBnJ1bl9pZBgDIAEoCRIsCgNsb2cYBCADKAsyHy5icm93c2Vyc2NhbGUudjEuU2NyaXB0TG9nRW50cnkSEQoJdHJ1bmNhdGVkGAUgASgIIkkKElN0YXJ0U2NyaXB0UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDgoGc291cmNlGAMgASgJIiUKE1N0YXJ0U2NyaXB0UmVzcG9uc2USDgoGcnVuX2lkGAEgASgJIkkKElN0b3BTY3JpcHRzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDgoGcnVuX2lkGAMgASgJIiYKE1N0b3BTY3JpcHRzUmVzcG9uc2USDwoHc3RvcHBlZBgBIAEoBSIvCglTY3JpcHRSdW4SDgoGcnVuX2lkGAEgASgJEhIKCnJ1bm5pbmdfbXMYAiABKAMiPAoVTGlzdFNjcmlwdFJ1bnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSJCChZMaXN0U2NyaXB0UnVuc1Jlc3BvbnNlEigKBHJ1bnMYASADKAsyGi5icm93c2Vyc2NhbGUudjEuU2NyaXB0UnVuIlAKGVN0cmVhbVNjcmlwdEV2ZW50c1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg4KBnJ1bl9pZBgDIAEoCSJKCglTY3JpcHRMb2cSDgoGcnVuX2lkGAEgASgJEi0KBGxpbmUYAiABKAsyHy5icm93c2Vyc2NhbGUudjEuU2NyaXB0TG9nRW50cnkiUgoOU2NyaXB0RmluaXNoZWQSDgoGcnVuX2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSDgoGcmVzdWx0GAMgASgJEg8KB3N0b3BwZWQYBCABKAgihwEKC1NjcmlwdEV2ZW50EikKA2xvZxgBIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5TY3JpcHRMb2dIABIzCghmaW5pc2hlZBgCIAEoCzIfLmJyb3dzZXJzY2FsZS52MS5TY3JpcHRGaW5pc2hlZEgAEg8KB2Ryb3BwZWQYAyABKARCBwoFZXZlbnQyjCkKB0Jyb3dzZXISTAoIU2V0UHJveHkSIC5icm93c2Vyc2NhbGUudjEuU2V0UHJveHlSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSTwoIR2V0UGFnZXMSIC5icm93c2Vyc2NhbGUudjEuR2V0UGFnZXNSZXF1ZXN0GiEuYnJvd3NlcnNjYWxlLnYxLkdldFBhZ2VzUmVzcG9uc2USTwoITmF2aWdhdGUSIC5icm93c2Vyc2NhbGUudjEuTmF2aWdhdGVSZXF1ZXN0GiEuYnJvd3NlcnNjYWxlLnYxLk5hdmlnYXRlUmVzcG9uc2USTAoITG9hZEhUTUwSIC5icm93c2Vyc2NhbGUudjEuTG9hZEhUTUxSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSTwoIRXZhbHVhdGUSIC5icm93c2Vyc2NhbGUudjEuRXZhbHVhdGVSZXF1ZXN0GiEuYnJvd3NlcnNjYWxlLnYxLkV2YWx1YXRlUmVzcG9uc2USTAoKV2FpdEZvckFueRIhLmJyb3dzZXJzY2FsZS52MS5XYWl0Rm9yQW55UGFyYW1zGhsuYnJvd3NlcnNjYWxlLnYxLldhaXRSZXN1bHQSWQoMU2VsZWN0T3B0aW9uEiQuYnJvd3NlcnNjYWxlLnYxLlNlbGVjdE9wdGlvblJlcXVlc3QaIy5icm93c2Vyc2NhbGUudjEuU2VsZWN0T3B0aW9uUmVzdWx0EksKCFNjcm9sbFRvEiAuYnJvd3NlcnNjYWxlLnYxLlNjcm9sbFRvUmVxdWVzdBodLmJyb3dzZXJzY2FsZS52MS5TY3JvbGxSZXN1bHQSRQoGTW92ZVRvEh4uYnJvd3NlcnNjYWxlLnYxLk1vdmVUb1JlcXVlc3QaGy5icm93c2Vyc2NhbGUudjEuTW92ZVJlc3VsdBJECgVDbGljaxIdLmJyb3dzZXJzY2FsZS52MS5DbGlja1JlcXVlc3QaHC5icm93c2Vyc2NhbGUudjEuQ2xpY2tSZXN1bHQSQQoERHJhZxIcLmJyb3dzZXJzY2FsZS52MS5EcmFnUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5EcmFnUmVzdWx0EkEKBEZpbGwSHC5icm93c2Vyc2NhbGUudjEuRmlsbFJlcXVlc3QaGy5icm93c2Vyc2NhbGUudjEuRmlsbFJlc3VsdBJYCgtBZGRSZWFjdGlvbhIjLmJyb3dzZXJzY2FsZS52MS5BZGRSZWFjdGlvblJlcXVlc3QaJC5icm93c2Vyc2NhbGUudjEuQWRkUmVhY3Rpb25SZXNwb25zZRJhCg5SZW1vdmVSZWFjdGlvbhImLmJyb3dzZXJzY2FsZS52MS5SZW1vdmVSZWFjdGlvblJlcXVlc3QaJy5icm93c2Vyc2NhbGUudjEuUmVtb3ZlUmVhY3Rpb25SZXNwb25zZRJeCg1MaXN0UmVhY3Rpb25zEiUuYnJvd3NlcnNjYWxlLnYxLkxpc3RSZWFjdGlvbnNSZXF1ZXN0GiYuYnJvd3NlcnNjYWxlLnYxLkxpc3RSZWFjdGlvbnNSZXNwb25zZRJUCgxTZXRCbG9ja0xpc3QSJC5icm93c2Vyc2NhbGUudjEuU2V0QmxvY2tMaXN0UmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0ElgKDlNldFN0YXRpY1BhdGhzEiYuYnJvd3NlcnNjYWxlLnYxLlNldFN0YXRpY1BhdGhzUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0EmoKEVdhaXRGb3JBbnlSZXF1ZXN0EikuYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlSZXF1ZXN0UmVxdWVzdBoqLmJyb3dzZXJzY2FsZS52MS5XYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlEm0KEldhaXRGb3JBbnlSZXNwb25zZRIqLmJyb3dzZXJzY2FsZS52MS5XYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0GisuYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlSZXNwb25zZVJlc3BvbnNlEl4KDU1vZGlmeVJlcXVlc3QSJS5icm93c2Vyc2NhbGUudjEuTW9kaWZ5UmVxdWVzdFJlcXVlc3QaJi5icm93c2Vyc2NhbGUudjEuTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEmIKE1N0YXJ0TmV0d29ya0NhcHR1cmUSKy5icm93c2Vyc2NhbGUudjEuU3RhcnROZXR3b3JrQ2FwdHVyZVJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJtChJTdG9wTmV0d29ya0NhcHR1cmUSKi5icm93c2Vyc2NhbGUudjEuU3RvcE5ldHdvcmtDYXB0dXJlUmVxdWVzdBorLmJyb3dzZXJzY2FsZS52MS5TdG9wTmV0d29ya0NhcHR1cmVSZXNwb25zZRJxChZTdHJlYW1OZXR3b3JrRXhjaGFuZ2VzEi4uYnJvd3NlcnNjYWxlLnYxLlN0cmVhbU5ldHdvcmtFeGNoYW5nZXNSZXF1ZXN0GiUuYnJvd3NlcnNjYWxlLnYxLk5ldHdvcmtFeGNoYW5nZUV2ZW50MAESVQoKR2V0Q29va2llcxIiLmJyb3dzZXJzY2FsZS52MS5HZXRDb29raWVzUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5HZXRDb29raWVzUmVzcG9uc2USUAoKU2V0Q29va2llcxIiLmJyb3dzZXJzY2FsZS52MS5TZXRDb29raWVzUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0ElQKDENsZWFyQ29va2llcxIkLmJyb3dzZXJzY2FsZS52MS5DbGVhckNvb2tpZXNSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSVQoKR2V0U3RvcmFnZRIiLmJyb3dzZXJzY2FsZS52MS5HZXRTdG9yYWdlUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5HZXRTdG9yYWdlUmVzcG9uc2USUAoKU2V0U3RvcmFnZRIiLmJyb3dzZXJzY2FsZS52MS5TZXRTdG9yYWdlUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0ElQKDENsZWFyU3RvcmFnZRIkLmJyb3dzZXJzY2FsZS52MS5DbGVhclN0b3JhZ2VSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSYQoOR2V0QXV0aFNlc3Npb24SJi5icm93c2Vyc2NhbGUudjEuR2V0QXV0aFNlc3Npb25SZXF1ZXN0GicuYnJvd3NlcnNjYWxlLnYxLkdldEF1dGhTZXNzaW9uUmVzcG9uc2USWAoOU2V0QXV0aFNlc3Npb24SJi5icm93c2Vyc2NhbGUudjEuU2V0QXV0aFNlc3Npb25SZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSSQoGR2V0RE9NEh4uYnJvd3NlcnNjYWxlLnYxLkdldERPTVJlcXVlc3QaHy5icm93c2Vyc2NhbGUudjEuR2V0RE9NUmVzcG9uc2USVQoKR2V0RE9NSGFzaBIiLmJyb3dzZXJzY2FsZS52MS5HZXRET01IYXNoUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5HZXRET01IYXNoUmVzcG9uc2USYQoOR2V0T2JzZXJ2YXRpb24SJi5icm93c2Vyc2NhbGUudjEuR2V0T2JzZXJ2YXRpb25SZXF1ZXN0GicuYnJvd3NlcnNjYWxlLnYxLkdldE9ic2VydmF0aW9uUmVzcG9uc2USagoRSW5zcGVjdEF0UG9zaXRpb24SKS5icm93c2Vyc2NhbGUudjEuSW5zcGVjdEF0UG9zaXRpb25SZXF1ZXN0GiouYnJvd3NlcnNjYWxlLnYxLkluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USVgoNSGlnaGxpZ2h0Tm9kZRIlLmJyb3dzZXJzY2FsZS52MS5IaWdobGlnaHROb2RlUmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0EmEKDlN0YXJ0RG9tTWlycm9yEiYuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0RG9tTWlycm9yUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5TdGFydERvbU1pcnJvclJlc3BvbnNlElYKDVN0b3BEb21NaXJyb3ISJS5icm93c2Vyc2NhbGUudjEuU3RvcERvbU1pcnJvclJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJhCg5HZXREb21DaGlsZHJlbhImLmJyb3dzZXJzY2FsZS52MS5HZXREb21DaGlsZHJlblJlcXVlc3QaJy5icm93c2Vyc2NhbGUudjEuR2V0RG9tQ2hpbGRyZW5SZXNwb25zZRJeChFSZWxlYXNlRG9tU3VidHJlZRIpLmJyb3dzZXJzY2FsZS52MS5SZWxlYXNlRG9tU3VidHJlZVJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJeCg1SZXZlYWxEb21Ob2RlEiUuYnJvd3NlcnNjYWxlLnYxLlJldmVhbERvbU5vZGVSZXF1ZXN0GiYuYnJvd3NlcnNjYWxlLnYxLlJldmVhbERvbU5vZGVSZXNwb25zZRJhCg5HZXREb21SZXZpc2lvbhImLmJyb3dzZXJzY2FsZS52MS5HZXREb21SZXZpc2lvblJlcXVlc3QaJy5icm93c2Vyc2NhbGUudjEuR2V0RG9tUmV2aXNpb25SZXNwb25zZRJXCg9TdHJlYW1Eb21FdmVudHMSJy5icm93c2Vyc2NhbGUudjEuU3RyZWFtRG9tRXZlbnRzUmVxdWVzdBoZLmJyb3dzZXJzY2FsZS52MS5Eb21FdmVudDABElUKClNjcmVlbnNob3QSIi5icm93c2Vyc2NhbGUudjEuU2NyZWVuc2hvdFJlcXVlc3QaIy5icm93c2Vyc2NhbGUudjEuU2NyZWVuc2hvdFJlc3BvbnNlElUKClJlYWRDYW52YXMSIi5icm93c2Vyc2NhbGUudjEuUmVhZENhbnZhc1JlcXVlc3QaIy5icm93c2Vyc2NhbGUudjEuUmVhZENhbnZhc1Jlc3BvbnNlElAKCkluc2VydFRleHQSIi5icm93c2Vyc2NhbGUudjEuSW5zZXJ0VGV4dFJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJECgRUeXBlEhwuYnJvd3NlcnNjYWxlLnYxLlR5cGVSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSTAoIUHJlc3NLZXkSIC5icm93c2Vyc2NhbGUudjEuUHJlc3NLZXlSZXF1ZXN0Gh4uYnJvd3NlcnNjYWxlLnYxLkNvbW1hbmRSZXN1bHQSUAoKUmVsZWFzZUtleRIiLmJyb3dzZXJzY2FsZS52MS5SZWxlYXNlS2V5UmVxdWVzdBoeLmJyb3dzZXJzY2FsZS52MS5Db21tYW5kUmVzdWx0ElsKDEdldFNlbGVjdGlvbhIkLmJyb3dzZXJzY2FsZS52MS5HZXRTZWxlY3Rpb25SZXF1ZXN0GiUuYnJvd3NlcnNjYWxlLnYxLkdldFNlbGVjdGlvblJlc3BvbnNlElsKDFNvbHZlQ2FwdGNoYRIkLmJyb3dzZXJzY2FsZS52MS5Tb2x2ZUNhcHRjaGFSZXF1ZXN0GiUuYnJvd3NlcnNjYWxlLnYxLlNvbHZlQ2FwdGNoYVJlc3BvbnNlEmQKD0dldFN0cmVhbUNvbmZpZxInLmJyb3dzZXJzY2FsZS52MS5HZXRTdHJlYW1Db25maWdSZXF1ZXN0GiguYnJvd3NlcnNjYWxlLnYxLkdldFN0cmVhbUNvbmZpZ1Jlc3BvbnNlElgKC1N0YXJ0U3RyZWFtEiMuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0U3RyZWFtUmVxdWVzdBokLmJyb3dzZXJzY2FsZS52MS5TdGFydFN0cmVhbVJlc3BvbnNlElAKClN0b3BTdHJlYW0SIi5icm93c2Vyc2NhbGUudjEuU3RvcFN0cmVhbVJlcXVlc3QaHi5icm93c2Vyc2NhbGUudjEuQ29tbWFuZFJlc3VsdBJSCglSdW5TY3JpcHQSIS5icm93c2Vyc2NhbGUudjEuUnVuU2NyaXB0UmVxdWVzdBoiLmJyb3dzZXJzY2FsZS52MS5SdW5TY3JpcHRSZXNwb25zZRJYCgtTdGFydFNjcmlwdBIjLmJyb3dzZXJzY2FsZS52MS5TdGFydFNjcmlwdFJlcXVlc3QaJC5icm93c2Vyc2NhbGUudjEuU3RhcnRTY3JpcHRSZXNwb25zZRJYCgtTdG9wU2NyaXB0cxIjLmJyb3dzZXJzY2FsZS52MS5TdG9wU2NyaXB0c1JlcXVlc3QaJC5icm93c2Vyc2NhbGUudjEuU3RvcFNjcmlwdHNSZXNwb25zZRJhCg5MaXN0U2NyaXB0UnVucxImLmJyb3dzZXJzY2FsZS52MS5MaXN0U2NyaXB0UnVuc1JlcXVlc3QaJy5icm93c2Vyc2NhbGUudjEuTGlzdFNjcmlwdFJ1bnNSZXNwb25zZRJgChJTdHJlYW1TY3JpcHRFdmVudHMSKi5icm93c2Vyc2NhbGUudjEuU3RyZWFtU2NyaXB0RXZlbnRzUmVxdWVzdBocLmJyb3dzZXJzY2FsZS52MS5TY3JpcHRFdmVudDABQjNaMWdpdGh1Yi5jb20vYnJvd3NlcnNjYWxlL2Jyb3dzZXJzY2FsZS1nby9nZW5lcmF0ZWRiBnByb3RvMw", [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);
@@ -3810,64 +3810,66 @@ var RemoveReactionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 22);
3810
3810
  var ListReactionsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 24);
3811
3811
  var SetProxyRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 37);
3812
3812
  var GetPagesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 38);
3813
- var NavigateRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 40);
3814
- var LoadHTMLRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 42);
3815
- var EvaluateRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 43);
3816
- var WaitForAnyParamsSchema = /* @__PURE__ */ messageDesc(file_wrc, 45);
3817
- var SelectOptionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 46);
3818
- var ScrollToRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 47);
3819
- var MoveToRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 48);
3820
- var ClickRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 49);
3821
- var DragRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 50);
3822
- var FillRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 51);
3823
- var SetBlockListRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 52);
3824
- var SetStaticPathsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 53);
3825
- var WaitForAnyRequestRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 54);
3826
- var WaitForAnyResponseRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 56);
3827
- var ModifyRequestRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 58);
3828
- var StartNetworkCaptureRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 60);
3829
- var StopNetworkCaptureRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 61);
3830
- var StreamNetworkExchangesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 63);
3831
- var GetCookiesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 66);
3832
- var SetCookiesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 68);
3833
- var ClearCookiesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 69);
3834
- var StorageItemSchema = /* @__PURE__ */ messageDesc(file_wrc, 70);
3835
- var StorageOriginEntrySchema = /* @__PURE__ */ messageDesc(file_wrc, 71);
3836
- var GetStorageRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 72);
3837
- var SetStorageRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 74);
3838
- var ClearStorageRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 75);
3839
- var DbscSessionSchema = /* @__PURE__ */ messageDesc(file_wrc, 76);
3840
- var AuthSessionSchema = /* @__PURE__ */ messageDesc(file_wrc, 77);
3841
- var GetAuthSessionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 78);
3842
- var SetAuthSessionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 80);
3843
- var GetDOMRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 81);
3844
- var GetObservationRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 83);
3845
- var GetDOMHashRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 85);
3846
- var StartDomMirrorRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 87);
3847
- var StopDomMirrorRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 89);
3848
- var GetDomChildrenRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 90);
3849
- var ReleaseDomSubtreeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 92);
3850
- var RevealDomNodeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 93);
3851
- var GetDomRevisionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 95);
3852
- var StreamDomEventsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 97);
3853
- var InspectAtPositionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 101);
3854
- var HighlightNodeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 103);
3855
- var InsertTextRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 104);
3856
- var TypeRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 105);
3857
- var PressKeyRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 106);
3858
- var ReleaseKeyRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 107);
3859
- var GetSelectionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 108);
3860
- var ScreenshotRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 110);
3861
- var ReadCanvasRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 112);
3862
- var SolveCaptchaRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 114);
3863
- var GetStreamConfigRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 117);
3864
- var StartStreamRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 119);
3865
- var StopStreamRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 121);
3866
- var RunScriptRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 123);
3867
- var StartScriptRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 125);
3868
- var StopScriptsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 127);
3869
- var ListScriptRunsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 130);
3870
- var StreamScriptEventsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 132);
3813
+ var GetUsageRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 41);
3814
+ var NavigateRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 43);
3815
+ var LoadHTMLRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 45);
3816
+ var EvaluateRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 46);
3817
+ var WaitForAnyParamsSchema = /* @__PURE__ */ messageDesc(file_wrc, 48);
3818
+ var SelectOptionRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 49);
3819
+ var ScrollToRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 50);
3820
+ var MoveToRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 51);
3821
+ var ClickRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 52);
3822
+ var DragRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 53);
3823
+ var FillRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 54);
3824
+ var SetBlockListRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 55);
3825
+ var SetStaticPathsRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 56);
3826
+ var WaitForAnyRequestRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 57);
3827
+ var WaitForAnyResponseRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 59);
3828
+ var ModifyRequestRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 61);
3829
+ var StartNetworkCaptureRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 63);
3830
+ var StopNetworkCaptureRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 64);
3831
+ var StreamNetworkExchangesRequestSchema = /* @__PURE__ */ messageDesc(file_wrc, 66);
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);
3871
3873
  var Browser = /* @__PURE__ */ serviceDesc(file_wrc, 0);
3872
3874
 
3873
3875
  // src/errors.ts
@@ -4300,6 +4302,17 @@ function pageInfoFromProto(p) {
4300
4302
  frameTree: p.frameTree ? frameInfoFromProto(p.frameTree) : {}
4301
4303
  };
4302
4304
  }
4305
+ function sessionUsageFromProto(u) {
4306
+ return {
4307
+ wallTime: u.wallTime,
4308
+ cpuTime: u.cpuTime,
4309
+ minMemory: u.minMemory,
4310
+ averageMemory: u.averageMemory,
4311
+ peakMemory: u.peakMemory,
4312
+ renderersUsed: u.renderersUsed,
4313
+ framesCreated: u.framesCreated
4314
+ };
4315
+ }
4303
4316
  function headerFromProto(h) {
4304
4317
  return { name: h.name, value: h.value };
4305
4318
  }
@@ -4335,7 +4348,8 @@ function networkExchangeFromProto(e) {
4335
4348
  initiatorUrl: e.initiatorUrl,
4336
4349
  requestHeaders: e.requestHeaders.map(headerFromProto),
4337
4350
  requestHeadersAreWire: e.requestHeadersAreWire,
4338
- requestBody: e.requestBody,
4351
+ requestBodyId: e.requestBodyId,
4352
+ requestBodySize: Number(e.requestBodySize),
4339
4353
  requestBodyTruncated: e.requestBodyTruncated,
4340
4354
  hasResponse: e.hasResponse,
4341
4355
  statusCode: e.statusCode,
@@ -4346,9 +4360,9 @@ function networkExchangeFromProto(e) {
4346
4360
  servedFrom: e.servedFrom,
4347
4361
  responseHeaders: e.responseHeaders.map(headerFromProto),
4348
4362
  responseHeadersAreWire: e.responseHeadersAreWire,
4349
- responseBody: e.responseBody,
4363
+ responseBodyId: e.responseBodyId,
4364
+ responseBodySize: Number(e.responseBodySize),
4350
4365
  responseBodyTruncated: e.responseBodyTruncated,
4351
- responseBodyCaptured: e.responseBodyCaptured,
4352
4366
  encodedDataLength: Number(e.encodedDataLength),
4353
4367
  error: e.error
4354
4368
  };
@@ -4529,8 +4543,8 @@ var NetworkCapture = class {
4529
4543
  }
4530
4544
  /**
4531
4545
  * How many exchanges the server discarded because this reader fell behind.
4532
- * Anything above zero means the log has holes: make the handler cheaper,
4533
- * narrow `patterns`, or stop capturing bodies.
4546
+ * Anything above zero means the log has holes: make the handler cheaper or
4547
+ * narrow `patterns`.
4534
4548
  */
4535
4549
  get dropped() {
4536
4550
  return this.droppedCount;
@@ -5329,16 +5343,25 @@ var CloudBrowser = class {
5329
5343
  * {@link createWebSocketBrowser} the rental stays untouched; only the
5330
5344
  * transport is closed.
5331
5345
  *
5346
+ * @returns SessionUsage what the session consumed over its whole life, read
5347
+ * as it was torn down - no {@link CloudBrowser.getUsage} call is needed
5348
+ * before stopping. Undefined when the server could not report it, and for
5349
+ * a handle that owns no rental.
5350
+ *
5332
5351
  * Rejects only when the stop API or the transport close fails. The session is
5333
5352
  * released either way; retrying a stop is safe.
5334
5353
  *
5335
5354
  * @example
5336
- * await browser.stopBrowser();
5355
+ * const usage = await browser.stopBrowser();
5356
+ * if (usage) {
5357
+ * console.log(`ran ${usage.wallTime}s, ${usage.cpuTime}s CPU, peak ${usage.peakMemory} bytes`);
5358
+ * }
5337
5359
  */
5338
5360
  async stopBrowser() {
5339
5361
  if (this._stopFn) {
5340
- await this._stopFn();
5362
+ return await this._stopFn();
5341
5363
  }
5364
+ return void 0;
5342
5365
  }
5343
5366
  // ──────────────────────────────────────────────────────────────────
5344
5367
  // Context-level
@@ -5404,6 +5427,39 @@ var CloudBrowser = class {
5404
5427
  throwCommandError("getPages", resp.error);
5405
5428
  return resp.pages.map(pageInfoFromProto);
5406
5429
  }
5430
+ /**
5431
+ * Reports what this session's browser has consumed so far.
5432
+ *
5433
+ * Everything but minMemory and averageMemory only ever grows, so polling and
5434
+ * diffing two readings gives the cost of what ran in between. The final
5435
+ * figures need no call of their own: {@link CloudBrowser.stopBrowser} resolves
5436
+ * with them.
5437
+ *
5438
+ * @returns SessionUsage as of now
5439
+ *
5440
+ * Rejects only on a transport failure - a dead session, a broken connection.
5441
+ * This call has no semantic failure of its own, so there are no error codes to
5442
+ * branch on.
5443
+ *
5444
+ * @example
5445
+ * const before = await browser.getUsage();
5446
+ * await browser.navigate("https://example.com");
5447
+ * const after = await browser.getUsage();
5448
+ * console.log(`navigation cost ${after.cpuTime - before.cpuTime}s of CPU`);
5449
+ */
5450
+ async getUsage() {
5451
+ const resp = await this.client.getUsage(
5452
+ create(GetUsageRequestSchema, {
5453
+ sessionId: this.sessionId,
5454
+ apiKey: this.apiKey
5455
+ })
5456
+ );
5457
+ throwCommandError("getUsage", resp.error);
5458
+ if (!resp.usage) {
5459
+ throw new BrowserScaleError("getUsage: the server sent no usage");
5460
+ }
5461
+ return sessionUsageFromProto(resp.usage);
5462
+ }
5407
5463
  // ──────────────────────────────────────────────────────────────────
5408
5464
  // Page navigation / content
5409
5465
  // ──────────────────────────────────────────────────────────────────
@@ -6484,6 +6540,91 @@ var CloudBrowser = class {
6484
6540
  throwCommandError("stopNetworkCapture", resp.error);
6485
6541
  return resp.stopped;
6486
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
+ }
6487
6628
  /**
6488
6629
  * Subscribes to the session's capture without arming one, for reading a
6489
6630
  * capture that {@link CloudBrowser.startNetworkCapture} armed elsewhere.