From 18bbbb3011532f575827dcce13005b2f8d44b5ae Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 16:27:09 -0700 Subject: [PATCH 01/33] Validate ModCDP protocol surfaces --- README.md | 9 +- TODO_layout.md | 2 - extension/src/pages/options.html | 2 +- extension/src/pages/wake.html | 10 - extension/src/pages/wake.ts | 3 - extension/src/service_worker.ts | 9 - go/go.mod | 2 +- go/go.sum | 4 +- go/modcdp/client/ModCDPClient.go | 51 +- .../ModCDPClientCustomFlatNamespace_test.go | 18 +- ...ModCDPClientRoutedDefaultOverrides_test.go | 40 +- .../ModCDPClient_protocol_validation_test.go | 145 ++ go/modcdp/client/ModCDPClient_test.go | 90 +- .../ModCDPPayloadSchemaNormalization_test.go | 2 +- .../client/generated_protocol_schemas.go | 1576 +++++++++++++++++ .../BorrowedExtensionInjector_test.go | 33 +- .../injector/DiscoveredExtensionInjector.go | 9 - .../DiscoveredExtensionInjector_test.go | 122 +- go/modcdp/injector/ExtensionInjector.go | 245 ++- go/modcdp/injector/ExtensionInjector_test.go | 432 +---- .../ExtensionsLoadUnpackedInjector.go | 3 +- .../ExtensionsLoadUnpackedInjector_test.go | 95 +- .../LocalBrowserLaunchExtensionInjector.go | 206 +-- ...ocalBrowserLaunchExtensionInjector_test.go | 114 +- go/modcdp/injector/extension.zip | Bin 45425 -> 510634 bytes go/modcdp/launcher/LocalBrowserLauncher.go | 5 +- .../launcher/LocalBrowserLauncher_test.go | 8 - .../launcher/RemoteBrowserLauncher_test.go | 1 - go/modcdp/modcdp.go | 1 - go/modcdp/router/AutoSessionRouter_test.go | 2 - .../NativeMessagingUpstreamTransport_test.go | 20 +- .../transport/PipeUpstreamTransport_test.go | 38 +- .../ReverseWebSocketUpstreamTransport.go | 2 +- .../ReverseWebSocketUpstreamTransport_test.go | 159 +- .../WebSocketUpstreamTransport_test.go | 3 - go/modcdp/types/types.go | 3 - js/scripts/build-extension-assets.mjs | 28 +- js/src/client/ModCDPClient.ts | 59 +- js/src/index.ts | 1 - .../injector/DiscoveredExtensionInjector.ts | 10 - js/src/injector/ExtensionInjector.ts | 274 ++- .../ExtensionsLoadUnpackedInjector.ts | 90 +- .../LocalBrowserLaunchExtensionInjector.ts | 72 +- js/src/launcher/LocalBrowserLauncher.ts | 3 +- js/src/proxy/proxy.ts | 2 - js/src/server/ModCDPServer.ts | 56 +- .../ReverseWebSocketUpstreamTransport.ts | 2 +- js/src/types/modcdp.ts | 1 - .../ModCDPClient_protocol_validation.test.ts | 99 ++ js/test/test.AutoSessionRouter.ts | 1 - js/test/test.BorrowedExtensionInjector.ts | 31 +- js/test/test.DiscoveredExtensionInjector.ts | 86 +- js/test/test.ExtensionInjector.ts | 201 +-- .../test.ExtensionsLoadUnpackedInjector.ts | 32 +- ...est.LocalBrowserLaunchExtensionInjector.ts | 158 +- js/test/test.LocalBrowserLauncher.ts | 4 - js/test/test.ModCDPClient.ts | 271 ++- .../test.ModCDPClientCustomFlatNamespace.ts | 41 +- ...test.ModCDPClientRoutedDefaultOverrides.ts | 37 +- .../test.NativeMessagingUpstreamTransport.ts | 103 +- js/test/test.PipeUpstreamTransport.ts | 19 +- js/test/test.RemoteBrowserLauncher.ts | 3 - .../test.ReverseWebSocketUpstreamTransport.ts | 138 +- js/test/test.WebSocketUpstreamTransport.ts | 15 +- js/test/test.proxy.ts | 260 +-- js/test/test.translate.ts | 3 +- package.json | 3 +- pnpm-lock.yaml | 286 ++- python/README.md | 9 +- python/modcdp/client/ModCDPClient.py | 104 +- python/modcdp/extension.zip | Bin 45425 -> 510634 bytes .../injector/DiscoveredExtensionInjector.py | 8 - python/modcdp/injector/ExtensionInjector.py | 87 +- .../ExtensionsLoadUnpackedInjector.py | 26 +- .../LocalBrowserLaunchExtensionInjector.py | 46 +- .../modcdp/launcher/LocalBrowserLauncher.py | 4 +- .../ReverseWebSocketUpstreamTransport.py | 2 +- python/pyproject.toml | 2 +- python/tests/test_AutoSessionRouter.py | 2 +- .../tests/test_BorrowedExtensionInjector.py | 30 +- .../tests/test_DiscoveredExtensionInjector.py | 147 +- python/tests/test_ExtensionInjector.py | 311 +--- .../test_ExtensionsLoadUnpackedInjector.py | 54 +- ...est_LocalBrowserLaunchExtensionInjector.py | 89 +- python/tests/test_LocalBrowserLauncher.py | 4 - python/tests/test_ModCDPClient.py | 56 +- .../test_ModCDPClientCustomFlatNamespace.py | 10 +- ...test_ModCDPClientRoutedDefaultOverrides.py | 38 +- .../test_ModCDPClient_protocol_validation.py | 126 ++ .../test_NativeMessagingUpstreamTransport.py | 76 +- python/tests/test_PipeUpstreamTransport.py | 24 +- python/tests/test_RemoteBrowserLauncher.py | 2 +- .../test_ReverseWebSocketUpstreamTransport.py | 88 +- .../tests/test_WebSocketUpstreamTransport.py | 8 +- python/uv.lock | 2 +- tsconfig.json | 2 +- 96 files changed, 4598 insertions(+), 2612 deletions(-) delete mode 100644 extension/src/pages/wake.html delete mode 100644 extension/src/pages/wake.ts create mode 100644 go/modcdp/client/ModCDPClient_protocol_validation_test.go create mode 100644 go/modcdp/client/generated_protocol_schemas.go create mode 100644 js/test/ModCDPClient_protocol_validation.test.ts create mode 100644 python/tests/test_ModCDPClient_protocol_validation.py diff --git a/README.md b/README.md index 1967245..82bb61c 100644 --- a/README.md +++ b/README.md @@ -150,12 +150,13 @@ Native messaging mode creates the local native host wrapper and browser manifest Use reverse mode when the browser does not expose a public CDP websocket to the final client, but the ModCDP extension can open a websocket back to a local proxy. The proxy still serves a normal-looking CDP endpoint to Playwright, Puppeteer, Stagehand, or any other CDP client: ```sh -pnpm run proxy -- --upstream-mode=reversews --upstream-reversews-bind=127.0.0.1:29292 --listen 127.0.0.1:9223 -pnpm run proxy -- --launcher-mode=local --upstream-mode=reversews --upstream-reversews-bind=127.0.0.1:29292 --port 9223 +pnpm run proxy -- --upstream-mode=reversews --port 9223 +pnpm run proxy -- --launcher-mode=local --upstream-mode=reversews --port 9223 +pnpm run proxy -- --launcher-mode=local --upstream-mode=reversews --upstream-reversews-bind=127.0.0.1:29293 --port 9223 # const browser = await playwright.chromium.connectOverCDP("http://127.0.0.1:9223") ``` -Reverse mode is opt-in. The shipped extension has no generated runtime config; it always tries the fixed local reverse connector at `ws://127.0.0.1:29292`. With `--launcher-mode=local`, use that default bind and the normal `ModCDPClient` launcher, injector, and `ReverseWebSocketUpstreamTransport` path will wake the service worker and accept its connection. With `--launcher-mode=none` or a non-default bind, an already-running extension or test must explicitly call `globalThis.ModCDP.startReverseBridge("ws://host:port", { reconnect_interval_ms: 2000 })` with the chosen endpoint because there is no side channel before the reverse connection exists. `--upstream-reversews-wait-timeout-ms` controls how long the proxy/client waits for that extension connection. Once it connects, it self-identifies as a ModCDP extension service worker and the proxy uses that reverse websocket as its upstream. `Mod.*`, expression-backed `Custom.*` commands, custom event fanout, middleware, and normal CDP commands all stay routed through `globalThis.ModCDP.handleCommand(...)` in the service worker. +Reverse mode is opt-in. The shipped extension auto-connects to the fixed local reverse connector at `ws://127.0.0.1:29292`; the proxy/client listens there and waits for that extension connection. Keep `--upstream-reversews-bind` when using a custom extension build whose compiled autoconnect URL points at a different host or port. `--upstream-reversews-wait-timeout-ms` controls how long the proxy/client waits. Once connected, the extension identifies itself as a ModCDP service worker and the proxy uses that reverse websocket as its upstream. `Mod.*`, expression-backed `Custom.*` commands, custom event fanout, middleware, and normal CDP commands all stay routed through `globalThis.ModCDP.handleCommand(...)` in the service worker. Reverse mode is intentionally scoped to one local browser and one reverse extension connection per proxy process. The browser may still have other extensions installed; ModCDP does not require `--disable-extensions-except`. @@ -230,7 +231,7 @@ dist/ Built JS output used by the extension and Node CLI scr 3. Attach a session to that SW target and `Runtime.enable` on it. 4. Call `globalThis.ModCDP.configure(...)` to push the resolved loopback websocket and any explicit server route overrides into the SW. The clients do this automatically by default. -Reverse proxy mode flips the bootstrap direction: `js/src/proxy/proxy.ts --upstream-mode=reversews --upstream-reversews-bind=127.0.0.1:29292` listens for the extension, while still serving downstream clients from `--listen`. The extension artifact is fixed, so automatic launch/injection uses the default `127.0.0.1:29292` connector; non-default reverse binds need an external bootstrap call to `globalThis.ModCDP.startReverseBridge(...)` with the same URL. The service worker sends a `modcdp.reverse.hello` message and then accepts CDP-shaped command messages from the proxy. The proxy maps downstream request IDs to reverse request IDs and forwards reverse events back to the downstream CDP client. +Reverse proxy mode flips the bootstrap direction: `js/src/proxy/proxy.ts --upstream-mode=reversews --port 9223` listens for the extension on the configured reverse connector while still serving downstream clients from the proxy port. The service worker sends a `modcdp.reverse.hello` message and then accepts CDP-shaped command messages from the proxy. The proxy maps downstream request IDs to reverse request IDs and forwards reverse events back to the downstream CDP client. ### Send diff --git a/TODO_layout.md b/TODO_layout.md index aa73d53..329c418 100644 --- a/TODO_layout.md +++ b/TODO_layout.md @@ -16,8 +16,6 @@ repo/ pages/ options.html options.ts - wake.html - wake.ts offscreen_keepalive.html offscreen_keepalive.ts diff --git a/extension/src/pages/options.html b/extension/src/pages/options.html index ec32164..57c97cb 100644 --- a/extension/src/pages/options.html +++ b/extension/src/pages/options.html @@ -21,4 +21,4 @@

ModCDP

Loading...
- + diff --git a/extension/src/pages/wake.html b/extension/src/pages/wake.html deleted file mode 100644 index 014ae62..0000000 --- a/extension/src/pages/wake.html +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - ModCDP Wake - - - - diff --git a/extension/src/pages/wake.ts b/extension/src/pages/wake.ts deleted file mode 100644 index ad8db44..0000000 --- a/extension/src/pages/wake.ts +++ /dev/null @@ -1,3 +0,0 @@ -chrome.runtime.sendMessage({ type: "modcdp.wake", at: Date.now() }, () => { - setTimeout(() => window.close(), 250); -}); diff --git a/extension/src/service_worker.ts b/extension/src/service_worker.ts index 4c9fcb4..37d8e9f 100644 --- a/extension/src/service_worker.ts +++ b/extension/src/service_worker.ts @@ -190,15 +190,6 @@ chrome.runtime.onInstalled.addListener(startConfiguredTransports); chrome.runtime.onStartup.addListener(startConfiguredTransports); chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => { - if (message?.type === "modcdp.wake") { - startConfiguredTransports(); - sendResponse({ - ok: true, - extension_id: chrome.runtime.id, - service_worker_url: chrome.runtime.getURL("modcdp/service_worker.js"), - }); - return false; - } if (message?.type !== "modcdp.options.status") return false; const self = { id: "self", diff --git a/go/go.mod b/go/go.mod index ad58ae9..259e5d1 100644 --- a/go/go.mod +++ b/go/go.mod @@ -3,7 +3,7 @@ module github.com/browserbase/modcdp/go go 1.25.0 require ( - github.com/ArchiveBox/abxbus/abxbus-go v0.0.0-20260508073455-c5b79a4483f1 + github.com/ArchiveBox/abxbus/abxbus-go/v2 v2.5.2 github.com/gobwas/ws v1.4.0 golang.org/x/term v0.6.0 ) diff --git a/go/go.sum b/go/go.sum index 8591e1d..5b1f7d4 100644 --- a/go/go.sum +++ b/go/go.sum @@ -1,5 +1,5 @@ -github.com/ArchiveBox/abxbus/abxbus-go v0.0.0-20260508073455-c5b79a4483f1 h1:AMZ2Zr6mfP9aDuKjcJvxHkZvlqqf6jQhyk5Ju3jyfY8= -github.com/ArchiveBox/abxbus/abxbus-go v0.0.0-20260508073455-c5b79a4483f1/go.mod h1:yYB8LZqGpYryBo38Hl2s3dhPZweuUwqQxiMZGrY8XXE= +github.com/ArchiveBox/abxbus/abxbus-go/v2 v2.5.2 h1:qpCQCuZ/Nfi6mHf00Ed9nI88JBaAMOh+PhXEO1hdcfQ= +github.com/ArchiveBox/abxbus/abxbus-go/v2 v2.5.2/go.mod h1:Nk7W3WwqKgQw07gQ6V+UdaUJzJwa0Qj78F/n7sERs6A= github.com/gobwas/httphead v0.1.0 h1:exrUm0f4YX0L7EBwZHuCF4GDp8aJfVeBrlLQrs6NqWU= github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= github.com/gobwas/pool v0.2.1 h1:xfeeEhW7pwmX8nuLVlqbzVc7udMDrwetjEv+TZIz1og= diff --git a/go/modcdp/client/ModCDPClient.go b/go/modcdp/client/ModCDPClient.go index ed0346e..bc72d5f 100644 --- a/go/modcdp/client/ModCDPClient.go +++ b/go/modcdp/client/ModCDPClient.go @@ -23,14 +23,13 @@ import ( "net" "net/http" "net/url" - "os" "reflect" "regexp" "strings" "sync" "time" - abxjsonschema "github.com/ArchiveBox/abxbus/abxbus-go/jsonschema" + abxjsonschema "github.com/ArchiveBox/abxbus/abxbus-go/v2/jsonschema" "github.com/browserbase/modcdp/go/modcdp/injector" "github.com/browserbase/modcdp/go/modcdp/launcher" "github.com/browserbase/modcdp/go/modcdp/router" @@ -110,7 +109,6 @@ var NewAutoSessionRouter = router.NewAutoSessionRouter var DefaultModCDPServiceWorkerURLSuffixes = injector.DefaultModCDPServiceWorkerURLSuffixes -const DefaultModCDPWakePath = injector.DefaultModCDPWakePath const DefaultModCDPExtensionID = injector.DefaultModCDPExtensionID const DefaultUpstreamReverseWSBind = transportpkg.DefaultUpstreamReverseWSBind const DefaultUpstreamReverseWSWaitTimeoutMS = transportpkg.DefaultUpstreamReverseWSWaitTimeoutMS @@ -238,8 +236,6 @@ type InjectorConfig struct { InjectorMode string `json:"injector_mode,omitempty"` InjectorExtensionPath string `json:"injector_extension_path,omitempty"` InjectorExtensionID string `json:"injector_extension_id,omitempty"` - InjectorWakePath string `json:"injector_wake_path,omitempty"` - InjectorWakeURL string `json:"injector_wake_url,omitempty"` InjectorServiceWorkerURLIncludes []string `json:"injector_service_worker_url_includes,omitempty"` InjectorServiceWorkerURLSuffixes []string `json:"injector_service_worker_url_suffixes,omitempty"` InjectorTrustServiceWorkerTarget bool `json:"injector_trust_service_worker_target,omitempty"` @@ -563,6 +559,7 @@ func New(opts Options) *ModCDPClient { if *client.Client.ClientHydrateAliases { initCDPSurface(client) } + client.hydrateNativeProtocolSchemas() client.hydrateCustomSurface() return client } @@ -929,11 +926,6 @@ func (c *ModCDPClient) serverConfigureParams(customCommands []map[string]any, cu if c.Upstream.UpstreamNATSSubjectPrefix != "" { upstream["upstream_nats_subject_prefix"] = c.Upstream.UpstreamNATSSubjectPrefix } - if c.transport != nil { - if reverseWSURL := c.transport.GetInjectorConfig().UpstreamReverseWSURL; reverseWSURL != "" { - upstream["upstream_reversews_url"] = reverseWSURL - } - } return map[string]any{ "upstream": upstream, "client": map[string]any{ @@ -972,6 +964,40 @@ func cloneSchema(schema map[string]any) map[string]any { return normalized } +func nativeResultSchema(schema map[string]any) map[string]any { + normalized := cloneSchema(schema) + allowNativeResultExtensions(normalized) + return normalized +} + +func allowNativeResultExtensions(schema map[string]any) { + if schema == nil { + return + } + if schemaType, _ := schema["type"].(string); schemaType == "object" { + schema["additionalProperties"] = true + if properties, ok := schema["properties"].(map[string]any); ok { + for _, property := range properties { + if propertySchema, ok := property.(map[string]any); ok { + allowNativeResultExtensions(propertySchema) + } + } + } + } + if items, ok := schema["items"].(map[string]any); ok { + allowNativeResultExtensions(items) + } + for _, key := range []string{"anyOf", "oneOf", "allOf"} { + if schemas, ok := schema[key].([]any); ok { + for _, entry := range schemas { + if entrySchema, ok := entry.(map[string]any); ok { + allowNativeResultExtensions(entrySchema) + } + } + } + } +} + func resultUnwrapKeyFromSchema(schema map[string]any) string { properties, _ := schema["properties"].(map[string]any) if len(properties) != 1 { @@ -1146,8 +1172,7 @@ func (c *ModCDPClient) validateEventData(event string, data any) (any, bool) { return data, true } if err := abxjsonschema.Validate(schema, data); err != nil { - fmt.Fprintf(os.Stderr, "[ModCDPClient] %s event did not match event_schema: %v\n", event, err) - return nil, false + panic(fmt.Errorf("%s event did not match event_schema: %w", event, err)) } return data, true } @@ -1497,8 +1522,6 @@ func (c *ModCDPClient) baseExtensionInjectorConfig(send SendCDP) ExtensionInject }, InjectorExtensionPath: c.Injector.InjectorExtensionPath, InjectorExtensionID: c.Injector.InjectorExtensionID, - InjectorWakePath: firstNonEmptyString(c.Injector.InjectorWakePath, DefaultModCDPWakePath), - InjectorWakeURL: c.Injector.InjectorWakeURL, InjectorServiceWorkerURLIncludes: c.Injector.InjectorServiceWorkerURLIncludes, InjectorServiceWorkerURLSuffixes: c.Injector.InjectorServiceWorkerURLSuffixes, InjectorTrustServiceWorkerTarget: trustMatchedServiceWorker, diff --git a/go/modcdp/client/ModCDPClientCustomFlatNamespace_test.go b/go/modcdp/client/ModCDPClientCustomFlatNamespace_test.go index 24a540a..76fc943 100644 --- a/go/modcdp/client/ModCDPClientCustomFlatNamespace_test.go +++ b/go/modcdp/client/ModCDPClientCustomFlatNamespace_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - abxjsonschema "github.com/ArchiveBox/abxbus/abxbus-go/jsonschema" + abxjsonschema "github.com/ArchiveBox/abxbus/abxbus-go/v2/jsonschema" ) func TestCustomCommandsInstallFlatNamespaceThroughRealServiceWorker(t *testing.T) { @@ -24,7 +24,6 @@ func TestCustomCommandsInstallFlatNamespaceThroughRealServiceWorker(t *testing.T Launcher: LauncherConfig{LauncherMode: "local", LauncherOptions: LaunchOptions{ Headless: boolPtr(true), - Sandbox: boolPtr(false), }, }, Upstream: UpstreamConfig{UpstreamMode: "ws"}, @@ -84,7 +83,6 @@ func TestCustomEventsValidateRawStringHandlersThroughRealServiceWorker(t *testin Launcher: LauncherConfig{LauncherMode: "local", LauncherOptions: LaunchOptions{ Headless: boolPtr(true), - Sandbox: boolPtr(false), }, }, Upstream: UpstreamConfig{UpstreamMode: "ws"}, @@ -236,7 +234,15 @@ func TestTypedCustomEventRegistrationAndHandler(t *testing.T) { if got := <-seen; got != "ok" { t.Fatalf("unexpected typed event data %q", got) } - if _, ok := cdp.validateEventData("Custom.someEvent", map[string]any{"data": 123}); ok { - t.Fatal("expected typed event schema to reject wrong data type") - } + expectPanic(t, func() { cdp.validateEventData("Custom.someEvent", map[string]any{"data": 123}) }) +} + +func expectPanic(t *testing.T, fn func()) { + t.Helper() + defer func() { + if recover() == nil { + t.Fatal("expected panic") + } + }() + fn() } diff --git a/go/modcdp/client/ModCDPClientRoutedDefaultOverrides_test.go b/go/modcdp/client/ModCDPClientRoutedDefaultOverrides_test.go index 604911a..f91cb10 100644 --- a/go/modcdp/client/ModCDPClientRoutedDefaultOverrides_test.go +++ b/go/modcdp/client/ModCDPClientRoutedDefaultOverrides_test.go @@ -60,25 +60,31 @@ async (payload, next) => { func TestModCDPClientRoutedDefaultOverrides(t *testing.T) { headless := true - sandbox := false extensionPath, err := filepath.Abs("../../../dist/extension") if err != nil { t.Fatal(err) } - chrome, err := NewLocalBrowserLauncher(LaunchOptions{ - Headless: &headless, - Sandbox: &sandbox, - ExtraArgs: []string{"--load-extension=" + extensionPath}, - }).Launch(LaunchOptions{}) - if err != nil { + owner := New(Options{ + Launcher: LauncherConfig{ + LauncherMode: "local", + LauncherOptions: LaunchOptions{Headless: &headless}, + }, + Upstream: UpstreamConfig{UpstreamMode: "ws"}, + Injector: InjectorConfig{ + InjectorMode: "auto", + InjectorExtensionPath: extensionPath, + InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, + InjectorTrustServiceWorkerTarget: true, + }, + }) + if err := owner.Connect(); err != nil { t.Fatal(err) } cdp := New(Options{ Launcher: LauncherConfig{LauncherMode: "remote"}, - Upstream: UpstreamConfig{UpstreamMode: "ws", UpstreamCDPURL: chrome.CDPURL}, + Upstream: UpstreamConfig{UpstreamMode: "ws", UpstreamCDPURL: owner.CDPURL}, Injector: InjectorConfig{ - InjectorMode: "auto", - InjectorExtensionPath: extensionPath, + InjectorMode: "discover", InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, InjectorTrustServiceWorkerTarget: true, }, @@ -90,24 +96,24 @@ func TestModCDPClientRoutedDefaultOverrides(t *testing.T) { }, }, Server: &ServerConfig{ - ServerLoopbackCDPURL: chrome.CDPURL, + ServerLoopbackCDPURL: owner.CDPURL, ServerRoutes: map[string]string{"*.*": "loopback_cdp"}, }, }) - defer chrome.Close() + defer owner.Close() defer cdp.Close() if err := cdp.Connect(); err != nil { t.Fatal(err) } - if cdp.CDPURL != chrome.CDPURL { - t.Fatalf("CDPURL = %q, expected %q", cdp.CDPURL, chrome.CDPURL) + if cdp.CDPURL != owner.CDPURL { + t.Fatalf("CDPURL = %q, expected %q", cdp.CDPURL, owner.CDPURL) } - if cdp.Server.ServerLoopbackCDPURL != chrome.CDPURL { - t.Fatalf("ServerLoopbackCDPURL = %q, expected %q", cdp.Server.ServerLoopbackCDPURL, chrome.CDPURL) + if cdp.Server.ServerLoopbackCDPURL != owner.CDPURL { + t.Fatalf("ServerLoopbackCDPURL = %q, expected %q", cdp.Server.ServerLoopbackCDPURL, owner.CDPURL) } - rawTargets, err := cdp.sendMessage("Target.getTargets", map[string]any{}, "") + rawTargets, err := cdp.Send("Target.getTargets", nil) if err != nil { t.Fatal(err) } diff --git a/go/modcdp/client/ModCDPClient_protocol_validation_test.go b/go/modcdp/client/ModCDPClient_protocol_validation_test.go new file mode 100644 index 0000000..97d0f69 --- /dev/null +++ b/go/modcdp/client/ModCDPClient_protocol_validation_test.go @@ -0,0 +1,145 @@ +package client + +import ( + "testing" + + abxjsonschema "github.com/ArchiveBox/abxbus/abxbus-go/v2/jsonschema" +) + +type protocolValidationCustomEchoParams struct { + Text string `json:"text"` +} + +type protocolValidationCustomEchoResult struct { + OK bool `json:"ok"` +} + +type protocolValidationCustomReadyEvent struct { + OK bool `json:"ok"` +} + +func TestProtocolValidationCoversNativeMethodsNativeEventsCustomMethodsCustomEventsAndNativeOverrides(t *testing.T) { + cdp := New(Options{}) + + runtimeParams := RuntimeEvaluateParams{Expression: "1 + 1", ReturnByValue: Bool(true)} + runtimeResult := RuntimeEvaluateResult{Result: RuntimeRemoteObject{Type: "number", Value: 2}} + nativeEvent := TargetTargetCreatedEvent{ + TargetInfo: TargetTargetInfo{ + TargetID: TargetTargetID("target-1"), + Type: "page", + Title: "Example", + URL: "https://example.com", + Attached: false, + CanAccessOpener: false, + }, + } + customParams := protocolValidationCustomEchoParams{Text: "ok"} + customResult := protocolValidationCustomEchoResult{OK: true} + customEvent := protocolValidationCustomReadyEvent{OK: true} + + if err := cdp.validateCommandParams("Runtime.evaluate", mustParamsMap(t, runtimeParams)); err != nil { + t.Fatalf("native Runtime.evaluate params should validate: %v", err) + } + if err := cdp.validateCommandResult("Runtime.evaluate", runtimeResult); err != nil { + t.Fatalf("native Runtime.evaluate result should validate: %v", err) + } + if _, ok := cdp.validateEventData("Target.targetCreated", nativeEvent); !ok { + t.Fatal("native Target.targetCreated event should validate") + } + if err := cdp.validateCommandParams("Runtime.evaluate", map[string]any{}); err == nil { + t.Fatal("expected Runtime.evaluate params validation to reject missing expression") + } + if err := cdp.validateCommandResult("Runtime.evaluate", map[string]any{}); err == nil { + t.Fatal("expected Runtime.evaluate result validation to reject missing result") + } + expectPanic(t, func() { cdp.validateEventData("Target.targetCreated", map[string]any{}) }) + + if _, err := cdp.Mod.AddCustomCommand(CustomCommand{ + Name: "Custom.echo", + ParamsSchema: abxjsonschema.SchemaFor[protocolValidationCustomEchoParams](), + ResultSchema: abxjsonschema.SchemaFor[protocolValidationCustomEchoResult](), + }); err != nil { + t.Fatal(err) + } + if _, err := cdp.Mod.AddCustomEvent(CustomEvent{ + Name: "Custom.ready", + EventSchema: abxjsonschema.SchemaFor[protocolValidationCustomReadyEvent](), + }); err != nil { + t.Fatal(err) + } + + if err := cdp.validateCommandParams("Custom.echo", mustParamsMap(t, customParams)); err != nil { + t.Fatalf("custom params should validate: %v", err) + } + if err := cdp.validateCommandResult("Custom.echo", customResult); err != nil { + t.Fatalf("custom result should validate: %v", err) + } + if _, ok := cdp.validateEventData("Custom.ready", customEvent); !ok { + t.Fatal("custom event should validate") + } + if err := cdp.validateCommandParams("Custom.echo", map[string]any{"text": 1}); err == nil { + t.Fatal("expected custom params validation to reject wrong text type") + } + if err := cdp.validateCommandResult("Custom.echo", map[string]any{"ok": "yes"}); err == nil { + t.Fatal("expected custom result validation to reject wrong ok type") + } + expectPanic(t, func() { cdp.validateEventData("Custom.ready", map[string]any{"ok": "yes"}) }) + + if _, err := cdp.Mod.AddCustomCommand(CustomCommand{ + Name: "Target.getTargets", + ResultSchema: map[string]any{ + "type": "object", + "properties": map[string]any{ + "targetInfos": map[string]any{ + "type": "array", + "items": map[string]any{ + "type": "object", + "properties": map[string]any{ + "targetId": map[string]any{"type": "string"}, + "type": map[string]any{"type": "string"}, + "title": map[string]any{"type": "string"}, + "url": map[string]any{"type": "string"}, + "attached": map[string]any{"type": "boolean"}, + "canAccessOpener": map[string]any{"type": "boolean"}, + "tabId": map[string]any{"type": "integer"}, + }, + "required": []any{"targetId", "type", "title", "url", "attached", "canAccessOpener"}, + "additionalProperties": true, + }, + }, + }, + "required": []any{"targetInfos"}, + "additionalProperties": true, + }, + }); err != nil { + t.Fatal(err) + } + if _, err := cdp.Mod.AddCustomEvent(CustomEvent{Name: "Target.targetCreated"}); err != nil { + t.Fatal(err) + } + + extendedTargetInfo := map[string]any{ + "targetId": "target-1", + "type": "page", + "title": "Example", + "url": "https://example.com", + "attached": false, + "canAccessOpener": false, + "tabId": 7, + } + if err := cdp.validateCommandResult("Target.getTargets", map[string]any{"targetInfos": []any{extendedTargetInfo}}); err != nil { + t.Fatalf("extended native command result should validate: %v", err) + } + if _, ok := cdp.validateEventData("Target.targetCreated", map[string]any{"targetInfo": extendedTargetInfo}); !ok { + t.Fatal("extended native event should validate") + } +} + +func mustParamsMap(t *testing.T, value any) map[string]any { + t.Helper() + params, err := cdpParamsMap(value) + if err != nil { + t.Fatal(err) + } + return params +} diff --git a/go/modcdp/client/ModCDPClient_test.go b/go/modcdp/client/ModCDPClient_test.go index a640044..a9fc320 100644 --- a/go/modcdp/client/ModCDPClient_test.go +++ b/go/modcdp/client/ModCDPClient_test.go @@ -167,7 +167,14 @@ func TestModCDPClientDispatchesRootEventsBeforeExtensionSessionAttached(t *testi cdp.handleEventMessage(map[string]any{ "method": "Target.targetCreated", "params": map[string]any{ - "targetInfo": map[string]any{"targetId": "target-1", "type": "page", "url": "about:blank"}, + "targetInfo": map[string]any{ + "targetId": "target-1", + "type": "page", + "title": "about:blank", + "url": "about:blank", + "attached": false, + "canAccessOpener": false, + }, }, }) @@ -195,7 +202,14 @@ func TestModCDPClientEventDispatchSnapshotsHandlersWhenOnceRemovesItself(t *test cdp.handleEventMessage(map[string]any{ "method": "Target.targetCreated", "params": map[string]any{ - "targetInfo": map[string]any{"targetId": "target-1", "type": "page", "url": "about:blank"}, + "targetInfo": map[string]any{ + "targetId": "target-1", + "type": "page", + "title": "about:blank", + "url": "about:blank", + "attached": false, + "canAccessOpener": false, + }, }, }) @@ -215,7 +229,14 @@ func TestModCDPClientEventDispatchSnapshotsHandlersWhenOnceRemovesItself(t *test cdp.handleEventMessage(map[string]any{ "method": "Target.targetCreated", "params": map[string]any{ - "targetInfo": map[string]any{"targetId": "target-2", "type": "page", "url": "about:blank"}, + "targetInfo": map[string]any{ + "targetId": "target-2", + "type": "page", + "title": "about:blank", + "url": "about:blank", + "attached": false, + "canAccessOpener": false, + }, }, }) @@ -489,12 +510,10 @@ func TestModCDPClientOnlyExposesInjectorAttachAfterCDPSendIsAvailable(t *testing func TestModCDPClientConnectsWithLocalLaunchAndInjectorChain(t *testing.T) { headless := runtime.GOOS == "linux" && os.Getenv("DISPLAY") == "" - sandbox := runtime.GOOS != "linux" cdp := New(Options{ Launcher: LauncherConfig{LauncherMode: "local", LauncherOptions: LaunchOptions{ Headless: boolPtr(headless), - Sandbox: boolPtr(sandbox), }, }, Upstream: UpstreamConfig{UpstreamMode: "ws"}, @@ -518,7 +537,7 @@ func TestModCDPClientConnectsWithLocalLaunchAndInjectorChain(t *testing.T) { if err := cdp.Connect(); err != nil { t.Fatal(err) } - if cdp.ConnectTiming["injector_source"] != "local_launch" { + if cdp.ConnectTiming["injector_source"] != "local_launch" && cdp.ConnectTiming["injector_source"] != "extensions_load_unpacked" { t.Fatalf("injector_source = %v", cdp.ConnectTiming["injector_source"]) } if cdp.ExtensionID != DefaultModCDPExtensionID { @@ -533,6 +552,24 @@ func TestModCDPClientConnectsWithLocalLaunchAndInjectorChain(t *testing.T) { if result != "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js" { t.Fatalf("Mod.evaluate = %#v", result) } + contextsRaw, err := cdp.Mod.Evaluate(map[string]any{ + "expression": "chrome.runtime.getContexts({}).then((contexts) => contexts.map((context) => ({ type: context.contextType, url: context.documentUrl || context.origin || '' })))", + }) + if err != nil { + t.Fatal(err) + } + contexts, _ := contextsRaw.([]any) + foundOffscreen := false + for _, rawContext := range contexts { + context, _ := rawContext.(map[string]any) + if context["type"] == "OFFSCREEN_DOCUMENT" && + context["url"] == "chrome-extension://"+DefaultModCDPExtensionID+"/offscreen/keepalive.html" { + foundOffscreen = true + } + } + if !foundOffscreen { + t.Fatalf("expected offscreen keepalive context, got %#v", contextsRaw) + } directTargetRaw, err := cdp.Send("Target.createTarget", map[string]any{"url": "about:blank#direct-session-routing"}) if err != nil { t.Fatal(err) @@ -624,15 +661,8 @@ func TestModCDPClientConnectsWithLocalLaunchAndInjectorChain(t *testing.T) { func TestModCDPClientCloseDoesNotCloseRemoteBrowserItDidNotLaunch(t *testing.T) { headless := true - sandbox := false - extensionPath, err := filepath.Abs("../../../dist/extension") - if err != nil { - t.Fatal(err) - } chrome, err := NewLocalBrowserLauncher(LaunchOptions{ - Headless: &headless, - Sandbox: &sandbox, - ExtraArgs: []string{"--load-extension=" + extensionPath}, + Headless: &headless, }).Launch(LaunchOptions{}) if err != nil { t.Fatal(err) @@ -646,15 +676,23 @@ func TestModCDPClientCloseDoesNotCloseRemoteBrowserItDidNotLaunch(t *testing.T) t.Fatal(err) } defer rawConn.Close() + extensionPath, err := filepath.Abs("../../../dist/extension") + if err != nil { + t.Fatal(err) + } cdp := New(Options{ Launcher: LauncherConfig{LauncherMode: "remote"}, Upstream: UpstreamConfig{UpstreamMode: "ws", UpstreamCDPURL: chrome.CDPURL}, Injector: InjectorConfig{ - InjectorMode: "discover", - InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, - InjectorTrustServiceWorkerTarget: true, + InjectorMode: "inject", + InjectorExtensionPath: extensionPath, + InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, + InjectorTrustServiceWorkerTarget: true, + InjectorServiceWorkerReadyTimeoutMS: 5_000, + InjectorServiceWorkerProbeTimeoutMS: 5_000, }, + Client: ClientConfig{ClientRoutes: map[string]string{"*.*": "direct_cdp"}}, }) if err := cdp.Connect(); err != nil { t.Fatal(err) @@ -695,7 +733,6 @@ func TestModCDPClientCloseKeepsInjectorFilesUntilAfterLaunchedBrowserShutdown(t Launcher: LauncherConfig{LauncherMode: "local", LauncherOptions: LaunchOptions{ Headless: boolPtr(true), - Sandbox: boolPtr(false), }, }, Upstream: UpstreamConfig{ @@ -715,16 +752,16 @@ func TestModCDPClientCloseKeepsInjectorFilesUntilAfterLaunchedBrowserShutdown(t if err := cdp.Connect(); err != nil { t.Fatal(err) } - var localInjector *LocalBrowserLaunchExtensionInjector + var loadUnpackedInjector *ExtensionsLoadUnpackedInjector for _, injector := range cdp.extensionInjectors { - if typed, ok := injector.(*LocalBrowserLaunchExtensionInjector); ok { - localInjector = typed + if typed, ok := injector.(*ExtensionsLoadUnpackedInjector); ok { + loadUnpackedInjector = typed } } - if localInjector == nil { - t.Fatal("expected LocalBrowserLaunchExtensionInjector") + if loadUnpackedInjector == nil { + t.Fatal("expected ExtensionsLoadUnpackedInjector") } - unpackedExtensionPath := localInjector.UnpackedExtensionPath + unpackedExtensionPath := loadUnpackedInjector.UnpackedExtensionPath if unpackedExtensionPath == extensionPath { t.Fatalf("UnpackedExtensionPath = %q", unpackedExtensionPath) } @@ -760,7 +797,6 @@ func TestModCDPClientCloseClearsTopLevelConnectionState(t *testing.T) { Launcher: LauncherConfig{LauncherMode: "local", LauncherOptions: LaunchOptions{ Headless: boolPtr(true), - Sandbox: boolPtr(false), }, }, Upstream: UpstreamConfig{UpstreamMode: "ws"}, @@ -842,9 +878,7 @@ func TestCustomEventSchemasValidatePayloads(t *testing.T) { if _, ok := cdp.validateEventData("Custom.changed", map[string]any{"targetId": "target-1"}); !ok { t.Fatal("expected valid event payload") } - if _, ok := cdp.validateEventData("Custom.changed", map[string]any{"targetId": 1}); ok { - t.Fatal("expected invalid event payload") - } + expectPanic(t, func() { cdp.validateEventData("Custom.changed", map[string]any{"targetId": 1}) }) } func TestTypedCDPSurfaceInitializesAndEncodesParams(t *testing.T) { diff --git a/go/modcdp/client/ModCDPPayloadSchemaNormalization_test.go b/go/modcdp/client/ModCDPPayloadSchemaNormalization_test.go index b039776..b49102c 100644 --- a/go/modcdp/client/ModCDPPayloadSchemaNormalization_test.go +++ b/go/modcdp/client/ModCDPPayloadSchemaNormalization_test.go @@ -4,7 +4,7 @@ import ( "strings" "testing" - abxjsonschema "github.com/ArchiveBox/abxbus/abxbus-go/jsonschema" + abxjsonschema "github.com/ArchiveBox/abxbus/abxbus-go/v2/jsonschema" ) func TestPayloadSchemaNormalizationAcceptsEmptyJSONSchemaObjects(t *testing.T) { diff --git a/go/modcdp/client/generated_protocol_schemas.go b/go/modcdp/client/generated_protocol_schemas.go new file mode 100644 index 0000000..507ff76 --- /dev/null +++ b/go/modcdp/client/generated_protocol_schemas.go @@ -0,0 +1,1576 @@ +// Code generated from generated_domains.go. DO NOT EDIT BY HAND. +package client + +import abxjsonschema "github.com/ArchiveBox/abxbus/abxbus-go/v2/jsonschema" + +func (c *ModCDPClient) hydrateNativeProtocolSchemas() { + c.schemaMu.Lock() + defer c.schemaMu.Unlock() + c.commandParamsSchemas["Accessibility.disable"] = abxjsonschema.SchemaFor[AccessibilityDisableParams]() + c.commandResultSchemas["Accessibility.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[AccessibilityDisableResult]()) + c.commandParamsSchemas["Accessibility.enable"] = abxjsonschema.SchemaFor[AccessibilityEnableParams]() + c.commandResultSchemas["Accessibility.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[AccessibilityEnableResult]()) + c.commandParamsSchemas["Accessibility.getPartialAXTree"] = abxjsonschema.SchemaFor[AccessibilityGetPartialAXTreeParams]() + c.commandResultSchemas["Accessibility.getPartialAXTree"] = nativeResultSchema(abxjsonschema.SchemaFor[AccessibilityGetPartialAXTreeResult]()) + c.commandParamsSchemas["Accessibility.getFullAXTree"] = abxjsonschema.SchemaFor[AccessibilityGetFullAXTreeParams]() + c.commandResultSchemas["Accessibility.getFullAXTree"] = nativeResultSchema(abxjsonschema.SchemaFor[AccessibilityGetFullAXTreeResult]()) + c.commandParamsSchemas["Accessibility.getRootAXNode"] = abxjsonschema.SchemaFor[AccessibilityGetRootAXNodeParams]() + c.commandResultSchemas["Accessibility.getRootAXNode"] = nativeResultSchema(abxjsonschema.SchemaFor[AccessibilityGetRootAXNodeResult]()) + c.commandParamsSchemas["Accessibility.getAXNodeAndAncestors"] = abxjsonschema.SchemaFor[AccessibilityGetAXNodeAndAncestorsParams]() + c.commandResultSchemas["Accessibility.getAXNodeAndAncestors"] = nativeResultSchema(abxjsonschema.SchemaFor[AccessibilityGetAXNodeAndAncestorsResult]()) + c.commandParamsSchemas["Accessibility.getChildAXNodes"] = abxjsonschema.SchemaFor[AccessibilityGetChildAXNodesParams]() + c.commandResultSchemas["Accessibility.getChildAXNodes"] = nativeResultSchema(abxjsonschema.SchemaFor[AccessibilityGetChildAXNodesResult]()) + c.commandParamsSchemas["Accessibility.queryAXTree"] = abxjsonschema.SchemaFor[AccessibilityQueryAXTreeParams]() + c.commandResultSchemas["Accessibility.queryAXTree"] = nativeResultSchema(abxjsonschema.SchemaFor[AccessibilityQueryAXTreeResult]()) + c.commandParamsSchemas["Animation.disable"] = abxjsonschema.SchemaFor[AnimationDisableParams]() + c.commandResultSchemas["Animation.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationDisableResult]()) + c.commandParamsSchemas["Animation.enable"] = abxjsonschema.SchemaFor[AnimationEnableParams]() + c.commandResultSchemas["Animation.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationEnableResult]()) + c.commandParamsSchemas["Animation.getCurrentTime"] = abxjsonschema.SchemaFor[AnimationGetCurrentTimeParams]() + c.commandResultSchemas["Animation.getCurrentTime"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationGetCurrentTimeResult]()) + c.commandParamsSchemas["Animation.getPlaybackRate"] = abxjsonschema.SchemaFor[AnimationGetPlaybackRateParams]() + c.commandResultSchemas["Animation.getPlaybackRate"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationGetPlaybackRateResult]()) + c.commandParamsSchemas["Animation.releaseAnimations"] = abxjsonschema.SchemaFor[AnimationReleaseAnimationsParams]() + c.commandResultSchemas["Animation.releaseAnimations"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationReleaseAnimationsResult]()) + c.commandParamsSchemas["Animation.resolveAnimation"] = abxjsonschema.SchemaFor[AnimationResolveAnimationParams]() + c.commandResultSchemas["Animation.resolveAnimation"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationResolveAnimationResult]()) + c.commandParamsSchemas["Animation.seekAnimations"] = abxjsonschema.SchemaFor[AnimationSeekAnimationsParams]() + c.commandResultSchemas["Animation.seekAnimations"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationSeekAnimationsResult]()) + c.commandParamsSchemas["Animation.setPaused"] = abxjsonschema.SchemaFor[AnimationSetPausedParams]() + c.commandResultSchemas["Animation.setPaused"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationSetPausedResult]()) + c.commandParamsSchemas["Animation.setPlaybackRate"] = abxjsonschema.SchemaFor[AnimationSetPlaybackRateParams]() + c.commandResultSchemas["Animation.setPlaybackRate"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationSetPlaybackRateResult]()) + c.commandParamsSchemas["Animation.setTiming"] = abxjsonschema.SchemaFor[AnimationSetTimingParams]() + c.commandResultSchemas["Animation.setTiming"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationSetTimingResult]()) + c.commandParamsSchemas["Audits.getEncodedResponse"] = abxjsonschema.SchemaFor[AuditsGetEncodedResponseParams]() + c.commandResultSchemas["Audits.getEncodedResponse"] = nativeResultSchema(abxjsonschema.SchemaFor[AuditsGetEncodedResponseResult]()) + c.commandParamsSchemas["Audits.disable"] = abxjsonschema.SchemaFor[AuditsDisableParams]() + c.commandResultSchemas["Audits.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[AuditsDisableResult]()) + c.commandParamsSchemas["Audits.enable"] = abxjsonschema.SchemaFor[AuditsEnableParams]() + c.commandResultSchemas["Audits.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[AuditsEnableResult]()) + c.commandParamsSchemas["Audits.checkFormsIssues"] = abxjsonschema.SchemaFor[AuditsCheckFormsIssuesParams]() + c.commandResultSchemas["Audits.checkFormsIssues"] = nativeResultSchema(abxjsonschema.SchemaFor[AuditsCheckFormsIssuesResult]()) + c.commandParamsSchemas["Autofill.trigger"] = abxjsonschema.SchemaFor[AutofillTriggerParams]() + c.commandResultSchemas["Autofill.trigger"] = nativeResultSchema(abxjsonschema.SchemaFor[AutofillTriggerResult]()) + c.commandParamsSchemas["Autofill.setAddresses"] = abxjsonschema.SchemaFor[AutofillSetAddressesParams]() + c.commandResultSchemas["Autofill.setAddresses"] = nativeResultSchema(abxjsonschema.SchemaFor[AutofillSetAddressesResult]()) + c.commandParamsSchemas["Autofill.disable"] = abxjsonschema.SchemaFor[AutofillDisableParams]() + c.commandResultSchemas["Autofill.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[AutofillDisableResult]()) + c.commandParamsSchemas["Autofill.enable"] = abxjsonschema.SchemaFor[AutofillEnableParams]() + c.commandResultSchemas["Autofill.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[AutofillEnableResult]()) + c.commandParamsSchemas["BackgroundService.startObserving"] = abxjsonschema.SchemaFor[BackgroundServiceStartObservingParams]() + c.commandResultSchemas["BackgroundService.startObserving"] = nativeResultSchema(abxjsonschema.SchemaFor[BackgroundServiceStartObservingResult]()) + c.commandParamsSchemas["BackgroundService.stopObserving"] = abxjsonschema.SchemaFor[BackgroundServiceStopObservingParams]() + c.commandResultSchemas["BackgroundService.stopObserving"] = nativeResultSchema(abxjsonschema.SchemaFor[BackgroundServiceStopObservingResult]()) + c.commandParamsSchemas["BackgroundService.setRecording"] = abxjsonschema.SchemaFor[BackgroundServiceSetRecordingParams]() + c.commandResultSchemas["BackgroundService.setRecording"] = nativeResultSchema(abxjsonschema.SchemaFor[BackgroundServiceSetRecordingResult]()) + c.commandParamsSchemas["BackgroundService.clearEvents"] = abxjsonschema.SchemaFor[BackgroundServiceClearEventsParams]() + c.commandResultSchemas["BackgroundService.clearEvents"] = nativeResultSchema(abxjsonschema.SchemaFor[BackgroundServiceClearEventsResult]()) + c.commandParamsSchemas["BluetoothEmulation.enable"] = abxjsonschema.SchemaFor[BluetoothEmulationEnableParams]() + c.commandResultSchemas["BluetoothEmulation.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationEnableResult]()) + c.commandParamsSchemas["BluetoothEmulation.setSimulatedCentralState"] = abxjsonschema.SchemaFor[BluetoothEmulationSetSimulatedCentralStateParams]() + c.commandResultSchemas["BluetoothEmulation.setSimulatedCentralState"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationSetSimulatedCentralStateResult]()) + c.commandParamsSchemas["BluetoothEmulation.disable"] = abxjsonschema.SchemaFor[BluetoothEmulationDisableParams]() + c.commandResultSchemas["BluetoothEmulation.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationDisableResult]()) + c.commandParamsSchemas["BluetoothEmulation.simulatePreconnectedPeripheral"] = abxjsonschema.SchemaFor[BluetoothEmulationSimulatePreconnectedPeripheralParams]() + c.commandResultSchemas["BluetoothEmulation.simulatePreconnectedPeripheral"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationSimulatePreconnectedPeripheralResult]()) + c.commandParamsSchemas["BluetoothEmulation.simulateAdvertisement"] = abxjsonschema.SchemaFor[BluetoothEmulationSimulateAdvertisementParams]() + c.commandResultSchemas["BluetoothEmulation.simulateAdvertisement"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationSimulateAdvertisementResult]()) + c.commandParamsSchemas["BluetoothEmulation.simulateGATTOperationResponse"] = abxjsonschema.SchemaFor[BluetoothEmulationSimulateGATTOperationResponseParams]() + c.commandResultSchemas["BluetoothEmulation.simulateGATTOperationResponse"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationSimulateGATTOperationResponseResult]()) + c.commandParamsSchemas["BluetoothEmulation.simulateCharacteristicOperationResponse"] = abxjsonschema.SchemaFor[BluetoothEmulationSimulateCharacteristicOperationResponseParams]() + c.commandResultSchemas["BluetoothEmulation.simulateCharacteristicOperationResponse"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationSimulateCharacteristicOperationResponseResult]()) + c.commandParamsSchemas["BluetoothEmulation.simulateDescriptorOperationResponse"] = abxjsonschema.SchemaFor[BluetoothEmulationSimulateDescriptorOperationResponseParams]() + c.commandResultSchemas["BluetoothEmulation.simulateDescriptorOperationResponse"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationSimulateDescriptorOperationResponseResult]()) + c.commandParamsSchemas["BluetoothEmulation.addService"] = abxjsonschema.SchemaFor[BluetoothEmulationAddServiceParams]() + c.commandResultSchemas["BluetoothEmulation.addService"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationAddServiceResult]()) + c.commandParamsSchemas["BluetoothEmulation.removeService"] = abxjsonschema.SchemaFor[BluetoothEmulationRemoveServiceParams]() + c.commandResultSchemas["BluetoothEmulation.removeService"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationRemoveServiceResult]()) + c.commandParamsSchemas["BluetoothEmulation.addCharacteristic"] = abxjsonschema.SchemaFor[BluetoothEmulationAddCharacteristicParams]() + c.commandResultSchemas["BluetoothEmulation.addCharacteristic"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationAddCharacteristicResult]()) + c.commandParamsSchemas["BluetoothEmulation.removeCharacteristic"] = abxjsonschema.SchemaFor[BluetoothEmulationRemoveCharacteristicParams]() + c.commandResultSchemas["BluetoothEmulation.removeCharacteristic"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationRemoveCharacteristicResult]()) + c.commandParamsSchemas["BluetoothEmulation.addDescriptor"] = abxjsonschema.SchemaFor[BluetoothEmulationAddDescriptorParams]() + c.commandResultSchemas["BluetoothEmulation.addDescriptor"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationAddDescriptorResult]()) + c.commandParamsSchemas["BluetoothEmulation.removeDescriptor"] = abxjsonschema.SchemaFor[BluetoothEmulationRemoveDescriptorParams]() + c.commandResultSchemas["BluetoothEmulation.removeDescriptor"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationRemoveDescriptorResult]()) + c.commandParamsSchemas["BluetoothEmulation.simulateGATTDisconnection"] = abxjsonschema.SchemaFor[BluetoothEmulationSimulateGATTDisconnectionParams]() + c.commandResultSchemas["BluetoothEmulation.simulateGATTDisconnection"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationSimulateGATTDisconnectionResult]()) + c.commandParamsSchemas["Browser.setPermission"] = abxjsonschema.SchemaFor[BrowserSetPermissionParams]() + c.commandResultSchemas["Browser.setPermission"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserSetPermissionResult]()) + c.commandParamsSchemas["Browser.grantPermissions"] = abxjsonschema.SchemaFor[BrowserGrantPermissionsParams]() + c.commandResultSchemas["Browser.grantPermissions"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserGrantPermissionsResult]()) + c.commandParamsSchemas["Browser.resetPermissions"] = abxjsonschema.SchemaFor[BrowserResetPermissionsParams]() + c.commandResultSchemas["Browser.resetPermissions"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserResetPermissionsResult]()) + c.commandParamsSchemas["Browser.setDownloadBehavior"] = abxjsonschema.SchemaFor[BrowserSetDownloadBehaviorParams]() + c.commandResultSchemas["Browser.setDownloadBehavior"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserSetDownloadBehaviorResult]()) + c.commandParamsSchemas["Browser.cancelDownload"] = abxjsonschema.SchemaFor[BrowserCancelDownloadParams]() + c.commandResultSchemas["Browser.cancelDownload"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserCancelDownloadResult]()) + c.commandParamsSchemas["Browser.close"] = abxjsonschema.SchemaFor[BrowserCloseParams]() + c.commandResultSchemas["Browser.close"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserCloseResult]()) + c.commandParamsSchemas["Browser.crash"] = abxjsonschema.SchemaFor[BrowserCrashParams]() + c.commandResultSchemas["Browser.crash"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserCrashResult]()) + c.commandParamsSchemas["Browser.crashGpuProcess"] = abxjsonschema.SchemaFor[BrowserCrashGPUProcessParams]() + c.commandResultSchemas["Browser.crashGpuProcess"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserCrashGPUProcessResult]()) + c.commandParamsSchemas["Browser.getVersion"] = abxjsonschema.SchemaFor[BrowserGetVersionParams]() + c.commandResultSchemas["Browser.getVersion"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserGetVersionResult]()) + c.commandParamsSchemas["Browser.getBrowserCommandLine"] = abxjsonschema.SchemaFor[BrowserGetBrowserCommandLineParams]() + c.commandResultSchemas["Browser.getBrowserCommandLine"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserGetBrowserCommandLineResult]()) + c.commandParamsSchemas["Browser.getHistograms"] = abxjsonschema.SchemaFor[BrowserGetHistogramsParams]() + c.commandResultSchemas["Browser.getHistograms"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserGetHistogramsResult]()) + c.commandParamsSchemas["Browser.getHistogram"] = abxjsonschema.SchemaFor[BrowserGetHistogramParams]() + c.commandResultSchemas["Browser.getHistogram"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserGetHistogramResult]()) + c.commandParamsSchemas["Browser.getWindowBounds"] = abxjsonschema.SchemaFor[BrowserGetWindowBoundsParams]() + c.commandResultSchemas["Browser.getWindowBounds"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserGetWindowBoundsResult]()) + c.commandParamsSchemas["Browser.getWindowForTarget"] = abxjsonschema.SchemaFor[BrowserGetWindowForTargetParams]() + c.commandResultSchemas["Browser.getWindowForTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserGetWindowForTargetResult]()) + c.commandParamsSchemas["Browser.setWindowBounds"] = abxjsonschema.SchemaFor[BrowserSetWindowBoundsParams]() + c.commandResultSchemas["Browser.setWindowBounds"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserSetWindowBoundsResult]()) + c.commandParamsSchemas["Browser.setContentsSize"] = abxjsonschema.SchemaFor[BrowserSetContentsSizeParams]() + c.commandResultSchemas["Browser.setContentsSize"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserSetContentsSizeResult]()) + c.commandParamsSchemas["Browser.setDockTile"] = abxjsonschema.SchemaFor[BrowserSetDockTileParams]() + c.commandResultSchemas["Browser.setDockTile"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserSetDockTileResult]()) + c.commandParamsSchemas["Browser.executeBrowserCommand"] = abxjsonschema.SchemaFor[BrowserExecuteBrowserCommandParams]() + c.commandResultSchemas["Browser.executeBrowserCommand"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserExecuteBrowserCommandResult]()) + c.commandParamsSchemas["Browser.addPrivacySandboxEnrollmentOverride"] = abxjsonschema.SchemaFor[BrowserAddPrivacySandboxEnrollmentOverrideParams]() + c.commandResultSchemas["Browser.addPrivacySandboxEnrollmentOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserAddPrivacySandboxEnrollmentOverrideResult]()) + c.commandParamsSchemas["Browser.addPrivacySandboxCoordinatorKeyConfig"] = abxjsonschema.SchemaFor[BrowserAddPrivacySandboxCoordinatorKeyConfigParams]() + c.commandResultSchemas["Browser.addPrivacySandboxCoordinatorKeyConfig"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserAddPrivacySandboxCoordinatorKeyConfigResult]()) + c.commandParamsSchemas["CSS.addRule"] = abxjsonschema.SchemaFor[CSSAddRuleParams]() + c.commandResultSchemas["CSS.addRule"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSAddRuleResult]()) + c.commandParamsSchemas["CSS.collectClassNames"] = abxjsonschema.SchemaFor[CSSCollectClassNamesParams]() + c.commandResultSchemas["CSS.collectClassNames"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSCollectClassNamesResult]()) + c.commandParamsSchemas["CSS.createStyleSheet"] = abxjsonschema.SchemaFor[CSSCreateStyleSheetParams]() + c.commandResultSchemas["CSS.createStyleSheet"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSCreateStyleSheetResult]()) + c.commandParamsSchemas["CSS.disable"] = abxjsonschema.SchemaFor[CSSDisableParams]() + c.commandResultSchemas["CSS.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSDisableResult]()) + c.commandParamsSchemas["CSS.enable"] = abxjsonschema.SchemaFor[CSSEnableParams]() + c.commandResultSchemas["CSS.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSEnableResult]()) + c.commandParamsSchemas["CSS.forcePseudoState"] = abxjsonschema.SchemaFor[CSSForcePseudoStateParams]() + c.commandResultSchemas["CSS.forcePseudoState"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSForcePseudoStateResult]()) + c.commandParamsSchemas["CSS.forceStartingStyle"] = abxjsonschema.SchemaFor[CSSForceStartingStyleParams]() + c.commandResultSchemas["CSS.forceStartingStyle"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSForceStartingStyleResult]()) + c.commandParamsSchemas["CSS.getBackgroundColors"] = abxjsonschema.SchemaFor[CSSGetBackgroundColorsParams]() + c.commandResultSchemas["CSS.getBackgroundColors"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetBackgroundColorsResult]()) + c.commandParamsSchemas["CSS.getComputedStyleForNode"] = abxjsonschema.SchemaFor[CSSGetComputedStyleForNodeParams]() + c.commandResultSchemas["CSS.getComputedStyleForNode"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetComputedStyleForNodeResult]()) + c.commandParamsSchemas["CSS.resolveValues"] = abxjsonschema.SchemaFor[CSSResolveValuesParams]() + c.commandResultSchemas["CSS.resolveValues"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSResolveValuesResult]()) + c.commandParamsSchemas["CSS.getLonghandProperties"] = abxjsonschema.SchemaFor[CSSGetLonghandPropertiesParams]() + c.commandResultSchemas["CSS.getLonghandProperties"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetLonghandPropertiesResult]()) + c.commandParamsSchemas["CSS.getInlineStylesForNode"] = abxjsonschema.SchemaFor[CSSGetInlineStylesForNodeParams]() + c.commandResultSchemas["CSS.getInlineStylesForNode"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetInlineStylesForNodeResult]()) + c.commandParamsSchemas["CSS.getAnimatedStylesForNode"] = abxjsonschema.SchemaFor[CSSGetAnimatedStylesForNodeParams]() + c.commandResultSchemas["CSS.getAnimatedStylesForNode"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetAnimatedStylesForNodeResult]()) + c.commandParamsSchemas["CSS.getMatchedStylesForNode"] = abxjsonschema.SchemaFor[CSSGetMatchedStylesForNodeParams]() + c.commandResultSchemas["CSS.getMatchedStylesForNode"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetMatchedStylesForNodeResult]()) + c.commandParamsSchemas["CSS.getEnvironmentVariables"] = abxjsonschema.SchemaFor[CSSGetEnvironmentVariablesParams]() + c.commandResultSchemas["CSS.getEnvironmentVariables"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetEnvironmentVariablesResult]()) + c.commandParamsSchemas["CSS.getMediaQueries"] = abxjsonschema.SchemaFor[CSSGetMediaQueriesParams]() + c.commandResultSchemas["CSS.getMediaQueries"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetMediaQueriesResult]()) + c.commandParamsSchemas["CSS.getPlatformFontsForNode"] = abxjsonschema.SchemaFor[CSSGetPlatformFontsForNodeParams]() + c.commandResultSchemas["CSS.getPlatformFontsForNode"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetPlatformFontsForNodeResult]()) + c.commandParamsSchemas["CSS.getStyleSheetText"] = abxjsonschema.SchemaFor[CSSGetStyleSheetTextParams]() + c.commandResultSchemas["CSS.getStyleSheetText"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetStyleSheetTextResult]()) + c.commandParamsSchemas["CSS.getLayersForNode"] = abxjsonschema.SchemaFor[CSSGetLayersForNodeParams]() + c.commandResultSchemas["CSS.getLayersForNode"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetLayersForNodeResult]()) + c.commandParamsSchemas["CSS.getLocationForSelector"] = abxjsonschema.SchemaFor[CSSGetLocationForSelectorParams]() + c.commandResultSchemas["CSS.getLocationForSelector"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSGetLocationForSelectorResult]()) + c.commandParamsSchemas["CSS.trackComputedStyleUpdatesForNode"] = abxjsonschema.SchemaFor[CSSTrackComputedStyleUpdatesForNodeParams]() + c.commandResultSchemas["CSS.trackComputedStyleUpdatesForNode"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSTrackComputedStyleUpdatesForNodeResult]()) + c.commandParamsSchemas["CSS.trackComputedStyleUpdates"] = abxjsonschema.SchemaFor[CSSTrackComputedStyleUpdatesParams]() + c.commandResultSchemas["CSS.trackComputedStyleUpdates"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSTrackComputedStyleUpdatesResult]()) + c.commandParamsSchemas["CSS.takeComputedStyleUpdates"] = abxjsonschema.SchemaFor[CSSTakeComputedStyleUpdatesParams]() + c.commandResultSchemas["CSS.takeComputedStyleUpdates"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSTakeComputedStyleUpdatesResult]()) + c.commandParamsSchemas["CSS.setEffectivePropertyValueForNode"] = abxjsonschema.SchemaFor[CSSSetEffectivePropertyValueForNodeParams]() + c.commandResultSchemas["CSS.setEffectivePropertyValueForNode"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetEffectivePropertyValueForNodeResult]()) + c.commandParamsSchemas["CSS.setPropertyRulePropertyName"] = abxjsonschema.SchemaFor[CSSSetPropertyRulePropertyNameParams]() + c.commandResultSchemas["CSS.setPropertyRulePropertyName"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetPropertyRulePropertyNameResult]()) + c.commandParamsSchemas["CSS.setKeyframeKey"] = abxjsonschema.SchemaFor[CSSSetKeyframeKeyParams]() + c.commandResultSchemas["CSS.setKeyframeKey"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetKeyframeKeyResult]()) + c.commandParamsSchemas["CSS.setMediaText"] = abxjsonschema.SchemaFor[CSSSetMediaTextParams]() + c.commandResultSchemas["CSS.setMediaText"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetMediaTextResult]()) + c.commandParamsSchemas["CSS.setContainerQueryText"] = abxjsonschema.SchemaFor[CSSSetContainerQueryTextParams]() + c.commandResultSchemas["CSS.setContainerQueryText"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetContainerQueryTextResult]()) + c.commandParamsSchemas["CSS.setSupportsText"] = abxjsonschema.SchemaFor[CSSSetSupportsTextParams]() + c.commandResultSchemas["CSS.setSupportsText"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetSupportsTextResult]()) + c.commandParamsSchemas["CSS.setNavigationText"] = abxjsonschema.SchemaFor[CSSSetNavigationTextParams]() + c.commandResultSchemas["CSS.setNavigationText"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetNavigationTextResult]()) + c.commandParamsSchemas["CSS.setScopeText"] = abxjsonschema.SchemaFor[CSSSetScopeTextParams]() + c.commandResultSchemas["CSS.setScopeText"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetScopeTextResult]()) + c.commandParamsSchemas["CSS.setRuleSelector"] = abxjsonschema.SchemaFor[CSSSetRuleSelectorParams]() + c.commandResultSchemas["CSS.setRuleSelector"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetRuleSelectorResult]()) + c.commandParamsSchemas["CSS.setStyleSheetText"] = abxjsonschema.SchemaFor[CSSSetStyleSheetTextParams]() + c.commandResultSchemas["CSS.setStyleSheetText"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetStyleSheetTextResult]()) + c.commandParamsSchemas["CSS.setStyleTexts"] = abxjsonschema.SchemaFor[CSSSetStyleTextsParams]() + c.commandResultSchemas["CSS.setStyleTexts"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetStyleTextsResult]()) + c.commandParamsSchemas["CSS.startRuleUsageTracking"] = abxjsonschema.SchemaFor[CSSStartRuleUsageTrackingParams]() + c.commandResultSchemas["CSS.startRuleUsageTracking"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSStartRuleUsageTrackingResult]()) + c.commandParamsSchemas["CSS.stopRuleUsageTracking"] = abxjsonschema.SchemaFor[CSSStopRuleUsageTrackingParams]() + c.commandResultSchemas["CSS.stopRuleUsageTracking"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSStopRuleUsageTrackingResult]()) + c.commandParamsSchemas["CSS.takeCoverageDelta"] = abxjsonschema.SchemaFor[CSSTakeCoverageDeltaParams]() + c.commandResultSchemas["CSS.takeCoverageDelta"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSTakeCoverageDeltaResult]()) + c.commandParamsSchemas["CSS.setLocalFontsEnabled"] = abxjsonschema.SchemaFor[CSSSetLocalFontsEnabledParams]() + c.commandResultSchemas["CSS.setLocalFontsEnabled"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSSetLocalFontsEnabledResult]()) + c.commandParamsSchemas["CacheStorage.deleteCache"] = abxjsonschema.SchemaFor[CacheStorageDeleteCacheParams]() + c.commandResultSchemas["CacheStorage.deleteCache"] = nativeResultSchema(abxjsonschema.SchemaFor[CacheStorageDeleteCacheResult]()) + c.commandParamsSchemas["CacheStorage.deleteEntry"] = abxjsonschema.SchemaFor[CacheStorageDeleteEntryParams]() + c.commandResultSchemas["CacheStorage.deleteEntry"] = nativeResultSchema(abxjsonschema.SchemaFor[CacheStorageDeleteEntryResult]()) + c.commandParamsSchemas["CacheStorage.requestCacheNames"] = abxjsonschema.SchemaFor[CacheStorageRequestCacheNamesParams]() + c.commandResultSchemas["CacheStorage.requestCacheNames"] = nativeResultSchema(abxjsonschema.SchemaFor[CacheStorageRequestCacheNamesResult]()) + c.commandParamsSchemas["CacheStorage.requestCachedResponse"] = abxjsonschema.SchemaFor[CacheStorageRequestCachedResponseParams]() + c.commandResultSchemas["CacheStorage.requestCachedResponse"] = nativeResultSchema(abxjsonschema.SchemaFor[CacheStorageRequestCachedResponseResult]()) + c.commandParamsSchemas["CacheStorage.requestEntries"] = abxjsonschema.SchemaFor[CacheStorageRequestEntriesParams]() + c.commandResultSchemas["CacheStorage.requestEntries"] = nativeResultSchema(abxjsonschema.SchemaFor[CacheStorageRequestEntriesResult]()) + c.commandParamsSchemas["Cast.enable"] = abxjsonschema.SchemaFor[CastEnableParams]() + c.commandResultSchemas["Cast.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[CastEnableResult]()) + c.commandParamsSchemas["Cast.disable"] = abxjsonschema.SchemaFor[CastDisableParams]() + c.commandResultSchemas["Cast.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[CastDisableResult]()) + c.commandParamsSchemas["Cast.setSinkToUse"] = abxjsonschema.SchemaFor[CastSetSinkToUseParams]() + c.commandResultSchemas["Cast.setSinkToUse"] = nativeResultSchema(abxjsonschema.SchemaFor[CastSetSinkToUseResult]()) + c.commandParamsSchemas["Cast.startDesktopMirroring"] = abxjsonschema.SchemaFor[CastStartDesktopMirroringParams]() + c.commandResultSchemas["Cast.startDesktopMirroring"] = nativeResultSchema(abxjsonschema.SchemaFor[CastStartDesktopMirroringResult]()) + c.commandParamsSchemas["Cast.startTabMirroring"] = abxjsonschema.SchemaFor[CastStartTabMirroringParams]() + c.commandResultSchemas["Cast.startTabMirroring"] = nativeResultSchema(abxjsonschema.SchemaFor[CastStartTabMirroringResult]()) + c.commandParamsSchemas["Cast.stopCasting"] = abxjsonschema.SchemaFor[CastStopCastingParams]() + c.commandResultSchemas["Cast.stopCasting"] = nativeResultSchema(abxjsonschema.SchemaFor[CastStopCastingResult]()) + c.commandParamsSchemas["Console.clearMessages"] = abxjsonschema.SchemaFor[ConsoleClearMessagesParams]() + c.commandResultSchemas["Console.clearMessages"] = nativeResultSchema(abxjsonschema.SchemaFor[ConsoleClearMessagesResult]()) + c.commandParamsSchemas["Console.disable"] = abxjsonschema.SchemaFor[ConsoleDisableParams]() + c.commandResultSchemas["Console.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[ConsoleDisableResult]()) + c.commandParamsSchemas["Console.enable"] = abxjsonschema.SchemaFor[ConsoleEnableParams]() + c.commandResultSchemas["Console.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[ConsoleEnableResult]()) + c.commandParamsSchemas["DOM.collectClassNamesFromSubtree"] = abxjsonschema.SchemaFor[DOMCollectClassNamesFromSubtreeParams]() + c.commandResultSchemas["DOM.collectClassNamesFromSubtree"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMCollectClassNamesFromSubtreeResult]()) + c.commandParamsSchemas["DOM.copyTo"] = abxjsonschema.SchemaFor[DOMCopyToParams]() + c.commandResultSchemas["DOM.copyTo"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMCopyToResult]()) + c.commandParamsSchemas["DOM.describeNode"] = abxjsonschema.SchemaFor[DOMDescribeNodeParams]() + c.commandResultSchemas["DOM.describeNode"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDescribeNodeResult]()) + c.commandParamsSchemas["DOM.scrollIntoViewIfNeeded"] = abxjsonschema.SchemaFor[DOMScrollIntoViewIfNeededParams]() + c.commandResultSchemas["DOM.scrollIntoViewIfNeeded"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMScrollIntoViewIfNeededResult]()) + c.commandParamsSchemas["DOM.disable"] = abxjsonschema.SchemaFor[DOMDisableParams]() + c.commandResultSchemas["DOM.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDisableResult]()) + c.commandParamsSchemas["DOM.discardSearchResults"] = abxjsonschema.SchemaFor[DOMDiscardSearchResultsParams]() + c.commandResultSchemas["DOM.discardSearchResults"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDiscardSearchResultsResult]()) + c.commandParamsSchemas["DOM.enable"] = abxjsonschema.SchemaFor[DOMEnableParams]() + c.commandResultSchemas["DOM.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMEnableResult]()) + c.commandParamsSchemas["DOM.focus"] = abxjsonschema.SchemaFor[DOMFocusParams]() + c.commandResultSchemas["DOM.focus"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMFocusResult]()) + c.commandParamsSchemas["DOM.getAttributes"] = abxjsonschema.SchemaFor[DOMGetAttributesParams]() + c.commandResultSchemas["DOM.getAttributes"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetAttributesResult]()) + c.commandParamsSchemas["DOM.getBoxModel"] = abxjsonschema.SchemaFor[DOMGetBoxModelParams]() + c.commandResultSchemas["DOM.getBoxModel"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetBoxModelResult]()) + c.commandParamsSchemas["DOM.getContentQuads"] = abxjsonschema.SchemaFor[DOMGetContentQuadsParams]() + c.commandResultSchemas["DOM.getContentQuads"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetContentQuadsResult]()) + c.commandParamsSchemas["DOM.getDocument"] = abxjsonschema.SchemaFor[DOMGetDocumentParams]() + c.commandResultSchemas["DOM.getDocument"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetDocumentResult]()) + c.commandParamsSchemas["DOM.getFlattenedDocument"] = abxjsonschema.SchemaFor[DOMGetFlattenedDocumentParams]() + c.commandResultSchemas["DOM.getFlattenedDocument"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetFlattenedDocumentResult]()) + c.commandParamsSchemas["DOM.getNodesForSubtreeByStyle"] = abxjsonschema.SchemaFor[DOMGetNodesForSubtreeByStyleParams]() + c.commandResultSchemas["DOM.getNodesForSubtreeByStyle"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetNodesForSubtreeByStyleResult]()) + c.commandParamsSchemas["DOM.getNodeForLocation"] = abxjsonschema.SchemaFor[DOMGetNodeForLocationParams]() + c.commandResultSchemas["DOM.getNodeForLocation"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetNodeForLocationResult]()) + c.commandParamsSchemas["DOM.getOuterHTML"] = abxjsonschema.SchemaFor[DOMGetOuterHTMLParams]() + c.commandResultSchemas["DOM.getOuterHTML"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetOuterHTMLResult]()) + c.commandParamsSchemas["DOM.getRelayoutBoundary"] = abxjsonschema.SchemaFor[DOMGetRelayoutBoundaryParams]() + c.commandResultSchemas["DOM.getRelayoutBoundary"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetRelayoutBoundaryResult]()) + c.commandParamsSchemas["DOM.getSearchResults"] = abxjsonschema.SchemaFor[DOMGetSearchResultsParams]() + c.commandResultSchemas["DOM.getSearchResults"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetSearchResultsResult]()) + c.commandParamsSchemas["DOM.hideHighlight"] = abxjsonschema.SchemaFor[DOMHideHighlightParams]() + c.commandResultSchemas["DOM.hideHighlight"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMHideHighlightResult]()) + c.commandParamsSchemas["DOM.highlightNode"] = abxjsonschema.SchemaFor[DOMHighlightNodeParams]() + c.commandResultSchemas["DOM.highlightNode"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMHighlightNodeResult]()) + c.commandParamsSchemas["DOM.highlightRect"] = abxjsonschema.SchemaFor[DOMHighlightRectParams]() + c.commandResultSchemas["DOM.highlightRect"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMHighlightRectResult]()) + c.commandParamsSchemas["DOM.markUndoableState"] = abxjsonschema.SchemaFor[DOMMarkUndoableStateParams]() + c.commandResultSchemas["DOM.markUndoableState"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMMarkUndoableStateResult]()) + c.commandParamsSchemas["DOM.moveTo"] = abxjsonschema.SchemaFor[DOMMoveToParams]() + c.commandResultSchemas["DOM.moveTo"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMMoveToResult]()) + c.commandParamsSchemas["DOM.performSearch"] = abxjsonschema.SchemaFor[DOMPerformSearchParams]() + c.commandResultSchemas["DOM.performSearch"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMPerformSearchResult]()) + c.commandParamsSchemas["DOM.pushNodeByPathToFrontend"] = abxjsonschema.SchemaFor[DOMPushNodeByPathToFrontendParams]() + c.commandResultSchemas["DOM.pushNodeByPathToFrontend"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMPushNodeByPathToFrontendResult]()) + c.commandParamsSchemas["DOM.pushNodesByBackendIdsToFrontend"] = abxjsonschema.SchemaFor[DOMPushNodesByBackendIdsToFrontendParams]() + c.commandResultSchemas["DOM.pushNodesByBackendIdsToFrontend"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMPushNodesByBackendIdsToFrontendResult]()) + c.commandParamsSchemas["DOM.querySelector"] = abxjsonschema.SchemaFor[DOMQuerySelectorParams]() + c.commandResultSchemas["DOM.querySelector"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMQuerySelectorResult]()) + c.commandParamsSchemas["DOM.querySelectorAll"] = abxjsonschema.SchemaFor[DOMQuerySelectorAllParams]() + c.commandResultSchemas["DOM.querySelectorAll"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMQuerySelectorAllResult]()) + c.commandParamsSchemas["DOM.getTopLayerElements"] = abxjsonschema.SchemaFor[DOMGetTopLayerElementsParams]() + c.commandResultSchemas["DOM.getTopLayerElements"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetTopLayerElementsResult]()) + c.commandParamsSchemas["DOM.getElementByRelation"] = abxjsonschema.SchemaFor[DOMGetElementByRelationParams]() + c.commandResultSchemas["DOM.getElementByRelation"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetElementByRelationResult]()) + c.commandParamsSchemas["DOM.redo"] = abxjsonschema.SchemaFor[DOMRedoParams]() + c.commandResultSchemas["DOM.redo"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMRedoResult]()) + c.commandParamsSchemas["DOM.removeAttribute"] = abxjsonschema.SchemaFor[DOMRemoveAttributeParams]() + c.commandResultSchemas["DOM.removeAttribute"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMRemoveAttributeResult]()) + c.commandParamsSchemas["DOM.removeNode"] = abxjsonschema.SchemaFor[DOMRemoveNodeParams]() + c.commandResultSchemas["DOM.removeNode"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMRemoveNodeResult]()) + c.commandParamsSchemas["DOM.requestChildNodes"] = abxjsonschema.SchemaFor[DOMRequestChildNodesParams]() + c.commandResultSchemas["DOM.requestChildNodes"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMRequestChildNodesResult]()) + c.commandParamsSchemas["DOM.requestNode"] = abxjsonschema.SchemaFor[DOMRequestNodeParams]() + c.commandResultSchemas["DOM.requestNode"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMRequestNodeResult]()) + c.commandParamsSchemas["DOM.resolveNode"] = abxjsonschema.SchemaFor[DOMResolveNodeParams]() + c.commandResultSchemas["DOM.resolveNode"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMResolveNodeResult]()) + c.commandParamsSchemas["DOM.setAttributeValue"] = abxjsonschema.SchemaFor[DOMSetAttributeValueParams]() + c.commandResultSchemas["DOM.setAttributeValue"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSetAttributeValueResult]()) + c.commandParamsSchemas["DOM.setAttributesAsText"] = abxjsonschema.SchemaFor[DOMSetAttributesAsTextParams]() + c.commandResultSchemas["DOM.setAttributesAsText"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSetAttributesAsTextResult]()) + c.commandParamsSchemas["DOM.setFileInputFiles"] = abxjsonschema.SchemaFor[DOMSetFileInputFilesParams]() + c.commandResultSchemas["DOM.setFileInputFiles"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSetFileInputFilesResult]()) + c.commandParamsSchemas["DOM.setNodeStackTracesEnabled"] = abxjsonschema.SchemaFor[DOMSetNodeStackTracesEnabledParams]() + c.commandResultSchemas["DOM.setNodeStackTracesEnabled"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSetNodeStackTracesEnabledResult]()) + c.commandParamsSchemas["DOM.getNodeStackTraces"] = abxjsonschema.SchemaFor[DOMGetNodeStackTracesParams]() + c.commandResultSchemas["DOM.getNodeStackTraces"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetNodeStackTracesResult]()) + c.commandParamsSchemas["DOM.getFileInfo"] = abxjsonschema.SchemaFor[DOMGetFileInfoParams]() + c.commandResultSchemas["DOM.getFileInfo"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetFileInfoResult]()) + c.commandParamsSchemas["DOM.getDetachedDomNodes"] = abxjsonschema.SchemaFor[DOMGetDetachedDOMNodesParams]() + c.commandResultSchemas["DOM.getDetachedDomNodes"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetDetachedDOMNodesResult]()) + c.commandParamsSchemas["DOM.setInspectedNode"] = abxjsonschema.SchemaFor[DOMSetInspectedNodeParams]() + c.commandResultSchemas["DOM.setInspectedNode"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSetInspectedNodeResult]()) + c.commandParamsSchemas["DOM.setNodeName"] = abxjsonschema.SchemaFor[DOMSetNodeNameParams]() + c.commandResultSchemas["DOM.setNodeName"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSetNodeNameResult]()) + c.commandParamsSchemas["DOM.setNodeValue"] = abxjsonschema.SchemaFor[DOMSetNodeValueParams]() + c.commandResultSchemas["DOM.setNodeValue"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSetNodeValueResult]()) + c.commandParamsSchemas["DOM.setOuterHTML"] = abxjsonschema.SchemaFor[DOMSetOuterHTMLParams]() + c.commandResultSchemas["DOM.setOuterHTML"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSetOuterHTMLResult]()) + c.commandParamsSchemas["DOM.undo"] = abxjsonschema.SchemaFor[DOMUndoParams]() + c.commandResultSchemas["DOM.undo"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMUndoResult]()) + c.commandParamsSchemas["DOM.getFrameOwner"] = abxjsonschema.SchemaFor[DOMGetFrameOwnerParams]() + c.commandResultSchemas["DOM.getFrameOwner"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetFrameOwnerResult]()) + c.commandParamsSchemas["DOM.getContainerForNode"] = abxjsonschema.SchemaFor[DOMGetContainerForNodeParams]() + c.commandResultSchemas["DOM.getContainerForNode"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetContainerForNodeResult]()) + c.commandParamsSchemas["DOM.getQueryingDescendantsForContainer"] = abxjsonschema.SchemaFor[DOMGetQueryingDescendantsForContainerParams]() + c.commandResultSchemas["DOM.getQueryingDescendantsForContainer"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetQueryingDescendantsForContainerResult]()) + c.commandParamsSchemas["DOM.getAnchorElement"] = abxjsonschema.SchemaFor[DOMGetAnchorElementParams]() + c.commandResultSchemas["DOM.getAnchorElement"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMGetAnchorElementResult]()) + c.commandParamsSchemas["DOM.forceShowPopover"] = abxjsonschema.SchemaFor[DOMForceShowPopoverParams]() + c.commandResultSchemas["DOM.forceShowPopover"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMForceShowPopoverResult]()) + c.commandParamsSchemas["DOMDebugger.getEventListeners"] = abxjsonschema.SchemaFor[DOMDebuggerGetEventListenersParams]() + c.commandResultSchemas["DOMDebugger.getEventListeners"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDebuggerGetEventListenersResult]()) + c.commandParamsSchemas["DOMDebugger.removeDOMBreakpoint"] = abxjsonschema.SchemaFor[DOMDebuggerRemoveDOMBreakpointParams]() + c.commandResultSchemas["DOMDebugger.removeDOMBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDebuggerRemoveDOMBreakpointResult]()) + c.commandParamsSchemas["DOMDebugger.removeEventListenerBreakpoint"] = abxjsonschema.SchemaFor[DOMDebuggerRemoveEventListenerBreakpointParams]() + c.commandResultSchemas["DOMDebugger.removeEventListenerBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDebuggerRemoveEventListenerBreakpointResult]()) + c.commandParamsSchemas["DOMDebugger.removeInstrumentationBreakpoint"] = abxjsonschema.SchemaFor[DOMDebuggerRemoveInstrumentationBreakpointParams]() + c.commandResultSchemas["DOMDebugger.removeInstrumentationBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDebuggerRemoveInstrumentationBreakpointResult]()) + c.commandParamsSchemas["DOMDebugger.removeXHRBreakpoint"] = abxjsonschema.SchemaFor[DOMDebuggerRemoveXHRBreakpointParams]() + c.commandResultSchemas["DOMDebugger.removeXHRBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDebuggerRemoveXHRBreakpointResult]()) + c.commandParamsSchemas["DOMDebugger.setBreakOnCSPViolation"] = abxjsonschema.SchemaFor[DOMDebuggerSetBreakOnCSPViolationParams]() + c.commandResultSchemas["DOMDebugger.setBreakOnCSPViolation"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDebuggerSetBreakOnCSPViolationResult]()) + c.commandParamsSchemas["DOMDebugger.setDOMBreakpoint"] = abxjsonschema.SchemaFor[DOMDebuggerSetDOMBreakpointParams]() + c.commandResultSchemas["DOMDebugger.setDOMBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDebuggerSetDOMBreakpointResult]()) + c.commandParamsSchemas["DOMDebugger.setEventListenerBreakpoint"] = abxjsonschema.SchemaFor[DOMDebuggerSetEventListenerBreakpointParams]() + c.commandResultSchemas["DOMDebugger.setEventListenerBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDebuggerSetEventListenerBreakpointResult]()) + c.commandParamsSchemas["DOMDebugger.setInstrumentationBreakpoint"] = abxjsonschema.SchemaFor[DOMDebuggerSetInstrumentationBreakpointParams]() + c.commandResultSchemas["DOMDebugger.setInstrumentationBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDebuggerSetInstrumentationBreakpointResult]()) + c.commandParamsSchemas["DOMDebugger.setXHRBreakpoint"] = abxjsonschema.SchemaFor[DOMDebuggerSetXHRBreakpointParams]() + c.commandResultSchemas["DOMDebugger.setXHRBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDebuggerSetXHRBreakpointResult]()) + c.commandParamsSchemas["DOMSnapshot.disable"] = abxjsonschema.SchemaFor[DOMSnapshotDisableParams]() + c.commandResultSchemas["DOMSnapshot.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSnapshotDisableResult]()) + c.commandParamsSchemas["DOMSnapshot.enable"] = abxjsonschema.SchemaFor[DOMSnapshotEnableParams]() + c.commandResultSchemas["DOMSnapshot.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSnapshotEnableResult]()) + c.commandParamsSchemas["DOMSnapshot.getSnapshot"] = abxjsonschema.SchemaFor[DOMSnapshotGetSnapshotParams]() + c.commandResultSchemas["DOMSnapshot.getSnapshot"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSnapshotGetSnapshotResult]()) + c.commandParamsSchemas["DOMSnapshot.captureSnapshot"] = abxjsonschema.SchemaFor[DOMSnapshotCaptureSnapshotParams]() + c.commandResultSchemas["DOMSnapshot.captureSnapshot"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSnapshotCaptureSnapshotResult]()) + c.commandParamsSchemas["DOMStorage.clear"] = abxjsonschema.SchemaFor[DOMStorageClearParams]() + c.commandResultSchemas["DOMStorage.clear"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMStorageClearResult]()) + c.commandParamsSchemas["DOMStorage.disable"] = abxjsonschema.SchemaFor[DOMStorageDisableParams]() + c.commandResultSchemas["DOMStorage.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMStorageDisableResult]()) + c.commandParamsSchemas["DOMStorage.enable"] = abxjsonschema.SchemaFor[DOMStorageEnableParams]() + c.commandResultSchemas["DOMStorage.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMStorageEnableResult]()) + c.commandParamsSchemas["DOMStorage.getDOMStorageItems"] = abxjsonschema.SchemaFor[DOMStorageGetDOMStorageItemsParams]() + c.commandResultSchemas["DOMStorage.getDOMStorageItems"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMStorageGetDOMStorageItemsResult]()) + c.commandParamsSchemas["DOMStorage.removeDOMStorageItem"] = abxjsonschema.SchemaFor[DOMStorageRemoveDOMStorageItemParams]() + c.commandResultSchemas["DOMStorage.removeDOMStorageItem"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMStorageRemoveDOMStorageItemResult]()) + c.commandParamsSchemas["DOMStorage.setDOMStorageItem"] = abxjsonschema.SchemaFor[DOMStorageSetDOMStorageItemParams]() + c.commandResultSchemas["DOMStorage.setDOMStorageItem"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMStorageSetDOMStorageItemResult]()) + c.commandParamsSchemas["Debugger.continueToLocation"] = abxjsonschema.SchemaFor[DebuggerContinueToLocationParams]() + c.commandResultSchemas["Debugger.continueToLocation"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerContinueToLocationResult]()) + c.commandParamsSchemas["Debugger.disable"] = abxjsonschema.SchemaFor[DebuggerDisableParams]() + c.commandResultSchemas["Debugger.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerDisableResult]()) + c.commandParamsSchemas["Debugger.enable"] = abxjsonschema.SchemaFor[DebuggerEnableParams]() + c.commandResultSchemas["Debugger.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerEnableResult]()) + c.commandParamsSchemas["Debugger.evaluateOnCallFrame"] = abxjsonschema.SchemaFor[DebuggerEvaluateOnCallFrameParams]() + c.commandResultSchemas["Debugger.evaluateOnCallFrame"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerEvaluateOnCallFrameResult]()) + c.commandParamsSchemas["Debugger.getPossibleBreakpoints"] = abxjsonschema.SchemaFor[DebuggerGetPossibleBreakpointsParams]() + c.commandResultSchemas["Debugger.getPossibleBreakpoints"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerGetPossibleBreakpointsResult]()) + c.commandParamsSchemas["Debugger.getScriptSource"] = abxjsonschema.SchemaFor[DebuggerGetScriptSourceParams]() + c.commandResultSchemas["Debugger.getScriptSource"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerGetScriptSourceResult]()) + c.commandParamsSchemas["Debugger.disassembleWasmModule"] = abxjsonschema.SchemaFor[DebuggerDisassembleWasmModuleParams]() + c.commandResultSchemas["Debugger.disassembleWasmModule"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerDisassembleWasmModuleResult]()) + c.commandParamsSchemas["Debugger.nextWasmDisassemblyChunk"] = abxjsonschema.SchemaFor[DebuggerNextWasmDisassemblyChunkParams]() + c.commandResultSchemas["Debugger.nextWasmDisassemblyChunk"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerNextWasmDisassemblyChunkResult]()) + c.commandParamsSchemas["Debugger.getWasmBytecode"] = abxjsonschema.SchemaFor[DebuggerGetWasmBytecodeParams]() + c.commandResultSchemas["Debugger.getWasmBytecode"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerGetWasmBytecodeResult]()) + c.commandParamsSchemas["Debugger.getStackTrace"] = abxjsonschema.SchemaFor[DebuggerGetStackTraceParams]() + c.commandResultSchemas["Debugger.getStackTrace"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerGetStackTraceResult]()) + c.commandParamsSchemas["Debugger.pause"] = abxjsonschema.SchemaFor[DebuggerPauseParams]() + c.commandResultSchemas["Debugger.pause"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerPauseResult]()) + c.commandParamsSchemas["Debugger.pauseOnAsyncCall"] = abxjsonschema.SchemaFor[DebuggerPauseOnAsyncCallParams]() + c.commandResultSchemas["Debugger.pauseOnAsyncCall"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerPauseOnAsyncCallResult]()) + c.commandParamsSchemas["Debugger.removeBreakpoint"] = abxjsonschema.SchemaFor[DebuggerRemoveBreakpointParams]() + c.commandResultSchemas["Debugger.removeBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerRemoveBreakpointResult]()) + c.commandParamsSchemas["Debugger.restartFrame"] = abxjsonschema.SchemaFor[DebuggerRestartFrameParams]() + c.commandResultSchemas["Debugger.restartFrame"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerRestartFrameResult]()) + c.commandParamsSchemas["Debugger.resume"] = abxjsonschema.SchemaFor[DebuggerResumeParams]() + c.commandResultSchemas["Debugger.resume"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerResumeResult]()) + c.commandParamsSchemas["Debugger.searchInContent"] = abxjsonschema.SchemaFor[DebuggerSearchInContentParams]() + c.commandResultSchemas["Debugger.searchInContent"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSearchInContentResult]()) + c.commandParamsSchemas["Debugger.setAsyncCallStackDepth"] = abxjsonschema.SchemaFor[DebuggerSetAsyncCallStackDepthParams]() + c.commandResultSchemas["Debugger.setAsyncCallStackDepth"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetAsyncCallStackDepthResult]()) + c.commandParamsSchemas["Debugger.setBlackboxExecutionContexts"] = abxjsonschema.SchemaFor[DebuggerSetBlackboxExecutionContextsParams]() + c.commandResultSchemas["Debugger.setBlackboxExecutionContexts"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetBlackboxExecutionContextsResult]()) + c.commandParamsSchemas["Debugger.setBlackboxPatterns"] = abxjsonschema.SchemaFor[DebuggerSetBlackboxPatternsParams]() + c.commandResultSchemas["Debugger.setBlackboxPatterns"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetBlackboxPatternsResult]()) + c.commandParamsSchemas["Debugger.setBlackboxedRanges"] = abxjsonschema.SchemaFor[DebuggerSetBlackboxedRangesParams]() + c.commandResultSchemas["Debugger.setBlackboxedRanges"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetBlackboxedRangesResult]()) + c.commandParamsSchemas["Debugger.setBreakpoint"] = abxjsonschema.SchemaFor[DebuggerSetBreakpointParams]() + c.commandResultSchemas["Debugger.setBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetBreakpointResult]()) + c.commandParamsSchemas["Debugger.setInstrumentationBreakpoint"] = abxjsonschema.SchemaFor[DebuggerSetInstrumentationBreakpointParams]() + c.commandResultSchemas["Debugger.setInstrumentationBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetInstrumentationBreakpointResult]()) + c.commandParamsSchemas["Debugger.setBreakpointByUrl"] = abxjsonschema.SchemaFor[DebuggerSetBreakpointByURLParams]() + c.commandResultSchemas["Debugger.setBreakpointByUrl"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetBreakpointByURLResult]()) + c.commandParamsSchemas["Debugger.setBreakpointOnFunctionCall"] = abxjsonschema.SchemaFor[DebuggerSetBreakpointOnFunctionCallParams]() + c.commandResultSchemas["Debugger.setBreakpointOnFunctionCall"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetBreakpointOnFunctionCallResult]()) + c.commandParamsSchemas["Debugger.setBreakpointsActive"] = abxjsonschema.SchemaFor[DebuggerSetBreakpointsActiveParams]() + c.commandResultSchemas["Debugger.setBreakpointsActive"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetBreakpointsActiveResult]()) + c.commandParamsSchemas["Debugger.setPauseOnExceptions"] = abxjsonschema.SchemaFor[DebuggerSetPauseOnExceptionsParams]() + c.commandResultSchemas["Debugger.setPauseOnExceptions"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetPauseOnExceptionsResult]()) + c.commandParamsSchemas["Debugger.setReturnValue"] = abxjsonschema.SchemaFor[DebuggerSetReturnValueParams]() + c.commandResultSchemas["Debugger.setReturnValue"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetReturnValueResult]()) + c.commandParamsSchemas["Debugger.setScriptSource"] = abxjsonschema.SchemaFor[DebuggerSetScriptSourceParams]() + c.commandResultSchemas["Debugger.setScriptSource"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetScriptSourceResult]()) + c.commandParamsSchemas["Debugger.setSkipAllPauses"] = abxjsonschema.SchemaFor[DebuggerSetSkipAllPausesParams]() + c.commandResultSchemas["Debugger.setSkipAllPauses"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetSkipAllPausesResult]()) + c.commandParamsSchemas["Debugger.setVariableValue"] = abxjsonschema.SchemaFor[DebuggerSetVariableValueParams]() + c.commandResultSchemas["Debugger.setVariableValue"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerSetVariableValueResult]()) + c.commandParamsSchemas["Debugger.stepInto"] = abxjsonschema.SchemaFor[DebuggerStepIntoParams]() + c.commandResultSchemas["Debugger.stepInto"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerStepIntoResult]()) + c.commandParamsSchemas["Debugger.stepOut"] = abxjsonschema.SchemaFor[DebuggerStepOutParams]() + c.commandResultSchemas["Debugger.stepOut"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerStepOutResult]()) + c.commandParamsSchemas["Debugger.stepOver"] = abxjsonschema.SchemaFor[DebuggerStepOverParams]() + c.commandResultSchemas["Debugger.stepOver"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerStepOverResult]()) + c.commandParamsSchemas["DeviceAccess.enable"] = abxjsonschema.SchemaFor[DeviceAccessEnableParams]() + c.commandResultSchemas["DeviceAccess.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[DeviceAccessEnableResult]()) + c.commandParamsSchemas["DeviceAccess.disable"] = abxjsonschema.SchemaFor[DeviceAccessDisableParams]() + c.commandResultSchemas["DeviceAccess.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[DeviceAccessDisableResult]()) + c.commandParamsSchemas["DeviceAccess.selectPrompt"] = abxjsonschema.SchemaFor[DeviceAccessSelectPromptParams]() + c.commandResultSchemas["DeviceAccess.selectPrompt"] = nativeResultSchema(abxjsonschema.SchemaFor[DeviceAccessSelectPromptResult]()) + c.commandParamsSchemas["DeviceAccess.cancelPrompt"] = abxjsonschema.SchemaFor[DeviceAccessCancelPromptParams]() + c.commandResultSchemas["DeviceAccess.cancelPrompt"] = nativeResultSchema(abxjsonschema.SchemaFor[DeviceAccessCancelPromptResult]()) + c.commandParamsSchemas["DeviceOrientation.clearDeviceOrientationOverride"] = abxjsonschema.SchemaFor[DeviceOrientationClearDeviceOrientationOverrideParams]() + c.commandResultSchemas["DeviceOrientation.clearDeviceOrientationOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[DeviceOrientationClearDeviceOrientationOverrideResult]()) + c.commandParamsSchemas["DeviceOrientation.setDeviceOrientationOverride"] = abxjsonschema.SchemaFor[DeviceOrientationSetDeviceOrientationOverrideParams]() + c.commandResultSchemas["DeviceOrientation.setDeviceOrientationOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[DeviceOrientationSetDeviceOrientationOverrideResult]()) + c.commandParamsSchemas["Emulation.canEmulate"] = abxjsonschema.SchemaFor[EmulationCanEmulateParams]() + c.commandResultSchemas["Emulation.canEmulate"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationCanEmulateResult]()) + c.commandParamsSchemas["Emulation.clearDeviceMetricsOverride"] = abxjsonschema.SchemaFor[EmulationClearDeviceMetricsOverrideParams]() + c.commandResultSchemas["Emulation.clearDeviceMetricsOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationClearDeviceMetricsOverrideResult]()) + c.commandParamsSchemas["Emulation.clearGeolocationOverride"] = abxjsonschema.SchemaFor[EmulationClearGeolocationOverrideParams]() + c.commandResultSchemas["Emulation.clearGeolocationOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationClearGeolocationOverrideResult]()) + c.commandParamsSchemas["Emulation.resetPageScaleFactor"] = abxjsonschema.SchemaFor[EmulationResetPageScaleFactorParams]() + c.commandResultSchemas["Emulation.resetPageScaleFactor"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationResetPageScaleFactorResult]()) + c.commandParamsSchemas["Emulation.setFocusEmulationEnabled"] = abxjsonschema.SchemaFor[EmulationSetFocusEmulationEnabledParams]() + c.commandResultSchemas["Emulation.setFocusEmulationEnabled"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetFocusEmulationEnabledResult]()) + c.commandParamsSchemas["Emulation.setAutoDarkModeOverride"] = abxjsonschema.SchemaFor[EmulationSetAutoDarkModeOverrideParams]() + c.commandResultSchemas["Emulation.setAutoDarkModeOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetAutoDarkModeOverrideResult]()) + c.commandParamsSchemas["Emulation.setCPUThrottlingRate"] = abxjsonschema.SchemaFor[EmulationSetCPUThrottlingRateParams]() + c.commandResultSchemas["Emulation.setCPUThrottlingRate"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetCPUThrottlingRateResult]()) + c.commandParamsSchemas["Emulation.setDefaultBackgroundColorOverride"] = abxjsonschema.SchemaFor[EmulationSetDefaultBackgroundColorOverrideParams]() + c.commandResultSchemas["Emulation.setDefaultBackgroundColorOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetDefaultBackgroundColorOverrideResult]()) + c.commandParamsSchemas["Emulation.setSafeAreaInsetsOverride"] = abxjsonschema.SchemaFor[EmulationSetSafeAreaInsetsOverrideParams]() + c.commandResultSchemas["Emulation.setSafeAreaInsetsOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetSafeAreaInsetsOverrideResult]()) + c.commandParamsSchemas["Emulation.setDeviceMetricsOverride"] = abxjsonschema.SchemaFor[EmulationSetDeviceMetricsOverrideParams]() + c.commandResultSchemas["Emulation.setDeviceMetricsOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetDeviceMetricsOverrideResult]()) + c.commandParamsSchemas["Emulation.setDevicePostureOverride"] = abxjsonschema.SchemaFor[EmulationSetDevicePostureOverrideParams]() + c.commandResultSchemas["Emulation.setDevicePostureOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetDevicePostureOverrideResult]()) + c.commandParamsSchemas["Emulation.clearDevicePostureOverride"] = abxjsonschema.SchemaFor[EmulationClearDevicePostureOverrideParams]() + c.commandResultSchemas["Emulation.clearDevicePostureOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationClearDevicePostureOverrideResult]()) + c.commandParamsSchemas["Emulation.setDisplayFeaturesOverride"] = abxjsonschema.SchemaFor[EmulationSetDisplayFeaturesOverrideParams]() + c.commandResultSchemas["Emulation.setDisplayFeaturesOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetDisplayFeaturesOverrideResult]()) + c.commandParamsSchemas["Emulation.clearDisplayFeaturesOverride"] = abxjsonschema.SchemaFor[EmulationClearDisplayFeaturesOverrideParams]() + c.commandResultSchemas["Emulation.clearDisplayFeaturesOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationClearDisplayFeaturesOverrideResult]()) + c.commandParamsSchemas["Emulation.setScrollbarsHidden"] = abxjsonschema.SchemaFor[EmulationSetScrollbarsHiddenParams]() + c.commandResultSchemas["Emulation.setScrollbarsHidden"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetScrollbarsHiddenResult]()) + c.commandParamsSchemas["Emulation.setDocumentCookieDisabled"] = abxjsonschema.SchemaFor[EmulationSetDocumentCookieDisabledParams]() + c.commandResultSchemas["Emulation.setDocumentCookieDisabled"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetDocumentCookieDisabledResult]()) + c.commandParamsSchemas["Emulation.setEmitTouchEventsForMouse"] = abxjsonschema.SchemaFor[EmulationSetEmitTouchEventsForMouseParams]() + c.commandResultSchemas["Emulation.setEmitTouchEventsForMouse"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetEmitTouchEventsForMouseResult]()) + c.commandParamsSchemas["Emulation.setEmulatedMedia"] = abxjsonschema.SchemaFor[EmulationSetEmulatedMediaParams]() + c.commandResultSchemas["Emulation.setEmulatedMedia"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetEmulatedMediaResult]()) + c.commandParamsSchemas["Emulation.setEmulatedVisionDeficiency"] = abxjsonschema.SchemaFor[EmulationSetEmulatedVisionDeficiencyParams]() + c.commandResultSchemas["Emulation.setEmulatedVisionDeficiency"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetEmulatedVisionDeficiencyResult]()) + c.commandParamsSchemas["Emulation.setEmulatedOSTextScale"] = abxjsonschema.SchemaFor[EmulationSetEmulatedOSTextScaleParams]() + c.commandResultSchemas["Emulation.setEmulatedOSTextScale"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetEmulatedOSTextScaleResult]()) + c.commandParamsSchemas["Emulation.setGeolocationOverride"] = abxjsonschema.SchemaFor[EmulationSetGeolocationOverrideParams]() + c.commandResultSchemas["Emulation.setGeolocationOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetGeolocationOverrideResult]()) + c.commandParamsSchemas["Emulation.getOverriddenSensorInformation"] = abxjsonschema.SchemaFor[EmulationGetOverriddenSensorInformationParams]() + c.commandResultSchemas["Emulation.getOverriddenSensorInformation"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationGetOverriddenSensorInformationResult]()) + c.commandParamsSchemas["Emulation.setSensorOverrideEnabled"] = abxjsonschema.SchemaFor[EmulationSetSensorOverrideEnabledParams]() + c.commandResultSchemas["Emulation.setSensorOverrideEnabled"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetSensorOverrideEnabledResult]()) + c.commandParamsSchemas["Emulation.setSensorOverrideReadings"] = abxjsonschema.SchemaFor[EmulationSetSensorOverrideReadingsParams]() + c.commandResultSchemas["Emulation.setSensorOverrideReadings"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetSensorOverrideReadingsResult]()) + c.commandParamsSchemas["Emulation.setPressureSourceOverrideEnabled"] = abxjsonschema.SchemaFor[EmulationSetPressureSourceOverrideEnabledParams]() + c.commandResultSchemas["Emulation.setPressureSourceOverrideEnabled"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetPressureSourceOverrideEnabledResult]()) + c.commandParamsSchemas["Emulation.setPressureStateOverride"] = abxjsonschema.SchemaFor[EmulationSetPressureStateOverrideParams]() + c.commandResultSchemas["Emulation.setPressureStateOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetPressureStateOverrideResult]()) + c.commandParamsSchemas["Emulation.setPressureDataOverride"] = abxjsonschema.SchemaFor[EmulationSetPressureDataOverrideParams]() + c.commandResultSchemas["Emulation.setPressureDataOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetPressureDataOverrideResult]()) + c.commandParamsSchemas["Emulation.setIdleOverride"] = abxjsonschema.SchemaFor[EmulationSetIdleOverrideParams]() + c.commandResultSchemas["Emulation.setIdleOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetIdleOverrideResult]()) + c.commandParamsSchemas["Emulation.clearIdleOverride"] = abxjsonschema.SchemaFor[EmulationClearIdleOverrideParams]() + c.commandResultSchemas["Emulation.clearIdleOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationClearIdleOverrideResult]()) + c.commandParamsSchemas["Emulation.setNavigatorOverrides"] = abxjsonschema.SchemaFor[EmulationSetNavigatorOverridesParams]() + c.commandResultSchemas["Emulation.setNavigatorOverrides"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetNavigatorOverridesResult]()) + c.commandParamsSchemas["Emulation.setPageScaleFactor"] = abxjsonschema.SchemaFor[EmulationSetPageScaleFactorParams]() + c.commandResultSchemas["Emulation.setPageScaleFactor"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetPageScaleFactorResult]()) + c.commandParamsSchemas["Emulation.setScriptExecutionDisabled"] = abxjsonschema.SchemaFor[EmulationSetScriptExecutionDisabledParams]() + c.commandResultSchemas["Emulation.setScriptExecutionDisabled"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetScriptExecutionDisabledResult]()) + c.commandParamsSchemas["Emulation.setTouchEmulationEnabled"] = abxjsonschema.SchemaFor[EmulationSetTouchEmulationEnabledParams]() + c.commandResultSchemas["Emulation.setTouchEmulationEnabled"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetTouchEmulationEnabledResult]()) + c.commandParamsSchemas["Emulation.setVirtualTimePolicy"] = abxjsonschema.SchemaFor[EmulationSetVirtualTimePolicyParams]() + c.commandResultSchemas["Emulation.setVirtualTimePolicy"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetVirtualTimePolicyResult]()) + c.commandParamsSchemas["Emulation.setLocaleOverride"] = abxjsonschema.SchemaFor[EmulationSetLocaleOverrideParams]() + c.commandResultSchemas["Emulation.setLocaleOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetLocaleOverrideResult]()) + c.commandParamsSchemas["Emulation.setTimezoneOverride"] = abxjsonschema.SchemaFor[EmulationSetTimezoneOverrideParams]() + c.commandResultSchemas["Emulation.setTimezoneOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetTimezoneOverrideResult]()) + c.commandParamsSchemas["Emulation.setVisibleSize"] = abxjsonschema.SchemaFor[EmulationSetVisibleSizeParams]() + c.commandResultSchemas["Emulation.setVisibleSize"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetVisibleSizeResult]()) + c.commandParamsSchemas["Emulation.setDisabledImageTypes"] = abxjsonschema.SchemaFor[EmulationSetDisabledImageTypesParams]() + c.commandResultSchemas["Emulation.setDisabledImageTypes"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetDisabledImageTypesResult]()) + c.commandParamsSchemas["Emulation.setDataSaverOverride"] = abxjsonschema.SchemaFor[EmulationSetDataSaverOverrideParams]() + c.commandResultSchemas["Emulation.setDataSaverOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetDataSaverOverrideResult]()) + c.commandParamsSchemas["Emulation.setHardwareConcurrencyOverride"] = abxjsonschema.SchemaFor[EmulationSetHardwareConcurrencyOverrideParams]() + c.commandResultSchemas["Emulation.setHardwareConcurrencyOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetHardwareConcurrencyOverrideResult]()) + c.commandParamsSchemas["Emulation.setUserAgentOverride"] = abxjsonschema.SchemaFor[EmulationSetUserAgentOverrideParams]() + c.commandResultSchemas["Emulation.setUserAgentOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetUserAgentOverrideResult]()) + c.commandParamsSchemas["Emulation.setAutomationOverride"] = abxjsonschema.SchemaFor[EmulationSetAutomationOverrideParams]() + c.commandResultSchemas["Emulation.setAutomationOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetAutomationOverrideResult]()) + c.commandParamsSchemas["Emulation.setSmallViewportHeightDifferenceOverride"] = abxjsonschema.SchemaFor[EmulationSetSmallViewportHeightDifferenceOverrideParams]() + c.commandResultSchemas["Emulation.setSmallViewportHeightDifferenceOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetSmallViewportHeightDifferenceOverrideResult]()) + c.commandParamsSchemas["Emulation.getScreenInfos"] = abxjsonschema.SchemaFor[EmulationGetScreenInfosParams]() + c.commandResultSchemas["Emulation.getScreenInfos"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationGetScreenInfosResult]()) + c.commandParamsSchemas["Emulation.addScreen"] = abxjsonschema.SchemaFor[EmulationAddScreenParams]() + c.commandResultSchemas["Emulation.addScreen"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationAddScreenResult]()) + c.commandParamsSchemas["Emulation.updateScreen"] = abxjsonschema.SchemaFor[EmulationUpdateScreenParams]() + c.commandResultSchemas["Emulation.updateScreen"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationUpdateScreenResult]()) + c.commandParamsSchemas["Emulation.removeScreen"] = abxjsonschema.SchemaFor[EmulationRemoveScreenParams]() + c.commandResultSchemas["Emulation.removeScreen"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationRemoveScreenResult]()) + c.commandParamsSchemas["Emulation.setPrimaryScreen"] = abxjsonschema.SchemaFor[EmulationSetPrimaryScreenParams]() + c.commandResultSchemas["Emulation.setPrimaryScreen"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationSetPrimaryScreenResult]()) + c.commandParamsSchemas["EventBreakpoints.setInstrumentationBreakpoint"] = abxjsonschema.SchemaFor[EventBreakpointsSetInstrumentationBreakpointParams]() + c.commandResultSchemas["EventBreakpoints.setInstrumentationBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[EventBreakpointsSetInstrumentationBreakpointResult]()) + c.commandParamsSchemas["EventBreakpoints.removeInstrumentationBreakpoint"] = abxjsonschema.SchemaFor[EventBreakpointsRemoveInstrumentationBreakpointParams]() + c.commandResultSchemas["EventBreakpoints.removeInstrumentationBreakpoint"] = nativeResultSchema(abxjsonschema.SchemaFor[EventBreakpointsRemoveInstrumentationBreakpointResult]()) + c.commandParamsSchemas["EventBreakpoints.disable"] = abxjsonschema.SchemaFor[EventBreakpointsDisableParams]() + c.commandResultSchemas["EventBreakpoints.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[EventBreakpointsDisableResult]()) + c.commandParamsSchemas["Extensions.triggerAction"] = abxjsonschema.SchemaFor[ExtensionsTriggerActionParams]() + c.commandResultSchemas["Extensions.triggerAction"] = nativeResultSchema(abxjsonschema.SchemaFor[ExtensionsTriggerActionResult]()) + c.commandParamsSchemas["Extensions.loadUnpacked"] = abxjsonschema.SchemaFor[ExtensionsLoadUnpackedParams]() + c.commandResultSchemas["Extensions.loadUnpacked"] = nativeResultSchema(abxjsonschema.SchemaFor[ExtensionsLoadUnpackedResult]()) + c.commandParamsSchemas["Extensions.getExtensions"] = abxjsonschema.SchemaFor[ExtensionsGetExtensionsParams]() + c.commandResultSchemas["Extensions.getExtensions"] = nativeResultSchema(abxjsonschema.SchemaFor[ExtensionsGetExtensionsResult]()) + c.commandParamsSchemas["Extensions.uninstall"] = abxjsonschema.SchemaFor[ExtensionsUninstallParams]() + c.commandResultSchemas["Extensions.uninstall"] = nativeResultSchema(abxjsonschema.SchemaFor[ExtensionsUninstallResult]()) + c.commandParamsSchemas["Extensions.getStorageItems"] = abxjsonschema.SchemaFor[ExtensionsGetStorageItemsParams]() + c.commandResultSchemas["Extensions.getStorageItems"] = nativeResultSchema(abxjsonschema.SchemaFor[ExtensionsGetStorageItemsResult]()) + c.commandParamsSchemas["Extensions.removeStorageItems"] = abxjsonschema.SchemaFor[ExtensionsRemoveStorageItemsParams]() + c.commandResultSchemas["Extensions.removeStorageItems"] = nativeResultSchema(abxjsonschema.SchemaFor[ExtensionsRemoveStorageItemsResult]()) + c.commandParamsSchemas["Extensions.clearStorageItems"] = abxjsonschema.SchemaFor[ExtensionsClearStorageItemsParams]() + c.commandResultSchemas["Extensions.clearStorageItems"] = nativeResultSchema(abxjsonschema.SchemaFor[ExtensionsClearStorageItemsResult]()) + c.commandParamsSchemas["Extensions.setStorageItems"] = abxjsonschema.SchemaFor[ExtensionsSetStorageItemsParams]() + c.commandResultSchemas["Extensions.setStorageItems"] = nativeResultSchema(abxjsonschema.SchemaFor[ExtensionsSetStorageItemsResult]()) + c.commandParamsSchemas["FedCm.enable"] = abxjsonschema.SchemaFor[FedCmEnableParams]() + c.commandResultSchemas["FedCm.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[FedCmEnableResult]()) + c.commandParamsSchemas["FedCm.disable"] = abxjsonschema.SchemaFor[FedCmDisableParams]() + c.commandResultSchemas["FedCm.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[FedCmDisableResult]()) + c.commandParamsSchemas["FedCm.selectAccount"] = abxjsonschema.SchemaFor[FedCmSelectAccountParams]() + c.commandResultSchemas["FedCm.selectAccount"] = nativeResultSchema(abxjsonschema.SchemaFor[FedCmSelectAccountResult]()) + c.commandParamsSchemas["FedCm.clickDialogButton"] = abxjsonschema.SchemaFor[FedCmClickDialogButtonParams]() + c.commandResultSchemas["FedCm.clickDialogButton"] = nativeResultSchema(abxjsonschema.SchemaFor[FedCmClickDialogButtonResult]()) + c.commandParamsSchemas["FedCm.openUrl"] = abxjsonschema.SchemaFor[FedCmOpenURLParams]() + c.commandResultSchemas["FedCm.openUrl"] = nativeResultSchema(abxjsonschema.SchemaFor[FedCmOpenURLResult]()) + c.commandParamsSchemas["FedCm.dismissDialog"] = abxjsonschema.SchemaFor[FedCmDismissDialogParams]() + c.commandResultSchemas["FedCm.dismissDialog"] = nativeResultSchema(abxjsonschema.SchemaFor[FedCmDismissDialogResult]()) + c.commandParamsSchemas["FedCm.resetCooldown"] = abxjsonschema.SchemaFor[FedCmResetCooldownParams]() + c.commandResultSchemas["FedCm.resetCooldown"] = nativeResultSchema(abxjsonschema.SchemaFor[FedCmResetCooldownResult]()) + c.commandParamsSchemas["Fetch.disable"] = abxjsonschema.SchemaFor[FetchDisableParams]() + c.commandResultSchemas["Fetch.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[FetchDisableResult]()) + c.commandParamsSchemas["Fetch.enable"] = abxjsonschema.SchemaFor[FetchEnableParams]() + c.commandResultSchemas["Fetch.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[FetchEnableResult]()) + c.commandParamsSchemas["Fetch.failRequest"] = abxjsonschema.SchemaFor[FetchFailRequestParams]() + c.commandResultSchemas["Fetch.failRequest"] = nativeResultSchema(abxjsonschema.SchemaFor[FetchFailRequestResult]()) + c.commandParamsSchemas["Fetch.fulfillRequest"] = abxjsonschema.SchemaFor[FetchFulfillRequestParams]() + c.commandResultSchemas["Fetch.fulfillRequest"] = nativeResultSchema(abxjsonschema.SchemaFor[FetchFulfillRequestResult]()) + c.commandParamsSchemas["Fetch.continueRequest"] = abxjsonschema.SchemaFor[FetchContinueRequestParams]() + c.commandResultSchemas["Fetch.continueRequest"] = nativeResultSchema(abxjsonschema.SchemaFor[FetchContinueRequestResult]()) + c.commandParamsSchemas["Fetch.continueWithAuth"] = abxjsonschema.SchemaFor[FetchContinueWithAuthParams]() + c.commandResultSchemas["Fetch.continueWithAuth"] = nativeResultSchema(abxjsonschema.SchemaFor[FetchContinueWithAuthResult]()) + c.commandParamsSchemas["Fetch.continueResponse"] = abxjsonschema.SchemaFor[FetchContinueResponseParams]() + c.commandResultSchemas["Fetch.continueResponse"] = nativeResultSchema(abxjsonschema.SchemaFor[FetchContinueResponseResult]()) + c.commandParamsSchemas["Fetch.getResponseBody"] = abxjsonschema.SchemaFor[FetchGetResponseBodyParams]() + c.commandResultSchemas["Fetch.getResponseBody"] = nativeResultSchema(abxjsonschema.SchemaFor[FetchGetResponseBodyResult]()) + c.commandParamsSchemas["Fetch.takeResponseBodyAsStream"] = abxjsonschema.SchemaFor[FetchTakeResponseBodyAsStreamParams]() + c.commandResultSchemas["Fetch.takeResponseBodyAsStream"] = nativeResultSchema(abxjsonschema.SchemaFor[FetchTakeResponseBodyAsStreamResult]()) + c.commandParamsSchemas["FileSystem.getDirectory"] = abxjsonschema.SchemaFor[FileSystemGetDirectoryParams]() + c.commandResultSchemas["FileSystem.getDirectory"] = nativeResultSchema(abxjsonschema.SchemaFor[FileSystemGetDirectoryResult]()) + c.commandParamsSchemas["HeadlessExperimental.beginFrame"] = abxjsonschema.SchemaFor[HeadlessExperimentalBeginFrameParams]() + c.commandResultSchemas["HeadlessExperimental.beginFrame"] = nativeResultSchema(abxjsonschema.SchemaFor[HeadlessExperimentalBeginFrameResult]()) + c.commandParamsSchemas["HeadlessExperimental.disable"] = abxjsonschema.SchemaFor[HeadlessExperimentalDisableParams]() + c.commandResultSchemas["HeadlessExperimental.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[HeadlessExperimentalDisableResult]()) + c.commandParamsSchemas["HeadlessExperimental.enable"] = abxjsonschema.SchemaFor[HeadlessExperimentalEnableParams]() + c.commandResultSchemas["HeadlessExperimental.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[HeadlessExperimentalEnableResult]()) + c.commandParamsSchemas["HeapProfiler.addInspectedHeapObject"] = abxjsonschema.SchemaFor[HeapProfilerAddInspectedHeapObjectParams]() + c.commandResultSchemas["HeapProfiler.addInspectedHeapObject"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerAddInspectedHeapObjectResult]()) + c.commandParamsSchemas["HeapProfiler.collectGarbage"] = abxjsonschema.SchemaFor[HeapProfilerCollectGarbageParams]() + c.commandResultSchemas["HeapProfiler.collectGarbage"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerCollectGarbageResult]()) + c.commandParamsSchemas["HeapProfiler.disable"] = abxjsonschema.SchemaFor[HeapProfilerDisableParams]() + c.commandResultSchemas["HeapProfiler.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerDisableResult]()) + c.commandParamsSchemas["HeapProfiler.enable"] = abxjsonschema.SchemaFor[HeapProfilerEnableParams]() + c.commandResultSchemas["HeapProfiler.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerEnableResult]()) + c.commandParamsSchemas["HeapProfiler.getHeapObjectId"] = abxjsonschema.SchemaFor[HeapProfilerGetHeapObjectIDParams]() + c.commandResultSchemas["HeapProfiler.getHeapObjectId"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerGetHeapObjectIDResult]()) + c.commandParamsSchemas["HeapProfiler.getObjectByHeapObjectId"] = abxjsonschema.SchemaFor[HeapProfilerGetObjectByHeapObjectIDParams]() + c.commandResultSchemas["HeapProfiler.getObjectByHeapObjectId"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerGetObjectByHeapObjectIDResult]()) + c.commandParamsSchemas["HeapProfiler.getSamplingProfile"] = abxjsonschema.SchemaFor[HeapProfilerGetSamplingProfileParams]() + c.commandResultSchemas["HeapProfiler.getSamplingProfile"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerGetSamplingProfileResult]()) + c.commandParamsSchemas["HeapProfiler.startSampling"] = abxjsonschema.SchemaFor[HeapProfilerStartSamplingParams]() + c.commandResultSchemas["HeapProfiler.startSampling"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerStartSamplingResult]()) + c.commandParamsSchemas["HeapProfiler.startTrackingHeapObjects"] = abxjsonschema.SchemaFor[HeapProfilerStartTrackingHeapObjectsParams]() + c.commandResultSchemas["HeapProfiler.startTrackingHeapObjects"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerStartTrackingHeapObjectsResult]()) + c.commandParamsSchemas["HeapProfiler.stopSampling"] = abxjsonschema.SchemaFor[HeapProfilerStopSamplingParams]() + c.commandResultSchemas["HeapProfiler.stopSampling"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerStopSamplingResult]()) + c.commandParamsSchemas["HeapProfiler.stopTrackingHeapObjects"] = abxjsonschema.SchemaFor[HeapProfilerStopTrackingHeapObjectsParams]() + c.commandResultSchemas["HeapProfiler.stopTrackingHeapObjects"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerStopTrackingHeapObjectsResult]()) + c.commandParamsSchemas["HeapProfiler.takeHeapSnapshot"] = abxjsonschema.SchemaFor[HeapProfilerTakeHeapSnapshotParams]() + c.commandResultSchemas["HeapProfiler.takeHeapSnapshot"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerTakeHeapSnapshotResult]()) + c.commandParamsSchemas["IO.close"] = abxjsonschema.SchemaFor[IOCloseParams]() + c.commandResultSchemas["IO.close"] = nativeResultSchema(abxjsonschema.SchemaFor[IOCloseResult]()) + c.commandParamsSchemas["IO.read"] = abxjsonschema.SchemaFor[IOReadParams]() + c.commandResultSchemas["IO.read"] = nativeResultSchema(abxjsonschema.SchemaFor[IOReadResult]()) + c.commandParamsSchemas["IO.resolveBlob"] = abxjsonschema.SchemaFor[IOResolveBlobParams]() + c.commandResultSchemas["IO.resolveBlob"] = nativeResultSchema(abxjsonschema.SchemaFor[IOResolveBlobResult]()) + c.commandParamsSchemas["IndexedDB.clearObjectStore"] = abxjsonschema.SchemaFor[IndexedDBClearObjectStoreParams]() + c.commandResultSchemas["IndexedDB.clearObjectStore"] = nativeResultSchema(abxjsonschema.SchemaFor[IndexedDBClearObjectStoreResult]()) + c.commandParamsSchemas["IndexedDB.deleteDatabase"] = abxjsonschema.SchemaFor[IndexedDBDeleteDatabaseParams]() + c.commandResultSchemas["IndexedDB.deleteDatabase"] = nativeResultSchema(abxjsonschema.SchemaFor[IndexedDBDeleteDatabaseResult]()) + c.commandParamsSchemas["IndexedDB.deleteObjectStoreEntries"] = abxjsonschema.SchemaFor[IndexedDBDeleteObjectStoreEntriesParams]() + c.commandResultSchemas["IndexedDB.deleteObjectStoreEntries"] = nativeResultSchema(abxjsonschema.SchemaFor[IndexedDBDeleteObjectStoreEntriesResult]()) + c.commandParamsSchemas["IndexedDB.disable"] = abxjsonschema.SchemaFor[IndexedDBDisableParams]() + c.commandResultSchemas["IndexedDB.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[IndexedDBDisableResult]()) + c.commandParamsSchemas["IndexedDB.enable"] = abxjsonschema.SchemaFor[IndexedDBEnableParams]() + c.commandResultSchemas["IndexedDB.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[IndexedDBEnableResult]()) + c.commandParamsSchemas["IndexedDB.requestData"] = abxjsonschema.SchemaFor[IndexedDBRequestDataParams]() + c.commandResultSchemas["IndexedDB.requestData"] = nativeResultSchema(abxjsonschema.SchemaFor[IndexedDBRequestDataResult]()) + c.commandParamsSchemas["IndexedDB.getMetadata"] = abxjsonschema.SchemaFor[IndexedDBGetMetadataParams]() + c.commandResultSchemas["IndexedDB.getMetadata"] = nativeResultSchema(abxjsonschema.SchemaFor[IndexedDBGetMetadataResult]()) + c.commandParamsSchemas["IndexedDB.requestDatabase"] = abxjsonschema.SchemaFor[IndexedDBRequestDatabaseParams]() + c.commandResultSchemas["IndexedDB.requestDatabase"] = nativeResultSchema(abxjsonschema.SchemaFor[IndexedDBRequestDatabaseResult]()) + c.commandParamsSchemas["IndexedDB.requestDatabaseNames"] = abxjsonschema.SchemaFor[IndexedDBRequestDatabaseNamesParams]() + c.commandResultSchemas["IndexedDB.requestDatabaseNames"] = nativeResultSchema(abxjsonschema.SchemaFor[IndexedDBRequestDatabaseNamesResult]()) + c.commandParamsSchemas["Input.dispatchDragEvent"] = abxjsonschema.SchemaFor[InputDispatchDragEventParams]() + c.commandResultSchemas["Input.dispatchDragEvent"] = nativeResultSchema(abxjsonschema.SchemaFor[InputDispatchDragEventResult]()) + c.commandParamsSchemas["Input.dispatchKeyEvent"] = abxjsonschema.SchemaFor[InputDispatchKeyEventParams]() + c.commandResultSchemas["Input.dispatchKeyEvent"] = nativeResultSchema(abxjsonschema.SchemaFor[InputDispatchKeyEventResult]()) + c.commandParamsSchemas["Input.insertText"] = abxjsonschema.SchemaFor[InputInsertTextParams]() + c.commandResultSchemas["Input.insertText"] = nativeResultSchema(abxjsonschema.SchemaFor[InputInsertTextResult]()) + c.commandParamsSchemas["Input.imeSetComposition"] = abxjsonschema.SchemaFor[InputImeSetCompositionParams]() + c.commandResultSchemas["Input.imeSetComposition"] = nativeResultSchema(abxjsonschema.SchemaFor[InputImeSetCompositionResult]()) + c.commandParamsSchemas["Input.dispatchMouseEvent"] = abxjsonschema.SchemaFor[InputDispatchMouseEventParams]() + c.commandResultSchemas["Input.dispatchMouseEvent"] = nativeResultSchema(abxjsonschema.SchemaFor[InputDispatchMouseEventResult]()) + c.commandParamsSchemas["Input.dispatchTouchEvent"] = abxjsonschema.SchemaFor[InputDispatchTouchEventParams]() + c.commandResultSchemas["Input.dispatchTouchEvent"] = nativeResultSchema(abxjsonschema.SchemaFor[InputDispatchTouchEventResult]()) + c.commandParamsSchemas["Input.cancelDragging"] = abxjsonschema.SchemaFor[InputCancelDraggingParams]() + c.commandResultSchemas["Input.cancelDragging"] = nativeResultSchema(abxjsonschema.SchemaFor[InputCancelDraggingResult]()) + c.commandParamsSchemas["Input.emulateTouchFromMouseEvent"] = abxjsonschema.SchemaFor[InputEmulateTouchFromMouseEventParams]() + c.commandResultSchemas["Input.emulateTouchFromMouseEvent"] = nativeResultSchema(abxjsonschema.SchemaFor[InputEmulateTouchFromMouseEventResult]()) + c.commandParamsSchemas["Input.setIgnoreInputEvents"] = abxjsonschema.SchemaFor[InputSetIgnoreInputEventsParams]() + c.commandResultSchemas["Input.setIgnoreInputEvents"] = nativeResultSchema(abxjsonschema.SchemaFor[InputSetIgnoreInputEventsResult]()) + c.commandParamsSchemas["Input.setInterceptDrags"] = abxjsonschema.SchemaFor[InputSetInterceptDragsParams]() + c.commandResultSchemas["Input.setInterceptDrags"] = nativeResultSchema(abxjsonschema.SchemaFor[InputSetInterceptDragsResult]()) + c.commandParamsSchemas["Input.synthesizePinchGesture"] = abxjsonschema.SchemaFor[InputSynthesizePinchGestureParams]() + c.commandResultSchemas["Input.synthesizePinchGesture"] = nativeResultSchema(abxjsonschema.SchemaFor[InputSynthesizePinchGestureResult]()) + c.commandParamsSchemas["Input.synthesizeScrollGesture"] = abxjsonschema.SchemaFor[InputSynthesizeScrollGestureParams]() + c.commandResultSchemas["Input.synthesizeScrollGesture"] = nativeResultSchema(abxjsonschema.SchemaFor[InputSynthesizeScrollGestureResult]()) + c.commandParamsSchemas["Input.synthesizeTapGesture"] = abxjsonschema.SchemaFor[InputSynthesizeTapGestureParams]() + c.commandResultSchemas["Input.synthesizeTapGesture"] = nativeResultSchema(abxjsonschema.SchemaFor[InputSynthesizeTapGestureResult]()) + c.commandParamsSchemas["Inspector.disable"] = abxjsonschema.SchemaFor[InspectorDisableParams]() + c.commandResultSchemas["Inspector.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[InspectorDisableResult]()) + c.commandParamsSchemas["Inspector.enable"] = abxjsonschema.SchemaFor[InspectorEnableParams]() + c.commandResultSchemas["Inspector.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[InspectorEnableResult]()) + c.commandParamsSchemas["LayerTree.compositingReasons"] = abxjsonschema.SchemaFor[LayerTreeCompositingReasonsParams]() + c.commandResultSchemas["LayerTree.compositingReasons"] = nativeResultSchema(abxjsonschema.SchemaFor[LayerTreeCompositingReasonsResult]()) + c.commandParamsSchemas["LayerTree.disable"] = abxjsonschema.SchemaFor[LayerTreeDisableParams]() + c.commandResultSchemas["LayerTree.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[LayerTreeDisableResult]()) + c.commandParamsSchemas["LayerTree.enable"] = abxjsonschema.SchemaFor[LayerTreeEnableParams]() + c.commandResultSchemas["LayerTree.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[LayerTreeEnableResult]()) + c.commandParamsSchemas["LayerTree.loadSnapshot"] = abxjsonschema.SchemaFor[LayerTreeLoadSnapshotParams]() + c.commandResultSchemas["LayerTree.loadSnapshot"] = nativeResultSchema(abxjsonschema.SchemaFor[LayerTreeLoadSnapshotResult]()) + c.commandParamsSchemas["LayerTree.makeSnapshot"] = abxjsonschema.SchemaFor[LayerTreeMakeSnapshotParams]() + c.commandResultSchemas["LayerTree.makeSnapshot"] = nativeResultSchema(abxjsonschema.SchemaFor[LayerTreeMakeSnapshotResult]()) + c.commandParamsSchemas["LayerTree.profileSnapshot"] = abxjsonschema.SchemaFor[LayerTreeProfileSnapshotParams]() + c.commandResultSchemas["LayerTree.profileSnapshot"] = nativeResultSchema(abxjsonschema.SchemaFor[LayerTreeProfileSnapshotResult]()) + c.commandParamsSchemas["LayerTree.releaseSnapshot"] = abxjsonschema.SchemaFor[LayerTreeReleaseSnapshotParams]() + c.commandResultSchemas["LayerTree.releaseSnapshot"] = nativeResultSchema(abxjsonschema.SchemaFor[LayerTreeReleaseSnapshotResult]()) + c.commandParamsSchemas["LayerTree.replaySnapshot"] = abxjsonschema.SchemaFor[LayerTreeReplaySnapshotParams]() + c.commandResultSchemas["LayerTree.replaySnapshot"] = nativeResultSchema(abxjsonschema.SchemaFor[LayerTreeReplaySnapshotResult]()) + c.commandParamsSchemas["LayerTree.snapshotCommandLog"] = abxjsonschema.SchemaFor[LayerTreeSnapshotCommandLogParams]() + c.commandResultSchemas["LayerTree.snapshotCommandLog"] = nativeResultSchema(abxjsonschema.SchemaFor[LayerTreeSnapshotCommandLogResult]()) + c.commandParamsSchemas["Log.clear"] = abxjsonschema.SchemaFor[LogClearParams]() + c.commandResultSchemas["Log.clear"] = nativeResultSchema(abxjsonschema.SchemaFor[LogClearResult]()) + c.commandParamsSchemas["Log.disable"] = abxjsonschema.SchemaFor[LogDisableParams]() + c.commandResultSchemas["Log.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[LogDisableResult]()) + c.commandParamsSchemas["Log.enable"] = abxjsonschema.SchemaFor[LogEnableParams]() + c.commandResultSchemas["Log.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[LogEnableResult]()) + c.commandParamsSchemas["Log.startViolationsReport"] = abxjsonschema.SchemaFor[LogStartViolationsReportParams]() + c.commandResultSchemas["Log.startViolationsReport"] = nativeResultSchema(abxjsonschema.SchemaFor[LogStartViolationsReportResult]()) + c.commandParamsSchemas["Log.stopViolationsReport"] = abxjsonschema.SchemaFor[LogStopViolationsReportParams]() + c.commandResultSchemas["Log.stopViolationsReport"] = nativeResultSchema(abxjsonschema.SchemaFor[LogStopViolationsReportResult]()) + c.commandParamsSchemas["Media.enable"] = abxjsonschema.SchemaFor[MediaEnableParams]() + c.commandResultSchemas["Media.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[MediaEnableResult]()) + c.commandParamsSchemas["Media.disable"] = abxjsonschema.SchemaFor[MediaDisableParams]() + c.commandResultSchemas["Media.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[MediaDisableResult]()) + c.commandParamsSchemas["Memory.getDOMCounters"] = abxjsonschema.SchemaFor[MemoryGetDOMCountersParams]() + c.commandResultSchemas["Memory.getDOMCounters"] = nativeResultSchema(abxjsonschema.SchemaFor[MemoryGetDOMCountersResult]()) + c.commandParamsSchemas["Memory.getDOMCountersForLeakDetection"] = abxjsonschema.SchemaFor[MemoryGetDOMCountersForLeakDetectionParams]() + c.commandResultSchemas["Memory.getDOMCountersForLeakDetection"] = nativeResultSchema(abxjsonschema.SchemaFor[MemoryGetDOMCountersForLeakDetectionResult]()) + c.commandParamsSchemas["Memory.prepareForLeakDetection"] = abxjsonschema.SchemaFor[MemoryPrepareForLeakDetectionParams]() + c.commandResultSchemas["Memory.prepareForLeakDetection"] = nativeResultSchema(abxjsonschema.SchemaFor[MemoryPrepareForLeakDetectionResult]()) + c.commandParamsSchemas["Memory.forciblyPurgeJavaScriptMemory"] = abxjsonschema.SchemaFor[MemoryForciblyPurgeJavaScriptMemoryParams]() + c.commandResultSchemas["Memory.forciblyPurgeJavaScriptMemory"] = nativeResultSchema(abxjsonschema.SchemaFor[MemoryForciblyPurgeJavaScriptMemoryResult]()) + c.commandParamsSchemas["Memory.setPressureNotificationsSuppressed"] = abxjsonschema.SchemaFor[MemorySetPressureNotificationsSuppressedParams]() + c.commandResultSchemas["Memory.setPressureNotificationsSuppressed"] = nativeResultSchema(abxjsonschema.SchemaFor[MemorySetPressureNotificationsSuppressedResult]()) + c.commandParamsSchemas["Memory.simulatePressureNotification"] = abxjsonschema.SchemaFor[MemorySimulatePressureNotificationParams]() + c.commandResultSchemas["Memory.simulatePressureNotification"] = nativeResultSchema(abxjsonschema.SchemaFor[MemorySimulatePressureNotificationResult]()) + c.commandParamsSchemas["Memory.startSampling"] = abxjsonschema.SchemaFor[MemoryStartSamplingParams]() + c.commandResultSchemas["Memory.startSampling"] = nativeResultSchema(abxjsonschema.SchemaFor[MemoryStartSamplingResult]()) + c.commandParamsSchemas["Memory.stopSampling"] = abxjsonschema.SchemaFor[MemoryStopSamplingParams]() + c.commandResultSchemas["Memory.stopSampling"] = nativeResultSchema(abxjsonschema.SchemaFor[MemoryStopSamplingResult]()) + c.commandParamsSchemas["Memory.getAllTimeSamplingProfile"] = abxjsonschema.SchemaFor[MemoryGetAllTimeSamplingProfileParams]() + c.commandResultSchemas["Memory.getAllTimeSamplingProfile"] = nativeResultSchema(abxjsonschema.SchemaFor[MemoryGetAllTimeSamplingProfileResult]()) + c.commandParamsSchemas["Memory.getBrowserSamplingProfile"] = abxjsonschema.SchemaFor[MemoryGetBrowserSamplingProfileParams]() + c.commandResultSchemas["Memory.getBrowserSamplingProfile"] = nativeResultSchema(abxjsonschema.SchemaFor[MemoryGetBrowserSamplingProfileResult]()) + c.commandParamsSchemas["Memory.getSamplingProfile"] = abxjsonschema.SchemaFor[MemoryGetSamplingProfileParams]() + c.commandResultSchemas["Memory.getSamplingProfile"] = nativeResultSchema(abxjsonschema.SchemaFor[MemoryGetSamplingProfileResult]()) + c.commandParamsSchemas["Network.setAcceptedEncodings"] = abxjsonschema.SchemaFor[NetworkSetAcceptedEncodingsParams]() + c.commandResultSchemas["Network.setAcceptedEncodings"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSetAcceptedEncodingsResult]()) + c.commandParamsSchemas["Network.clearAcceptedEncodingsOverride"] = abxjsonschema.SchemaFor[NetworkClearAcceptedEncodingsOverrideParams]() + c.commandResultSchemas["Network.clearAcceptedEncodingsOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkClearAcceptedEncodingsOverrideResult]()) + c.commandParamsSchemas["Network.canClearBrowserCache"] = abxjsonschema.SchemaFor[NetworkCanClearBrowserCacheParams]() + c.commandResultSchemas["Network.canClearBrowserCache"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkCanClearBrowserCacheResult]()) + c.commandParamsSchemas["Network.canClearBrowserCookies"] = abxjsonschema.SchemaFor[NetworkCanClearBrowserCookiesParams]() + c.commandResultSchemas["Network.canClearBrowserCookies"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkCanClearBrowserCookiesResult]()) + c.commandParamsSchemas["Network.canEmulateNetworkConditions"] = abxjsonschema.SchemaFor[NetworkCanEmulateNetworkConditionsParams]() + c.commandResultSchemas["Network.canEmulateNetworkConditions"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkCanEmulateNetworkConditionsResult]()) + c.commandParamsSchemas["Network.clearBrowserCache"] = abxjsonschema.SchemaFor[NetworkClearBrowserCacheParams]() + c.commandResultSchemas["Network.clearBrowserCache"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkClearBrowserCacheResult]()) + c.commandParamsSchemas["Network.clearBrowserCookies"] = abxjsonschema.SchemaFor[NetworkClearBrowserCookiesParams]() + c.commandResultSchemas["Network.clearBrowserCookies"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkClearBrowserCookiesResult]()) + c.commandParamsSchemas["Network.continueInterceptedRequest"] = abxjsonschema.SchemaFor[NetworkContinueInterceptedRequestParams]() + c.commandResultSchemas["Network.continueInterceptedRequest"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkContinueInterceptedRequestResult]()) + c.commandParamsSchemas["Network.deleteCookies"] = abxjsonschema.SchemaFor[NetworkDeleteCookiesParams]() + c.commandResultSchemas["Network.deleteCookies"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDeleteCookiesResult]()) + c.commandParamsSchemas["Network.disable"] = abxjsonschema.SchemaFor[NetworkDisableParams]() + c.commandResultSchemas["Network.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDisableResult]()) + c.commandParamsSchemas["Network.emulateNetworkConditions"] = abxjsonschema.SchemaFor[NetworkEmulateNetworkConditionsParams]() + c.commandResultSchemas["Network.emulateNetworkConditions"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkEmulateNetworkConditionsResult]()) + c.commandParamsSchemas["Network.emulateNetworkConditionsByRule"] = abxjsonschema.SchemaFor[NetworkEmulateNetworkConditionsByRuleParams]() + c.commandResultSchemas["Network.emulateNetworkConditionsByRule"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkEmulateNetworkConditionsByRuleResult]()) + c.commandParamsSchemas["Network.overrideNetworkState"] = abxjsonschema.SchemaFor[NetworkOverrideNetworkStateParams]() + c.commandResultSchemas["Network.overrideNetworkState"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkOverrideNetworkStateResult]()) + c.commandParamsSchemas["Network.enable"] = abxjsonschema.SchemaFor[NetworkEnableParams]() + c.commandResultSchemas["Network.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkEnableResult]()) + c.commandParamsSchemas["Network.configureDurableMessages"] = abxjsonschema.SchemaFor[NetworkConfigureDurableMessagesParams]() + c.commandResultSchemas["Network.configureDurableMessages"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkConfigureDurableMessagesResult]()) + c.commandParamsSchemas["Network.getAllCookies"] = abxjsonschema.SchemaFor[NetworkGetAllCookiesParams]() + c.commandResultSchemas["Network.getAllCookies"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkGetAllCookiesResult]()) + c.commandParamsSchemas["Network.getCertificate"] = abxjsonschema.SchemaFor[NetworkGetCertificateParams]() + c.commandResultSchemas["Network.getCertificate"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkGetCertificateResult]()) + c.commandParamsSchemas["Network.getCookies"] = abxjsonschema.SchemaFor[NetworkGetCookiesParams]() + c.commandResultSchemas["Network.getCookies"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkGetCookiesResult]()) + c.commandParamsSchemas["Network.getResponseBody"] = abxjsonschema.SchemaFor[NetworkGetResponseBodyParams]() + c.commandResultSchemas["Network.getResponseBody"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkGetResponseBodyResult]()) + c.commandParamsSchemas["Network.getRequestPostData"] = abxjsonschema.SchemaFor[NetworkGetRequestPostDataParams]() + c.commandResultSchemas["Network.getRequestPostData"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkGetRequestPostDataResult]()) + c.commandParamsSchemas["Network.getResponseBodyForInterception"] = abxjsonschema.SchemaFor[NetworkGetResponseBodyForInterceptionParams]() + c.commandResultSchemas["Network.getResponseBodyForInterception"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkGetResponseBodyForInterceptionResult]()) + c.commandParamsSchemas["Network.takeResponseBodyForInterceptionAsStream"] = abxjsonschema.SchemaFor[NetworkTakeResponseBodyForInterceptionAsStreamParams]() + c.commandResultSchemas["Network.takeResponseBodyForInterceptionAsStream"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkTakeResponseBodyForInterceptionAsStreamResult]()) + c.commandParamsSchemas["Network.replayXHR"] = abxjsonschema.SchemaFor[NetworkReplayXHRParams]() + c.commandResultSchemas["Network.replayXHR"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkReplayXHRResult]()) + c.commandParamsSchemas["Network.searchInResponseBody"] = abxjsonschema.SchemaFor[NetworkSearchInResponseBodyParams]() + c.commandResultSchemas["Network.searchInResponseBody"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSearchInResponseBodyResult]()) + c.commandParamsSchemas["Network.setBlockedURLs"] = abxjsonschema.SchemaFor[NetworkSetBlockedURLsParams]() + c.commandResultSchemas["Network.setBlockedURLs"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSetBlockedURLsResult]()) + c.commandParamsSchemas["Network.setBypassServiceWorker"] = abxjsonschema.SchemaFor[NetworkSetBypassServiceWorkerParams]() + c.commandResultSchemas["Network.setBypassServiceWorker"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSetBypassServiceWorkerResult]()) + c.commandParamsSchemas["Network.setCacheDisabled"] = abxjsonschema.SchemaFor[NetworkSetCacheDisabledParams]() + c.commandResultSchemas["Network.setCacheDisabled"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSetCacheDisabledResult]()) + c.commandParamsSchemas["Network.setCookie"] = abxjsonschema.SchemaFor[NetworkSetCookieParams]() + c.commandResultSchemas["Network.setCookie"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSetCookieResult]()) + c.commandParamsSchemas["Network.setCookies"] = abxjsonschema.SchemaFor[NetworkSetCookiesParams]() + c.commandResultSchemas["Network.setCookies"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSetCookiesResult]()) + c.commandParamsSchemas["Network.setExtraHTTPHeaders"] = abxjsonschema.SchemaFor[NetworkSetExtraHTTPHeadersParams]() + c.commandResultSchemas["Network.setExtraHTTPHeaders"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSetExtraHTTPHeadersResult]()) + c.commandParamsSchemas["Network.setAttachDebugStack"] = abxjsonschema.SchemaFor[NetworkSetAttachDebugStackParams]() + c.commandResultSchemas["Network.setAttachDebugStack"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSetAttachDebugStackResult]()) + c.commandParamsSchemas["Network.setRequestInterception"] = abxjsonschema.SchemaFor[NetworkSetRequestInterceptionParams]() + c.commandResultSchemas["Network.setRequestInterception"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSetRequestInterceptionResult]()) + c.commandParamsSchemas["Network.setUserAgentOverride"] = abxjsonschema.SchemaFor[NetworkSetUserAgentOverrideParams]() + c.commandResultSchemas["Network.setUserAgentOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSetUserAgentOverrideResult]()) + c.commandParamsSchemas["Network.streamResourceContent"] = abxjsonschema.SchemaFor[NetworkStreamResourceContentParams]() + c.commandResultSchemas["Network.streamResourceContent"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkStreamResourceContentResult]()) + c.commandParamsSchemas["Network.getSecurityIsolationStatus"] = abxjsonschema.SchemaFor[NetworkGetSecurityIsolationStatusParams]() + c.commandResultSchemas["Network.getSecurityIsolationStatus"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkGetSecurityIsolationStatusResult]()) + c.commandParamsSchemas["Network.enableReportingApi"] = abxjsonschema.SchemaFor[NetworkEnableReportingAPIParams]() + c.commandResultSchemas["Network.enableReportingApi"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkEnableReportingAPIResult]()) + c.commandParamsSchemas["Network.enableDeviceBoundSessions"] = abxjsonschema.SchemaFor[NetworkEnableDeviceBoundSessionsParams]() + c.commandResultSchemas["Network.enableDeviceBoundSessions"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkEnableDeviceBoundSessionsResult]()) + c.commandParamsSchemas["Network.fetchSchemefulSite"] = abxjsonschema.SchemaFor[NetworkFetchSchemefulSiteParams]() + c.commandResultSchemas["Network.fetchSchemefulSite"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkFetchSchemefulSiteResult]()) + c.commandParamsSchemas["Network.loadNetworkResource"] = abxjsonschema.SchemaFor[NetworkLoadNetworkResourceParams]() + c.commandResultSchemas["Network.loadNetworkResource"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkLoadNetworkResourceResult]()) + c.commandParamsSchemas["Network.setCookieControls"] = abxjsonschema.SchemaFor[NetworkSetCookieControlsParams]() + c.commandResultSchemas["Network.setCookieControls"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSetCookieControlsResult]()) + c.commandParamsSchemas["Overlay.disable"] = abxjsonschema.SchemaFor[OverlayDisableParams]() + c.commandResultSchemas["Overlay.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayDisableResult]()) + c.commandParamsSchemas["Overlay.enable"] = abxjsonschema.SchemaFor[OverlayEnableParams]() + c.commandResultSchemas["Overlay.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayEnableResult]()) + c.commandParamsSchemas["Overlay.getHighlightObjectForTest"] = abxjsonschema.SchemaFor[OverlayGetHighlightObjectForTestParams]() + c.commandResultSchemas["Overlay.getHighlightObjectForTest"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayGetHighlightObjectForTestResult]()) + c.commandParamsSchemas["Overlay.getGridHighlightObjectsForTest"] = abxjsonschema.SchemaFor[OverlayGetGridHighlightObjectsForTestParams]() + c.commandResultSchemas["Overlay.getGridHighlightObjectsForTest"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayGetGridHighlightObjectsForTestResult]()) + c.commandParamsSchemas["Overlay.getSourceOrderHighlightObjectForTest"] = abxjsonschema.SchemaFor[OverlayGetSourceOrderHighlightObjectForTestParams]() + c.commandResultSchemas["Overlay.getSourceOrderHighlightObjectForTest"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayGetSourceOrderHighlightObjectForTestResult]()) + c.commandParamsSchemas["Overlay.hideHighlight"] = abxjsonschema.SchemaFor[OverlayHideHighlightParams]() + c.commandResultSchemas["Overlay.hideHighlight"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayHideHighlightResult]()) + c.commandParamsSchemas["Overlay.highlightFrame"] = abxjsonschema.SchemaFor[OverlayHighlightFrameParams]() + c.commandResultSchemas["Overlay.highlightFrame"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayHighlightFrameResult]()) + c.commandParamsSchemas["Overlay.highlightNode"] = abxjsonschema.SchemaFor[OverlayHighlightNodeParams]() + c.commandResultSchemas["Overlay.highlightNode"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayHighlightNodeResult]()) + c.commandParamsSchemas["Overlay.highlightQuad"] = abxjsonschema.SchemaFor[OverlayHighlightQuadParams]() + c.commandResultSchemas["Overlay.highlightQuad"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayHighlightQuadResult]()) + c.commandParamsSchemas["Overlay.highlightRect"] = abxjsonschema.SchemaFor[OverlayHighlightRectParams]() + c.commandResultSchemas["Overlay.highlightRect"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayHighlightRectResult]()) + c.commandParamsSchemas["Overlay.highlightSourceOrder"] = abxjsonschema.SchemaFor[OverlayHighlightSourceOrderParams]() + c.commandResultSchemas["Overlay.highlightSourceOrder"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayHighlightSourceOrderResult]()) + c.commandParamsSchemas["Overlay.setInspectMode"] = abxjsonschema.SchemaFor[OverlaySetInspectModeParams]() + c.commandResultSchemas["Overlay.setInspectMode"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetInspectModeResult]()) + c.commandParamsSchemas["Overlay.setShowAdHighlights"] = abxjsonschema.SchemaFor[OverlaySetShowAdHighlightsParams]() + c.commandResultSchemas["Overlay.setShowAdHighlights"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowAdHighlightsResult]()) + c.commandParamsSchemas["Overlay.setPausedInDebuggerMessage"] = abxjsonschema.SchemaFor[OverlaySetPausedInDebuggerMessageParams]() + c.commandResultSchemas["Overlay.setPausedInDebuggerMessage"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetPausedInDebuggerMessageResult]()) + c.commandParamsSchemas["Overlay.setShowDebugBorders"] = abxjsonschema.SchemaFor[OverlaySetShowDebugBordersParams]() + c.commandResultSchemas["Overlay.setShowDebugBorders"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowDebugBordersResult]()) + c.commandParamsSchemas["Overlay.setShowFPSCounter"] = abxjsonschema.SchemaFor[OverlaySetShowFPSCounterParams]() + c.commandResultSchemas["Overlay.setShowFPSCounter"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowFPSCounterResult]()) + c.commandParamsSchemas["Overlay.setShowGridOverlays"] = abxjsonschema.SchemaFor[OverlaySetShowGridOverlaysParams]() + c.commandResultSchemas["Overlay.setShowGridOverlays"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowGridOverlaysResult]()) + c.commandParamsSchemas["Overlay.setShowFlexOverlays"] = abxjsonschema.SchemaFor[OverlaySetShowFlexOverlaysParams]() + c.commandResultSchemas["Overlay.setShowFlexOverlays"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowFlexOverlaysResult]()) + c.commandParamsSchemas["Overlay.setShowScrollSnapOverlays"] = abxjsonschema.SchemaFor[OverlaySetShowScrollSnapOverlaysParams]() + c.commandResultSchemas["Overlay.setShowScrollSnapOverlays"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowScrollSnapOverlaysResult]()) + c.commandParamsSchemas["Overlay.setShowContainerQueryOverlays"] = abxjsonschema.SchemaFor[OverlaySetShowContainerQueryOverlaysParams]() + c.commandResultSchemas["Overlay.setShowContainerQueryOverlays"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowContainerQueryOverlaysResult]()) + c.commandParamsSchemas["Overlay.setShowInspectedElementAnchor"] = abxjsonschema.SchemaFor[OverlaySetShowInspectedElementAnchorParams]() + c.commandResultSchemas["Overlay.setShowInspectedElementAnchor"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowInspectedElementAnchorResult]()) + c.commandParamsSchemas["Overlay.setShowPaintRects"] = abxjsonschema.SchemaFor[OverlaySetShowPaintRectsParams]() + c.commandResultSchemas["Overlay.setShowPaintRects"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowPaintRectsResult]()) + c.commandParamsSchemas["Overlay.setShowLayoutShiftRegions"] = abxjsonschema.SchemaFor[OverlaySetShowLayoutShiftRegionsParams]() + c.commandResultSchemas["Overlay.setShowLayoutShiftRegions"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowLayoutShiftRegionsResult]()) + c.commandParamsSchemas["Overlay.setShowScrollBottleneckRects"] = abxjsonschema.SchemaFor[OverlaySetShowScrollBottleneckRectsParams]() + c.commandResultSchemas["Overlay.setShowScrollBottleneckRects"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowScrollBottleneckRectsResult]()) + c.commandParamsSchemas["Overlay.setShowHitTestBorders"] = abxjsonschema.SchemaFor[OverlaySetShowHitTestBordersParams]() + c.commandResultSchemas["Overlay.setShowHitTestBorders"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowHitTestBordersResult]()) + c.commandParamsSchemas["Overlay.setShowWebVitals"] = abxjsonschema.SchemaFor[OverlaySetShowWebVitalsParams]() + c.commandResultSchemas["Overlay.setShowWebVitals"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowWebVitalsResult]()) + c.commandParamsSchemas["Overlay.setShowViewportSizeOnResize"] = abxjsonschema.SchemaFor[OverlaySetShowViewportSizeOnResizeParams]() + c.commandResultSchemas["Overlay.setShowViewportSizeOnResize"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowViewportSizeOnResizeResult]()) + c.commandParamsSchemas["Overlay.setShowHinge"] = abxjsonschema.SchemaFor[OverlaySetShowHingeParams]() + c.commandResultSchemas["Overlay.setShowHinge"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowHingeResult]()) + c.commandParamsSchemas["Overlay.setShowIsolatedElements"] = abxjsonschema.SchemaFor[OverlaySetShowIsolatedElementsParams]() + c.commandResultSchemas["Overlay.setShowIsolatedElements"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowIsolatedElementsResult]()) + c.commandParamsSchemas["Overlay.setShowWindowControlsOverlay"] = abxjsonschema.SchemaFor[OverlaySetShowWindowControlsOverlayParams]() + c.commandResultSchemas["Overlay.setShowWindowControlsOverlay"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlaySetShowWindowControlsOverlayResult]()) + c.commandParamsSchemas["PWA.getOsAppState"] = abxjsonschema.SchemaFor[PWAGetOsAppStateParams]() + c.commandResultSchemas["PWA.getOsAppState"] = nativeResultSchema(abxjsonschema.SchemaFor[PWAGetOsAppStateResult]()) + c.commandParamsSchemas["PWA.install"] = abxjsonschema.SchemaFor[PWAInstallParams]() + c.commandResultSchemas["PWA.install"] = nativeResultSchema(abxjsonschema.SchemaFor[PWAInstallResult]()) + c.commandParamsSchemas["PWA.uninstall"] = abxjsonschema.SchemaFor[PWAUninstallParams]() + c.commandResultSchemas["PWA.uninstall"] = nativeResultSchema(abxjsonschema.SchemaFor[PWAUninstallResult]()) + c.commandParamsSchemas["PWA.launch"] = abxjsonschema.SchemaFor[PWALaunchParams]() + c.commandResultSchemas["PWA.launch"] = nativeResultSchema(abxjsonschema.SchemaFor[PWALaunchResult]()) + c.commandParamsSchemas["PWA.launchFilesInApp"] = abxjsonschema.SchemaFor[PWALaunchFilesInAppParams]() + c.commandResultSchemas["PWA.launchFilesInApp"] = nativeResultSchema(abxjsonschema.SchemaFor[PWALaunchFilesInAppResult]()) + c.commandParamsSchemas["PWA.openCurrentPageInApp"] = abxjsonschema.SchemaFor[PWAOpenCurrentPageInAppParams]() + c.commandResultSchemas["PWA.openCurrentPageInApp"] = nativeResultSchema(abxjsonschema.SchemaFor[PWAOpenCurrentPageInAppResult]()) + c.commandParamsSchemas["PWA.changeAppUserSettings"] = abxjsonschema.SchemaFor[PWAChangeAppUserSettingsParams]() + c.commandResultSchemas["PWA.changeAppUserSettings"] = nativeResultSchema(abxjsonschema.SchemaFor[PWAChangeAppUserSettingsResult]()) + c.commandParamsSchemas["Page.addScriptToEvaluateOnLoad"] = abxjsonschema.SchemaFor[PageAddScriptToEvaluateOnLoadParams]() + c.commandResultSchemas["Page.addScriptToEvaluateOnLoad"] = nativeResultSchema(abxjsonschema.SchemaFor[PageAddScriptToEvaluateOnLoadResult]()) + c.commandParamsSchemas["Page.addScriptToEvaluateOnNewDocument"] = abxjsonschema.SchemaFor[PageAddScriptToEvaluateOnNewDocumentParams]() + c.commandResultSchemas["Page.addScriptToEvaluateOnNewDocument"] = nativeResultSchema(abxjsonschema.SchemaFor[PageAddScriptToEvaluateOnNewDocumentResult]()) + c.commandParamsSchemas["Page.bringToFront"] = abxjsonschema.SchemaFor[PageBringToFrontParams]() + c.commandResultSchemas["Page.bringToFront"] = nativeResultSchema(abxjsonschema.SchemaFor[PageBringToFrontResult]()) + c.commandParamsSchemas["Page.captureScreenshot"] = abxjsonschema.SchemaFor[PageCaptureScreenshotParams]() + c.commandResultSchemas["Page.captureScreenshot"] = nativeResultSchema(abxjsonschema.SchemaFor[PageCaptureScreenshotResult]()) + c.commandParamsSchemas["Page.captureSnapshot"] = abxjsonschema.SchemaFor[PageCaptureSnapshotParams]() + c.commandResultSchemas["Page.captureSnapshot"] = nativeResultSchema(abxjsonschema.SchemaFor[PageCaptureSnapshotResult]()) + c.commandParamsSchemas["Page.clearDeviceMetricsOverride"] = abxjsonschema.SchemaFor[PageClearDeviceMetricsOverrideParams]() + c.commandResultSchemas["Page.clearDeviceMetricsOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[PageClearDeviceMetricsOverrideResult]()) + c.commandParamsSchemas["Page.clearDeviceOrientationOverride"] = abxjsonschema.SchemaFor[PageClearDeviceOrientationOverrideParams]() + c.commandResultSchemas["Page.clearDeviceOrientationOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[PageClearDeviceOrientationOverrideResult]()) + c.commandParamsSchemas["Page.clearGeolocationOverride"] = abxjsonschema.SchemaFor[PageClearGeolocationOverrideParams]() + c.commandResultSchemas["Page.clearGeolocationOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[PageClearGeolocationOverrideResult]()) + c.commandParamsSchemas["Page.createIsolatedWorld"] = abxjsonschema.SchemaFor[PageCreateIsolatedWorldParams]() + c.commandResultSchemas["Page.createIsolatedWorld"] = nativeResultSchema(abxjsonschema.SchemaFor[PageCreateIsolatedWorldResult]()) + c.commandParamsSchemas["Page.deleteCookie"] = abxjsonschema.SchemaFor[PageDeleteCookieParams]() + c.commandResultSchemas["Page.deleteCookie"] = nativeResultSchema(abxjsonschema.SchemaFor[PageDeleteCookieResult]()) + c.commandParamsSchemas["Page.disable"] = abxjsonschema.SchemaFor[PageDisableParams]() + c.commandResultSchemas["Page.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[PageDisableResult]()) + c.commandParamsSchemas["Page.enable"] = abxjsonschema.SchemaFor[PageEnableParams]() + c.commandResultSchemas["Page.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[PageEnableResult]()) + c.commandParamsSchemas["Page.getAppManifest"] = abxjsonschema.SchemaFor[PageGetAppManifestParams]() + c.commandResultSchemas["Page.getAppManifest"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetAppManifestResult]()) + c.commandParamsSchemas["Page.getInstallabilityErrors"] = abxjsonschema.SchemaFor[PageGetInstallabilityErrorsParams]() + c.commandResultSchemas["Page.getInstallabilityErrors"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetInstallabilityErrorsResult]()) + c.commandParamsSchemas["Page.getManifestIcons"] = abxjsonschema.SchemaFor[PageGetManifestIconsParams]() + c.commandResultSchemas["Page.getManifestIcons"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetManifestIconsResult]()) + c.commandParamsSchemas["Page.getAppId"] = abxjsonschema.SchemaFor[PageGetAppIDParams]() + c.commandResultSchemas["Page.getAppId"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetAppIDResult]()) + c.commandParamsSchemas["Page.getAdScriptAncestry"] = abxjsonschema.SchemaFor[PageGetAdScriptAncestryParams]() + c.commandResultSchemas["Page.getAdScriptAncestry"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetAdScriptAncestryResult]()) + c.commandParamsSchemas["Page.getFrameTree"] = abxjsonschema.SchemaFor[PageGetFrameTreeParams]() + c.commandResultSchemas["Page.getFrameTree"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetFrameTreeResult]()) + c.commandParamsSchemas["Page.getLayoutMetrics"] = abxjsonschema.SchemaFor[PageGetLayoutMetricsParams]() + c.commandResultSchemas["Page.getLayoutMetrics"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetLayoutMetricsResult]()) + c.commandParamsSchemas["Page.getNavigationHistory"] = abxjsonschema.SchemaFor[PageGetNavigationHistoryParams]() + c.commandResultSchemas["Page.getNavigationHistory"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetNavigationHistoryResult]()) + c.commandParamsSchemas["Page.resetNavigationHistory"] = abxjsonschema.SchemaFor[PageResetNavigationHistoryParams]() + c.commandResultSchemas["Page.resetNavigationHistory"] = nativeResultSchema(abxjsonschema.SchemaFor[PageResetNavigationHistoryResult]()) + c.commandParamsSchemas["Page.getResourceContent"] = abxjsonschema.SchemaFor[PageGetResourceContentParams]() + c.commandResultSchemas["Page.getResourceContent"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetResourceContentResult]()) + c.commandParamsSchemas["Page.getResourceTree"] = abxjsonschema.SchemaFor[PageGetResourceTreeParams]() + c.commandResultSchemas["Page.getResourceTree"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetResourceTreeResult]()) + c.commandParamsSchemas["Page.handleJavaScriptDialog"] = abxjsonschema.SchemaFor[PageHandleJavaScriptDialogParams]() + c.commandResultSchemas["Page.handleJavaScriptDialog"] = nativeResultSchema(abxjsonschema.SchemaFor[PageHandleJavaScriptDialogResult]()) + c.commandParamsSchemas["Page.navigate"] = abxjsonschema.SchemaFor[PageNavigateParams]() + c.commandResultSchemas["Page.navigate"] = nativeResultSchema(abxjsonschema.SchemaFor[PageNavigateResult]()) + c.commandParamsSchemas["Page.navigateToHistoryEntry"] = abxjsonschema.SchemaFor[PageNavigateToHistoryEntryParams]() + c.commandResultSchemas["Page.navigateToHistoryEntry"] = nativeResultSchema(abxjsonschema.SchemaFor[PageNavigateToHistoryEntryResult]()) + c.commandParamsSchemas["Page.printToPDF"] = abxjsonschema.SchemaFor[PagePrintToPDFParams]() + c.commandResultSchemas["Page.printToPDF"] = nativeResultSchema(abxjsonschema.SchemaFor[PagePrintToPDFResult]()) + c.commandParamsSchemas["Page.reload"] = abxjsonschema.SchemaFor[PageReloadParams]() + c.commandResultSchemas["Page.reload"] = nativeResultSchema(abxjsonschema.SchemaFor[PageReloadResult]()) + c.commandParamsSchemas["Page.removeScriptToEvaluateOnLoad"] = abxjsonschema.SchemaFor[PageRemoveScriptToEvaluateOnLoadParams]() + c.commandResultSchemas["Page.removeScriptToEvaluateOnLoad"] = nativeResultSchema(abxjsonschema.SchemaFor[PageRemoveScriptToEvaluateOnLoadResult]()) + c.commandParamsSchemas["Page.removeScriptToEvaluateOnNewDocument"] = abxjsonschema.SchemaFor[PageRemoveScriptToEvaluateOnNewDocumentParams]() + c.commandResultSchemas["Page.removeScriptToEvaluateOnNewDocument"] = nativeResultSchema(abxjsonschema.SchemaFor[PageRemoveScriptToEvaluateOnNewDocumentResult]()) + c.commandParamsSchemas["Page.screencastFrameAck"] = abxjsonschema.SchemaFor[PageScreencastFrameAckParams]() + c.commandResultSchemas["Page.screencastFrameAck"] = nativeResultSchema(abxjsonschema.SchemaFor[PageScreencastFrameAckResult]()) + c.commandParamsSchemas["Page.searchInResource"] = abxjsonschema.SchemaFor[PageSearchInResourceParams]() + c.commandResultSchemas["Page.searchInResource"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSearchInResourceResult]()) + c.commandParamsSchemas["Page.setAdBlockingEnabled"] = abxjsonschema.SchemaFor[PageSetAdBlockingEnabledParams]() + c.commandResultSchemas["Page.setAdBlockingEnabled"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetAdBlockingEnabledResult]()) + c.commandParamsSchemas["Page.setBypassCSP"] = abxjsonschema.SchemaFor[PageSetBypassCSPParams]() + c.commandResultSchemas["Page.setBypassCSP"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetBypassCSPResult]()) + c.commandParamsSchemas["Page.getPermissionsPolicyState"] = abxjsonschema.SchemaFor[PageGetPermissionsPolicyStateParams]() + c.commandResultSchemas["Page.getPermissionsPolicyState"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetPermissionsPolicyStateResult]()) + c.commandParamsSchemas["Page.getOriginTrials"] = abxjsonschema.SchemaFor[PageGetOriginTrialsParams]() + c.commandResultSchemas["Page.getOriginTrials"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetOriginTrialsResult]()) + c.commandParamsSchemas["Page.setDeviceMetricsOverride"] = abxjsonschema.SchemaFor[PageSetDeviceMetricsOverrideParams]() + c.commandResultSchemas["Page.setDeviceMetricsOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetDeviceMetricsOverrideResult]()) + c.commandParamsSchemas["Page.setDeviceOrientationOverride"] = abxjsonschema.SchemaFor[PageSetDeviceOrientationOverrideParams]() + c.commandResultSchemas["Page.setDeviceOrientationOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetDeviceOrientationOverrideResult]()) + c.commandParamsSchemas["Page.setFontFamilies"] = abxjsonschema.SchemaFor[PageSetFontFamiliesParams]() + c.commandResultSchemas["Page.setFontFamilies"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetFontFamiliesResult]()) + c.commandParamsSchemas["Page.setFontSizes"] = abxjsonschema.SchemaFor[PageSetFontSizesParams]() + c.commandResultSchemas["Page.setFontSizes"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetFontSizesResult]()) + c.commandParamsSchemas["Page.setDocumentContent"] = abxjsonschema.SchemaFor[PageSetDocumentContentParams]() + c.commandResultSchemas["Page.setDocumentContent"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetDocumentContentResult]()) + c.commandParamsSchemas["Page.setDownloadBehavior"] = abxjsonschema.SchemaFor[PageSetDownloadBehaviorParams]() + c.commandResultSchemas["Page.setDownloadBehavior"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetDownloadBehaviorResult]()) + c.commandParamsSchemas["Page.setGeolocationOverride"] = abxjsonschema.SchemaFor[PageSetGeolocationOverrideParams]() + c.commandResultSchemas["Page.setGeolocationOverride"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetGeolocationOverrideResult]()) + c.commandParamsSchemas["Page.setLifecycleEventsEnabled"] = abxjsonschema.SchemaFor[PageSetLifecycleEventsEnabledParams]() + c.commandResultSchemas["Page.setLifecycleEventsEnabled"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetLifecycleEventsEnabledResult]()) + c.commandParamsSchemas["Page.setTouchEmulationEnabled"] = abxjsonschema.SchemaFor[PageSetTouchEmulationEnabledParams]() + c.commandResultSchemas["Page.setTouchEmulationEnabled"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetTouchEmulationEnabledResult]()) + c.commandParamsSchemas["Page.startScreencast"] = abxjsonschema.SchemaFor[PageStartScreencastParams]() + c.commandResultSchemas["Page.startScreencast"] = nativeResultSchema(abxjsonschema.SchemaFor[PageStartScreencastResult]()) + c.commandParamsSchemas["Page.stopLoading"] = abxjsonschema.SchemaFor[PageStopLoadingParams]() + c.commandResultSchemas["Page.stopLoading"] = nativeResultSchema(abxjsonschema.SchemaFor[PageStopLoadingResult]()) + c.commandParamsSchemas["Page.crash"] = abxjsonschema.SchemaFor[PageCrashParams]() + c.commandResultSchemas["Page.crash"] = nativeResultSchema(abxjsonschema.SchemaFor[PageCrashResult]()) + c.commandParamsSchemas["Page.close"] = abxjsonschema.SchemaFor[PageCloseParams]() + c.commandResultSchemas["Page.close"] = nativeResultSchema(abxjsonschema.SchemaFor[PageCloseResult]()) + c.commandParamsSchemas["Page.setWebLifecycleState"] = abxjsonschema.SchemaFor[PageSetWebLifecycleStateParams]() + c.commandResultSchemas["Page.setWebLifecycleState"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetWebLifecycleStateResult]()) + c.commandParamsSchemas["Page.stopScreencast"] = abxjsonschema.SchemaFor[PageStopScreencastParams]() + c.commandResultSchemas["Page.stopScreencast"] = nativeResultSchema(abxjsonschema.SchemaFor[PageStopScreencastResult]()) + c.commandParamsSchemas["Page.produceCompilationCache"] = abxjsonschema.SchemaFor[PageProduceCompilationCacheParams]() + c.commandResultSchemas["Page.produceCompilationCache"] = nativeResultSchema(abxjsonschema.SchemaFor[PageProduceCompilationCacheResult]()) + c.commandParamsSchemas["Page.addCompilationCache"] = abxjsonschema.SchemaFor[PageAddCompilationCacheParams]() + c.commandResultSchemas["Page.addCompilationCache"] = nativeResultSchema(abxjsonschema.SchemaFor[PageAddCompilationCacheResult]()) + c.commandParamsSchemas["Page.clearCompilationCache"] = abxjsonschema.SchemaFor[PageClearCompilationCacheParams]() + c.commandResultSchemas["Page.clearCompilationCache"] = nativeResultSchema(abxjsonschema.SchemaFor[PageClearCompilationCacheResult]()) + c.commandParamsSchemas["Page.setSPCTransactionMode"] = abxjsonschema.SchemaFor[PageSetSPCTransactionModeParams]() + c.commandResultSchemas["Page.setSPCTransactionMode"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetSPCTransactionModeResult]()) + c.commandParamsSchemas["Page.setRPHRegistrationMode"] = abxjsonschema.SchemaFor[PageSetRPHRegistrationModeParams]() + c.commandResultSchemas["Page.setRPHRegistrationMode"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetRPHRegistrationModeResult]()) + c.commandParamsSchemas["Page.generateTestReport"] = abxjsonschema.SchemaFor[PageGenerateTestReportParams]() + c.commandResultSchemas["Page.generateTestReport"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGenerateTestReportResult]()) + c.commandParamsSchemas["Page.waitForDebugger"] = abxjsonschema.SchemaFor[PageWaitForDebuggerParams]() + c.commandResultSchemas["Page.waitForDebugger"] = nativeResultSchema(abxjsonschema.SchemaFor[PageWaitForDebuggerResult]()) + c.commandParamsSchemas["Page.setInterceptFileChooserDialog"] = abxjsonschema.SchemaFor[PageSetInterceptFileChooserDialogParams]() + c.commandResultSchemas["Page.setInterceptFileChooserDialog"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetInterceptFileChooserDialogResult]()) + c.commandParamsSchemas["Page.setPrerenderingAllowed"] = abxjsonschema.SchemaFor[PageSetPrerenderingAllowedParams]() + c.commandResultSchemas["Page.setPrerenderingAllowed"] = nativeResultSchema(abxjsonschema.SchemaFor[PageSetPrerenderingAllowedResult]()) + c.commandParamsSchemas["Page.getAnnotatedPageContent"] = abxjsonschema.SchemaFor[PageGetAnnotatedPageContentParams]() + c.commandResultSchemas["Page.getAnnotatedPageContent"] = nativeResultSchema(abxjsonschema.SchemaFor[PageGetAnnotatedPageContentResult]()) + c.commandParamsSchemas["Performance.disable"] = abxjsonschema.SchemaFor[PerformanceDisableParams]() + c.commandResultSchemas["Performance.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[PerformanceDisableResult]()) + c.commandParamsSchemas["Performance.enable"] = abxjsonschema.SchemaFor[PerformanceEnableParams]() + c.commandResultSchemas["Performance.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[PerformanceEnableResult]()) + c.commandParamsSchemas["Performance.setTimeDomain"] = abxjsonschema.SchemaFor[PerformanceSetTimeDomainParams]() + c.commandResultSchemas["Performance.setTimeDomain"] = nativeResultSchema(abxjsonschema.SchemaFor[PerformanceSetTimeDomainResult]()) + c.commandParamsSchemas["Performance.getMetrics"] = abxjsonschema.SchemaFor[PerformanceGetMetricsParams]() + c.commandResultSchemas["Performance.getMetrics"] = nativeResultSchema(abxjsonschema.SchemaFor[PerformanceGetMetricsResult]()) + c.commandParamsSchemas["PerformanceTimeline.enable"] = abxjsonschema.SchemaFor[PerformanceTimelineEnableParams]() + c.commandResultSchemas["PerformanceTimeline.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[PerformanceTimelineEnableResult]()) + c.commandParamsSchemas["Preload.enable"] = abxjsonschema.SchemaFor[PreloadEnableParams]() + c.commandResultSchemas["Preload.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[PreloadEnableResult]()) + c.commandParamsSchemas["Preload.disable"] = abxjsonschema.SchemaFor[PreloadDisableParams]() + c.commandResultSchemas["Preload.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[PreloadDisableResult]()) + c.commandParamsSchemas["Profiler.disable"] = abxjsonschema.SchemaFor[ProfilerDisableParams]() + c.commandResultSchemas["Profiler.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerDisableResult]()) + c.commandParamsSchemas["Profiler.enable"] = abxjsonschema.SchemaFor[ProfilerEnableParams]() + c.commandResultSchemas["Profiler.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerEnableResult]()) + c.commandParamsSchemas["Profiler.getBestEffortCoverage"] = abxjsonschema.SchemaFor[ProfilerGetBestEffortCoverageParams]() + c.commandResultSchemas["Profiler.getBestEffortCoverage"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerGetBestEffortCoverageResult]()) + c.commandParamsSchemas["Profiler.setSamplingInterval"] = abxjsonschema.SchemaFor[ProfilerSetSamplingIntervalParams]() + c.commandResultSchemas["Profiler.setSamplingInterval"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerSetSamplingIntervalResult]()) + c.commandParamsSchemas["Profiler.start"] = abxjsonschema.SchemaFor[ProfilerStartParams]() + c.commandResultSchemas["Profiler.start"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerStartResult]()) + c.commandParamsSchemas["Profiler.startPreciseCoverage"] = abxjsonschema.SchemaFor[ProfilerStartPreciseCoverageParams]() + c.commandResultSchemas["Profiler.startPreciseCoverage"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerStartPreciseCoverageResult]()) + c.commandParamsSchemas["Profiler.stop"] = abxjsonschema.SchemaFor[ProfilerStopParams]() + c.commandResultSchemas["Profiler.stop"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerStopResult]()) + c.commandParamsSchemas["Profiler.stopPreciseCoverage"] = abxjsonschema.SchemaFor[ProfilerStopPreciseCoverageParams]() + c.commandResultSchemas["Profiler.stopPreciseCoverage"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerStopPreciseCoverageResult]()) + c.commandParamsSchemas["Profiler.takePreciseCoverage"] = abxjsonschema.SchemaFor[ProfilerTakePreciseCoverageParams]() + c.commandResultSchemas["Profiler.takePreciseCoverage"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerTakePreciseCoverageResult]()) + c.commandParamsSchemas["Runtime.awaitPromise"] = abxjsonschema.SchemaFor[RuntimeAwaitPromiseParams]() + c.commandResultSchemas["Runtime.awaitPromise"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeAwaitPromiseResult]()) + c.commandParamsSchemas["Runtime.callFunctionOn"] = abxjsonschema.SchemaFor[RuntimeCallFunctionOnParams]() + c.commandResultSchemas["Runtime.callFunctionOn"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeCallFunctionOnResult]()) + c.commandParamsSchemas["Runtime.compileScript"] = abxjsonschema.SchemaFor[RuntimeCompileScriptParams]() + c.commandResultSchemas["Runtime.compileScript"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeCompileScriptResult]()) + c.commandParamsSchemas["Runtime.disable"] = abxjsonschema.SchemaFor[RuntimeDisableParams]() + c.commandResultSchemas["Runtime.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeDisableResult]()) + c.commandParamsSchemas["Runtime.discardConsoleEntries"] = abxjsonschema.SchemaFor[RuntimeDiscardConsoleEntriesParams]() + c.commandResultSchemas["Runtime.discardConsoleEntries"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeDiscardConsoleEntriesResult]()) + c.commandParamsSchemas["Runtime.enable"] = abxjsonschema.SchemaFor[RuntimeEnableParams]() + c.commandResultSchemas["Runtime.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeEnableResult]()) + c.commandParamsSchemas["Runtime.evaluate"] = abxjsonschema.SchemaFor[RuntimeEvaluateParams]() + c.commandResultSchemas["Runtime.evaluate"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeEvaluateResult]()) + c.commandParamsSchemas["Runtime.getIsolateId"] = abxjsonschema.SchemaFor[RuntimeGetIsolateIDParams]() + c.commandResultSchemas["Runtime.getIsolateId"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeGetIsolateIDResult]()) + c.commandParamsSchemas["Runtime.getHeapUsage"] = abxjsonschema.SchemaFor[RuntimeGetHeapUsageParams]() + c.commandResultSchemas["Runtime.getHeapUsage"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeGetHeapUsageResult]()) + c.commandParamsSchemas["Runtime.getProperties"] = abxjsonschema.SchemaFor[RuntimeGetPropertiesParams]() + c.commandResultSchemas["Runtime.getProperties"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeGetPropertiesResult]()) + c.commandParamsSchemas["Runtime.globalLexicalScopeNames"] = abxjsonschema.SchemaFor[RuntimeGlobalLexicalScopeNamesParams]() + c.commandResultSchemas["Runtime.globalLexicalScopeNames"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeGlobalLexicalScopeNamesResult]()) + c.commandParamsSchemas["Runtime.queryObjects"] = abxjsonschema.SchemaFor[RuntimeQueryObjectsParams]() + c.commandResultSchemas["Runtime.queryObjects"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeQueryObjectsResult]()) + c.commandParamsSchemas["Runtime.releaseObject"] = abxjsonschema.SchemaFor[RuntimeReleaseObjectParams]() + c.commandResultSchemas["Runtime.releaseObject"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeReleaseObjectResult]()) + c.commandParamsSchemas["Runtime.releaseObjectGroup"] = abxjsonschema.SchemaFor[RuntimeReleaseObjectGroupParams]() + c.commandResultSchemas["Runtime.releaseObjectGroup"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeReleaseObjectGroupResult]()) + c.commandParamsSchemas["Runtime.runIfWaitingForDebugger"] = abxjsonschema.SchemaFor[RuntimeRunIfWaitingForDebuggerParams]() + c.commandResultSchemas["Runtime.runIfWaitingForDebugger"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeRunIfWaitingForDebuggerResult]()) + c.commandParamsSchemas["Runtime.runScript"] = abxjsonschema.SchemaFor[RuntimeRunScriptParams]() + c.commandResultSchemas["Runtime.runScript"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeRunScriptResult]()) + c.commandParamsSchemas["Runtime.setAsyncCallStackDepth"] = abxjsonschema.SchemaFor[RuntimeSetAsyncCallStackDepthParams]() + c.commandResultSchemas["Runtime.setAsyncCallStackDepth"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeSetAsyncCallStackDepthResult]()) + c.commandParamsSchemas["Runtime.setCustomObjectFormatterEnabled"] = abxjsonschema.SchemaFor[RuntimeSetCustomObjectFormatterEnabledParams]() + c.commandResultSchemas["Runtime.setCustomObjectFormatterEnabled"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeSetCustomObjectFormatterEnabledResult]()) + c.commandParamsSchemas["Runtime.setMaxCallStackSizeToCapture"] = abxjsonschema.SchemaFor[RuntimeSetMaxCallStackSizeToCaptureParams]() + c.commandResultSchemas["Runtime.setMaxCallStackSizeToCapture"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeSetMaxCallStackSizeToCaptureResult]()) + c.commandParamsSchemas["Runtime.terminateExecution"] = abxjsonschema.SchemaFor[RuntimeTerminateExecutionParams]() + c.commandResultSchemas["Runtime.terminateExecution"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeTerminateExecutionResult]()) + c.commandParamsSchemas["Runtime.addBinding"] = abxjsonschema.SchemaFor[RuntimeAddBindingParams]() + c.commandResultSchemas["Runtime.addBinding"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeAddBindingResult]()) + c.commandParamsSchemas["Runtime.removeBinding"] = abxjsonschema.SchemaFor[RuntimeRemoveBindingParams]() + c.commandResultSchemas["Runtime.removeBinding"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeRemoveBindingResult]()) + c.commandParamsSchemas["Runtime.getExceptionDetails"] = abxjsonschema.SchemaFor[RuntimeGetExceptionDetailsParams]() + c.commandResultSchemas["Runtime.getExceptionDetails"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeGetExceptionDetailsResult]()) + c.commandParamsSchemas["Schema.getDomains"] = abxjsonschema.SchemaFor[SchemaGetDomainsParams]() + c.commandResultSchemas["Schema.getDomains"] = nativeResultSchema(abxjsonschema.SchemaFor[SchemaGetDomainsResult]()) + c.commandParamsSchemas["Security.disable"] = abxjsonschema.SchemaFor[SecurityDisableParams]() + c.commandResultSchemas["Security.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[SecurityDisableResult]()) + c.commandParamsSchemas["Security.enable"] = abxjsonschema.SchemaFor[SecurityEnableParams]() + c.commandResultSchemas["Security.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[SecurityEnableResult]()) + c.commandParamsSchemas["Security.setIgnoreCertificateErrors"] = abxjsonschema.SchemaFor[SecuritySetIgnoreCertificateErrorsParams]() + c.commandResultSchemas["Security.setIgnoreCertificateErrors"] = nativeResultSchema(abxjsonschema.SchemaFor[SecuritySetIgnoreCertificateErrorsResult]()) + c.commandParamsSchemas["Security.handleCertificateError"] = abxjsonschema.SchemaFor[SecurityHandleCertificateErrorParams]() + c.commandResultSchemas["Security.handleCertificateError"] = nativeResultSchema(abxjsonschema.SchemaFor[SecurityHandleCertificateErrorResult]()) + c.commandParamsSchemas["Security.setOverrideCertificateErrors"] = abxjsonschema.SchemaFor[SecuritySetOverrideCertificateErrorsParams]() + c.commandResultSchemas["Security.setOverrideCertificateErrors"] = nativeResultSchema(abxjsonschema.SchemaFor[SecuritySetOverrideCertificateErrorsResult]()) + c.commandParamsSchemas["ServiceWorker.deliverPushMessage"] = abxjsonschema.SchemaFor[ServiceWorkerDeliverPushMessageParams]() + c.commandResultSchemas["ServiceWorker.deliverPushMessage"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerDeliverPushMessageResult]()) + c.commandParamsSchemas["ServiceWorker.disable"] = abxjsonschema.SchemaFor[ServiceWorkerDisableParams]() + c.commandResultSchemas["ServiceWorker.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerDisableResult]()) + c.commandParamsSchemas["ServiceWorker.dispatchSyncEvent"] = abxjsonschema.SchemaFor[ServiceWorkerDispatchSyncEventParams]() + c.commandResultSchemas["ServiceWorker.dispatchSyncEvent"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerDispatchSyncEventResult]()) + c.commandParamsSchemas["ServiceWorker.dispatchPeriodicSyncEvent"] = abxjsonschema.SchemaFor[ServiceWorkerDispatchPeriodicSyncEventParams]() + c.commandResultSchemas["ServiceWorker.dispatchPeriodicSyncEvent"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerDispatchPeriodicSyncEventResult]()) + c.commandParamsSchemas["ServiceWorker.enable"] = abxjsonschema.SchemaFor[ServiceWorkerEnableParams]() + c.commandResultSchemas["ServiceWorker.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerEnableResult]()) + c.commandParamsSchemas["ServiceWorker.setForceUpdateOnPageLoad"] = abxjsonschema.SchemaFor[ServiceWorkerSetForceUpdateOnPageLoadParams]() + c.commandResultSchemas["ServiceWorker.setForceUpdateOnPageLoad"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerSetForceUpdateOnPageLoadResult]()) + c.commandParamsSchemas["ServiceWorker.skipWaiting"] = abxjsonschema.SchemaFor[ServiceWorkerSkipWaitingParams]() + c.commandResultSchemas["ServiceWorker.skipWaiting"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerSkipWaitingResult]()) + c.commandParamsSchemas["ServiceWorker.startWorker"] = abxjsonschema.SchemaFor[ServiceWorkerStartWorkerParams]() + c.commandResultSchemas["ServiceWorker.startWorker"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerStartWorkerResult]()) + c.commandParamsSchemas["ServiceWorker.stopAllWorkers"] = abxjsonschema.SchemaFor[ServiceWorkerStopAllWorkersParams]() + c.commandResultSchemas["ServiceWorker.stopAllWorkers"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerStopAllWorkersResult]()) + c.commandParamsSchemas["ServiceWorker.stopWorker"] = abxjsonschema.SchemaFor[ServiceWorkerStopWorkerParams]() + c.commandResultSchemas["ServiceWorker.stopWorker"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerStopWorkerResult]()) + c.commandParamsSchemas["ServiceWorker.unregister"] = abxjsonschema.SchemaFor[ServiceWorkerUnregisterParams]() + c.commandResultSchemas["ServiceWorker.unregister"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerUnregisterResult]()) + c.commandParamsSchemas["ServiceWorker.updateRegistration"] = abxjsonschema.SchemaFor[ServiceWorkerUpdateRegistrationParams]() + c.commandResultSchemas["ServiceWorker.updateRegistration"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerUpdateRegistrationResult]()) + c.commandParamsSchemas["SmartCardEmulation.enable"] = abxjsonschema.SchemaFor[SmartCardEmulationEnableParams]() + c.commandResultSchemas["SmartCardEmulation.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationEnableResult]()) + c.commandParamsSchemas["SmartCardEmulation.disable"] = abxjsonschema.SchemaFor[SmartCardEmulationDisableParams]() + c.commandResultSchemas["SmartCardEmulation.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationDisableResult]()) + c.commandParamsSchemas["SmartCardEmulation.reportEstablishContextResult"] = abxjsonschema.SchemaFor[SmartCardEmulationReportEstablishContextResultParams]() + c.commandResultSchemas["SmartCardEmulation.reportEstablishContextResult"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationReportEstablishContextResultResult]()) + c.commandParamsSchemas["SmartCardEmulation.reportReleaseContextResult"] = abxjsonschema.SchemaFor[SmartCardEmulationReportReleaseContextResultParams]() + c.commandResultSchemas["SmartCardEmulation.reportReleaseContextResult"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationReportReleaseContextResultResult]()) + c.commandParamsSchemas["SmartCardEmulation.reportListReadersResult"] = abxjsonschema.SchemaFor[SmartCardEmulationReportListReadersResultParams]() + c.commandResultSchemas["SmartCardEmulation.reportListReadersResult"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationReportListReadersResultResult]()) + c.commandParamsSchemas["SmartCardEmulation.reportGetStatusChangeResult"] = abxjsonschema.SchemaFor[SmartCardEmulationReportGetStatusChangeResultParams]() + c.commandResultSchemas["SmartCardEmulation.reportGetStatusChangeResult"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationReportGetStatusChangeResultResult]()) + c.commandParamsSchemas["SmartCardEmulation.reportBeginTransactionResult"] = abxjsonschema.SchemaFor[SmartCardEmulationReportBeginTransactionResultParams]() + c.commandResultSchemas["SmartCardEmulation.reportBeginTransactionResult"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationReportBeginTransactionResultResult]()) + c.commandParamsSchemas["SmartCardEmulation.reportPlainResult"] = abxjsonschema.SchemaFor[SmartCardEmulationReportPlainResultParams]() + c.commandResultSchemas["SmartCardEmulation.reportPlainResult"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationReportPlainResultResult]()) + c.commandParamsSchemas["SmartCardEmulation.reportConnectResult"] = abxjsonschema.SchemaFor[SmartCardEmulationReportConnectResultParams]() + c.commandResultSchemas["SmartCardEmulation.reportConnectResult"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationReportConnectResultResult]()) + c.commandParamsSchemas["SmartCardEmulation.reportDataResult"] = abxjsonschema.SchemaFor[SmartCardEmulationReportDataResultParams]() + c.commandResultSchemas["SmartCardEmulation.reportDataResult"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationReportDataResultResult]()) + c.commandParamsSchemas["SmartCardEmulation.reportStatusResult"] = abxjsonschema.SchemaFor[SmartCardEmulationReportStatusResultParams]() + c.commandResultSchemas["SmartCardEmulation.reportStatusResult"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationReportStatusResultResult]()) + c.commandParamsSchemas["SmartCardEmulation.reportError"] = abxjsonschema.SchemaFor[SmartCardEmulationReportErrorParams]() + c.commandResultSchemas["SmartCardEmulation.reportError"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationReportErrorResult]()) + c.commandParamsSchemas["Storage.getStorageKeyForFrame"] = abxjsonschema.SchemaFor[StorageGetStorageKeyForFrameParams]() + c.commandResultSchemas["Storage.getStorageKeyForFrame"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageGetStorageKeyForFrameResult]()) + c.commandParamsSchemas["Storage.getStorageKey"] = abxjsonschema.SchemaFor[StorageGetStorageKeyParams]() + c.commandResultSchemas["Storage.getStorageKey"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageGetStorageKeyResult]()) + c.commandParamsSchemas["Storage.clearDataForOrigin"] = abxjsonschema.SchemaFor[StorageClearDataForOriginParams]() + c.commandResultSchemas["Storage.clearDataForOrigin"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageClearDataForOriginResult]()) + c.commandParamsSchemas["Storage.clearDataForStorageKey"] = abxjsonschema.SchemaFor[StorageClearDataForStorageKeyParams]() + c.commandResultSchemas["Storage.clearDataForStorageKey"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageClearDataForStorageKeyResult]()) + c.commandParamsSchemas["Storage.getCookies"] = abxjsonschema.SchemaFor[StorageGetCookiesParams]() + c.commandResultSchemas["Storage.getCookies"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageGetCookiesResult]()) + c.commandParamsSchemas["Storage.setCookies"] = abxjsonschema.SchemaFor[StorageSetCookiesParams]() + c.commandResultSchemas["Storage.setCookies"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSetCookiesResult]()) + c.commandParamsSchemas["Storage.clearCookies"] = abxjsonschema.SchemaFor[StorageClearCookiesParams]() + c.commandResultSchemas["Storage.clearCookies"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageClearCookiesResult]()) + c.commandParamsSchemas["Storage.getUsageAndQuota"] = abxjsonschema.SchemaFor[StorageGetUsageAndQuotaParams]() + c.commandResultSchemas["Storage.getUsageAndQuota"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageGetUsageAndQuotaResult]()) + c.commandParamsSchemas["Storage.overrideQuotaForOrigin"] = abxjsonschema.SchemaFor[StorageOverrideQuotaForOriginParams]() + c.commandResultSchemas["Storage.overrideQuotaForOrigin"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageOverrideQuotaForOriginResult]()) + c.commandParamsSchemas["Storage.trackCacheStorageForOrigin"] = abxjsonschema.SchemaFor[StorageTrackCacheStorageForOriginParams]() + c.commandResultSchemas["Storage.trackCacheStorageForOrigin"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageTrackCacheStorageForOriginResult]()) + c.commandParamsSchemas["Storage.trackCacheStorageForStorageKey"] = abxjsonschema.SchemaFor[StorageTrackCacheStorageForStorageKeyParams]() + c.commandResultSchemas["Storage.trackCacheStorageForStorageKey"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageTrackCacheStorageForStorageKeyResult]()) + c.commandParamsSchemas["Storage.trackIndexedDBForOrigin"] = abxjsonschema.SchemaFor[StorageTrackIndexedDBForOriginParams]() + c.commandResultSchemas["Storage.trackIndexedDBForOrigin"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageTrackIndexedDBForOriginResult]()) + c.commandParamsSchemas["Storage.trackIndexedDBForStorageKey"] = abxjsonschema.SchemaFor[StorageTrackIndexedDBForStorageKeyParams]() + c.commandResultSchemas["Storage.trackIndexedDBForStorageKey"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageTrackIndexedDBForStorageKeyResult]()) + c.commandParamsSchemas["Storage.untrackCacheStorageForOrigin"] = abxjsonschema.SchemaFor[StorageUntrackCacheStorageForOriginParams]() + c.commandResultSchemas["Storage.untrackCacheStorageForOrigin"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageUntrackCacheStorageForOriginResult]()) + c.commandParamsSchemas["Storage.untrackCacheStorageForStorageKey"] = abxjsonschema.SchemaFor[StorageUntrackCacheStorageForStorageKeyParams]() + c.commandResultSchemas["Storage.untrackCacheStorageForStorageKey"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageUntrackCacheStorageForStorageKeyResult]()) + c.commandParamsSchemas["Storage.untrackIndexedDBForOrigin"] = abxjsonschema.SchemaFor[StorageUntrackIndexedDBForOriginParams]() + c.commandResultSchemas["Storage.untrackIndexedDBForOrigin"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageUntrackIndexedDBForOriginResult]()) + c.commandParamsSchemas["Storage.untrackIndexedDBForStorageKey"] = abxjsonschema.SchemaFor[StorageUntrackIndexedDBForStorageKeyParams]() + c.commandResultSchemas["Storage.untrackIndexedDBForStorageKey"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageUntrackIndexedDBForStorageKeyResult]()) + c.commandParamsSchemas["Storage.getTrustTokens"] = abxjsonschema.SchemaFor[StorageGetTrustTokensParams]() + c.commandResultSchemas["Storage.getTrustTokens"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageGetTrustTokensResult]()) + c.commandParamsSchemas["Storage.clearTrustTokens"] = abxjsonschema.SchemaFor[StorageClearTrustTokensParams]() + c.commandResultSchemas["Storage.clearTrustTokens"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageClearTrustTokensResult]()) + c.commandParamsSchemas["Storage.getInterestGroupDetails"] = abxjsonschema.SchemaFor[StorageGetInterestGroupDetailsParams]() + c.commandResultSchemas["Storage.getInterestGroupDetails"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageGetInterestGroupDetailsResult]()) + c.commandParamsSchemas["Storage.setInterestGroupTracking"] = abxjsonschema.SchemaFor[StorageSetInterestGroupTrackingParams]() + c.commandResultSchemas["Storage.setInterestGroupTracking"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSetInterestGroupTrackingResult]()) + c.commandParamsSchemas["Storage.setInterestGroupAuctionTracking"] = abxjsonschema.SchemaFor[StorageSetInterestGroupAuctionTrackingParams]() + c.commandResultSchemas["Storage.setInterestGroupAuctionTracking"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSetInterestGroupAuctionTrackingResult]()) + c.commandParamsSchemas["Storage.getSharedStorageMetadata"] = abxjsonschema.SchemaFor[StorageGetSharedStorageMetadataParams]() + c.commandResultSchemas["Storage.getSharedStorageMetadata"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageGetSharedStorageMetadataResult]()) + c.commandParamsSchemas["Storage.getSharedStorageEntries"] = abxjsonschema.SchemaFor[StorageGetSharedStorageEntriesParams]() + c.commandResultSchemas["Storage.getSharedStorageEntries"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageGetSharedStorageEntriesResult]()) + c.commandParamsSchemas["Storage.setSharedStorageEntry"] = abxjsonschema.SchemaFor[StorageSetSharedStorageEntryParams]() + c.commandResultSchemas["Storage.setSharedStorageEntry"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSetSharedStorageEntryResult]()) + c.commandParamsSchemas["Storage.deleteSharedStorageEntry"] = abxjsonschema.SchemaFor[StorageDeleteSharedStorageEntryParams]() + c.commandResultSchemas["Storage.deleteSharedStorageEntry"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageDeleteSharedStorageEntryResult]()) + c.commandParamsSchemas["Storage.clearSharedStorageEntries"] = abxjsonschema.SchemaFor[StorageClearSharedStorageEntriesParams]() + c.commandResultSchemas["Storage.clearSharedStorageEntries"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageClearSharedStorageEntriesResult]()) + c.commandParamsSchemas["Storage.resetSharedStorageBudget"] = abxjsonschema.SchemaFor[StorageResetSharedStorageBudgetParams]() + c.commandResultSchemas["Storage.resetSharedStorageBudget"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageResetSharedStorageBudgetResult]()) + c.commandParamsSchemas["Storage.setSharedStorageTracking"] = abxjsonschema.SchemaFor[StorageSetSharedStorageTrackingParams]() + c.commandResultSchemas["Storage.setSharedStorageTracking"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSetSharedStorageTrackingResult]()) + c.commandParamsSchemas["Storage.setStorageBucketTracking"] = abxjsonschema.SchemaFor[StorageSetStorageBucketTrackingParams]() + c.commandResultSchemas["Storage.setStorageBucketTracking"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSetStorageBucketTrackingResult]()) + c.commandParamsSchemas["Storage.deleteStorageBucket"] = abxjsonschema.SchemaFor[StorageDeleteStorageBucketParams]() + c.commandResultSchemas["Storage.deleteStorageBucket"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageDeleteStorageBucketResult]()) + c.commandParamsSchemas["Storage.runBounceTrackingMitigations"] = abxjsonschema.SchemaFor[StorageRunBounceTrackingMitigationsParams]() + c.commandResultSchemas["Storage.runBounceTrackingMitigations"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageRunBounceTrackingMitigationsResult]()) + c.commandParamsSchemas["Storage.setAttributionReportingLocalTestingMode"] = abxjsonschema.SchemaFor[StorageSetAttributionReportingLocalTestingModeParams]() + c.commandResultSchemas["Storage.setAttributionReportingLocalTestingMode"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSetAttributionReportingLocalTestingModeResult]()) + c.commandParamsSchemas["Storage.setAttributionReportingTracking"] = abxjsonschema.SchemaFor[StorageSetAttributionReportingTrackingParams]() + c.commandResultSchemas["Storage.setAttributionReportingTracking"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSetAttributionReportingTrackingResult]()) + c.commandParamsSchemas["Storage.sendPendingAttributionReports"] = abxjsonschema.SchemaFor[StorageSendPendingAttributionReportsParams]() + c.commandResultSchemas["Storage.sendPendingAttributionReports"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSendPendingAttributionReportsResult]()) + c.commandParamsSchemas["Storage.getRelatedWebsiteSets"] = abxjsonschema.SchemaFor[StorageGetRelatedWebsiteSetsParams]() + c.commandResultSchemas["Storage.getRelatedWebsiteSets"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageGetRelatedWebsiteSetsResult]()) + c.commandParamsSchemas["Storage.getAffectedUrlsForThirdPartyCookieMetadata"] = abxjsonschema.SchemaFor[StorageGetAffectedUrlsForThirdPartyCookieMetadataParams]() + c.commandResultSchemas["Storage.getAffectedUrlsForThirdPartyCookieMetadata"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageGetAffectedUrlsForThirdPartyCookieMetadataResult]()) + c.commandParamsSchemas["Storage.setProtectedAudienceKAnonymity"] = abxjsonschema.SchemaFor[StorageSetProtectedAudienceKAnonymityParams]() + c.commandResultSchemas["Storage.setProtectedAudienceKAnonymity"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSetProtectedAudienceKAnonymityResult]()) + c.commandParamsSchemas["SystemInfo.getInfo"] = abxjsonschema.SchemaFor[SystemInfoGetInfoParams]() + c.commandResultSchemas["SystemInfo.getInfo"] = nativeResultSchema(abxjsonschema.SchemaFor[SystemInfoGetInfoResult]()) + c.commandParamsSchemas["SystemInfo.getFeatureState"] = abxjsonschema.SchemaFor[SystemInfoGetFeatureStateParams]() + c.commandResultSchemas["SystemInfo.getFeatureState"] = nativeResultSchema(abxjsonschema.SchemaFor[SystemInfoGetFeatureStateResult]()) + c.commandParamsSchemas["SystemInfo.getProcessInfo"] = abxjsonschema.SchemaFor[SystemInfoGetProcessInfoParams]() + c.commandResultSchemas["SystemInfo.getProcessInfo"] = nativeResultSchema(abxjsonschema.SchemaFor[SystemInfoGetProcessInfoResult]()) + c.commandParamsSchemas["Target.activateTarget"] = abxjsonschema.SchemaFor[TargetActivateTargetParams]() + c.commandResultSchemas["Target.activateTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetActivateTargetResult]()) + c.commandParamsSchemas["Target.attachToTarget"] = abxjsonschema.SchemaFor[TargetAttachToTargetParams]() + c.commandResultSchemas["Target.attachToTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetAttachToTargetResult]()) + c.commandParamsSchemas["Target.attachToBrowserTarget"] = abxjsonschema.SchemaFor[TargetAttachToBrowserTargetParams]() + c.commandResultSchemas["Target.attachToBrowserTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetAttachToBrowserTargetResult]()) + c.commandParamsSchemas["Target.closeTarget"] = abxjsonschema.SchemaFor[TargetCloseTargetParams]() + c.commandResultSchemas["Target.closeTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetCloseTargetResult]()) + c.commandParamsSchemas["Target.exposeDevToolsProtocol"] = abxjsonschema.SchemaFor[TargetExposeDevToolsProtocolParams]() + c.commandResultSchemas["Target.exposeDevToolsProtocol"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetExposeDevToolsProtocolResult]()) + c.commandParamsSchemas["Target.createBrowserContext"] = abxjsonschema.SchemaFor[TargetCreateBrowserContextParams]() + c.commandResultSchemas["Target.createBrowserContext"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetCreateBrowserContextResult]()) + c.commandParamsSchemas["Target.getBrowserContexts"] = abxjsonschema.SchemaFor[TargetGetBrowserContextsParams]() + c.commandResultSchemas["Target.getBrowserContexts"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetGetBrowserContextsResult]()) + c.commandParamsSchemas["Target.createTarget"] = abxjsonschema.SchemaFor[TargetCreateTargetParams]() + c.commandResultSchemas["Target.createTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetCreateTargetResult]()) + c.commandParamsSchemas["Target.detachFromTarget"] = abxjsonschema.SchemaFor[TargetDetachFromTargetParams]() + c.commandResultSchemas["Target.detachFromTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetDetachFromTargetResult]()) + c.commandParamsSchemas["Target.disposeBrowserContext"] = abxjsonschema.SchemaFor[TargetDisposeBrowserContextParams]() + c.commandResultSchemas["Target.disposeBrowserContext"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetDisposeBrowserContextResult]()) + c.commandParamsSchemas["Target.getTargetInfo"] = abxjsonschema.SchemaFor[TargetGetTargetInfoParams]() + c.commandResultSchemas["Target.getTargetInfo"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetGetTargetInfoResult]()) + c.commandParamsSchemas["Target.getTargets"] = abxjsonschema.SchemaFor[TargetGetTargetsParams]() + c.commandResultSchemas["Target.getTargets"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetGetTargetsResult]()) + c.commandParamsSchemas["Target.sendMessageToTarget"] = abxjsonschema.SchemaFor[TargetSendMessageToTargetParams]() + c.commandResultSchemas["Target.sendMessageToTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetSendMessageToTargetResult]()) + c.commandParamsSchemas["Target.setAutoAttach"] = abxjsonschema.SchemaFor[TargetSetAutoAttachParams]() + c.commandResultSchemas["Target.setAutoAttach"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetSetAutoAttachResult]()) + c.commandParamsSchemas["Target.autoAttachRelated"] = abxjsonschema.SchemaFor[TargetAutoAttachRelatedParams]() + c.commandResultSchemas["Target.autoAttachRelated"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetAutoAttachRelatedResult]()) + c.commandParamsSchemas["Target.setDiscoverTargets"] = abxjsonschema.SchemaFor[TargetSetDiscoverTargetsParams]() + c.commandResultSchemas["Target.setDiscoverTargets"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetSetDiscoverTargetsResult]()) + c.commandParamsSchemas["Target.setRemoteLocations"] = abxjsonschema.SchemaFor[TargetSetRemoteLocationsParams]() + c.commandResultSchemas["Target.setRemoteLocations"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetSetRemoteLocationsResult]()) + c.commandParamsSchemas["Target.getDevToolsTarget"] = abxjsonschema.SchemaFor[TargetGetDevToolsTargetParams]() + c.commandResultSchemas["Target.getDevToolsTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetGetDevToolsTargetResult]()) + c.commandParamsSchemas["Target.openDevTools"] = abxjsonschema.SchemaFor[TargetOpenDevToolsParams]() + c.commandResultSchemas["Target.openDevTools"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetOpenDevToolsResult]()) + c.commandParamsSchemas["Tethering.bind"] = abxjsonschema.SchemaFor[TetheringBindParams]() + c.commandResultSchemas["Tethering.bind"] = nativeResultSchema(abxjsonschema.SchemaFor[TetheringBindResult]()) + c.commandParamsSchemas["Tethering.unbind"] = abxjsonschema.SchemaFor[TetheringUnbindParams]() + c.commandResultSchemas["Tethering.unbind"] = nativeResultSchema(abxjsonschema.SchemaFor[TetheringUnbindResult]()) + c.commandParamsSchemas["Tracing.end"] = abxjsonschema.SchemaFor[TracingEndParams]() + c.commandResultSchemas["Tracing.end"] = nativeResultSchema(abxjsonschema.SchemaFor[TracingEndResult]()) + c.commandParamsSchemas["Tracing.getCategories"] = abxjsonschema.SchemaFor[TracingGetCategoriesParams]() + c.commandResultSchemas["Tracing.getCategories"] = nativeResultSchema(abxjsonschema.SchemaFor[TracingGetCategoriesResult]()) + c.commandParamsSchemas["Tracing.getTrackEventDescriptor"] = abxjsonschema.SchemaFor[TracingGetTrackEventDescriptorParams]() + c.commandResultSchemas["Tracing.getTrackEventDescriptor"] = nativeResultSchema(abxjsonschema.SchemaFor[TracingGetTrackEventDescriptorResult]()) + c.commandParamsSchemas["Tracing.recordClockSyncMarker"] = abxjsonschema.SchemaFor[TracingRecordClockSyncMarkerParams]() + c.commandResultSchemas["Tracing.recordClockSyncMarker"] = nativeResultSchema(abxjsonschema.SchemaFor[TracingRecordClockSyncMarkerResult]()) + c.commandParamsSchemas["Tracing.requestMemoryDump"] = abxjsonschema.SchemaFor[TracingRequestMemoryDumpParams]() + c.commandResultSchemas["Tracing.requestMemoryDump"] = nativeResultSchema(abxjsonschema.SchemaFor[TracingRequestMemoryDumpResult]()) + c.commandParamsSchemas["Tracing.start"] = abxjsonschema.SchemaFor[TracingStartParams]() + c.commandResultSchemas["Tracing.start"] = nativeResultSchema(abxjsonschema.SchemaFor[TracingStartResult]()) + c.commandParamsSchemas["WebAudio.enable"] = abxjsonschema.SchemaFor[WebAudioEnableParams]() + c.commandResultSchemas["WebAudio.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioEnableResult]()) + c.commandParamsSchemas["WebAudio.disable"] = abxjsonschema.SchemaFor[WebAudioDisableParams]() + c.commandResultSchemas["WebAudio.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioDisableResult]()) + c.commandParamsSchemas["WebAudio.getRealtimeData"] = abxjsonschema.SchemaFor[WebAudioGetRealtimeDataParams]() + c.commandResultSchemas["WebAudio.getRealtimeData"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioGetRealtimeDataResult]()) + c.commandParamsSchemas["WebAuthn.enable"] = abxjsonschema.SchemaFor[WebAuthnEnableParams]() + c.commandResultSchemas["WebAuthn.enable"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnEnableResult]()) + c.commandParamsSchemas["WebAuthn.disable"] = abxjsonschema.SchemaFor[WebAuthnDisableParams]() + c.commandResultSchemas["WebAuthn.disable"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnDisableResult]()) + c.commandParamsSchemas["WebAuthn.addVirtualAuthenticator"] = abxjsonschema.SchemaFor[WebAuthnAddVirtualAuthenticatorParams]() + c.commandResultSchemas["WebAuthn.addVirtualAuthenticator"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnAddVirtualAuthenticatorResult]()) + c.commandParamsSchemas["WebAuthn.setResponseOverrideBits"] = abxjsonschema.SchemaFor[WebAuthnSetResponseOverrideBitsParams]() + c.commandResultSchemas["WebAuthn.setResponseOverrideBits"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnSetResponseOverrideBitsResult]()) + c.commandParamsSchemas["WebAuthn.removeVirtualAuthenticator"] = abxjsonschema.SchemaFor[WebAuthnRemoveVirtualAuthenticatorParams]() + c.commandResultSchemas["WebAuthn.removeVirtualAuthenticator"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnRemoveVirtualAuthenticatorResult]()) + c.commandParamsSchemas["WebAuthn.addCredential"] = abxjsonschema.SchemaFor[WebAuthnAddCredentialParams]() + c.commandResultSchemas["WebAuthn.addCredential"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnAddCredentialResult]()) + c.commandParamsSchemas["WebAuthn.getCredential"] = abxjsonschema.SchemaFor[WebAuthnGetCredentialParams]() + c.commandResultSchemas["WebAuthn.getCredential"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnGetCredentialResult]()) + c.commandParamsSchemas["WebAuthn.getCredentials"] = abxjsonschema.SchemaFor[WebAuthnGetCredentialsParams]() + c.commandResultSchemas["WebAuthn.getCredentials"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnGetCredentialsResult]()) + c.commandParamsSchemas["WebAuthn.removeCredential"] = abxjsonschema.SchemaFor[WebAuthnRemoveCredentialParams]() + c.commandResultSchemas["WebAuthn.removeCredential"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnRemoveCredentialResult]()) + c.commandParamsSchemas["WebAuthn.clearCredentials"] = abxjsonschema.SchemaFor[WebAuthnClearCredentialsParams]() + c.commandResultSchemas["WebAuthn.clearCredentials"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnClearCredentialsResult]()) + c.commandParamsSchemas["WebAuthn.setUserVerified"] = abxjsonschema.SchemaFor[WebAuthnSetUserVerifiedParams]() + c.commandResultSchemas["WebAuthn.setUserVerified"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnSetUserVerifiedResult]()) + c.commandParamsSchemas["WebAuthn.setAutomaticPresenceSimulation"] = abxjsonschema.SchemaFor[WebAuthnSetAutomaticPresenceSimulationParams]() + c.commandResultSchemas["WebAuthn.setAutomaticPresenceSimulation"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnSetAutomaticPresenceSimulationResult]()) + c.commandParamsSchemas["WebAuthn.setCredentialProperties"] = abxjsonschema.SchemaFor[WebAuthnSetCredentialPropertiesParams]() + c.commandResultSchemas["WebAuthn.setCredentialProperties"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnSetCredentialPropertiesResult]()) + c.eventSchemas["Accessibility.loadComplete"] = nativeResultSchema(abxjsonschema.SchemaFor[AccessibilityLoadCompleteEvent]()) + c.eventSchemas["Accessibility.nodesUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[AccessibilityNodesUpdatedEvent]()) + c.eventSchemas["Animation.animationCanceled"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationAnimationCanceledEvent]()) + c.eventSchemas["Animation.animationCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationAnimationCreatedEvent]()) + c.eventSchemas["Animation.animationStarted"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationAnimationStartedEvent]()) + c.eventSchemas["Animation.animationUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[AnimationAnimationUpdatedEvent]()) + c.eventSchemas["Audits.issueAdded"] = nativeResultSchema(abxjsonschema.SchemaFor[AuditsIssueAddedEvent]()) + c.eventSchemas["Autofill.addressFormFilled"] = nativeResultSchema(abxjsonschema.SchemaFor[AutofillAddressFormFilledEvent]()) + c.eventSchemas["BackgroundService.recordingStateChanged"] = nativeResultSchema(abxjsonschema.SchemaFor[BackgroundServiceRecordingStateChangedEvent]()) + c.eventSchemas["BackgroundService.backgroundServiceEventReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[BackgroundServiceBackgroundServiceEventReceivedEvent]()) + c.eventSchemas["BluetoothEmulation.gattOperationReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationGattOperationReceivedEvent]()) + c.eventSchemas["BluetoothEmulation.characteristicOperationReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationCharacteristicOperationReceivedEvent]()) + c.eventSchemas["BluetoothEmulation.descriptorOperationReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[BluetoothEmulationDescriptorOperationReceivedEvent]()) + c.eventSchemas["Browser.downloadWillBegin"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserDownloadWillBeginEvent]()) + c.eventSchemas["Browser.downloadProgress"] = nativeResultSchema(abxjsonschema.SchemaFor[BrowserDownloadProgressEvent]()) + c.eventSchemas["CSS.fontsUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSFontsUpdatedEvent]()) + c.eventSchemas["CSS.mediaQueryResultChanged"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSMediaQueryResultChangedEvent]()) + c.eventSchemas["CSS.styleSheetAdded"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSStyleSheetAddedEvent]()) + c.eventSchemas["CSS.styleSheetChanged"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSStyleSheetChangedEvent]()) + c.eventSchemas["CSS.styleSheetRemoved"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSStyleSheetRemovedEvent]()) + c.eventSchemas["CSS.computedStyleUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[CSSComputedStyleUpdatedEvent]()) + c.eventSchemas["Cast.sinksUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[CastSinksUpdatedEvent]()) + c.eventSchemas["Cast.issueUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[CastIssueUpdatedEvent]()) + c.eventSchemas["Console.messageAdded"] = nativeResultSchema(abxjsonschema.SchemaFor[ConsoleMessageAddedEvent]()) + c.eventSchemas["DOM.attributeModified"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMAttributeModifiedEvent]()) + c.eventSchemas["DOM.adoptedStyleSheetsModified"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMAdoptedStyleSheetsModifiedEvent]()) + c.eventSchemas["DOM.attributeRemoved"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMAttributeRemovedEvent]()) + c.eventSchemas["DOM.characterDataModified"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMCharacterDataModifiedEvent]()) + c.eventSchemas["DOM.childNodeCountUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMChildNodeCountUpdatedEvent]()) + c.eventSchemas["DOM.childNodeInserted"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMChildNodeInsertedEvent]()) + c.eventSchemas["DOM.childNodeRemoved"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMChildNodeRemovedEvent]()) + c.eventSchemas["DOM.distributedNodesUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDistributedNodesUpdatedEvent]()) + c.eventSchemas["DOM.documentUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMDocumentUpdatedEvent]()) + c.eventSchemas["DOM.inlineStyleInvalidated"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMInlineStyleInvalidatedEvent]()) + c.eventSchemas["DOM.pseudoElementAdded"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMPseudoElementAddedEvent]()) + c.eventSchemas["DOM.topLayerElementsUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMTopLayerElementsUpdatedEvent]()) + c.eventSchemas["DOM.scrollableFlagUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMScrollableFlagUpdatedEvent]()) + c.eventSchemas["DOM.adRelatedStateUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMAdRelatedStateUpdatedEvent]()) + c.eventSchemas["DOM.affectedByStartingStylesFlagUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMAffectedByStartingStylesFlagUpdatedEvent]()) + c.eventSchemas["DOM.pseudoElementRemoved"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMPseudoElementRemovedEvent]()) + c.eventSchemas["DOM.setChildNodes"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMSetChildNodesEvent]()) + c.eventSchemas["DOM.shadowRootPopped"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMShadowRootPoppedEvent]()) + c.eventSchemas["DOM.shadowRootPushed"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMShadowRootPushedEvent]()) + c.eventSchemas["DOMStorage.domStorageItemAdded"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMStorageDOMStorageItemAddedEvent]()) + c.eventSchemas["DOMStorage.domStorageItemRemoved"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMStorageDOMStorageItemRemovedEvent]()) + c.eventSchemas["DOMStorage.domStorageItemUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMStorageDOMStorageItemUpdatedEvent]()) + c.eventSchemas["DOMStorage.domStorageItemsCleared"] = nativeResultSchema(abxjsonschema.SchemaFor[DOMStorageDOMStorageItemsClearedEvent]()) + c.eventSchemas["Debugger.breakpointResolved"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerBreakpointResolvedEvent]()) + c.eventSchemas["Debugger.paused"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerPausedEvent]()) + c.eventSchemas["Debugger.resumed"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerResumedEvent]()) + c.eventSchemas["Debugger.scriptFailedToParse"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerScriptFailedToParseEvent]()) + c.eventSchemas["Debugger.scriptParsed"] = nativeResultSchema(abxjsonschema.SchemaFor[DebuggerScriptParsedEvent]()) + c.eventSchemas["DeviceAccess.deviceRequestPrompted"] = nativeResultSchema(abxjsonschema.SchemaFor[DeviceAccessDeviceRequestPromptedEvent]()) + c.eventSchemas["Emulation.virtualTimeBudgetExpired"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationVirtualTimeBudgetExpiredEvent]()) + c.eventSchemas["Emulation.screenOrientationLockChanged"] = nativeResultSchema(abxjsonschema.SchemaFor[EmulationScreenOrientationLockChangedEvent]()) + c.eventSchemas["FedCm.dialogShown"] = nativeResultSchema(abxjsonschema.SchemaFor[FedCmDialogShownEvent]()) + c.eventSchemas["FedCm.dialogClosed"] = nativeResultSchema(abxjsonschema.SchemaFor[FedCmDialogClosedEvent]()) + c.eventSchemas["Fetch.requestPaused"] = nativeResultSchema(abxjsonschema.SchemaFor[FetchRequestPausedEvent]()) + c.eventSchemas["Fetch.authRequired"] = nativeResultSchema(abxjsonschema.SchemaFor[FetchAuthRequiredEvent]()) + c.eventSchemas["HeapProfiler.addHeapSnapshotChunk"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerAddHeapSnapshotChunkEvent]()) + c.eventSchemas["HeapProfiler.heapStatsUpdate"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerHeapStatsUpdateEvent]()) + c.eventSchemas["HeapProfiler.lastSeenObjectId"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerLastSeenObjectIDEvent]()) + c.eventSchemas["HeapProfiler.reportHeapSnapshotProgress"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerReportHeapSnapshotProgressEvent]()) + c.eventSchemas["HeapProfiler.resetProfiles"] = nativeResultSchema(abxjsonschema.SchemaFor[HeapProfilerResetProfilesEvent]()) + c.eventSchemas["Input.dragIntercepted"] = nativeResultSchema(abxjsonschema.SchemaFor[InputDragInterceptedEvent]()) + c.eventSchemas["Inspector.detached"] = nativeResultSchema(abxjsonschema.SchemaFor[InspectorDetachedEvent]()) + c.eventSchemas["Inspector.targetCrashed"] = nativeResultSchema(abxjsonschema.SchemaFor[InspectorTargetCrashedEvent]()) + c.eventSchemas["Inspector.targetReloadedAfterCrash"] = nativeResultSchema(abxjsonschema.SchemaFor[InspectorTargetReloadedAfterCrashEvent]()) + c.eventSchemas["Inspector.workerScriptLoaded"] = nativeResultSchema(abxjsonschema.SchemaFor[InspectorWorkerScriptLoadedEvent]()) + c.eventSchemas["LayerTree.layerPainted"] = nativeResultSchema(abxjsonschema.SchemaFor[LayerTreeLayerPaintedEvent]()) + c.eventSchemas["LayerTree.layerTreeDidChange"] = nativeResultSchema(abxjsonschema.SchemaFor[LayerTreeLayerTreeDidChangeEvent]()) + c.eventSchemas["Log.entryAdded"] = nativeResultSchema(abxjsonschema.SchemaFor[LogEntryAddedEvent]()) + c.eventSchemas["Media.playerPropertiesChanged"] = nativeResultSchema(abxjsonschema.SchemaFor[MediaPlayerPropertiesChangedEvent]()) + c.eventSchemas["Media.playerEventsAdded"] = nativeResultSchema(abxjsonschema.SchemaFor[MediaPlayerEventsAddedEvent]()) + c.eventSchemas["Media.playerMessagesLogged"] = nativeResultSchema(abxjsonschema.SchemaFor[MediaPlayerMessagesLoggedEvent]()) + c.eventSchemas["Media.playerErrorsRaised"] = nativeResultSchema(abxjsonschema.SchemaFor[MediaPlayerErrorsRaisedEvent]()) + c.eventSchemas["Media.playerCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[MediaPlayerCreatedEvent]()) + c.eventSchemas["Network.dataReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDataReceivedEvent]()) + c.eventSchemas["Network.eventSourceMessageReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkEventSourceMessageReceivedEvent]()) + c.eventSchemas["Network.loadingFailed"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkLoadingFailedEvent]()) + c.eventSchemas["Network.loadingFinished"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkLoadingFinishedEvent]()) + c.eventSchemas["Network.requestIntercepted"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkRequestInterceptedEvent]()) + c.eventSchemas["Network.requestServedFromCache"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkRequestServedFromCacheEvent]()) + c.eventSchemas["Network.requestWillBeSent"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkRequestWillBeSentEvent]()) + c.eventSchemas["Network.resourceChangedPriority"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkResourceChangedPriorityEvent]()) + c.eventSchemas["Network.signedExchangeReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkSignedExchangeReceivedEvent]()) + c.eventSchemas["Network.responseReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkResponseReceivedEvent]()) + c.eventSchemas["Network.webSocketClosed"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkWebSocketClosedEvent]()) + c.eventSchemas["Network.webSocketCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkWebSocketCreatedEvent]()) + c.eventSchemas["Network.webSocketFrameError"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkWebSocketFrameErrorEvent]()) + c.eventSchemas["Network.webSocketFrameReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkWebSocketFrameReceivedEvent]()) + c.eventSchemas["Network.webSocketFrameSent"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkWebSocketFrameSentEvent]()) + c.eventSchemas["Network.webSocketHandshakeResponseReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkWebSocketHandshakeResponseReceivedEvent]()) + c.eventSchemas["Network.webSocketWillSendHandshakeRequest"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkWebSocketWillSendHandshakeRequestEvent]()) + c.eventSchemas["Network.webTransportCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkWebTransportCreatedEvent]()) + c.eventSchemas["Network.webTransportConnectionEstablished"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkWebTransportConnectionEstablishedEvent]()) + c.eventSchemas["Network.webTransportClosed"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkWebTransportClosedEvent]()) + c.eventSchemas["Network.directTCPSocketCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectTCPSocketCreatedEvent]()) + c.eventSchemas["Network.directTCPSocketOpened"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectTCPSocketOpenedEvent]()) + c.eventSchemas["Network.directTCPSocketAborted"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectTCPSocketAbortedEvent]()) + c.eventSchemas["Network.directTCPSocketClosed"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectTCPSocketClosedEvent]()) + c.eventSchemas["Network.directTCPSocketChunkSent"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectTCPSocketChunkSentEvent]()) + c.eventSchemas["Network.directTCPSocketChunkReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectTCPSocketChunkReceivedEvent]()) + c.eventSchemas["Network.directUDPSocketJoinedMulticastGroup"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectUDPSocketJoinedMulticastGroupEvent]()) + c.eventSchemas["Network.directUDPSocketLeftMulticastGroup"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectUDPSocketLeftMulticastGroupEvent]()) + c.eventSchemas["Network.directUDPSocketCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectUDPSocketCreatedEvent]()) + c.eventSchemas["Network.directUDPSocketOpened"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectUDPSocketOpenedEvent]()) + c.eventSchemas["Network.directUDPSocketAborted"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectUDPSocketAbortedEvent]()) + c.eventSchemas["Network.directUDPSocketClosed"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectUDPSocketClosedEvent]()) + c.eventSchemas["Network.directUDPSocketChunkSent"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectUDPSocketChunkSentEvent]()) + c.eventSchemas["Network.directUDPSocketChunkReceived"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDirectUDPSocketChunkReceivedEvent]()) + c.eventSchemas["Network.requestWillBeSentExtraInfo"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkRequestWillBeSentExtraInfoEvent]()) + c.eventSchemas["Network.responseReceivedExtraInfo"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkResponseReceivedExtraInfoEvent]()) + c.eventSchemas["Network.responseReceivedEarlyHints"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkResponseReceivedEarlyHintsEvent]()) + c.eventSchemas["Network.trustTokenOperationDone"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkTrustTokenOperationDoneEvent]()) + c.eventSchemas["Network.policyUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkPolicyUpdatedEvent]()) + c.eventSchemas["Network.reportingApiReportAdded"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkReportingAPIReportAddedEvent]()) + c.eventSchemas["Network.reportingApiReportUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkReportingAPIReportUpdatedEvent]()) + c.eventSchemas["Network.reportingApiEndpointsChangedForOrigin"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkReportingAPIEndpointsChangedForOriginEvent]()) + c.eventSchemas["Network.deviceBoundSessionsAdded"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDeviceBoundSessionsAddedEvent]()) + c.eventSchemas["Network.deviceBoundSessionEventOccurred"] = nativeResultSchema(abxjsonschema.SchemaFor[NetworkDeviceBoundSessionEventOccurredEvent]()) + c.eventSchemas["Overlay.inspectNodeRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayInspectNodeRequestedEvent]()) + c.eventSchemas["Overlay.nodeHighlightRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayNodeHighlightRequestedEvent]()) + c.eventSchemas["Overlay.screenshotRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayScreenshotRequestedEvent]()) + c.eventSchemas["Overlay.inspectPanelShowRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayInspectPanelShowRequestedEvent]()) + c.eventSchemas["Overlay.inspectedElementWindowRestored"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayInspectedElementWindowRestoredEvent]()) + c.eventSchemas["Overlay.inspectModeCanceled"] = nativeResultSchema(abxjsonschema.SchemaFor[OverlayInspectModeCanceledEvent]()) + c.eventSchemas["Page.domContentEventFired"] = nativeResultSchema(abxjsonschema.SchemaFor[PageDOMContentEventFiredEvent]()) + c.eventSchemas["Page.fileChooserOpened"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFileChooserOpenedEvent]()) + c.eventSchemas["Page.frameAttached"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFrameAttachedEvent]()) + c.eventSchemas["Page.frameClearedScheduledNavigation"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFrameClearedScheduledNavigationEvent]()) + c.eventSchemas["Page.frameDetached"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFrameDetachedEvent]()) + c.eventSchemas["Page.frameSubtreeWillBeDetached"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFrameSubtreeWillBeDetachedEvent]()) + c.eventSchemas["Page.frameNavigated"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFrameNavigatedEvent]()) + c.eventSchemas["Page.documentOpened"] = nativeResultSchema(abxjsonschema.SchemaFor[PageDocumentOpenedEvent]()) + c.eventSchemas["Page.frameResized"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFrameResizedEvent]()) + c.eventSchemas["Page.frameStartedNavigating"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFrameStartedNavigatingEvent]()) + c.eventSchemas["Page.frameRequestedNavigation"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFrameRequestedNavigationEvent]()) + c.eventSchemas["Page.frameScheduledNavigation"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFrameScheduledNavigationEvent]()) + c.eventSchemas["Page.frameStartedLoading"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFrameStartedLoadingEvent]()) + c.eventSchemas["Page.frameStoppedLoading"] = nativeResultSchema(abxjsonschema.SchemaFor[PageFrameStoppedLoadingEvent]()) + c.eventSchemas["Page.downloadWillBegin"] = nativeResultSchema(abxjsonschema.SchemaFor[PageDownloadWillBeginEvent]()) + c.eventSchemas["Page.downloadProgress"] = nativeResultSchema(abxjsonschema.SchemaFor[PageDownloadProgressEvent]()) + c.eventSchemas["Page.interstitialHidden"] = nativeResultSchema(abxjsonschema.SchemaFor[PageInterstitialHiddenEvent]()) + c.eventSchemas["Page.interstitialShown"] = nativeResultSchema(abxjsonschema.SchemaFor[PageInterstitialShownEvent]()) + c.eventSchemas["Page.javascriptDialogClosed"] = nativeResultSchema(abxjsonschema.SchemaFor[PageJavascriptDialogClosedEvent]()) + c.eventSchemas["Page.javascriptDialogOpening"] = nativeResultSchema(abxjsonschema.SchemaFor[PageJavascriptDialogOpeningEvent]()) + c.eventSchemas["Page.lifecycleEvent"] = nativeResultSchema(abxjsonschema.SchemaFor[PageLifecycleEventEvent]()) + c.eventSchemas["Page.backForwardCacheNotUsed"] = nativeResultSchema(abxjsonschema.SchemaFor[PageBackForwardCacheNotUsedEvent]()) + c.eventSchemas["Page.loadEventFired"] = nativeResultSchema(abxjsonschema.SchemaFor[PageLoadEventFiredEvent]()) + c.eventSchemas["Page.navigatedWithinDocument"] = nativeResultSchema(abxjsonschema.SchemaFor[PageNavigatedWithinDocumentEvent]()) + c.eventSchemas["Page.screencastFrame"] = nativeResultSchema(abxjsonschema.SchemaFor[PageScreencastFrameEvent]()) + c.eventSchemas["Page.screencastVisibilityChanged"] = nativeResultSchema(abxjsonschema.SchemaFor[PageScreencastVisibilityChangedEvent]()) + c.eventSchemas["Page.windowOpen"] = nativeResultSchema(abxjsonschema.SchemaFor[PageWindowOpenEvent]()) + c.eventSchemas["Page.compilationCacheProduced"] = nativeResultSchema(abxjsonschema.SchemaFor[PageCompilationCacheProducedEvent]()) + c.eventSchemas["Performance.metrics"] = nativeResultSchema(abxjsonschema.SchemaFor[PerformanceMetricsEvent]()) + c.eventSchemas["PerformanceTimeline.timelineEventAdded"] = nativeResultSchema(abxjsonschema.SchemaFor[PerformanceTimelineTimelineEventAddedEvent]()) + c.eventSchemas["Preload.ruleSetUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[PreloadRuleSetUpdatedEvent]()) + c.eventSchemas["Preload.ruleSetRemoved"] = nativeResultSchema(abxjsonschema.SchemaFor[PreloadRuleSetRemovedEvent]()) + c.eventSchemas["Preload.preloadEnabledStateUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[PreloadPreloadEnabledStateUpdatedEvent]()) + c.eventSchemas["Preload.prefetchStatusUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[PreloadPrefetchStatusUpdatedEvent]()) + c.eventSchemas["Preload.prerenderStatusUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[PreloadPrerenderStatusUpdatedEvent]()) + c.eventSchemas["Preload.preloadingAttemptSourcesUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[PreloadPreloadingAttemptSourcesUpdatedEvent]()) + c.eventSchemas["Profiler.consoleProfileFinished"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerConsoleProfileFinishedEvent]()) + c.eventSchemas["Profiler.consoleProfileStarted"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerConsoleProfileStartedEvent]()) + c.eventSchemas["Profiler.preciseCoverageDeltaUpdate"] = nativeResultSchema(abxjsonschema.SchemaFor[ProfilerPreciseCoverageDeltaUpdateEvent]()) + c.eventSchemas["Runtime.bindingCalled"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeBindingCalledEvent]()) + c.eventSchemas["Runtime.consoleAPICalled"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeConsoleAPICalledEvent]()) + c.eventSchemas["Runtime.exceptionRevoked"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeExceptionRevokedEvent]()) + c.eventSchemas["Runtime.exceptionThrown"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeExceptionThrownEvent]()) + c.eventSchemas["Runtime.executionContextCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeExecutionContextCreatedEvent]()) + c.eventSchemas["Runtime.executionContextDestroyed"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeExecutionContextDestroyedEvent]()) + c.eventSchemas["Runtime.executionContextsCleared"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeExecutionContextsClearedEvent]()) + c.eventSchemas["Runtime.inspectRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[RuntimeInspectRequestedEvent]()) + c.eventSchemas["Security.certificateError"] = nativeResultSchema(abxjsonschema.SchemaFor[SecurityCertificateErrorEvent]()) + c.eventSchemas["Security.visibleSecurityStateChanged"] = nativeResultSchema(abxjsonschema.SchemaFor[SecurityVisibleSecurityStateChangedEvent]()) + c.eventSchemas["Security.securityStateChanged"] = nativeResultSchema(abxjsonschema.SchemaFor[SecuritySecurityStateChangedEvent]()) + c.eventSchemas["ServiceWorker.workerErrorReported"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerWorkerErrorReportedEvent]()) + c.eventSchemas["ServiceWorker.workerRegistrationUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerWorkerRegistrationUpdatedEvent]()) + c.eventSchemas["ServiceWorker.workerVersionUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[ServiceWorkerWorkerVersionUpdatedEvent]()) + c.eventSchemas["SmartCardEmulation.establishContextRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationEstablishContextRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.releaseContextRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationReleaseContextRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.listReadersRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationListReadersRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.getStatusChangeRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationGetStatusChangeRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.cancelRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationCancelRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.connectRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationConnectRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.disconnectRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationDisconnectRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.transmitRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationTransmitRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.controlRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationControlRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.getAttribRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationGetAttribRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.setAttribRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationSetAttribRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.statusRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationStatusRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.beginTransactionRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationBeginTransactionRequestedEvent]()) + c.eventSchemas["SmartCardEmulation.endTransactionRequested"] = nativeResultSchema(abxjsonschema.SchemaFor[SmartCardEmulationEndTransactionRequestedEvent]()) + c.eventSchemas["Storage.cacheStorageContentUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageCacheStorageContentUpdatedEvent]()) + c.eventSchemas["Storage.cacheStorageListUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageCacheStorageListUpdatedEvent]()) + c.eventSchemas["Storage.indexedDBContentUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageIndexedDBContentUpdatedEvent]()) + c.eventSchemas["Storage.indexedDBListUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageIndexedDBListUpdatedEvent]()) + c.eventSchemas["Storage.interestGroupAccessed"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageInterestGroupAccessedEvent]()) + c.eventSchemas["Storage.interestGroupAuctionEventOccurred"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageInterestGroupAuctionEventOccurredEvent]()) + c.eventSchemas["Storage.interestGroupAuctionNetworkRequestCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageInterestGroupAuctionNetworkRequestCreatedEvent]()) + c.eventSchemas["Storage.sharedStorageAccessed"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSharedStorageAccessedEvent]()) + c.eventSchemas["Storage.sharedStorageWorkletOperationExecutionFinished"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageSharedStorageWorkletOperationExecutionFinishedEvent]()) + c.eventSchemas["Storage.storageBucketCreatedOrUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageStorageBucketCreatedOrUpdatedEvent]()) + c.eventSchemas["Storage.storageBucketDeleted"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageStorageBucketDeletedEvent]()) + c.eventSchemas["Storage.attributionReportingSourceRegistered"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageAttributionReportingSourceRegisteredEvent]()) + c.eventSchemas["Storage.attributionReportingTriggerRegistered"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageAttributionReportingTriggerRegisteredEvent]()) + c.eventSchemas["Storage.attributionReportingReportSent"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageAttributionReportingReportSentEvent]()) + c.eventSchemas["Storage.attributionReportingVerboseDebugReportSent"] = nativeResultSchema(abxjsonschema.SchemaFor[StorageAttributionReportingVerboseDebugReportSentEvent]()) + c.eventSchemas["Target.attachedToTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetAttachedToTargetEvent]()) + c.eventSchemas["Target.detachedFromTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetDetachedFromTargetEvent]()) + c.eventSchemas["Target.receivedMessageFromTarget"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetReceivedMessageFromTargetEvent]()) + c.eventSchemas["Target.targetCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetTargetCreatedEvent]()) + c.eventSchemas["Target.targetDestroyed"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetTargetDestroyedEvent]()) + c.eventSchemas["Target.targetCrashed"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetTargetCrashedEvent]()) + c.eventSchemas["Target.targetInfoChanged"] = nativeResultSchema(abxjsonschema.SchemaFor[TargetTargetInfoChangedEvent]()) + c.eventSchemas["Tethering.accepted"] = nativeResultSchema(abxjsonschema.SchemaFor[TetheringAcceptedEvent]()) + c.eventSchemas["Tracing.bufferUsage"] = nativeResultSchema(abxjsonschema.SchemaFor[TracingBufferUsageEvent]()) + c.eventSchemas["Tracing.dataCollected"] = nativeResultSchema(abxjsonschema.SchemaFor[TracingDataCollectedEvent]()) + c.eventSchemas["Tracing.tracingComplete"] = nativeResultSchema(abxjsonschema.SchemaFor[TracingTracingCompleteEvent]()) + c.eventSchemas["WebAudio.contextCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioContextCreatedEvent]()) + c.eventSchemas["WebAudio.contextWillBeDestroyed"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioContextWillBeDestroyedEvent]()) + c.eventSchemas["WebAudio.contextChanged"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioContextChangedEvent]()) + c.eventSchemas["WebAudio.audioListenerCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioAudioListenerCreatedEvent]()) + c.eventSchemas["WebAudio.audioListenerWillBeDestroyed"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioAudioListenerWillBeDestroyedEvent]()) + c.eventSchemas["WebAudio.audioNodeCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioAudioNodeCreatedEvent]()) + c.eventSchemas["WebAudio.audioNodeWillBeDestroyed"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioAudioNodeWillBeDestroyedEvent]()) + c.eventSchemas["WebAudio.audioParamCreated"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioAudioParamCreatedEvent]()) + c.eventSchemas["WebAudio.audioParamWillBeDestroyed"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioAudioParamWillBeDestroyedEvent]()) + c.eventSchemas["WebAudio.nodesConnected"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioNodesConnectedEvent]()) + c.eventSchemas["WebAudio.nodesDisconnected"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioNodesDisconnectedEvent]()) + c.eventSchemas["WebAudio.nodeParamConnected"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioNodeParamConnectedEvent]()) + c.eventSchemas["WebAudio.nodeParamDisconnected"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAudioNodeParamDisconnectedEvent]()) + c.eventSchemas["WebAuthn.credentialAdded"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnCredentialAddedEvent]()) + c.eventSchemas["WebAuthn.credentialDeleted"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnCredentialDeletedEvent]()) + c.eventSchemas["WebAuthn.credentialUpdated"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnCredentialUpdatedEvent]()) + c.eventSchemas["WebAuthn.credentialAsserted"] = nativeResultSchema(abxjsonschema.SchemaFor[WebAuthnCredentialAssertedEvent]()) +} diff --git a/go/modcdp/injector/BorrowedExtensionInjector_test.go b/go/modcdp/injector/BorrowedExtensionInjector_test.go index 0dc5689..9441946 100644 --- a/go/modcdp/injector/BorrowedExtensionInjector_test.go +++ b/go/modcdp/injector/BorrowedExtensionInjector_test.go @@ -12,19 +12,25 @@ func TestBorrowedExtensionInjectorBootstrapsModCDPInsideLiveExtensionServiceWork if err != nil { t.Fatal(err) } - chrome, err := modcdp.NewLocalBrowserLauncher(modcdp.LaunchOptions{ - Headless: boolPtr(true), - Sandbox: boolPtr(false), - ExtraArgs: []string{"--load-extension=" + extensionPath}, - }).Launch(modcdp.LaunchOptions{}) - if err != nil { + headless := true + owner := modcdp.New(modcdp.Options{ + Launcher: modcdp.LauncherConfig{LauncherMode: "local", LauncherOptions: modcdp.LaunchOptions{Headless: &headless}}, + Upstream: modcdp.UpstreamConfig{UpstreamMode: "ws"}, + Injector: modcdp.InjectorConfig{ + InjectorMode: "auto", + InjectorExtensionPath: extensionPath, + InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, + InjectorTrustServiceWorkerTarget: true, + }, + }) + defer owner.Close() + + if err := owner.Connect(); err != nil { t.Fatal(err) } - defer chrome.Close() - cdp := modcdp.New(modcdp.Options{ Launcher: modcdp.LauncherConfig{LauncherMode: "remote"}, - Upstream: modcdp.UpstreamConfig{UpstreamMode: "ws", UpstreamCDPURL: chrome.CDPURL}, + Upstream: modcdp.UpstreamConfig{UpstreamMode: "ws", UpstreamCDPURL: owner.CDPURL}, Injector: modcdp.InjectorConfig{ InjectorMode: "borrow", InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, @@ -42,12 +48,13 @@ func TestBorrowedExtensionInjectorBootstrapsModCDPInsideLiveExtensionServiceWork if cdp.ExtensionID != DefaultModCDPExtensionID { t.Fatalf("ExtensionID = %q", cdp.ExtensionID) } - result, err := cdp.Send("Target.getTargets", map[string]any{}) + result, err := cdp.Mod.Evaluate(map[string]any{ + "expression": "chrome.runtime.getURL('modcdp/service_worker.js')", + }) if err != nil { t.Fatal(err) } - targetInfos, _ := result.(map[string]any)["targetInfos"].([]any) - if len(targetInfos) == 0 { - t.Fatalf("Target.getTargets = %#v", result) + if result != "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js" { + t.Fatalf("Mod.evaluate = %#v", result) } } diff --git a/go/modcdp/injector/DiscoveredExtensionInjector.go b/go/modcdp/injector/DiscoveredExtensionInjector.go index 886ad71..d83d144 100644 --- a/go/modcdp/injector/DiscoveredExtensionInjector.go +++ b/go/modcdp/injector/DiscoveredExtensionInjector.go @@ -30,15 +30,6 @@ func (i *DiscoveredExtensionInjector) Inject() (*ExtensionInjectionResult, error return waited, err } } - if i.wakeConfiguredExtension() { - waited, err := i.waitForReadyServiceWorker(i.Options.InjectorServiceWorkerProbeTimeoutMS, i.Options.InjectorTrustServiceWorkerTarget) - if err != nil || waited != nil { - if waited != nil { - waited.Source = "discovered" - } - return waited, err - } - } if !i.Options.InjectorRequireServiceWorkerTarget { return nil, nil } diff --git a/go/modcdp/injector/DiscoveredExtensionInjector_test.go b/go/modcdp/injector/DiscoveredExtensionInjector_test.go index bc3db0b..b689838 100644 --- a/go/modcdp/injector/DiscoveredExtensionInjector_test.go +++ b/go/modcdp/injector/DiscoveredExtensionInjector_test.go @@ -1,35 +1,36 @@ package injector_test import ( - "encoding/json" modcdp "github.com/browserbase/modcdp/go/modcdp/client" . "github.com/browserbase/modcdp/go/modcdp/injector" - "os" "path/filepath" "testing" ) -const customDiscoveredExtensionID = "hhklgmbgnbeghnjidampacgmgnhelifg" -const customDiscoveredExtensionPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzG1LUbtH0aHMKjTAUeT0saY8xfnRNENctFJme3C1qnsqT7PAXMxJC4nT7tBZy2gEGRirBb3zIZ3OyAu9a0QR8lTLupDp4qHWOhQ7dl9ZjxjQdYa4Gby0xuXLdQrJIxDbmuv+UVJvYa8vRTwQB8koygbzDDDP5/YiB6mc0hbh8XBb82Ossy7T280k8280o/rS0CXdioUraCHj58PDhfxbs18TBcYfOjuRqua9J2oddxobtGehSD0gDtbvn2IWDtRajOlgZZyuS1vLoSR7C1ulFzpRSYPEMhI2x+wphut7E3QImyJ577YeULVGpt988FcixOou7udjx3/IUWjpq8046wIDAQAB" - func TestDiscoveredExtensionInjectorAttachesToAlreadyLoadedRealModCDPExtension(t *testing.T) { extensionPath, err := filepath.Abs(filepath.Join("..", "..", "..", "dist", "extension")) if err != nil { t.Fatal(err) } - chrome, err := modcdp.NewLocalBrowserLauncher(modcdp.LaunchOptions{ - Headless: boolPtr(true), - Sandbox: boolPtr(false), - ExtraArgs: []string{"--load-extension=" + extensionPath}, - }).Launch(modcdp.LaunchOptions{}) - if err != nil { + headless := true + owner := modcdp.New(modcdp.Options{ + Launcher: modcdp.LauncherConfig{LauncherMode: "local", LauncherOptions: modcdp.LaunchOptions{Headless: &headless}}, + Upstream: modcdp.UpstreamConfig{UpstreamMode: "ws"}, + Injector: modcdp.InjectorConfig{ + InjectorMode: "auto", + InjectorExtensionPath: extensionPath, + InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, + InjectorTrustServiceWorkerTarget: true, + }, + }) + defer owner.Close() + + if err := owner.Connect(); err != nil { t.Fatal(err) } - defer chrome.Close() - cdp := modcdp.New(modcdp.Options{ Launcher: modcdp.LauncherConfig{LauncherMode: "remote"}, - Upstream: modcdp.UpstreamConfig{UpstreamMode: "ws", UpstreamCDPURL: chrome.CDPURL}, + Upstream: modcdp.UpstreamConfig{UpstreamMode: "ws", UpstreamCDPURL: owner.CDPURL}, Injector: modcdp.InjectorConfig{ InjectorMode: "discover", InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, @@ -57,96 +58,3 @@ func TestDiscoveredExtensionInjectorAttachesToAlreadyLoadedRealModCDPExtension(t t.Fatalf("Mod.evaluate = %#v", result) } } - -func TestDiscoveredExtensionInjectorSelectsConfiguredExtensionWhenMultipleModCDPWorkersExist(t *testing.T) { - extensionPath, err := filepath.Abs(filepath.Join("..", "..", "..", "dist", "extension")) - if err != nil { - t.Fatal(err) - } - customExtensionPath := filepath.Join(t.TempDir(), "extension") - if err := copyDir(extensionPath, customExtensionPath); err != nil { - t.Fatal(err) - } - manifestPath := filepath.Join(customExtensionPath, "manifest.json") - manifestBytes, err := os.ReadFile(manifestPath) - if err != nil { - t.Fatal(err) - } - var manifest map[string]any - if err := json.Unmarshal(manifestBytes, &manifest); err != nil { - t.Fatal(err) - } - manifest["key"] = customDiscoveredExtensionPublicKey - manifest["name"] = "ModCDP Bridge Custom Test" - updatedManifest, err := json.MarshalIndent(manifest, "", " ") - if err != nil { - t.Fatal(err) - } - if err := os.WriteFile(manifestPath, append(updatedManifest, '\n'), 0o644); err != nil { - t.Fatal(err) - } - - chrome, err := modcdp.NewLocalBrowserLauncher(modcdp.LaunchOptions{ - Headless: boolPtr(true), - Sandbox: boolPtr(false), - ExtraArgs: []string{"--load-extension=" + extensionPath + "," + customExtensionPath}, - }).Launch(modcdp.LaunchOptions{}) - if err != nil { - t.Fatal(err) - } - defer chrome.Close() - - cdp := modcdp.New(modcdp.Options{ - Launcher: modcdp.LauncherConfig{LauncherMode: "remote"}, - Upstream: modcdp.UpstreamConfig{UpstreamMode: "ws", UpstreamCDPURL: chrome.CDPURL}, - Injector: modcdp.InjectorConfig{ - InjectorMode: "discover", - InjectorExtensionID: customDiscoveredExtensionID, - InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, - InjectorTrustServiceWorkerTarget: true, - InjectorRequireServiceWorkerTarget: true, - }, - }) - defer cdp.Close() - - if err := cdp.Connect(); err != nil { - t.Fatal(err) - } - if cdp.ConnectTiming["injector_source"] != "discovered" { - t.Fatalf("injector_source = %v", cdp.ConnectTiming["injector_source"]) - } - if cdp.ExtensionID != customDiscoveredExtensionID { - t.Fatalf("ExtensionID = %q", cdp.ExtensionID) - } - result, err := cdp.Mod.Evaluate(map[string]any{"expression": "chrome.runtime.id"}) - if err != nil { - t.Fatal(err) - } - if result != customDiscoveredExtensionID { - t.Fatalf("Mod.evaluate = %#v", result) - } - - targetsResult, err := cdp.SendRaw("Target.getTargets", nil) - if err != nil { - t.Fatal(err) - } - targets, _ := targetsResult["targetInfos"].([]any) - foundCustom := false - foundDefault := false - for _, rawTarget := range targets { - target, _ := rawTarget.(map[string]any) - if target["type"] != "service_worker" { - continue - } - url, _ := target["url"].(string) - switch url { - case "chrome-extension://" + customDiscoveredExtensionID + "/modcdp/service_worker.js": - foundCustom = true - case "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js": - foundDefault = true - } - } - if !foundCustom || !foundDefault { - t.Fatalf("expected custom and default ModCDP workers, custom=%v default=%v targets=%#v", foundCustom, foundDefault, targets) - } -} diff --git a/go/modcdp/injector/ExtensionInjector.go b/go/modcdp/injector/ExtensionInjector.go index 40e08e3..7bfc8aa 100644 --- a/go/modcdp/injector/ExtensionInjector.go +++ b/go/modcdp/injector/ExtensionInjector.go @@ -1,7 +1,17 @@ package injector import ( + "archive/zip" + "bytes" + "crypto/sha256" + _ "embed" + "encoding/base64" + "encoding/json" "fmt" + "io" + "io/fs" + "os" + "path/filepath" "regexp" "strings" "time" @@ -10,7 +20,6 @@ import ( ) const DefaultModCDPExtensionID = "mdedooklbnfejodmnhmkdpkaedafkehf" -const DefaultModCDPWakePath = "/modcdp/wake.html" const DefaultCDPSendTimeoutMS = 10_000 const DefaultExecutionContextTimeoutMS = 10_000 const DefaultServiceWorkerProbeTimeoutMS = 10_000 @@ -21,6 +30,9 @@ const DefaultTargetSessionPollIntervalMS = 20 var DefaultModCDPServiceWorkerURLSuffixes = []string{"/modcdp/service_worker.js"} var extIDFromURL = regexp.MustCompile(`^chrome-extension://([a-z]+)/`) +//go:embed extension.zip +var bundledExtensionZip []byte + const modcdpReadyExpression = `Boolean(globalThis.ModCDP?.__ModCDPServerVersion >= 1 && globalThis.ModCDP?.handleCommand && globalThis.ModCDP?.addCustomEvent)` type SendCDP = types.SendCDP @@ -42,9 +54,6 @@ type ExtensionInjector struct { } func NewExtensionInjector(options ExtensionInjectorConfig) ExtensionInjector { - if options.InjectorWakePath == "" { - options.InjectorWakePath = DefaultModCDPWakePath - } if options.InjectorCDPSendTimeoutMS == 0 { options.InjectorCDPSendTimeoutMS = DefaultCDPSendTimeoutMS } @@ -85,12 +94,6 @@ func (i *ExtensionInjector) Update(config ExtensionInjectorConfig) *ExtensionInj if config.InjectorExtensionID != "" { i.Options.InjectorExtensionID = config.InjectorExtensionID } - if config.InjectorWakePath != "" { - i.Options.InjectorWakePath = config.InjectorWakePath - } - if config.InjectorWakeURL != "" { - i.Options.InjectorWakeURL = config.InjectorWakeURL - } if config.InjectorServiceWorkerURLIncludes != nil { i.Options.InjectorServiceWorkerURLIncludes = append([]string{}, config.InjectorServiceWorkerURLIncludes...) } @@ -130,9 +133,6 @@ func (i *ExtensionInjector) Update(config ExtensionInjectorConfig) *ExtensionInj if config.InjectorBrowserbaseBaseURL != "" { i.Options.InjectorBrowserbaseBaseURL = config.InjectorBrowserbaseBaseURL } - if config.UpstreamReverseWSURL != "" { - i.Options.UpstreamReverseWSURL = config.UpstreamReverseWSURL - } if config.UpstreamNativeMessagingHostName != "" { i.Options.UpstreamNativeMessagingHostName = config.UpstreamNativeMessagingHostName } @@ -258,41 +258,6 @@ func (i ExtensionInjector) targetInfos() ([]map[string]any, error) { return targets, nil } -func (i ExtensionInjector) configuredWakeURL() string { - if i.Options.InjectorWakeURL != "" { - return i.Options.InjectorWakeURL - } - if i.Options.InjectorExtensionID == "" { - return "" - } - wakePath := i.Options.InjectorWakePath - if wakePath == "" { - wakePath = DefaultModCDPWakePath - } - if !strings.HasPrefix(wakePath, "/") { - wakePath = "/" + wakePath - } - return "chrome-extension://" + i.Options.InjectorExtensionID + wakePath -} - -func (i ExtensionInjector) wakeConfiguredExtension() bool { - wakeURL := i.configuredWakeURL() - if wakeURL == "" || i.Options.Send == nil { - return false - } - _, err := i.sendWithTimeout("Target.createTarget", map[string]any{ - "url": wakeURL, - "background": true, - "hidden": true, - "focus": false, - }, "", i.Options.InjectorCDPSendTimeoutMS) - return err == nil -} - -func (i ExtensionInjector) WakeConfiguredExtension() bool { - return i.wakeConfiguredExtension() -} - func (i ExtensionInjector) probeTarget(target map[string]any, sessionTimeoutMS int, allowAttach bool) (*ExtensionInjectionResult, error) { targetID, _ := target["targetId"].(string) targetURL, _ := target["url"].(string) @@ -416,3 +381,187 @@ func (i ExtensionInjector) serviceWorkerTargetMatches(target map[string]any) boo func (i ExtensionInjector) ServiceWorkerTargetMatches(target map[string]any) bool { return i.serviceWorkerTargetMatches(target) } + +func prepareUnpackedExtension(extensionPath string) (string, string, error) { + if extensionPath == "" { + dir, err := os.MkdirTemp("", "modcdp-extension-") + if err != nil { + return "", "", err + } + reader, err := zip.NewReader(bytes.NewReader(bundledExtensionZip), int64(len(bundledExtensionZip))) + if err != nil { + _ = os.RemoveAll(dir) + return "", "", err + } + if err := extractZipFiles(reader.File, dir); err != nil { + _ = os.RemoveAll(dir) + return "", "", err + } + return extensionRoot(dir), dir, nil + } + if !strings.HasSuffix(extensionPath, ".zip") { + dir, err := os.MkdirTemp("", "modcdp-extension-") + if err != nil { + return "", "", err + } + if err := copyDir(extensionPath, dir); err != nil { + _ = os.RemoveAll(dir) + return "", "", err + } + return dir, dir, nil + } + dir, err := os.MkdirTemp("", "modcdp-extension-") + if err != nil { + return "", "", err + } + reader, err := zip.OpenReader(extensionPath) + if err != nil { + _ = os.RemoveAll(dir) + return "", "", err + } + defer reader.Close() + if err := extractZipFiles(reader.File, dir); err != nil { + _ = os.RemoveAll(dir) + return "", "", err + } + return extensionRoot(dir), dir, nil +} + +func extractZipFiles(files []*zip.File, dir string) error { + root, err := filepath.Abs(dir) + if err != nil { + return err + } + for _, file := range files { + targetPath, err := safeZipTarget(root, file.Name) + if err != nil { + return err + } + if file.FileInfo().IsDir() { + if err := os.MkdirAll(targetPath, 0o755); err != nil { + return err + } + continue + } + if err := os.MkdirAll(filepath.Dir(targetPath), 0o755); err != nil { + return err + } + src, err := file.Open() + if err != nil { + return err + } + dst, err := os.OpenFile(targetPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, file.FileInfo().Mode()) + if err != nil { + _ = src.Close() + return err + } + _, copyErr := io.Copy(dst, src) + srcErr := src.Close() + dstErr := dst.Close() + if copyErr != nil { + return copyErr + } + if srcErr != nil { + return srcErr + } + if dstErr != nil { + return dstErr + } + } + return nil +} + +func safeZipTarget(root string, name string) (string, error) { + cleanName := filepath.Clean(name) + if filepath.IsAbs(cleanName) || cleanName == "." || cleanName == ".." || strings.HasPrefix(cleanName, ".."+string(os.PathSeparator)) { + return "", fmt.Errorf("zip entry %q escapes extension extraction directory", name) + } + targetPath := filepath.Join(root, cleanName) + targetAbs, err := filepath.Abs(targetPath) + if err != nil { + return "", err + } + if targetAbs != root && !strings.HasPrefix(targetAbs, root+string(os.PathSeparator)) { + return "", fmt.Errorf("zip entry %q escapes extension extraction directory", name) + } + return targetAbs, nil +} + +func extensionRoot(unpackedPath string) string { + if _, err := os.Stat(filepath.Join(unpackedPath, "manifest.json")); err == nil { + return unpackedPath + } + nested := filepath.Join(unpackedPath, "extension") + if _, err := os.Stat(filepath.Join(nested, "manifest.json")); err == nil { + return nested + } + return unpackedPath +} + +func extensionIDFromManifestKey(extensionPath string) (string, error) { + manifestBytes, err := os.ReadFile(filepath.Join(extensionPath, "manifest.json")) + if err != nil { + return "", nil + } + var manifest map[string]any + if err := json.Unmarshal(manifestBytes, &manifest); err != nil { + return "", err + } + key, _ := manifest["key"].(string) + if strings.TrimSpace(key) == "" { + return "", nil + } + keyBytes, err := base64.StdEncoding.DecodeString(key) + if err != nil { + return "", err + } + digest := sha256.Sum256(keyBytes) + alphabet := "abcdefghijklmnop" + result := strings.Builder{} + for _, value := range digest[:16] { + result.WriteByte(alphabet[value>>4]) + result.WriteByte(alphabet[value&0x0f]) + } + return result.String(), nil +} + +func copyDir(src string, dst string) error { + return filepath.WalkDir(src, func(path string, entry fs.DirEntry, walkErr error) error { + if walkErr != nil { + return walkErr + } + relative, err := filepath.Rel(src, path) + if err != nil { + return err + } + target := filepath.Join(dst, relative) + if entry.IsDir() { + return os.MkdirAll(target, 0o755) + } + info, err := entry.Info() + if err != nil { + return err + } + sourceFile, err := os.Open(path) + if err != nil { + return err + } + defer sourceFile.Close() + targetFile, err := os.OpenFile(target, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, info.Mode()) + if err != nil { + return err + } + defer targetFile.Close() + _, err = io.Copy(targetFile, sourceFile) + return err + }) +} + +func firstNonEmptyString(values ...string) string { + for _, value := range values { + if strings.TrimSpace(value) != "" { + return strings.TrimSpace(value) + } + } + return "" +} diff --git a/go/modcdp/injector/ExtensionInjector_test.go b/go/modcdp/injector/ExtensionInjector_test.go index 416c77e..59ac172 100644 --- a/go/modcdp/injector/ExtensionInjector_test.go +++ b/go/modcdp/injector/ExtensionInjector_test.go @@ -1,267 +1,13 @@ package injector_test import ( - "context" - "encoding/json" - "fmt" - modcdp "github.com/browserbase/modcdp/go/modcdp/client" - . "github.com/browserbase/modcdp/go/modcdp/injector" - "path/filepath" "strings" "testing" - "time" - "github.com/gobwas/ws" - "github.com/gobwas/ws/wsutil" + . "github.com/browserbase/modcdp/go/modcdp/injector" ) -type probeExtensionInjector struct { - ExtensionInjector -} - -func (i probeExtensionInjector) Inject() (*ExtensionInjectionResult, error) { - return i.WaitForReadyServiceWorker(i.Options.InjectorServiceWorkerReadyTimeoutMS, true) -} - -func TestExtensionInjectorProbesRealExtensionServiceWorkerWithSharedBaseConfig(t *testing.T) { - extensionPath, err := filepath.Abs(filepath.Join("..", "..", "..", "dist", "extension")) - if err != nil { - t.Fatal(err) - } - chrome, err := modcdp.NewLocalBrowserLauncher(modcdp.LaunchOptions{ - Headless: boolPtr(true), - Sandbox: boolPtr(false), - ExtraArgs: []string{"--load-extension=" + extensionPath}, - }).Launch(modcdp.LaunchOptions{}) - if err != nil { - t.Fatal(err) - } - defer chrome.Close() - - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - conn, _, _, err := ws.Dial(ctx, chrome.CDPURL) - if err != nil { - t.Fatal(err) - } - defer conn.Close() - - nextID := 0 - send := func(method string, params map[string]any, sessionID string) (map[string]any, error) { - nextID++ - message := map[string]any{"id": nextID, "method": method, "params": params} - if sessionID != "" { - message["sessionId"] = sessionID - } - body, err := json.Marshal(message) - if err != nil { - return nil, err - } - if err := wsutil.WriteClientText(conn, body); err != nil { - return nil, err - } - for { - raw, err := wsutil.ReadServerText(conn) - if err != nil { - return nil, err - } - var response map[string]any - if err := json.Unmarshal(raw, &response); err != nil { - return nil, err - } - responseID, _ := response["id"].(float64) - if int(responseID) != nextID { - continue - } - if errorObject, ok := response["error"].(map[string]any); ok { - return nil, fmt.Errorf("%v", errorObject["message"]) - } - result, _ := response["result"].(map[string]any) - if result == nil { - result = map[string]any{} - } - return result, nil - } - } - - injector := probeExtensionInjector{ExtensionInjector: NewExtensionInjector(ExtensionInjectorConfig{ - Send: send, - AttachToTarget: func(targetID string) string { - result, _ := send("Target.attachToTarget", map[string]any{"targetId": targetID, "flatten": true}, "") - sessionID, _ := result["sessionId"].(string) - return sessionID - }, - InjectorExtensionID: DefaultModCDPExtensionID, - InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, - InjectorTrustServiceWorkerTarget: true, - })} - - transportConfig := injector.GetTransportConfig() - if transportConfig["injector_extension_id"] != DefaultModCDPExtensionID { - t.Fatalf("injector_extension_id = %v", transportConfig["injector_extension_id"]) - } - if len(injector.GetLauncherConfig().ExtraArgs) != 0 { - t.Fatalf("expected empty launcher config") - } - result, err := injector.Inject() - if err != nil { - t.Fatal(err) - } - if result == nil { - t.Fatal("expected service worker probe result") - } - if result.ExtensionID != DefaultModCDPExtensionID { - t.Fatalf("ExtensionID = %q", result.ExtensionID) - } - if filepath.Base(result.URL) != "service_worker.js" { - t.Fatalf("URL = %q", result.URL) - } -} - -func TestExtensionInjectorKeepsModCDPServiceWorkerAliveThroughOffscreenKeepalive(t *testing.T) { - extensionPath, err := filepath.Abs(filepath.Join("..", "..", "..", "dist", "extension")) - if err != nil { - t.Fatal(err) - } - chrome, err := modcdp.NewLocalBrowserLauncher(modcdp.LaunchOptions{ - Headless: boolPtr(true), - Sandbox: boolPtr(false), - ExtraArgs: []string{"--load-extension=" + extensionPath}, - }).Launch(modcdp.LaunchOptions{}) - if err != nil { - t.Fatal(err) - } - defer chrome.Close() - - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - conn, _, _, err := ws.Dial(ctx, chrome.CDPURL) - if err != nil { - t.Fatal(err) - } - defer conn.Close() - - nextID := 0 - send := func(method string, params map[string]any, sessionID string) (map[string]any, error) { - nextID++ - message := map[string]any{"id": nextID, "method": method, "params": params} - if sessionID != "" { - message["sessionId"] = sessionID - } - body, err := json.Marshal(message) - if err != nil { - return nil, err - } - if err := wsutil.WriteClientText(conn, body); err != nil { - return nil, err - } - for { - raw, err := wsutil.ReadServerText(conn) - if err != nil { - return nil, err - } - var response map[string]any - if err := json.Unmarshal(raw, &response); err != nil { - return nil, err - } - responseID, _ := response["id"].(float64) - if int(responseID) != nextID { - continue - } - if errorObject, ok := response["error"].(map[string]any); ok { - return nil, fmt.Errorf("%v", errorObject["message"]) - } - result, _ := response["result"].(map[string]any) - if result == nil { - result = map[string]any{} - } - return result, nil - } - } - - injector := probeExtensionInjector{ExtensionInjector: NewExtensionInjector(ExtensionInjectorConfig{ - Send: send, - AttachToTarget: func(targetID string) string { - result, _ := send("Target.attachToTarget", map[string]any{"targetId": targetID, "flatten": true}, "") - sessionID, _ := result["sessionId"].(string) - return sessionID - }, - InjectorExtensionID: DefaultModCDPExtensionID, - InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, - InjectorTrustServiceWorkerTarget: true, - })} - - result, err := injector.Inject() - if err != nil { - t.Fatal(err) - } - if result == nil { - t.Fatal("expected service worker probe result") - } - if result.ExtensionID != DefaultModCDPExtensionID { - t.Fatalf("ExtensionID = %q", result.ExtensionID) - } - - foundOffscreen := false - var contexts []any - for attempt := 0; attempt < 50; attempt++ { - contextsResult, err := send("Runtime.evaluate", map[string]any{ - "expression": "chrome.runtime.getContexts({}).then((contexts) => contexts.map((context) => ({ type: context.contextType, url: context.documentUrl || context.origin || '' })))", - "awaitPromise": true, - "returnByValue": true, - }, result.SessionID) - if err != nil { - t.Fatal(err) - } - evaluation, _ := contextsResult["result"].(map[string]any) - contexts, _ = evaluation["value"].([]any) - for _, rawContext := range contexts { - context, _ := rawContext.(map[string]any) - if context["type"] == "OFFSCREEN_DOCUMENT" && - context["url"] == "chrome-extension://"+DefaultModCDPExtensionID+"/offscreen/keepalive.html" { - foundOffscreen = true - } - } - if foundOffscreen { - break - } - time.Sleep(100 * time.Millisecond) - } - if !foundOffscreen { - t.Fatalf("expected offscreen keepalive context, got %#v", contexts) - } - - time.Sleep(3 * time.Second) - targetsResult, err := send("Target.getTargets", map[string]any{}, "") - if err != nil { - t.Fatal(err) - } - targets, _ := targetsResult["targetInfos"].([]any) - foundServiceWorker := false - for _, rawTarget := range targets { - target, _ := rawTarget.(map[string]any) - if target["type"] == "service_worker" && - target["url"] == "chrome-extension://"+DefaultModCDPExtensionID+"/modcdp/service_worker.js" { - foundServiceWorker = true - } - } - if !foundServiceWorker { - t.Fatalf("expected service worker target, got %#v", targets) - } - version, err := send("Runtime.evaluate", map[string]any{ - "expression": "globalThis.ModCDP?.__ModCDPServerVersion", - "returnByValue": true, - }, result.SessionID) - if err != nil { - t.Fatal(err) - } - versionResult, _ := version["result"].(map[string]any) - if versionResult["value"] != float64(2) { - t.Fatalf("ModCDP server version = %#v", versionResult["value"]) - } -} - -func TestExtensionInjectorOwnsSharedConfig(t *testing.T) { +func TestExtensionInjectorOwnsSharedInjectorConfig(t *testing.T) { injector := NewExtensionInjector(ExtensionInjectorConfig{ InjectorExtensionID: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, @@ -279,173 +25,19 @@ func TestExtensionInjectorOwnsSharedConfig(t *testing.T) { "type": "service_worker", "url": "chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/modcdp/service_worker.js", }) { - t.Fatalf("expected service worker target to match") - } - if _, err := injector.Inject(); err == nil { - t.Fatalf("expected base Inject to fail") - } -} - -func TestExtensionInjectorSendWithTimeoutEnforcesCDPSendTimeout(t *testing.T) { - chrome, err := modcdp.NewLocalBrowserLauncher(modcdp.LaunchOptions{ - Headless: boolPtr(true), - Sandbox: boolPtr(false), - }).Launch(modcdp.LaunchOptions{}) - if err != nil { - t.Fatal(err) - } - defer chrome.Close() - - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - conn, _, _, err := ws.Dial(ctx, chrome.CDPURL) - if err != nil { - t.Fatal(err) - } - defer conn.Close() - - nextID := 0 - send := func(method string, params map[string]any, sessionID string) (map[string]any, error) { - nextID++ - message := map[string]any{"id": nextID, "method": method, "params": params} - if sessionID != "" { - message["sessionId"] = sessionID - } - body, err := json.Marshal(message) - if err != nil { - return nil, err - } - if err := wsutil.WriteClientText(conn, body); err != nil { - return nil, err - } - for { - raw, err := wsutil.ReadServerText(conn) - if err != nil { - return nil, err - } - var response map[string]any - if err := json.Unmarshal(raw, &response); err != nil { - return nil, err - } - responseID, _ := response["id"].(float64) - if int(responseID) != nextID { - continue - } - if errorObject, ok := response["error"].(map[string]any); ok { - return nil, fmt.Errorf("%v", errorObject["message"]) - } - result, _ := response["result"].(map[string]any) - if result == nil { - result = map[string]any{} - } - return result, nil - } - } - - created, err := send("Target.createTarget", map[string]any{"url": "about:blank#modcdp-timeout"}, "") - if err != nil { - t.Fatal(err) + t.Fatal("expected service worker target to match") } - targetID, _ := created["targetId"].(string) - attached, err := send("Target.attachToTarget", map[string]any{"targetId": targetID, "flatten": true}, "") - if err != nil { - t.Fatal(err) - } - sessionID, _ := attached["sessionId"].(string) - if _, err := send("Runtime.enable", map[string]any{}, sessionID); err != nil { - t.Fatal(err) - } - injector := NewExtensionInjector(ExtensionInjectorConfig{ - Send: send, - }) - - if _, err := injector.SendWithTimeout("Runtime.evaluate", map[string]any{ - "expression": "new Promise(() => {})", - "awaitPromise": true, - }, sessionID, 5); err == nil || !strings.Contains(err.Error(), "Runtime.evaluate timed out after 5ms") { - t.Fatalf("SendWithTimeout error = %v", err) + if injector.ServiceWorkerTargetMatches(map[string]any{ + "targetId": "target-1", + "type": "service_worker", + "url": "chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/background.js", + }) { + t.Fatal("expected background target not to match") } } -func TestExtensionInjectorWakesConfiguredExtensionWithHiddenBackgroundTarget(t *testing.T) { - extensionPath, err := filepath.Abs(filepath.Join("..", "..", "..", "dist", "extension")) - if err != nil { - t.Fatal(err) - } - chrome, err := modcdp.NewLocalBrowserLauncher(modcdp.LaunchOptions{ - Headless: boolPtr(true), - Sandbox: boolPtr(false), - ExtraArgs: []string{"--load-extension=" + extensionPath}, - }).Launch(modcdp.LaunchOptions{}) - if err != nil { - t.Fatal(err) - } - defer chrome.Close() - - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - conn, _, _, err := ws.Dial(ctx, chrome.CDPURL) - if err != nil { - t.Fatal(err) - } - defer conn.Close() - - nextID := 0 - send := func(method string, params map[string]any, sessionID string) (map[string]any, error) { - nextID++ - message := map[string]any{"id": nextID, "method": method, "params": params} - if sessionID != "" { - message["sessionId"] = sessionID - } - body, err := json.Marshal(message) - if err != nil { - return nil, err - } - if err := wsutil.WriteClientText(conn, body); err != nil { - return nil, err - } - for { - raw, err := wsutil.ReadServerText(conn) - if err != nil { - return nil, err - } - var response map[string]any - if err := json.Unmarshal(raw, &response); err != nil { - return nil, err - } - responseID, _ := response["id"].(float64) - if int(responseID) != nextID { - continue - } - if errorObject, ok := response["error"].(map[string]any); ok { - return nil, fmt.Errorf("%v", errorObject["message"]) - } - result, _ := response["result"].(map[string]any) - if result == nil { - result = map[string]any{} - } - return result, nil - } - } - - injector := NewExtensionInjector(ExtensionInjectorConfig{ - InjectorExtensionID: DefaultModCDPExtensionID, - Send: send, - }) - - if !injector.WakeConfiguredExtension() { - t.Fatalf("expected wake to succeed") - } - targetsResult, err := send("Target.getTargets", map[string]any{}, "") - if err != nil { - t.Fatal(err) - } - targets, _ := targetsResult["targetInfos"].([]any) - for _, rawTarget := range targets { - target, _ := rawTarget.(map[string]any) - if target["url"] == "chrome-extension://"+DefaultModCDPExtensionID+"/modcdp/wake.html" { - return - } +func TestExtensionInjectorBaseInjectReportsTheClassName(t *testing.T) { + if _, err := NewExtensionInjector(ExtensionInjectorConfig{}).Inject(); err == nil || !strings.Contains(err.Error(), "ExtensionInjector.inject is not implemented") { + t.Fatalf("Inject error = %v", err) } - t.Fatalf("expected wake target, got %#v", targets) } diff --git a/go/modcdp/injector/ExtensionsLoadUnpackedInjector.go b/go/modcdp/injector/ExtensionsLoadUnpackedInjector.go index 2c80efa..d13def9 100644 --- a/go/modcdp/injector/ExtensionsLoadUnpackedInjector.go +++ b/go/modcdp/injector/ExtensionsLoadUnpackedInjector.go @@ -22,7 +22,7 @@ func (i *ExtensionsLoadUnpackedInjector) Prepare() error { if i.UnpackedExtensionPath != "" { return nil } - unpackedPath, cleanupPath, err := prepareUnpackedExtension(extensionPath, true) + unpackedPath, cleanupPath, err := prepareUnpackedExtension(extensionPath) if err != nil { return err } @@ -51,7 +51,6 @@ func (i *ExtensionsLoadUnpackedInjector) Inject() (*ExtensionInjectionResult, er return nil, fmt.Errorf("Extensions.loadUnpacked returned no extension id") } i.Options.InjectorExtensionID = extensionID - i.wakeConfiguredExtension() swURLPrefix := "chrome-extension://" + extensionID + "/" deadline := time.Now().Add(time.Duration(i.Options.InjectorServiceWorkerReadyTimeoutMS) * time.Millisecond) for time.Now().Before(deadline) { diff --git a/go/modcdp/injector/ExtensionsLoadUnpackedInjector_test.go b/go/modcdp/injector/ExtensionsLoadUnpackedInjector_test.go index 3c89bad..9251461 100644 --- a/go/modcdp/injector/ExtensionsLoadUnpackedInjector_test.go +++ b/go/modcdp/injector/ExtensionsLoadUnpackedInjector_test.go @@ -1,103 +1,28 @@ package injector_test import ( - "context" - "encoding/json" - "fmt" - modcdp "github.com/browserbase/modcdp/go/modcdp/client" - . "github.com/browserbase/modcdp/go/modcdp/injector" + "os" "path/filepath" "strings" "testing" - "time" - "github.com/gobwas/ws" - "github.com/gobwas/ws/wsutil" + . "github.com/browserbase/modcdp/go/modcdp/injector" ) -func TestExtensionsLoadUnpackedInjectorExercisesRealCDPLoadUnpackedPath(t *testing.T) { - extensionPath, err := filepath.Abs(filepath.Join("..", "..", "..", "dist", "extension")) - if err != nil { - t.Fatal(err) - } - chrome, err := modcdp.NewLocalBrowserLauncher(modcdp.LaunchOptions{ - Headless: boolPtr(true), - Sandbox: boolPtr(false), - }).Launch(modcdp.LaunchOptions{}) - if err != nil { - t.Fatal(err) - } - defer chrome.Close() - - ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) - defer cancel() - conn, _, _, err := ws.Dial(ctx, chrome.CDPURL) - if err != nil { - t.Fatal(err) - } - defer conn.Close() - - nextID := 0 - send := func(method string, params map[string]any, sessionID string) (map[string]any, error) { - nextID++ - message := map[string]any{"id": nextID, "method": method, "params": params} - if sessionID != "" { - message["sessionId"] = sessionID - } - body, err := json.Marshal(message) - if err != nil { - return nil, err - } - if err := wsutil.WriteClientText(conn, body); err != nil { - return nil, err - } - for { - raw, err := wsutil.ReadServerText(conn) - if err != nil { - return nil, err - } - var response map[string]any - if err := json.Unmarshal(raw, &response); err != nil { - return nil, err - } - responseID, _ := response["id"].(float64) - if int(responseID) != nextID { - continue - } - if errorObject, ok := response["error"].(map[string]any); ok { - return nil, fmt.Errorf("%v", errorObject["message"]) - } - result, _ := response["result"].(map[string]any) - if result == nil { - result = map[string]any{} - } - return result, nil - } - } - - injector := NewExtensionsLoadUnpackedInjector(ExtensionInjectorConfig{ - Send: send, - InjectorExtensionPath: extensionPath, - }) +func TestExtensionsLoadUnpackedInjectorPreparesDefaultPackagedExtensionZip(t *testing.T) { + injector := NewExtensionsLoadUnpackedInjector(ExtensionInjectorConfig{}) if err := injector.Prepare(); err != nil { t.Fatal(err) } defer injector.Close() - result, err := injector.Inject() - if err != nil { - t.Fatal(err) - } - if result != nil { - t.Fatalf("result = %#v", result) + if injector.UnpackedExtensionPath == "" { + t.Fatal("expected UnpackedExtensionPath") } - if injector.LastError == nil { - t.Fatal("expected LastError from real Extensions.loadUnpacked attempt") + if !strings.Contains(injector.UnpackedExtensionPath, "modcdp-extension-") { + t.Fatalf("UnpackedExtensionPath = %q", injector.UnpackedExtensionPath) } - message := injector.LastError.Error() - if !strings.Contains(message, "Method not available") && - !strings.Contains(message, "Method not found") && - !strings.Contains(message, "wasn't found") { - t.Fatalf("LastError = %v", injector.LastError) + if _, err := os.Stat(filepath.Join(injector.UnpackedExtensionPath, "manifest.json")); err != nil { + t.Fatalf("expected unpacked manifest: %v", err) } } diff --git a/go/modcdp/injector/LocalBrowserLaunchExtensionInjector.go b/go/modcdp/injector/LocalBrowserLaunchExtensionInjector.go index d6f14a5..927bdaf 100644 --- a/go/modcdp/injector/LocalBrowserLaunchExtensionInjector.go +++ b/go/modcdp/injector/LocalBrowserLaunchExtensionInjector.go @@ -1,23 +1,9 @@ package injector import ( - "archive/zip" - "bytes" - "crypto/sha256" - _ "embed" - "encoding/base64" - "encoding/json" - "fmt" - "io" - "io/fs" "os" - "path/filepath" - "strings" ) -//go:embed extension.zip -var bundledExtensionZip []byte - type LocalBrowserLaunchExtensionInjector struct { ExtensionInjector UnpackedExtensionPath string @@ -34,7 +20,7 @@ func (i *LocalBrowserLaunchExtensionInjector) Prepare() error { if i.UnpackedExtensionPath != "" { return nil } - unpackedPath, cleanupPath, err := prepareUnpackedExtension(extensionPath, true) + unpackedPath, cleanupPath, err := prepareUnpackedExtension(extensionPath) if err != nil { return err } @@ -52,8 +38,7 @@ func (i *LocalBrowserLaunchExtensionInjector) GetLauncherConfig() LaunchOptions } func (i *LocalBrowserLaunchExtensionInjector) Inject() (*ExtensionInjectionResult, error) { - timeoutMS := i.Options.InjectorServiceWorkerProbeTimeoutMS - discovered, err := i.waitForReadyServiceWorker(timeoutMS, i.Options.InjectorTrustServiceWorkerTarget) + discovered, err := i.discoverReadyServiceWorker(i.Options.InjectorTrustServiceWorkerTarget) if err != nil || discovered == nil { return discovered, err } @@ -87,190 +72,3 @@ func (i *LocalBrowserLaunchExtensionInjector) resolveExtensionID() (string, erro } return i.ExtensionID, nil } - -func prepareUnpackedExtension(extensionPath string, copyDirectory bool) (string, string, error) { - if extensionPath == "" { - dir, err := os.MkdirTemp("", "modcdp-extension-") - if err != nil { - return "", "", err - } - reader, err := zip.NewReader(bytes.NewReader(bundledExtensionZip), int64(len(bundledExtensionZip))) - if err != nil { - _ = os.RemoveAll(dir) - return "", "", err - } - if err := extractZipFiles(reader.File, dir); err != nil { - _ = os.RemoveAll(dir) - return "", "", err - } - return extensionRoot(dir), dir, nil - } - if !strings.HasSuffix(extensionPath, ".zip") { - if !copyDirectory { - return extensionPath, "", nil - } - dir, err := os.MkdirTemp("", "modcdp-extension-") - if err != nil { - return "", "", err - } - if err := copyDir(extensionPath, dir); err != nil { - _ = os.RemoveAll(dir) - return "", "", err - } - return dir, dir, nil - } - dir, err := os.MkdirTemp("", "modcdp-extension-") - if err != nil { - return "", "", err - } - reader, err := zip.OpenReader(extensionPath) - if err != nil { - _ = os.RemoveAll(dir) - return "", "", err - } - defer reader.Close() - if err := extractZipFiles(reader.File, dir); err != nil { - _ = os.RemoveAll(dir) - return "", "", err - } - return extensionRoot(dir), dir, nil -} - -func extractZipFiles(files []*zip.File, dir string) error { - root, err := filepath.Abs(dir) - if err != nil { - return err - } - for _, file := range files { - targetPath, err := safeZipTarget(root, file.Name) - if err != nil { - return err - } - if file.FileInfo().IsDir() { - if err := os.MkdirAll(targetPath, 0o755); err != nil { - return err - } - continue - } - if err := os.MkdirAll(filepath.Dir(targetPath), 0o755); err != nil { - return err - } - src, err := file.Open() - if err != nil { - return err - } - dst, err := os.OpenFile(targetPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, file.FileInfo().Mode()) - if err != nil { - _ = src.Close() - return err - } - _, copyErr := io.Copy(dst, src) - srcErr := src.Close() - dstErr := dst.Close() - if copyErr != nil { - return copyErr - } - if srcErr != nil { - return srcErr - } - if dstErr != nil { - return dstErr - } - } - return nil -} - -func safeZipTarget(root string, name string) (string, error) { - cleanName := filepath.Clean(name) - if filepath.IsAbs(cleanName) || cleanName == "." || cleanName == ".." || strings.HasPrefix(cleanName, ".."+string(os.PathSeparator)) { - return "", fmt.Errorf("zip entry %q escapes extension extraction directory", name) - } - targetPath := filepath.Join(root, cleanName) - targetAbs, err := filepath.Abs(targetPath) - if err != nil { - return "", err - } - if targetAbs != root && !strings.HasPrefix(targetAbs, root+string(os.PathSeparator)) { - return "", fmt.Errorf("zip entry %q escapes extension extraction directory", name) - } - return targetAbs, nil -} - -func extensionRoot(unpackedPath string) string { - if _, err := os.Stat(filepath.Join(unpackedPath, "manifest.json")); err == nil { - return unpackedPath - } - nested := filepath.Join(unpackedPath, "extension") - if _, err := os.Stat(filepath.Join(nested, "manifest.json")); err == nil { - return nested - } - return unpackedPath -} - -func extensionIDFromManifestKey(extensionPath string) (string, error) { - manifestBytes, err := os.ReadFile(filepath.Join(extensionPath, "manifest.json")) - if err != nil { - return "", nil - } - var manifest map[string]any - if err := json.Unmarshal(manifestBytes, &manifest); err != nil { - return "", err - } - key, _ := manifest["key"].(string) - if strings.TrimSpace(key) == "" { - return "", nil - } - keyBytes, err := base64.StdEncoding.DecodeString(key) - if err != nil { - return "", err - } - digest := sha256.Sum256(keyBytes) - alphabet := "abcdefghijklmnop" - result := strings.Builder{} - for _, value := range digest[:16] { - result.WriteByte(alphabet[value>>4]) - result.WriteByte(alphabet[value&0x0f]) - } - return result.String(), nil -} - -func copyDir(src string, dst string) error { - return filepath.WalkDir(src, func(path string, entry fs.DirEntry, walkErr error) error { - if walkErr != nil { - return walkErr - } - relative, err := filepath.Rel(src, path) - if err != nil { - return err - } - target := filepath.Join(dst, relative) - if entry.IsDir() { - return os.MkdirAll(target, 0o755) - } - info, err := entry.Info() - if err != nil { - return err - } - sourceFile, err := os.Open(path) - if err != nil { - return err - } - defer sourceFile.Close() - targetFile, err := os.OpenFile(target, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, info.Mode()) - if err != nil { - return err - } - defer targetFile.Close() - _, err = io.Copy(targetFile, sourceFile) - return err - }) -} - -func firstNonEmptyString(values ...string) string { - for _, value := range values { - if strings.TrimSpace(value) != "" { - return strings.TrimSpace(value) - } - } - return "" -} diff --git a/go/modcdp/injector/LocalBrowserLaunchExtensionInjector_test.go b/go/modcdp/injector/LocalBrowserLaunchExtensionInjector_test.go index 60ea660..3d19046 100644 --- a/go/modcdp/injector/LocalBrowserLaunchExtensionInjector_test.go +++ b/go/modcdp/injector/LocalBrowserLaunchExtensionInjector_test.go @@ -2,13 +2,12 @@ package injector_test import ( "archive/zip" - modcdp "github.com/browserbase/modcdp/go/modcdp/client" . "github.com/browserbase/modcdp/go/modcdp/injector" "os" "path/filepath" - "runtime" "strings" "testing" + "time" ) func TestLocalBrowserLaunchExtensionInjectorRejectsZipEntriesOutsideExtractionDir(t *testing.T) { @@ -42,73 +41,96 @@ func TestLocalBrowserLaunchExtensionInjectorRejectsZipEntriesOutsideExtractionDi } } -func TestLocalBrowserLaunchExtensionInjectorLoadsRealExtensionDuringLocalLaunch(t *testing.T) { +func TestLocalBrowserLaunchExtensionInjectorPreparesUnpackedExtensionDirectoryForLoadExtension(t *testing.T) { extensionPath, err := filepath.Abs(filepath.Join("..", "..", "..", "dist", "extension")) if err != nil { t.Fatal(err) } - headless := runtime.GOOS == "linux" && os.Getenv("DISPLAY") == "" - sandbox := runtime.GOOS != "linux" - cdp := modcdp.New(modcdp.Options{ - Launcher: modcdp.LauncherConfig{LauncherMode: "local", - LauncherOptions: modcdp.LaunchOptions{ - Headless: boolPtr(headless), - Sandbox: boolPtr(sandbox), - }, - }, - Upstream: modcdp.UpstreamConfig{UpstreamMode: "ws"}, - Injector: modcdp.InjectorConfig{ - InjectorMode: "inject", - InjectorExtensionPath: extensionPath, - InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, - InjectorTrustServiceWorkerTarget: true, - InjectorServiceWorkerProbeTimeoutMS: 30_000, - }, - Client: modcdp.ClientConfig{ - ClientCDPSendTimeoutMS: 30_000, - }, - }) - defer cdp.Close() - - if err := cdp.Connect(); err != nil { + injector := NewLocalBrowserLaunchExtensionInjector(ExtensionInjectorConfig{InjectorExtensionPath: extensionPath}) + if err := injector.Prepare(); err != nil { t.Fatal(err) } - if cdp.ConnectTiming["injector_source"] != "local_launch" { - t.Fatalf("injector_source = %v", cdp.ConnectTiming["injector_source"]) + defer injector.Close() + + if injector.UnpackedExtensionPath == "" { + t.Fatal("expected UnpackedExtensionPath") } - if cdp.ExtensionID != DefaultModCDPExtensionID { - t.Fatalf("ExtensionID = %q", cdp.ExtensionID) + if injector.UnpackedExtensionPath == extensionPath { + t.Fatalf("UnpackedExtensionPath = %q", injector.UnpackedExtensionPath) } - if cdp.ExtSessionID == "" { - t.Fatal("expected ExtSessionID") + if _, err := os.Stat(filepath.Join(injector.UnpackedExtensionPath, "manifest.json")); err != nil { + t.Fatalf("expected unpacked manifest: %v", err) } - result, err := cdp.Mod.Evaluate(map[string]any{ - "expression": "chrome.runtime.getURL('modcdp/service_worker.js')", - }) - if err != nil { + launcherConfig := injector.GetLauncherConfig() + if len(launcherConfig.ExtraArgs) != 1 || launcherConfig.ExtraArgs[0] != "--load-extension="+injector.UnpackedExtensionPath { + t.Fatalf("ExtraArgs = %#v", launcherConfig.ExtraArgs) + } + if injector.Options.InjectorExtensionID != DefaultModCDPExtensionID { + t.Fatalf("InjectorExtensionID = %q", injector.Options.InjectorExtensionID) + } +} + +func TestLocalBrowserLaunchExtensionInjectorPreparesDefaultExtensionZipForLoadExtension(t *testing.T) { + injector := NewLocalBrowserLaunchExtensionInjector(ExtensionInjectorConfig{}) + if err := injector.Prepare(); err != nil { t.Fatal(err) } - if result != "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js" { - t.Fatalf("Mod.evaluate = %#v", result) + defer injector.Close() + + if injector.UnpackedExtensionPath == "" { + t.Fatal("expected UnpackedExtensionPath") + } + if !strings.Contains(injector.UnpackedExtensionPath, "modcdp-extension-") { + t.Fatalf("UnpackedExtensionPath = %q", injector.UnpackedExtensionPath) + } + if _, err := os.Stat(filepath.Join(injector.UnpackedExtensionPath, "manifest.json")); err != nil { + t.Fatalf("expected unpacked manifest: %v", err) + } + launcherConfig := injector.GetLauncherConfig() + if len(launcherConfig.ExtraArgs) != 1 || launcherConfig.ExtraArgs[0] != "--load-extension="+injector.UnpackedExtensionPath { + t.Fatalf("ExtraArgs = %#v", launcherConfig.ExtraArgs) + } + if injector.Options.InjectorExtensionID != DefaultModCDPExtensionID { + t.Fatalf("InjectorExtensionID = %q", injector.Options.InjectorExtensionID) } } -func TestLocalBrowserLaunchExtensionInjectorPreparesLauncherConfig(t *testing.T) { +func TestLocalBrowserLaunchExtensionInjectorReturnsImmediatelyWhenLaunchedExtensionTargetIsAbsent(t *testing.T) { extensionPath, err := filepath.Abs(filepath.Join("..", "..", "..", "dist", "extension")) if err != nil { t.Fatal(err) } - injector := NewLocalBrowserLaunchExtensionInjector(ExtensionInjectorConfig{InjectorExtensionPath: extensionPath}) + methods := []string{} + injector := NewLocalBrowserLaunchExtensionInjector(ExtensionInjectorConfig{ + InjectorExtensionPath: extensionPath, + InjectorTrustServiceWorkerTarget: true, + Send: func(method string, params map[string]any, sessionID string) (map[string]any, error) { + methods = append(methods, method) + if method == "Target.getTargets" { + return map[string]any{"targetInfos": []any{}}, nil + } + t.Fatalf("unexpected %s", method) + return nil, nil + }, + }) if err := injector.Prepare(); err != nil { t.Fatal(err) } defer injector.Close() - launchConfig := injector.GetLauncherConfig() - if len(launchConfig.ExtraArgs) != 1 || !strings.HasPrefix(launchConfig.ExtraArgs[0], "--load-extension=") { - t.Fatalf("ExtraArgs = %v", launchConfig.ExtraArgs) + startedAt := time.Now() + result, err := injector.Inject() + if err != nil { + t.Fatal(err) + } + elapsed := time.Since(startedAt) + if result != nil { + t.Fatalf("result = %#v", result) + } + if strings.Join(methods, ",") != "Target.getTargets" { + t.Fatalf("methods = %#v", methods) } - if injector.ExtensionID != DefaultModCDPExtensionID { - t.Fatalf("ExtensionID = %q", injector.ExtensionID) + if elapsed >= 200*time.Millisecond { + t.Fatalf("Inject took %s", elapsed) } } diff --git a/go/modcdp/injector/extension.zip b/go/modcdp/injector/extension.zip index 268e970c6af6be16e5388468db0aeb106cabe5a6..d48ca552c711acaceddbab33088bdad663ffadfe 100644 GIT binary patch literal 510634 zcmZ^~V{k4^5GESiwv7{A>cs%XA8`y{$GRt)&GxKGf!7DdlxGQdnU#ID<8)H!RKIZ?qcF>X7;}% z{s#>P1mwS!=SMMx)j>f(*19Jf|F5ipjhUIFk*$@x*)MCC*d#rh0cM=Pw;%Mu zU6mxui0&p%#m%Tg{*u?BdZ}~0o%Zasau*y!KfP@LHy2lz4p><3Q*Lf4vUb%Wc!Eu> zp?=rSW)bNxPxv78XOyYS*vyR3# z(dtW2HoUJYxJtrTftKR6!n!BVl&!5I5@<0vB|6;)x>-3pJ)o#rFgh$BKjgxPX+0{z z)4ESFin138qsAL@uyg}3Mate9 zcl`ky4hzkd{;GQEi`$Wvq<$lqDZFWy7EMU@rv^gEo*&(7--gzM`*4 z!qx}o$ZtDC6Uoj%O%ycnDH^5@32-ZA_A-UrTPYoW{xX1{N80TBhz0d2EZZ2)hj{&; z`7)+K$t_M%@4zP;rAbudaYXlDD1*eev)ACs?+R4B19xbSS@#UGzo><(4pi<~apEbt znsr=cNFiZ4T8GzRTz0qh(xnn2zS%!U%Q?M4sqhEEYMzccFbc<%1OB&l)BjZP|1oJt z*Z(}gVn*qGp$+qvDm0Cjkm0BC(R9MZASR&zY+GlAnv&^s`gxRB>qCH# zBV@jPH+w|>vj|3tS@jZ?Xp-2_*4^x~vJf3VY_f*;TW`_F)yKkgZ7YbMkEbzlXLFQ0 zn<7$C=8wX)g!2SHK8xiLdjA8CJ|-IFOlMRny>-pDj^vGi{YDMu>i+t;@niZu@2Fw``~U9ssQ-tR*g2S* zm^%K?L*joM6`(ecC#ens#50{7gzEo~-Nnq=-O9wwz{A1W#?1LY{r<8ua=hZVbJ^sI z-@Vmn$ehXB;*s7cW6IXev(4)C>99$b&AHjpO=`i6Y+W8pQct;GVEg$3Nl2>T9JOA~ z-t<{nTwlWg2_^vnBdP59z#dVr^Q74NXRvO{^!};?A!X_U+NYo)>mv9403IHH5|r$z zTa#HxJhR#hF~fv^686^pijuWj$FXuna_~s}0MI-K+?J*c)vY2@5{U^>bQWT2C!Sdb zqUPV@@1Pny$84q(&O3v3;R{R8@)*nf!#Q1fL4N?-9LQH+BCKS}P3(O2zn+kk<0UuK z*-pH$hswQackV>z{qb*0O}y_S$8?pb>cY)&?b(elvdxwMY~ zl<+FIc2-GHxZ(6Wz^>(eO6otdxg7)w#U7R5aSk_sn7$%CjiW+npV(RSedvZ zdkk1M{Jd78bUFXAKzt3?tG^3<@=chb#QUL^aJ##O8MD|7=B@(`ZEamuLX@t=UrDjr z>J4oUw>nRzNT`U4Zky}^Dw)DcEK#h zt|^=kH?e4-`FfFxCOMpWKG(p!S4T?wdmMY*eXrkdy07m%&_`o8X~yl*pwU+!vo%KZIqaY7!2NAI^A?k+(E(c8)!vqe3XNy;9ePUiRf%K3K2) z4npX55FOaBWOv$bC|btuQ-dT?pxjUaYfxTXw#W94Q6*l@;=G|Wi}9N?=$bd2T-^Wg z-qmT$h476?)Gyx%b^9xJ#J4&Tz*im2Ccrg2eLHm8_!fL_uBLVRN1tmDyDx$JwGm#~ z^53~SNDQUMj^Hvx3`Weeb_5s&;S#8wE$%Y7zc#kKURp8bGn(fk{R~34Ml}7sa*$UT z_NqwA~*+?6cj(pe7knPO!M_>79G6Fv&%>U#Nw$hjT}NHz@bT4&;iaZ6h6e_y;x0 z;g7&j=Cz=L6!>oOY7-TLq7{)VzP7{%0bXt_B?TuE_}o@-!D_6EFB$f@SL2`Ngs(Xm}+XYXpcZ-1|PnCxwQ4HOH6@U3M< z6RGH#d%~Eu2X0s(<(tj|59Kp}FvOYU8Gi@JKPw7Bu(&`Plr+T-bi^)fA(aeq%qTu} zwNN1JSNQvp=Pp+T6Unzsi^EQxOocRi$9?^$!}vJ7*&Scl?Y0z73hc0nnAsco`em5e zP}k#&d|81RO&%`huxJ7GWc3lFQb(K#bjghb5=rX|K}~N<=Ca_LIwoYWQbq$b5#Y*- zV?qC^DmfjEyGB(R44jfM6L&xz_atc-4n%1&whsYp#V7135SJ)E6F%Wm=k9bDX7;gN zFxF!3?$Jt&B#O_F5%jc`}FDHj~PbE7gNhlhG;&B8Au0TU$-4!g2{I`G%3y zgw}YQ@zZS+wo=HI!8{;$E~Xhq#Z5%yNKIty;PIV%repj}Q|$O$T!*EE&X*BFW$AA> z&Kl*gW_6X67rd|8#IX{lzF?6eB~U#S|J*VE^i0do(r-}WX1_9ISe_&usJfbfZ7pwR zHH#EAwuF{Q&=?Y^3H@73fNw{2@#O7;;d6!iXm(!fHb@abO`e!&{ZS%<(EekEC2R6kW#pzDS%*XL5RJ8<-;kz{eE3t74tn(|W<<0-NTb z=1-J)oKHvA&gxy{7niS;xRo@qAqP-zG?uFa0ml0exo;3?zyyCe66g9MZ;89$iW)>u zkd#UfqO{`CjcqA2$~khGzN3*Bb>PZxiHczIb+Gxhq1>{%!jo~1u0?VR?n%ms98bi* z1e_1?9Q@4xCZ!T&l`SK@Yy@=8Ks1;0-oxa3W}RP)X3{-DqztDnW+GF&4p44z(;kJA z%)O0sLfg}z{fl_u_MomD?<|bHpl}R0V3q~h?9Q`P2Y6w6aor65>59>?ugDS&nwhvJ zC&u-o)L9vkQi2YChE|ZMD~jC{;(**`XQoE1^&G@J*Og3jJR8U0Wn|oYg6!`&NNV8h zF*)J4Xf$Am?-$s}Wboa0&>dtXBnS84j9_}%BjoL(vJlYgrcRi2-) zJc&wG670DG%yYXb?M;?!#}7sVADbln>I4?&Pt{@C_af^lZq%e;DXE{xJ_*`;(GoDl zR_yX&<7^Pb1-V-5nQM}aQF5+QmY}?c2(1Gys@{L`~wMHCLI!kAGmLE?74)wD=FY!^E;(5=%pEbk_|agl+oMA*q$Jf!TSGf(RD zkR=s5`Vca!jM7wXpk&EmC{N1I=(8@v2w+9bk(1Kmv224dBfb91+GqwyTUHtT@jBlu z`V=gttp<7hYf+9!$0Eu8QM;rI;Xz+P7rlddLN#6b4d(K|P~m6z_kB4}w37J`1+lBfJ~y!3>M%^UG)n`OpeLo?i@} z2|Z`JDL;W;iuJE5B?zZqA^C59-C4bu{_JT~oiO+0Bts?>JP|Q}S&?QuPe5a3{heWsy}XMyzcWvZV>8>E(0e>XLPMQ1g=Sz5O4OO+JQS1QKfQ zOV+O(G$K=oPw=AtDJvNywnEJUllg@DAC(0=PDT>;F#SO!4JVSw!S&*=BtS5? z?Sq8nhiUf&Y2KCJ$}%ogxh^h`T4GwNu>NNLJA1k5H6Sz!DY0GRPDmj|=1OH}!Y<(f zNyUo98#ChBbE-MI9+7A$Dd;t-<;%kqo|0Hn){+EiZ%+wr_H?EWqTFh*&9==gGJ0(^ zNg{kktqsamOoMgjSD2VkL_ARZ-6W>Aj?msPRF14#sy1>?Yk`La)PRdrJ057}W4bJ` z2o8Ti6!~>sq}!qF1c@EwF-%xcZDUi`XjeUq*Q27wB%WX9NuwTLy)1y}W7EiJEJl-2 z{rLydVe@L;Tk89HitP6QKR!N&Esu+!fwzkw%ukGHj;`MBmj5^$5tsT{I1HanO|oz@ z2+G@e>(yh5F)<7X=~dc1o)bd#7dmXg&>C-ji!h0rpko7n1aEPZ)Ys_U-M^_M?%;}1 zY<*#r>Bg?K{E`0fy(|fzw7^hFhj7!zIh66OSxw%r!>gKrMTMp}r7QxW!D2n>2|b|z%Hb@hU?b>N znAT1Dzhz!|3di_J}v4OniH}y|= zS(UGJYspC!c}=G}LVZKVm@Dlh2dQKs4tgCbbfJ7juw%l?+|cWXguhYwHgX3BnoK%- zuZ4su{`ioXO6S0eE){U}P;y5VZ&rEuAt$F!D7yGkXp^g*quJSk|4D4EUCU#kOXDAs z3h5;BO7Nr0MTE04FPjLeQ9$jvz^n2AZ%XerXLSDW=ZJ6pXt~{wt8m8=vBj+S{zX(i&tF-!q zo9J@zUSexqCDL$8i7Bio=EIMf#rBo)$udgh$$=2%y?W7UQGF?|0nx@7W zK!!qU9OGcs1>BaF-=6RSE%(r0KM}a~B7?i|$tPahHOTRns8PmuKZ{}CjyP0jr`bSY zL4{55C|=!N^Ru%q>5*~Wo#B;;uGzoJeXG5>9>_PBag50>-b01&Qexf7r?5vXkDtSj zf%(wd1vr$dC#W<|U2swM9?A5H#jW#acER=4?lCX3YC+jHOkxUo0&BezL@hxpk&CPQ zu%&BrMp{9w5RQ;JcYSP15o5c*y4M0~=(d&%3mOmOi@AbCyW99Z^$8Ps`Tf*#p8F54 zsX5vr4k>SUMgkVwpZ_Dqg&#Ylqp zW5pC}sYqBRos8bA6sIa_Vfyj!$kIg_F_!R}#Vl!+`rWR%!boda_eM2g9;-KjBOGOD z`*kst*)>f!UUSbKD_PUgsA*&EikaB)xWz$#+STERoqd#~d+&rO7?mhwI5cDD$ocx@ zN-`INrBvIv%c#NTeaGO_)RI=AF&`J59l+?GcG^#Lic$j_DEz_(!@l|k%{E;``*i=g zC}taj)It#D6Z@_?-R)EbQT*GG3j6CqnCObkU|j5+R+0{uVCZk9{hBQ;@DNX5MV2*6 zK}q$~@=Bk|`uE78I&Rvh1_YIcK;fM7)zZsMy*yK1>b8b=@MycDlvLZG<8AxfL+4;TE1TLxeq|9(>!$CBK6_>JY*ps zhBO_uIm!y#)tCMW$huPNF|WB03|Z{v?^tPUSK3(cJZV}xqt=I+f8+@W<6 z+MWE8%>1*CN9XM*N>a`D=jU5Ac71+*pXbxb@yO*W({4>4DC1T7-~&P-+z;NKn-=4l zgCFR=g#!nNe$URDX293M)B7xwfq>7`RcTR8EcdRD+qF!K&6b6WjBc995k=I_e>b{m zX`M+ONE+`(ICVeDc3ONm=7xxCGsAm$%QkPy=nbb&3H3*jj~QmTnR-0rEVc+DfSGQD z&+lMf2HwU(P3$pA+YW)elejVHiAe@}ZGrTM%ee~tww1}oq~^toeR8+e!&Jz(l1B)IDxJ-_gZ2L95u_GlC`Se>TmYK6A^6Cn&<#8nPQ<&GX_MJS~QkQqbmpesiw_f+V4I9j~6=) zI0KZ!eU*dJWvw|`wRyv>Nc$Pj1&KRBg+7Otd&rE`{?*e>JHwdu`TP(^Ix8t!c5b9|nqd8|chWY=iSS{7L@SIqN_OPW-%ndFi3 zqP4d*HWWzM*u=M3J&0q6a9?3E181o@WaW!->3MIrnl zfF}!?&thGYM1s!JU%aqpi>79Tq)$vBVPV2KxOw!%wZL9{qZ}gZ$mY$9hFuZNMjH7J zyj5TqgV`baz_N?0fLw+f}t{#`|SV`j1@}~P0-mz|FmS^j{AJ{$&V-(Mcv31 ze(nZ)tWorMAENFt*{4CCp)@?xot<`d*QLzQ|0su1n{bmME_!8T=6)~YC$k;ZBTcjC z`<(Ci=Gx%q0^YO+PR9Zj!cV)E#9PPp5y$%Nzh1VBOwYld9 z;=YkzQJ3mivUJHoX6a3$rmZjk;Wt*q6OhVzU-@zZS`ulxs9`++a-V$<5=E2|$z*;*K_zZo7Yw?U zb`oG6mi)S!i0Pj~{e|FmP`@v3>^;}$c@IIh_tR!v)FOJ$ z0)35o{G(*aVqCeS?T@@nxV*!$E|~`}ZwG<5Q12HhNphE7WxDs@t0~iQE~7TtObhEz z=_O^$NwOM0pEO#^i|7lyNBD2sr##}}DfL`4GTk0!AyWa@pYWbOBil`JtiStx1JBR4 z$1Cm>THjZ#S~{&BF0FDO9OpMZ)ZNwHf?dD zU?G|PhRiq!P{hpGgY~FTT2|00URWBT2JTHV{Cj3}@46;Q*jt7`pi!da% zSV-GQoC*1y6MQIb}B#%eSYMF-y61xw8vdiYZLssvXLM2j0IWBv68+)INd}(n^+u<IjI0CXb|n7Irectqbot29*m zw!JlsTQ@u3{uH2?I~Eu-XlVHCoXp&Xad`_%JzV8z(li>2kv*H0iOqO(riXGOY9br& zzlv#EI5@sNxF+EfRZ;p^JLxJ>R&3x zW((7)pF497(R-fe$juQ1A*j;T@x95r_NVY zk=TxABRK@^N*uXx<3oAJSN|L~JJTafJkNbh;zE*I6}u6NrQUCb>8lookk+oiRPdTw z+t|aimZlZMe0rL=61I4P41vOF0rTdxM>X}|pT9*a5oVrUu?*U{98gG)&v3QeGg?hq zsZ@iCHZQcU<^HZ>9p*Y9u&o!**!Wv8+0XD;zeM3@mpV>B{U%Oq1tB4vMWMO!UjHIc z(?y6}PHoEUpN#{u9@ra+4C%ndrzQW=USU>9%}`!^ry=N=*`}KOHKf<;yAMHfcUrym zCbIagOA6aw#8M8*LgqpNQxUjPlo8oe@G&?uSA{aW?#Vzo1@;3iG7H|=RHjNHc!I$9 zPC96)g8*vwdEc)JL?~b zVfmhuyK0C0kj5;+P1zK_$PG~_k0a!SXtek z1DYHT>>PGL{w}%GCrG2so>{Z0Z1>^&wg)>u^<$%%Y+^t-cYJ)_^+r`C$)Cvr<+0FF zd^T13tkaW>L+fb=_*pws6_D)aTi7FQs5)DP|DrnEO|<|jhmofKJy1yPT0{;V;2Ic9 zcqLpD3|XcY%viA02&+u0TvH9GAdo85@mmEsbZpU=6x9?HrUM&3ak5~!JO%a-W>*-y zvQPWEHv7!wwA|jgVb3AwY2E_~+o}{HA;aXulkEYNj;9EUw{(fl60)Z8=_HEE-~qU9 zrLpqq?VaE$-@q#?@Nhbt^Xg{$mUWDHU4dGyi)qM#+AoCIYvF3_EsgWzn#yaEbE&s9 z$bG_xU<+jZ4GX|q{Bo^xis_esv+P$LYLEbKUo_u5vu%!>_uhk(Q$3CgEo4Q@^l& z?6&Mv7Q#Xoa`HB1{x!ImU;qZx?f?_+Vco;n{!G%A@x0(UdIDT z&ByxT3k%v0#uRj1GzHl0M#vt-p}2Z%;kSw|}uRKnS2lY}oD zpW?I9!^um=@AE%|+XZg*vpf8vt~_5DX{az_i@d=gf6R`b*pThvV*~V{R*#+_mHb)% zcT3=|q~`m;g8vUU0g+OolBAj#iqo*D!L?nAhOa2oUA;4%lltSuEWw>+9n83kr+rhU z_hr!Hz9uJQ-R2sN_WNhmb`S}>vReV?(4`SX+o`D+hT zw>w9z!nUSM~XRnk81VfHd1e^)bsL@l} zR_f*orH+WF4&L9s&cvZ>7B)Y+34$sCc~}W02D@eUWsIy7>xeskld`?07{jj4QRPT>){(0RTt;GgnJ612c5?rX z`};$~I+_o&;B?)_7Bu;q%dy|<@+GPlHAAlV!lWyc!bpoP4tnUJt&z++g?gt$S^9i@ z#@a%T5j066u)zEC5Z7}L?;PK3u!ULvcnVmWeh z9ue`GI(?FxXPF9kWLJBWo35f(NqcUO&wXSU>$PvoFX6~BynNyK_rL!Q-s<03jRWVO zNsDWGNU)a zUXO$?jz4y1a)sb}u0&5ip3WCru6Od%_m2lFz~nV2i*a@y|1iUVz44ns-rPA(uIDXO z!J_xvMd{B-=#@=VJl>t70eqyM!Yv$NI6hzW#%N#cm*EkD`FDd)x|!18`z+sVhkTNi z@8j8gYQFC5uYZeTJp?8Djsq5jswJsNqSfcPA70T{+MCkEmcNs3t^2}XEReOrNRc>0K5HTA5&8`ASe zZY`3l#!*xai^k4}-6`ASD{P4;hukf@nOPU#lT{3KP)?)ZfNPV+uah5zpdopjAg&JZ zytM-*ZIDh&JSaXn{W=w843zU-?f7_YCIh6tpO=yR+ED|$fS23Yl|$nF{`}efSty^U z9}XfwKmh7b-ay~17p?vtv3Af(^!2pHtJxtC5IcI;7lWQm8}AwMyX**7?l-<~AEkW1 zk729A=SzF!!_0#?S)w(}lyM;qZ1>2dmGwigMfy`%c?vaCYj4044$i|eC;nLOsKgcM z=}`V-ImN?|9{@C^S}cGC`)gS7ardO?hXaG39h)ChtWiUMFQit3=i-NX^;5!cX%YKX z@A_=iN`lx0)FRH0v)%0*M6Y$2XO&pkV2`rAA&PhHqVdPA^NMQ{BljdxC|-9QxOQOj za_@QhxjY)u#rO`;IJGGENtZglwO#oadxT)sdVAW$)?>f->A&NF<)lgX+Qbd?&9$gwCkZI-^-2=Ni;^IzOV1& zNk-4ti!Q`_47Rad$x4lN4Vo{weOq6qynfxb%xO1^pUk&FY^ov;3FH{kK` z@W=1#l@cD9j@_MKTeb{qEo5ZU(lMY4xK3vlDFaYvA@Lm7*#^ICm`{L#%_;vOX^coplD;sPv8dl3dgw%IPgUnv8a z3x;{9m+uRU|2_qx8eD?eZ+AHeD4zwM-4ObHlrtbLVPK>?OjFJLBNlhYXg(nVby4+Q zk~VM~t|ojfx52|l822td9Aie{AR;C_t`__+O7k35ydVLEMtDII`(nXuDWEM)ig9uw zSk%@Z=pITr3NY87TDgdSHfrf|S%bt68$I{d`98)%M%g&9PO*?$%i5@9VYv9 zcNSn3Ukvv1jf&TYzZ(ged*AKzav1MxRL-~4@qwD==7m)5MZqRGX4CLZv8)+J$zCt) zU*5C2F6f(*kI|asXcHWH+7>3%?M65P8)jkucRo#U+c{i>VI)gMj#KGIG6u7ek3t0> zK-sI3cQl@27`pP~l>J|JsG`^B^vHqAwfcmu7Nt+13Zo5m_%d_OUMVJ?6sF@?rUFz{ zVZA0^snFO*n%jWR1wSrQ`LkCy?Bz*GFg3CL^`YbL#9T z(p!hO-5~}``wFVP)eV~A0qmc^=FQ%+kIAeVt$5gXDl(oM769UnxynC~QUt6T|C!8P zd*`Fyb0o_D#xy6!imR^a9B`Y5RA^m(-UfK2nApQ-wnl!jr~#@V{DU3)`XA96Xb zUOf%xs0PMk2T$ziwqUmMgwmo1ZD$P97k<%X!mu=gwtb}*E_mu~ZDIn>NKW1;OI;IZ zxS|_p`8+1e(K`XdiD~!aC~zz;c+9feFB|4q9w+ef~5gvCR3hhNE~KEq8*sV6+lBgF~TwC zq3+NenX3@=Vm)#odOJsW#QQDV#QOTT57kg0D&2kxO|9w6N{LoZblSSC@9{#5WlKvg zU<>#r;F1(6fJJ+fi<{?e63I4tC4Z|~j3D0OIlC=jDOHM9k7=zwiNJ1?Dk9cb33}1; zvO^dQml23LqyzFB=0#y48NP~fR8-~0vWZd_?vdEucbe3P&){{gultc%DE=_6{%&cJ zeeAdQpr$4g$MB_>3E#K8JPUWo*r1du10PrG0hNeHf+RG4FxvU{7(`UIhe&1tBf-vn zO=GqdSv#3qZY_^v>HYL*&G$AT5;K(0{GQp^q4!8w0DPyCu^AOe^1PMM`mp7p_#G$l zD4JRD8B=+ed^KQHCC84yEV|P^-iyV=2(GPD&z=7xUa)CVrHaY8{bPd!l-Q#a3P22R zK`$|kQ>3?KCN-;R;|^o2W(gi_d(pI{`R5D}K;RJ=)f%(_9=qTtZLy6u($#g^?B3~R?4#ZG><$+JNh9w3;%)BS=nEO_!wU&v!AzI1 zwK*=i!+i$I4egcm!j_b}U&@KB7(+pv1;#D<21jxG)HD?Bj)F;Z5~;#H+?87gj(m?n zY>DRAU_sb5ClJVzv~^CDVKoAWX(_M^#FgZo>?{oV}DMrgK!{3}nR*`#&<1=$-nu@3Y>1Z*G#$T0G!cvO><{Uv^l z>7;+4t?zEsvoTmU=6$n%Hjgjhz8GU3E+`t zqj|4+AR&x;DxRTgx!lpN#aa^GmE=sj09hYTphxjw@w}*!vG&c)gUFFnd{s&N(kbp& z7hy;mp7hNyvo=$i^y23Gmwo+-=kbrMx2Nm{DZu-c_jgP2J6^ErCu>UR9p;&Iuwa?= z!TI`bd^K%kK9(vPSm|(zC~1NjU1WY#%8wHJFo?vq(nq`}a!Q(uu(Xd!>< zlc>6jKf97m`{vC|5qW@#PZBCcO&csF3wkdx79Oauy6U>Q#*~$C2_n!J=}n+7&HJD) z-Cxjk2gZO*|4gdx#U#T@O3t(lX`Oi8J}im=+uX|O!UxlO{bvEHKQiF2*5M`|i^PE@ z^^$B}NBYh!&K(v)PethjAK|?%Ktv@6_a2`TuCNJl z>-BthHm_$)Q7g+YSfw>cNjq|i1ZDT}vRQ=0`&|>m>dH{v+a-A4uM@(}t=2AF~6rkB`+qm5;E%n%;Iwgfp zLTud=@fW>A=SgJu)Hw!lCSzZ*&unF&JWAFXg9z7->8)~zX!IYU=%TlnW0`z(-b;Zba%Rm+8H;Hc zj$x|^teeb8K(Qwn$F@e?*51VCuMUmPwf=h*t`x5?*ZF}3M+}zAxq-rbx;Br)a+>HG z6wux&ofeb~?DWUvUu>l~d|vM)P#fh{I5^8r0v(KlztxBXQuPv4$S{wKlEPYG<=Bl9 zv8rJ0ar+qgwS&IkHedb9E@`o(QHx(w-ch;#Ygcr7bu z?fjazp5zvJBsLjUkJ~_VT^=cE@*y){$LaG8wq9mGk>6;pj18FTRh>9{r!K2M?10P9 zT{cV!L^{tswlF&lUAVU3ibKJE!ztKM?C&HvoEdRHOac8>n=GuLgsoQ1MS9e#D`w95 zQuF3)7fY?%HPq50Na@Q%ae&qY*4BS&M^UahFedv0LvX*#tWz3Z0@P4!=Ef&GUnXS! z@Bmvud;4itk{)ib&}FZ?*ux5S_r>k|Tg5r-KMmuYrs(-&4&O$cu+;1~Q90sFl&;I+ z4mH;SYId1!IHQ8J5!*jpzt-m{+v|XmBdA`_`I)?Nmxw1dJA*SW`g9JowdrU|`w43i!BnYY)JZ0h_7v!h&o*8EkOy zHA=vzc%$9aq#(5EK)d`scFfxE$)e*DqN`&hiD+`N-Hlgx!Xr$g)&?B z*Ol08o>@n_TF!}wu`@+fl+!N8XKJ4wIV62Q8JP{w^z`7hn4Cdi;H8PGqSMGVQ)@P$L7-Vo+IacA{PwgKQgxlhAe&n_e z+2w>uMngYLsE*_NDikZ+-oF&}>R-~p20Lt5iLaY~)C}R!oXIHoCc=+AbUVl~IVMI$ zuFJ)h00v3A*uOM~P$T^p1hPsn_Rdi}2yZc2RW4W-kym3#)G9~NC=KUmiHKR(tcE9q)RX_c(eGNG)z z2z2Zx$)px6er7u566sizu~qNPJXj?g^DWYIgE6fdE1VB0fpYwlg!kR+_+8%;vzsQ< zT0SF8^T;A((?#pH2#3jLW9v;4?hg?F{|Vn$ndN`^(MZ>Ma(}NcE7iVaZ4tvhQRgy8?6bPGRUX7tlySd@I5wndst%gx|0?mp5XE1oi@Z$Tx_@l zxvJ`SotzdJki*)T`PN?C@B}UT9pmQ7Z5S=CYy&KC`G8kRhGKv8I=*4pDS zA<^l>FcZesn)R0tT+a9j!6FoOnd9#^nEFsDdmt&JDirNB(Bm3vu(AB#d#>IceI52r zO3ENMP~d4*wX7c^Xid=AYP-HCCZG9i6j- zGd(2Nm!XYGN@bO`*Ryw#Tl^)BJ@_bKLuZvuL7To|h42xqvkWZOH_6rY5t3OlhgeA< zis~q;l!STj-gDN$Up6l__>3HF>R8@7J#N9uO{K~}T$hOeJMA( z)a&~1p@=+ysc*(gon~kQ^6Sd;wx?fqM>l5m;-Gf;{Uod<*rr-3Wlw6zs3aF`E?{mq z?kljPOtkXalLu5FVyuVzr%(Hqd6V)wRqnlUE?SM9j_42^5buBcWmdf4vZ5Wuk7LntFdk&6C3m3 zCH=L{e{XX~ffV(eW2hdi5H0ia)d}emW|e*Av^%f}2`gCIoVmQaM5SL6aBs`yZK(96 zWD$>3;A*emcCdE%o6;qg{3Q$v(M_b?nd}+=FDOF|6R6 z&c^6q+ESKTYxW0oQ?7#oVCAn>&d|aTWr8rWWaCS5E!@*?lo?B#B(U@KFS+G45_x45 zde$q}L6nRKQJgC9AlrBmHt2x7vXrEgac3XLH#LsJp9PY9J|5`q;(+iF9tg;td2gV~ zg1p1~Q0kseGt~Mmbp!@uUQVm!w=7Bw_R0`Z|0QEDlb}>?)zjZX{=0A(4nz5bb!kI!+d|C($0o>eMY3P?rIzJXIBx_hhP)N>jjzb&K3_e2|Eq&hR zoG(yz^Kgv9FZxu7Ro_r4v-eKIB7^D^gsn03-nVeZ$Kxu`%X{ z`I74CJvJ$S1u706mIg)hQxo8z)L>x7s*O-9duUsxsikd8rZrC%Q!_h+_N9{P2j3`v zm_W*jlW2Yjf}+k#OQjnq7R*Qoiy-HjYRU)zYoBD)4IP|A+&bgHF9Cnf=7MKjB+Y<} z$sdE4Js-L(>>ydoIn7vr?e6A|#tWd1K9FW$jS3-2!)7{x*H4E?PStIGMa`O9Bjz?p zYZg^WD_IF%SA8W_ps6)b(rdCF|H$!oknWOEH_L#vqEOJ}v}wikn?0|k3M@5bD5}i% zu4Uy;iHVl@ZgyzPXRxH5i-t``MEn}VPk7CN_h9xu6&DG~h7(l2%ZR}gsMwEG~7ZPcH)w28o}g@H32@lkbTE9UBEy8-s;GpN6hJakHiWF zF7NLzF~}ZE`Y z4F+BuvsiDT1)^=h!xbk*qz;I-J?z=X!gf=1uc1Q*=mUf$Ns&%fU2h7;Qam`97QnJd zaPG)v(~TDlLw1o73@>F5On98Kbg&#I-H`g|48~!g+)q__Nz^lW3ura}-7^`FQLs&g zKEBdjsw{dY^^`qMopO(ra2NEJZBN5#i(L*P9h^KeL_I)iY9?aw!kK=0ZM$G&5PH!d zcYlCc%Jn@o5#MdxLo1g`JqcUEeF8Eb#<=Bbu$U`sy=FyFwAM=UZ-D#wcd{f{T7m8rzSi^jTN z&HP~=-KnFo?O?#8=E#TcvglxL~h8($JS|L54TXOfwnyPxdhn%k+gC5^6NKrTvj|A0rJwip__O3k9th12BeLJW$$d_`uRH^ZNkS&FFI!M zHkR??gXZ_2tB;xAe=eSi8$Ix4mobj#Wf+aXL zx`|j6QHJ+l{vzYml5h}?A8*I(s&+PfrTAcTzlj3ky>)H$)uaDq*x^0pkKq50e15b} zu-EL7!cWbF>@^O5%1;(^JBy0*vu8=xg<1m1uh2ln1Eg8;!nErZj)2OKaXF43tGB$^ z0Sj{Zw^?^WwWW23}udjvq|{Yudxt-(u*$y07wICn5S+K)>uLF;)^05 z0F?S`|3}|_2Nk|^{xOIeqNm2vvC9L{=YSl{=bXk{JsH{|M{$rV6)PTqCJY65bY<=emw{uB%%4Sk;;GXCqRzsdAmA)c$8R^i z>I6XHMKSlMH@zBIOOr1Q;`A70i`cakqA zu>`>O@z#HG`g;vs!iz6#IQqk=mOd%Ky}GvG#T&tWPu}*II5YHX;I4!SqrqunIXf~k zyGfM9xg8aGR`XGIjXQn}x`n6p02nmuZ`a_r&^HuywZhSP;SPt97ss0-CCw{_8h|%A zuD=r5cIIu1SAWWq0rQOEEdkNc*c(ucvi#i}M&;biGoGc5|J7;Zxq|G$Pfn+MFbCLr zYF;o}Q}Fkx$oWuMLsed!4h2fW&^&QtZ?ETwJSqjbQ-s<{Q>ggyzmP?|ehWjvlnf~> zHjIbwD1kd7;)TS8V?25iUO2q}W3sKf>BJ#az*s*#1vs1Heq@krXRSPX`7(aQ-R=y7 zd_ydR@&^?!IpqJ#>9GOPF0Q6&4~w`W4IGIdil~*RpmiZNv};NIB6_TOd%!EtXgF<=5ZCzsUSYSbVUe1g*<>HSOr!SJuF@P7TG5g%{qm>C{r{l@-l@|NHs;S_Ue&l5pe& zn~poa3L`(cMpGAW>_}CPHYbZXE36d%CRPUQSGpqDR#yZp;y5c#7XdrwFk`B*vL;_# zd+yMSUdi@2IIW?tc%f==E#^hK>Vb9EKNvV@^1q+``cxc6VdjTuM6J9_xW^ayZ_?8`jopyss|E?Z0!vm@=>iSG8?C12dqs4gxvWZ!x`Epj_^qL(c(vV zIN!_eiy{YoL{T+UK1=~$iA(VO_^JC;-0XzU)5qu70iJkcOWkQWMz7-mhENL}<*qTqPtDU&k`Z&C zjw&DPcor`04Lo6({>Wc$v&iu&&iI=8omR4I2mM48tyOR$N{WJ3fIHQNY89|;M4g1; z*mJAz8yGFZ^Twcy{xy!dkD5rb2c z`xHk;+X{}za!QvcZUX%JACcu8uc_l{rRqAK)+*5Pyx2lI{@Ly1BCLL}j~8!bL{%9m z3n|K2;JU1{-I5jSrzZc9wpsP4&(zFYhO*Rc#jGsPK<;EI+h3$*U)_t)WcKc|u<%j@1|6~$WCe?@Kuj|EV27|VFh1B*} z3@_je``5O^P%)I0O0g^G&6lbq$~JK}h-6MIt)fXfol+&08exGHxttD}M&X2Cd_-Qc z-1sczK1-Vb|NPaVVBpF3-{+VrIw|ocQiHwlU;SVzqg*EEjlBt8+hV&-4nHDYA;LEC z&vbnp<4r?ZJsFd@loa15XVM9&T>Bek88~ex_A3FmgVtP-oEn1;!jF(MnI7I9k9qkG znm^l+L!Y#viK_GHQ4ar@XRBmmUpx`YGq)$KXX(Ie*^MolOh+46%&At)=J(-er~u|N*XtQlkS z2={`u2<^q&`iz_*j?=k>#T;lu(=j&aW)F?>7G8H|$=!)6|+KH?NHF;uS2F zmzlKMjtl4h6|7zv^<0HG9-CDbwa!f_}|jWE#7QnMh4UCGob|Y$0Q*s?B1%de~$% zHrA+B`LQcSXirtVKs&c);PW{J^&0h4ZlWGB9Y)J7-~pqCjA9O#_yQ_f#~(|8+}RGD z@L99+3Y-@&Ob0E}jmDr@@OX|laAzPai8r_o`~hHpOWPfWUX1F;d!Km0u+lPKT&0OO zk_mOqCOk!t4!wAgnFLo}^6R@mO6DoNi~K3l#AcJ1U$gpIoWC#y;=yCAX~>>zY#2YH zJ#G}q_OwK5BldbiRAl@QOqtCEWc9jP-uP5=JyK(suI*PSpFhz}-?6O-*pXql& z-4zS~G3Ao{bHb1rxM2MZg+S+QJ_*HiO9PvykxabH@?UHxF}th5(0%UIv-DuR)(p5YEj4!${Q;wHbHIf0D%&>oAGRp{w&)(%`N&h+;7kZ zR@yX+h1SBhJH*7*l~(;y4W$sMCdya@s$Xg#*0b`rQpjSSi8AOkqN|6Rem=e`LVijg z7Lm=oPrim*P}0(%M=+H7cY$Tjg2kz#!p0 z$A3WYz5M!Belk(8&Gl|xc_O{f64VxKnQE{crKd{}54NmnK`TV>4Ofonl6qxTKJ2YY z`@ErIO}^ue?(ZTzr}Cy~%6wy(TZhD*$L{X(S}Zn;l*BoI5YB>x#o4qAX9&Vj<1_*7 zN&D#y{QLTwj{@@d-`~A44_XlV<0DLA!!sJQh9W!~`>}ulAR*}$lQ1VLl-I{v@(PE7 zAiy}OlnH?tTFmiSd!ppkq@#3!=`shX!lapF@HZd*;T-_OoNj!GFoHE!vo0^&@~~yj zo_oI~4~?L&&O?lh!i@`FYIJ9I^x;P}EuGvAzQ8b;?bN0w?i833>-XF753D=kUCwIc zdlc{n<2-RvWQt-_6lV`#!3@aNhi+SHrh$28Hu0uxBclq3($UCqv+QQ5SQ(6!JQ#wa zS$W8BIjJ;RMsgux-szGbqb!j@@p_tWHY!~Cp|0dLELTRUnp>vsto};IMU@k{gIJf| zO6Q%8>#nL>gC*O7VoT6Kxk|U8TP5Mffl_Ty)fhBJv%czB(N#gM0aJB!eAe>*Whzbb zm2|lw?25YqXC%z*iBb^pISbs2FFAyRLcd;nBuIMRJ4mC zh|F<68nvu^o*&9S5*Sk~#|u+T0>|x3e+B{_yYc^i0m8H2t?6c|=^^PG-I-Ne! z8ZX+fa@fl~F=PJBCpk%|iaL17OEV9i) z)E?Y8kGJD+;g#Fd8@Zol|+@MPh|E8w^kN06o1=G?2p4Bm=cZiL&yy}4w&H&F zAC;bE1I`G?tPYWZzk63_@29Od|Jy<*7YEA$O|x-3z!V?9<7wO0R9=p{vHdpm0~k+# zf}q@Od}GUkUB*Ybu^q*UMh?}VAc^D^DoW{B2B9>b|E*-=@tyK0w#6WGysXnYAroy) zVZc~2Gzz6@Jfl?&!!cbRN2vp)TqiE2Xx<1T2;#7j@Y!NvvBMA z)OVVdc=moUp2hx6U2{=x&J6}&_cJGn*$#`0y-SR-6hu{9EUi#ricur-uB0v1WQB#w z)6kiq^$t{RIk7wOK-w{n!EEeC4mZv;)M_{i^Tr)RuE@aS1#-)~6&rf0H1U7*u?@`o z1={qdV~?=VlOo2M2ddW}&uF^ZHDF>+pZbA7`iM^z1zf0L`TpOqdS(D9TWs~Rk!mq} zaZ*ZA*QU9LS^QxZS3ir-;!B=zOJ=84&AbbtQ6c;6sgKdg6Hp+Dm#&iW%2=W=UIx}I z2)WwDnci*sp-i`kFdOEMvc}>p9;sU?4!6z#p5ADKHy56&2qhH%^H1eq+4N?k%s90k z0vpoK5fh+5-c9)VeReX8s$=%_*GsuRzI*v~ZUcm{;>Bpwxp{@G5IB2568RoO+o&Am zVT3fu_f>^JU?tGlph{?*u{&lln)W;CDO?_2?2b)9?boK)k2%JUFvf-D1Q6J+t=e-l z3|LcwALz)i#Po#71q5c1%QX8{sEg&}?HAZOk)1HoLvvU!3J@T#{M&Ynm&C7DNXz8& zCJop%2e~65z)yC#%ObHx|4pfpisTmQHmijNd{xMo7(_LK3gV{6zLNNA*08_rPT87lAG2nTlL@zs9I!wY)6jZG(p`QKx`KG?!rZH6jRu>ul9 zvTtyNU0!+-M$ib2;|DmzSsOR8p}kmTH+G1EJE|<)ILr_fsc8iy!*NZ~J>34N*fBwv zb%a7?R%(u5AM^6lx|9sUgjIiPMMejuyydqgD37$_LM0zjFFF|+%!b*>rzgq}QxR#D zA3n>=_w@v0Zeu9}Rqrq+mDVdW5HB_MF69y%zuMxfOU`wO<)?pjErGG`3qg}BK89g_ zF^R*HH<*8?X;8j)tB}>@1-7-x!M>6!FZH427^JcWqkS${U}=95Xt_zdc+X=#;CXNA z#EY&xZoReKP3I!zOnP$FMOkE`11)VQt@Q54w8Vv0;)41~`30F53dd!h2Y!$45nIP^ zvODpP95;=P!zYEQ(vG33E7J7+U@LS2g)WK;*=3itvB{yVmE?*{ zhD(rLE&aI>#g1uiliAGZ)J7((=MkFd@2>s9H7pl~UJF!N z;C#Exv3%nOBaTK;_JdY(&`YI)v=cv&$)F^ncV(4Rl72HQ-l7*}o zu4+dc+v8FveMz1cbu*BOtVXvQXP560ZhJP@C2PmyXw^K1f%ZEeRAB(?e3srzNojR) z>zw@h{2y!x#&m#PgvqrSUoSAVo+RZ}YU{k%bS}AF4NDLf%)1?J@J(R!_u`8YwJs$@ zIpd*)mJSll1k6#%jH9ghrbwZaVrj~TqlRbljiY>093{|0xL#534YkRKsS6QM%LP>l z{bu6BD;lProM-Wm0L!A+1+!SC%5$5)7pvqq&iBrnZ$7eHRb%F8^e=B)q7hX&Z`{4v z&~-Y^%_nH0MvqRvX;b<64ENcqu9;csxfjcsi6C9$?EBIkolPd$t>KttL!7uf6T!TE zsY>3{Mlxy`(qlV$Bc?$oNU1W$AC4g z4q)GKgPx5g4P~@A%PnbP&z^s#8LJ1Y&(o()XB_~ zja3wI&q`@EoI9f~l zUh<+|G!}lWncYd^B{Hy;q(_E)?ppuIkFDGBV`!r^x4WU4Wu|-2>$esWSc)h&Kg7NV zu~kY=iZsxGbqBy^BQXc_N3yK8ju&|P6IX0oTlpn6RbJd>`jvhb$jEXZ7AkTqsxGCr z(O+bekWcBl5j#0rXG@~2T}?b<|AtwX%;0=(-FANQ*;JXOvidf5;&<$f^i~*b@%eQt z?I8&*nvG$hdNC6#fA&SeX`;cNhw)0^~6)*IH7!eV2b zPQkQLDwydAMx8qjuW+Kwn|FMJD!?~9d}o7Mnkkq!jODZwq0Mm!t@^Pui2MZex*cJ4 z8J$AWOTl~xvm)4;-!WO`i+pJ%O3QGF_HvMg#)w2zew+fKCaKf%wy(CGHy?zbrM0mg zMy(Io9i**|jW>=v7ykWUe?(JPMPq zluCGsQ&Jav)dgAM=)&*b0F+&2HxnAmXI2B5tn0Wt7IF ziVG81H<4qw8b>W5orQ^Dv&J~b$R?2~u-KCL)xJj{?o!Nd8sHiO#@(NPI=PntyS>ix zGQDfsW>04nun=ZD^vC#cI|)TNDkcXtq~ufC0|kDkix#CjlywWwh+1XgBAJxIuCac> zkM1ac`8B&;N#?@CKsQWQAv^)ToM!mW#$Xm<0O9yn^%c^OVL_9_xx|j3pBf&ljQQ$d zg=VeZEcwZtNd;O!p+|I9j;6WK=#@3d55}RS6c@B#K9mP(b*|yZ=&_WaLH!| zG&h2Hr&_LsGD5euZ)vy4FM^-B`M4||7VvKY-Wj0Uy*v0xqcy~qbn*Ob%^-&#aX(u+ zXQp@g*jTLH?xg&D{8%+$Z1t?y`jnHd-#e3TiL3X}I6oP39^q$>{gd*$X;S3o+xIBF z+J^C=+Qx@zNR`@tEac%5cSN?scLB5hP==l{TWbqtNZ1cQI6RU8lPYa_U`lxr+mBB~ z488MVn;RFcjY5$GO{_I&v-%n9D&A5hKLs-x6L%4an%=3!j(A~a`zP^PO4BxGOK%DH zli_x&3XS0~U53Rtx3#!TOVOajFlhs_(}xzAk&Que?3~FF(!g|6?6^*#7IK3jJADJg z09R1at@F-@5zQ~PW?IA8)bncq#+{2X$RW4$TN|73ee8qGy5rW1&Zg7dbar0BQ*4Eu z7>QXI!txW_mZ*pthE&lad*Zb>7zyII4GJd<@lgD4^^bZcp$903H5-XCr$P6GpE|sjdIUgdvT4 zQN|5^N=*nmo+&VTBbMV~CwnNrSDh$i3g{{!XGQC|ffx);9g{kDSC^(8#7|WNJu}K}`nKlrgQXkori1b1fDVz2 zd++5uE{*qddH?B>;ElbB7c86u2R}fhZM7uDz|b8l5Cj^1!cNnv7Ny!V>5(f_7|AoQ z`hDY2_LH#C0MGk4j1+qd+##|G3r!E@podBEghYvDR(+ifz^Vr9&ubXjR@Qt@1xn4a z)Rk_)wb>+gsOIij2kRn_Gt(Un1PiMR;vcN~34?H=3YrLaUMj01EWF^M$uz8rspu;& zL73v)DoVIW*J!H5m8Kk0BK9e#=+Xw#N(NoXZVeE?=zRjbPSyokwv=pIDV*Esb``zd zKo$t~U5dx)&7|(s;};f$7!wte5Ge(y>PgJd5orl8Upl5^NMElKz$=b4D9jqHfMbm`03p z5oT=|e5a53o1@e~1|u>Y-*_#2Y*{Ud1I^ri=09xSPkn*JOB)=S#RvKeOn(buReFuZ zK=4kpG@zr8jm^78koQ?@3k7v8XuTH*&xCPpWIZsGrph80EXc)Tb^^$pU#l?Hip0F~ zDE>7)@w4zC7T3=y$B0aY_z*Ibn)muQ!5DsJK;T9Cc@P*m(on)IMAmYf8Sh_h(EI6R zKWtP%wCK7v<;FFcpGHMRyfld}uk|=*r{%6y<0a+gYIhrt!C)$)XAVVdz}$BIV7c!^ z15}jHS{->NZDLhe*5mB@aNkswNzOx}oYA)E3Kc?uJ497mg-7hF7@YR8VB@OYCOCWV z4wBj$MX6<1D`1fIF&jBZ96u=PC(ai9bL~Zb67ys?kBr(PQ%kZHi)w-F8DBKJRgBbLPz zcTMrf8xzFk0px;$p~o&LIO12#vsPI)Are1YrsEkuD=POU$DoWMtvUon`MF0RFfe2J ze}r|2X|l|gq0M}3Rwpli*;&8Kv{}4N@TSx8ErNGhnh)Hz$}~PnxnLJSyOE)H}qk~8sE}eI#PPKb8w%)EEjrl@NFUo zTMj0sEW^jlk;1MnY2j^NQjB>biOBmFwB7d4VV5PFG6yw`%=U2>X_Rh!L$Uf#_K?qpbYq2AP=g3e^l6iwfP$P1nSAPTGh)|4I8#KurBG2Js7{Kk zn@wJd-=doH&~MR#6VbyoGxszj$N0TXGfP_CJ`ID~Yg*XVh%D#3zDN zH=6Z)lV#rK68N4aXUqDjN%MK_6f)_)oNG6(mXfaoM2Tw7*H*4%RrK>$+SXF$U9PLS zYivFmx1Q(*RuBf6-ZbB9U396iZO5w4?D33Wj$S=VkC*>+x2ax!O{pl{pIVE-R$+6= zxN*WlD4N=EnybZ{o2Gqs!oR8*NaPv3q;%9k>9coGd^W9Z;xcJj0?Yo%`g4%nhMvJEjQwJW@-?59r z>Awo-%HFTe%E@2Kn^IOOzQS_3ZqZ$c{6Z^XY4EH1(xo>Flw2_5t4+ZmjzGy76lDco z45?^wL~c8lJyT|GS*{>&5xbm)WnUuk;S7SfF3ri^Q%BfjT=*kahVxVO)-*Yl6I97@DwDsU zk2lCyU!`H`2i3PWs*m?0QGAZ72*EIT`L)NYmYc`E2L}luKLGI{)^6atcRTWION0(QvrHi5p%2mK9Q?F@+Fd<;B zVN`txaqwwKJVS1%1j*C&qD&s7&$hIF^+}i15>mt01e(-5f3J0uK&AFXY=%a#uuRST zAAOM7IESJD>hbxf!9bHCw;=yCi|)>JXO0SrD>;D`ni9`g0E0RfG42$H74j=>69Ykk zWo~dQ?2F1K(c<1#i%wy^N7J1?#zB)VWqDryNg9c(+VS#i}n*9vr>;l}gFP|$wDXPEcrURSy zRco}=dBkSsXqDs%H;Jb1%N6OQFC)+U;Ax(^9~1>xywm&Kn@q=U;?+Ijt<_sFF9J(d z{F@skiaVC%3Yp^F!_a#u0{A_D?R@ItjMAHy7>jr=WcK(g85XSfJ;u<+723Bi{ zOD=I@SDrG=HnGXVL{>cdO9(d$h==urNXg+({KUWUatS%6>=w+trc<%Wr3-k&xeT1G zv5K9qC)M85GLMl7%9ualn~#JPk-Y$u7tEi#pk%8=W?#7ftq_UHN_RtY9kM-k#(b&^9UCxt~rwyf5o#x@b7rz$jh&#Sic^pGhn{5ApFR{I<5om zVUy}y+8vcsO^6B$Zdk$tZo}oqrtysr>}5&yaL}TyR4`WYwHTt8DY6A2U^3<_Z3B#E zc`qfNAb@oy3xsza0qLA_|dvL@z29eQq(e(aR00*yeJ1%a2B z+d>p2Kz75q{Vp`TcbO|fK-*FXbV(x0bWCOLOu=Vd>W*@9SRsEdZ`01NQeFu@nW?IP z*xiOnWYT0vmZU|MM5YP4^!dz0UlBC|2Lxj^dS!yA>OOm+Nmg^9K}*XjvrehHL2Mi` z52(!nt=&BX?@UQ?%TI2hhq-#TM<~3=`Srd#xc1~3T_k+SQRh>PI4&DsyAiy216AKR zafq1#oWVE@yqF*5B^Snz5qW-5{EhEAZ(y2;2a$i_wKm>7db2(85*NO0aF86hJMl!D z(*3oWf)h8@<4tY;5L7mv9!A&X;C3+f*!0KEyb#Tl!7PgX8+na=EKXP#`tH*%EI5-k zR2E1~!f=T_+*|9RD+xne} zP%hb)a+Qb8xmyE5PLxXbxF}HlP8AASIi)F&)a01`+GpGFxm7h^c@3nf8LSS|nMs~X z1q2r)+)ZF!0oidU@ixEskLA5!Qz_7jV?arafFE&z9a!L*8rbF=R>?KLrg-Dk!mY?u z4M)ybYAY;4LZb_3F9x1^AjKXUJf&8ZCV{5n+Wdmt7jG0zlT{!vO{-?6JlTU5!ph7N zwp9r#0{t?mZN7t*BvZA{C5#2=+U@N}s9+v32ybJy;1fGHjEz64^C*Ay%>N*gV-bPj zj`SnvBi_rJpxC^ewfDNG_;;s+e|sI&RySUBk-ptw&-Wbm&v90vcOag8tsGXtjI_BH zSkdl20dc%&J1(x-^oDj0IS}@JSCF+}L$Q}EyBR5usRjYV1v-$Wt!CG=n38>p9)7_~ zyuvYuJ7t+zWx{aIT=}Oy1MWt*s#LIjC5d*Ak<&eAf6v&Ho}yL2(DTP?#|qKmG@dhp zySt(){@oEho)taF_=k)j;Ac?^oR{TNBO2P*Pzm4qDJr`e5}XL$O1E!nW#%&%)E|F5 zInBMe>B(0&z5L6)^yQxNGH`>?mnV1NoAUBXwD)(ty@7av|K?tF<(saG##kW#vj*%v zfBt{9$D>#@^3P{_^FvU|i9hjDCLU)jS9mJT_F*p=R&XZ@q<{GZp zXl>Y(phj?=MJ~@AWEdic^TG6|T*`E9(xaMk&w28jCW26JuUb7-ItTtR%37op^f(0+ zm;iH-(IM2B7=>h{?Hmg($j@LEpM)-o!VcIZB5Wn(fleS5=rI#?KHVw(dHR55Wnk;jWdXIRk(26$*TKlJblhP|3)9(d9?<#T#qS6ESqM5ibT2 zmq{_Mx{N+0xLj>Qa(*sOB@X5r#y!}l^ z%_-F4W|vX!D2alUGtyJ4`maqQB~CyjR@#oRsDvp)3UvuOVrt?mi&M@AGL7xD`F9Gc zM>;8Iamo%mlB~lBJMLapScaZXc4v^zHX(9J7{0#nuL>szclZ`v2tr>E#xv$a$1tnE z{s@agoWuUA?CPr3W415^2-zZ$!xBqHi?Zg`N@SXFRjk?$@?E-@<0=*U9br^d6JdiM z*dY?Jm#SY*9FIoJHQyyo@j-F;^6NXO3#`6NK}_8D{$w^G*F)hu&X;Xm-e=Iw3;go2 z^5t-@ng+(<5Kr9kc+LUwlN=B~Ep0$lF;h6Rg&-J|T!Z~8s<*Z7yUTZa&)n&1$N53A z$j@VTd`{e`XGqA%*#cR9&HdRzoGqfq3&{vudD$ICcE85pJD6W8m>!0u;oP%upTD=U zRV-||rLjX-g>ArGvX@_9efRQflT6vj#`6a2Nwi{nh!u98bU{-*yR1(;({)33E8}{R zE=J;B264BOwT?wI$|VssX=hI7wIh6oIzfa{n%8E8FFX5A$_cUAUuY$K^HKN3zfibC z90L5oU44S9>9inBUQcG@#Gj76*Wsmcc|^Ox;4)g?&{Neo0Zf1F5Z9qF*c4kn)%!#L z#*f3uX0y)%SXYKuf&al9z8-nEaVamTGfeKA$;J?XTt@!nbR5;}!hJ7h(4du-@lbJl zAC!VR%z)SzELeL})W9XUebFMPH>fce>Gg%d$$G1ItWWMGSc2Jt;dORA?M}rxmgBnF zsUhR>z}AXvTNImGY#Z|I=l8%Tn&Tvkq8ZAx@99Z_)b^Iw7iJ*F;lLg9bj3$}o4d6^ ze7g6zV;=jHn{Z5bd&4oTaDWY+oz9T|6P4_VU%0nPJqWqo?o{yVK+(3cYr|NReQJJH zfN@ireZlM-5zj!8+gSeN_n*ys$n49*CUMCo@snr2roW9Fy0UvmjHrhVZjkf>i212Fd-`#TuHG6mW@Rt7r6YLdyYoG6Z81pBA zFTWISgl)n=e-GL=9J|2+J6VgMM|PU3Vsjr`MT?Qx$W~4ch1kO;&-VSvk>m1b?4QoL znEu@n|1x%?A+Yqqk9@~q9(>_DCdkD8e)!(G;5~TD{^^g3yEN~a*CZly!q?orNNu{Z z&5C=&`m@AQIJjWq z-hv(Cauw!AMP5>{S?ah*H=FQ|>S~k8xE~1SI=4FSQ$iN^cb3_gO?WZulBc0i+dElm zG*gIc>2ai9vJ($P608$9_-#Cc<#%fk&Vppq2?KA_x%A#`Iukdz-B3M}?nT_kVlWZ@ z;wIPI@SE3D^9f>Js#E9`mh(hb`7fu_&Xs!pE@TB`y`(J464WXMe}dIb2Xj)WkN*mf z4^7@aBtv!WNtgmfwp=n)1Wpvy13bDC4gLgB=$QZkH&s9?W_Js_f>n{_&Qyab0|bcx z=N@y}_jYl=s<+c;f4l5&oBcg8=i>6-Rj!X^%utZ(I$-$s-LrfWHSIS!>m-5gvPKyA zUS9!Va%IoK##4gluHNttd)w=lGP4?#iY%=RZ264k-u(x*Hq2JBc~hUSY~qrG>#!OZ zjdiN=%vN=|99oktA%@`&QE6xFujS|>-z6gK>aqIm>@Ah=EfKc0sR%oqhwL8~jAia8x(j6kW!;%7gRSjTv4ZD0!Qq32J>S{U=T$xf8wZrK z!&O5xm5r|&^|bvkQs;zFa84lZ6Ujc!!_u&r7nX90Pa!~bCa-kNyK9I4L%X?6h9T*a zom~OC@L1n68U*O2JAK7X+s^UHnQ$kEL3`m-dBy5YVB-L6Q3|5rh+=CNn`laYS$DB=abzzFGWIX8mN^_q=3R zQ=c+8eq5DN0pvLCv==+Yw-yXh_EDRp|DF!!-49a@GyQpkNAa2{m*@q*rxe7?1}sSUm_tYzjL^y?2g(l5#3!ZRS&? z514GmvkxHvfLDj;iVwdSYT>Fr<2GdGQWx^+^evTP(4Wgz^PG>tO1JOIqUi7Hu z+>;>65>OY#Ml{~ODKWL27peucG>%d}h4nomv_=sl!pz!Lm7pcrwJOTHnJDd?*!JCb z1%v8_k|-TQLrL}o9uJ`;6+=n7dT*rN*J#*C)pp84NJwAzh*6RDdxj4kzNcATF&b4S zR|zdKiE5S55>q{EXvq#;u`C!`G6$^O0d7|2I5)};2z|olr3?E5(M*N&-pw^&3mPe? zq8=63B}IwwQ>D9Rph%$>Z8%Uw_zw;;Sx?uzHG)P2ySh0nAA&~KIcP*Ey?o620U2A$ z0^A^(Viivoq>8hT0za)1C~{7K^R>VZ0WGm$2KwUN z-PpKULfYoFFh2Ft z&A&Qy8YgAz5aoF=Eeu}}A!+Q?K`2W%xn4Le7oT=5eAbRXX%5fT^N1uY$r`y^v#^vp zoTssz2FK^zD%@myWm?@9og&xzSy1eXgH*)COg&NgFoAAqbjpF6h}}4sl>(uA{JSg9 zI5gjEP#m(d(_LoBN+bTaX2Vo!`_t;I`$W zmiGd`G*$a;;#H|o9VyH*T{swkxyEHA&P0ejnzG$Or@4-`2aUwL-Rwsxbk3(Y4a@ zz3md{fjjg97le7}UxK&+)?QGW0-~T&Ng4-H(|YZ4z$E{8;zi+Nxf%2U_mH>!Gu`-p z?oVeiu9Wx;##Bc9trt&05^mg*z3KSdYZoA0%#sE6o=Y%Lwuh@VcpuxpV1R=aQ9wl_ zJG8$}2Q0ht`Hs?*tF(nVWrtpc{ZS_@S|BX8LplJf%VlYB0mb+JM66rD=D3XkyL;L; z{l$%A*SU&NM-h(wXXY9A)V#5CgZ+xjH#Cl*ff=LdFrM??*UaoH?B@mWybP=0wwf(F zDg>uNCIpg)OO%5$y~jB`1*;}0VR3oaH@%To2RBo9e?FU8e0iX$)oZ5SK(@RcoQ(}~x*boDz6JCY`8D2glK$*fp;|4qJOXM72yHU#sP^XQS&4`<_{4Pd8auxRLC(qKiCo%WFEE-#_FBq-O4*A z9xv#jyor<9bV(7T9>XyJgcNp zFd!x&=S~pDiM4IldFu_~?+52P9KwR|b3c(%Hb(xzxPV-7rd&O8B|7$*`PqSqVk}sA zWOQS4HoCa_oXlb|flEVmzEdC6_^ms>mP5}4m+K1jd@;u=N*T>BeQQQ;%AB<;kehkP zv5C#6_$Iu0Fe;c;Xd{lY+r!;6tOS&ozVsrNy& zBKGN=5m#5I!VFrGmsjmN6$j_0d4I3L>}(W5v}P5L+?5q4@*3+mFupF=asF;iyW-X9~P^=j0eXm|16$M3Vw%M zPIv{nE*y=#m}|VfBv(mP*uo07j8R*KK-3gbTQ@Gq(6y&BfqF`}!U+#?-W_^+q10V! zEu^Mu+KQ*%D2Zm1f)q^VGP%@Bqj2aYs2;rFs!FCLYk5QBqb)-*CE3wdFq=%+*q+OO zsSdV<{g)Z?2D~%pX5y;O-HR|BdmN(pYIanP{WwuOHN1H14H&ifZKMhqQ-ruRY!E)K zmtTGj|30`rKLOY0A6K{Ip?`(D$$;|_8qqg6s|~#pKj)=CTEM$m(5&LhENSIF9GC)i zzH5257Y%(4{YE^NDTAQ=mC}G0IPRr$$t=Tz@f9p>t3-o-dcH|sQMgVlBbZo6^uZ!Q zq+m^fx<#8<=~U{%5pqRbOY}C6IfF)Vt|<$Hs*D&je%B^YbXiWwrAbJIz(r^5k8!3m z^hK#$G#yb|hK^YpJ{RAj)W_U1I&$KXJ9ZcV&zZm^yE@;Y5fi4LH9VH}M28vjF2f$KDuUV(%}-nO79J`Ns$( z4~77DAst+eae`r5n7<(}Ru|hT`z~wS@tgPc>Bc1&Iy}E~#f>Kz1wiZAMgHI_B5J}F zn70edX)E^wsS~_AiZ$27 z4|oO*0%m4U;MvwM@NMgO4p-pWgDbF_D{$+Sg-gzYp|kbJb@ajW?M^^e)anH^*4Dg# zr|wL1V=1mbQ%@^yKT`qC<#z&;I1JY!kDsYX=I}e=4nI6H?Sa`AIou?*JN-ljkj3Ik zCeNRtnCkg^x{&8jA6^Z{F8+^ut@`&;2i`G$dGNP=3jQ__J+yuLU|?Q(j*u3dec$1V zB`NW`dC|2yPQZ#;!1Y#!f#QIx(%`*#;mWCK#t)~q^XruB*0dSV4?O243_eR2TxF-( z|ID1L2m>kGr{@`SHeo7@V`CK5zd>bl5851If0@07zKx`)`<959ALm;BwA^Pk9A3c2 z(HKO%goV{EG^U;|TmKd4uLg0c+=XlB^HQ{uG<{f1QS5-4GdjJT3lI1bc)^mqUo~(_ z9bn8oRtur(Zm=SJ%uX=CCgIcF65L@$=nTDy^UDmqVR>H|A{9d?;(EC9Om(y#?lE=p zMEg|`4CB}Nm+y@)T_7tK6R7GTgH^VlBe;1tS#aTv+yG`1=h@(T%+ZDQ&R9Cj()UrW zz{&eQ3Fc0JC!^%#T-4Jb9iI!z z7epX`<>gA7pSV-KdESqre|zLRgVR6EdRFxEjskz-zFrd#rp{|YCg(fpo4)GNqc?HN za))FXa7G-k@4Fdm1oVAg{~5>lV*gh$9N(Y*w4~-KRZNJl}ny!;; zzKN!7p4rm&^S5{^5_#MwRgd*Se3H9kv$ud)Ta#?g4^I`)i91*T+%Lcjv+r34Lc6Tr zEjqeiUbEmxznlbiiD-0*u$&NBdHu_^bDzj8SKA6_jtPi10ez^;D%aOSh3`AG%_?aG zJ}pwpQx`NtPf>;g)wnv$WS6(r?+X!HDEUE#S>^fdA%pAM?iU~%!b=VR)aS$ZqMX0{ z#aZ}@)1AXU89ZV@Ic#>bi1AzaX^%X57;Ssq4$(rtVLjn?f=59qO|XuY7#AAcX`Qx|$PnRh!rQvUjK$ zi>Lv@dZEvGr?8oKNuPGr!UCAzXClQ8Gf*(<`CT&Q%ksJJNv-L`C>;}@ELRmuY5Ns; z`^D`1Rq0`3>2uxJ?>E}FbB>55+<>}{tf(%=pH9U8a;)7ZR)@Sd#hlt9qS#hMG2csP z!D;m?deY?tgQ$I20iXpR0TB6X;NCgFkf!#~LboEnXEqPD99!3Sc!n;~O zH8xVEP9Rcu@5x?)gk~_#>6`QHg_r>ZN%hXu)Me=Tdc+shMw@-_(#27UBX4eXZ=aM& zbt-r#1gUoRMC=6Y5H!yfY2ZXI?GDYIgFV7hPWvGlO}&x}F4-EwNxhoqsU?0)sHS@x z~&OU}vQZG?&J{FD6W7 zaP3BJ?k3G7#6!xpb3B==~hdJLjG@!}(A0+SQE z@z7R*;W`W*%sHI^dt!v=v}Q1!M(#U@dF!1U-$ey*>5j)2?qIZ0b@!LuZZm-;fq&rx zinn42fo|IRN$v_`5(#JM$3Vz!;l8l|csw3EVS)#&GlHCO;wQMzx#hr{TZX8Em^z>h zQ!-*nM~HWzC1LciA6*1v@%?CN$~@sLkq6{c!j;X)wAnS=YP2KY$UdJ0AIhU%5`GwX z4%@^2g16D0hoN(U#|sG8^V=|K9wK4-%(qun@ixu+C|y)Q=!@ClLH02ctPHevW78Wf z6;a7|-{-TjA(c;@oeoNPG9w2e-0#MK5jm)yLv6WEbR!y~_R3t)MkH9G8Amu=>v>=$ zymfG^N?c^-0Y)2)I@gg991_dbsK@aSQW|aH^}3o;G6u>udFm=NhPcfUV>lp7>9Fm` z>|gcu2EJFGWUOghRgB1%H%;PnGLp3??zGhknT7r4+iyOGci+C*V61Ebi~mH<86?-l z7+5t7(CP}%nCCYBwsV&0a%{cktN`moYVS4SXOsZ>QmTowX9|j6j4yBGM(!wy!nb<1 zcE7@PndP-?+1kr%nlrT**IN^xoEP|4YTEDACkJh^6z%Hk3jVm4c>Bhwuho0-%CV20 zoC(veqZcR4m7*oADVYpawS-JVcEQcwX`~iYvN9R^SxL%dc(3JTLcf}!Kn5aTAalI! z^|odc&l!b7KXDx~%-zUTJQKgIO0`TGnJh)MeC*-mLWfn|2d56J26HkQ&`Ps1CGLf% zT``H;0bj))&KP0j=5Ts&daYm5rl%fbrt2^_O;&i38zBp^ zPhUI1xBZ#jO!ryj7d}$S|hu z_lfROOMP(}{wm{g*C1LPcJRf!(mZzRO^90C;wD6(>+LMi-pQK~-Dq&_-zFIL}!H_>H>_w_`_(l2p32z^G+Aw!(jM|r+lft>B7!}mVH?0vflE>7`H0jAhlyx zQ|RG(_^HX-iP9bl+G8&gcaR=4fXj1S|2%eYyoyn*PPS+$babyi@Rd=aN)dPd)|nm} zaA_ND$0j`6|H3(56_o}EEcbpJ3HoB3;6U=;F&^CC>tZ6Ay`4_>T|7S)&(*B;d);$V ztCyARu|xNJ-Gkig^AfkZUX5h{L8y(lY`WNBuiI4`MS#1_H=V!IUV?&mOj@SU%p@4Q&JoNS!Zk-I~zzpki!Ov=~Mp676`3_aR!W62XX7=9rMK%!bjXlfRlUQddt+CxvsaNI@xMSX9 zWGx`)&gGJxJ>u&v@wVoK-=X0l`7gEHfYiHNq(gLb<-8oa0)K6;{sVVX0T7i#XmWdRe=$%xZ z{pHtDuR`#aPSau{wSGxavJq-IsO+mpQi+0{e(rRJpB{j9Pu z*!V1aob&2b^gY*9*7Y|mYcOyrNzXOcNpt-vD(+>H(>=&v%wCo6^X43vGh~nASCSSS zy+M>FG`X-VSs{JxHFr$H#1kOo%r4`jFVj5+}^4?9{FLSS0DT6 z7cAZ!HP?I_&PKUbrC*!utZMDeZf1HV8R>7W6whXn7dWF3k3Rab2}Uu1qMCd&%UX5H z`^@K23B8HvLiRV}{{-u|#T!#J1Ac&FZ#?z`50Br@VsE6Lp-A_6MaAn8uQCPE^20dv zwfx&8*^S}t!=W(#sgZ2S^+%w&{E3?@B}-HgMB~P)gl^q0#R4NQPI6h6vK&f=K31|Y z8QyDIn7Fgrx^0<%pWB=qg(0vbnK_xhtg;_jR?U=#$x>8J!!(|aX7g?{@@IgSZ)ob_ z2J6ps|L%MKF-Q0_{X<= zc0%QtaMgDUGy&e@#*WM=4I*Vh;u>1J9mPJ_OQ25O8#JZt>!(lo^h^yW_RqfWLJxt( z<{xD~Wnoa=nYydij>+AdZFn(hnXoJne+4Tyx&gziJ|S zu&UOFpUX*;O4<*WX|8MZ+b`#^NhPGl;dDAvuv+eklS)X%zF6jr6KX|UoY(W5MX6;9 z*wDOjK}HhSu`T9eQCP0%lEkfcT&1d=unq@U6ok;`HcY~7S)cdLPQt(+c~Rmv;*KqH zyFQ-cgExi$Mh2e3%v>s$}QfL{#5 zMGSs!@!x@`G0=Ra}-Y`HhT3R1fkOL>A{ZVg?^+U3)EREFDAWCz%fqjqtmty~7 zmw8@l21{1;tJT6J4y&ND8fO~o)ZKfJm{j~$c4iuTaS3-xR>Q^AkDrd8tgK6#_ms_< zzTm-mwnFDw;$J?v&2$tV+-47MGw1Vln>~8u{KJEB^UfK&7v4B_zDK)e0%O$&EMUS9 zhF+vE8K1fnutzOEHU>v{t9DP%*k3%!zI%4SzVEWXd+Z6zi_P0$aURwa(FUMr9rm{; zKr4VI`YCA{Nu)tK>k`CRrjXs!4#Bd|{vNWwZC11`o)kBi9?DKzJMpicu#lUAYVtI- zisCV8{ea+eTnsGrKAKpkkX;N%1|8{u+JsFVf)@LG#yb48q*r)MRe6_Cvd{LN7S`J+ z22G;6Ds(yT=C(s5mJ`Oxp6>7(PAi34(z=W|)0?JzI?D^2(|X1#mO#%UqjdPa3>p_y z-VbMcq}^WekYjORW})HGdrs>Yce+swMfj~%?Dlnv1zrI0nU|D6lrDG^NFs!1yT!aq zFYP0ce&f%ID?W9fDwViftWW~QEq-<7?=X`&!KQ9;OKkmL(vBU1^y$Gwz?XJxw;^`G zV8eBvw-tHlR~$MMJos?s;S9lMC^U%V4NrXTm}4V`Xt-VSm-7Jq*-m^7)7;PbUgyHY z75_L4u71vICuPDpF2A|KpvX=Ss^TL`o}2OM>YaMpudrK`&2IOAP=4>}UeU2+M`^S* z90Wng8psWfe|Y1m7sU?dh3)i&#BV~kfuS@;_ZvEca4Sw32I$&GlM#LEt%Mm~tpqIk z)QWlmi=?A$x{|JxtTw|ut4&6euR-mzx!gu7S3{FyI40( zPI5B{w*v$(+k}f}Ipy9jwmI0YU%du-f1Vx64l4pL_OQ){HAPw2qTh-a#byWF4<<0h zHh7U4E_Sy`rF5ISpxTw*(%(y48t7HT)_6&kZmv#=MZ|Z}DHDD!L+!m*f?L^~$R}hls!)5sGuM&)(d6vK*ih_1ajaQ3K{>hC+8u*gVvr`j8cY1Oe41{OyvDtTpf#2eC|I# z;&1A&kV?XwvT91Jd=ls{5c{-xLX~i;`RS?_V`b{+g)d4f^@Q3PCTKO(r-k|7PB|wR zis>>)1!$4~4*h^TW@Dx&(eXS@)uF?8!xL!GHqa$HJ{#)_qbKgP)w*FC--h|khAk$? z)@9w5beULo^oWT?O(V5qNVPL!xLMZ6Y6ZODgs>2L?~XbIcD2`?S2g+;T~IsUi{8cA z+2uR#7yPbj0d2=)f8e#+o6c5e zgM|vTL|{NcK*uN7#~Jmx{!JNNBbu%(Kyr>iI8l-3|AU&;{i#$=&t#&?Egrt2f{g6K zJ}(IB!krzMDtveBT)V+=j1;il9ab?0@tTB@2c{;-0F<#=Y*bEUj2##g(z%|VQMPQp z+|k`t?s{kU6{VRGEi<9jv3f!Z^_?nlosa2Z>aXw8I(k$j9m1(7pYBsRB#vCVwmj`q z0acy1oUpHJCUCTLI^PW`?)0Zhhq5l`)naoME~$fX0!FD1D_djKC^dD&9*dLb7@=JJ zl^wXHb=2J(V5Al3S-!Y|ZB#N@HN*bSoYGgp4$Bx;bq=xgDcb=A!TR%0$280_;Y-c# zW)NexGZo{3wSsQPy_K}X^9@(n`Y74kFoqXb6FYM~{5;N53rYd8j`m99`i;FUDW-;6 zHet2lvMeF~<|EH4P^v4b%+^vzjU?*0K$}Nw=GC79DMw3<)-)JAou^9Yp>IB3c(pTh z)Lk$ZPoT#A>822G@@&C_J*0PM7Lbtjryj7fDpRQ7aKxOZklCcsOd+$q^f}l)cAZ?? z`r&<(Sw98pK3}QA^kKB79;_cr=ii_8LzEHIygckKxSEaK$Z3flFFd-K@lz@7{N*pY z7+d+5F+w)|+jWH4RA7mH%o8I^4H=_DW?#r;6(v#+poQW1nSY>Ewy;!2T8FG*d}N)m zxJ@h+Ms=Imq~ObKVpA=f@>;|uUQ%Bz%^I$ht?WLm;mk^z&#G+t*ku*_DGTXr3g^|I z&IE1${MrMs?sPi7b&@bOIz?FN45t7OaSc3i5GQiJCr+jFoxF!>C;QHwxA4{|EQ=;k zBP~~o%P{Q5(AQ*43coL{Ak3eRv$|w#OQf$usH7E64OA}oeCkq&JR#px>vctkT$e7D zbT{IZ6cVp_ZBmFC#ubjyVpKUUKs_00>|RA4JJ`s~K+Xz--O80s5Y7S_T3&Jt*E;tg z45*%hBEbO)1S^0vo|=HL$5pF!K|6!C#<}vxf>7(+Zj<1&VsRU`q>K$`^9|ywm9LTPN z+ap80R|+>htdcD`dQD#}W3mwxOP0>uy=pQ*V;w7Zd*;q z?!YVe7YaARGB&vd|G)XjP$^Rpl`aCGi<_VFar0V-13v`rD7sK56UTRM zBL6L@I%5LHw45;mBfd4(RxhJ=lE{7Q25)osO{cd>n>w1_M{Rnq-bd|3E~bsKBw%DP z3?=kCshv?c^dmR$ox~f(iJ`219d%I+!%ftNQpzRN&P5cyoj0|jGMW|&=f+Qlcpm5M z?wlOH+Wk22Re7D>B?E?<@L|U>u%s5H`k31*)7*EyX8~QkEfA)J9U(&_DMc$1!_D5lk z+e5tWR@rArMF3aYV8qUMNey4hxrtkHGtJzXUCf4`{cSW$la?|y3%vsDDC`rXY&5+e zR0$80B&@?GPZK*WWS(Ir;St6pxy}c7DmdZ?Z^7<&;uY?WSaG_+jCh^B4!qJ)TJBbc z1)~_2Fo@Cq8OLZ<8xakaBh4q z2i^#X4g3+G%$ML&e(Hg!Ps0x|&lGukeP=X&I};k@#uvJpJY3mz;*@Jy^UkcoHC+v7 z+tdu$CK7EL?a0MxD|eu3w0tps(Ge(#x3@Y-m=SGi!0^)q9_BU zwKTVAX`MCkie8|2Ygg%Nj?uwOO!s=Kx-}kLqx`eDYt+X}R64tziKG39isdDhv4mj3Q8UV-29P(G4aEw(Z)bOb4BXMD;YUVgKs}05jScZ(rilbL4;x!aF+>soxJHe$U(CsMJR|g4I=$ueMNHho$$}v$yn!x9?6)IKZyMrthR^+1GDt2 zeC9{GE~1~NkI}3vGs7?MSJW9d@_T317vxFvO@y@cb89qW!K?uWp4ml8u=fN9QO=}d4dpD$6|5l3+1U0p)0v4xq% zEv^|pHv^MV`V;Ob+n0D_A(I7(>~H2C+JXPa!j3!`BQm?b)APjb#f z90!U|;U;{C7aslSyx@_|dmTOs*!NxX{eXNw$-eI&DBt1lK{tDH01#d&?O{Ty{ z@4jHBKy5Q$2Ya@#Qu=p~g}5KIb71bY-_p^nbcO~-d}od9^%al?uX%m?_qv1#*5ck_ zDgDMu_e8mL{m;?$=UD>>Z42f)>BdU;L^|KU_`(QZlT8?gZ7)X)W72`TACm6PFsiuH z=x?*568mj3kWN|MPO8euRz}IrO$L~vw11Lne*)@ZONV{*EgjMiy{tEcBpwPz;`1|B z^kARYI9BS}_JFDbx9$;@wWjSB5n*DE zd&=xE=YCp6rP|;&TgeDa_uE(rGC7HfYDd(`B;DT5ibg_P7$Js<`izNMKfU zM@YI}vWH1Ax?+GZ*!xs#pJoE1R^tkOpF^#X5?(-}Mp=gl<1V3RZ-2oo@$1Z~Tu%AM z7;{gXk!#NFN;{sN@*U3tGII+JvE1AxPtxhS0ixJ5vX)Word^63(fkyd6E0=cwAhvS zG4BTa-97!>H)w4-m&2a8?`7urr)>6>`QP{!r3rRcnQgKDXmHj^sGAPiblYaWJNkh6 z@hmMUGMO`|M9=4Dep7Fs5j$T<#xaqV1xKLJZU^Z|H2D>cTgF8wfxJ1HsFp3uD{YI< zv+wzZGrymy5y9${hn;+>IE1#$DGt7+J+I;rQ144|(B&GRzr{qfHWIv$Vlc)gx<&{o=_cT#DHvpnG;_ARe0dN2S^8v@@EPYPnOIAQY1d^|W)E6>6@agOu%k=S!+Evz=|O89=KASHL_k7==SmytZ#u7gT~0MSIVp zrnp%?zuycy5ctk;P?iXyAw41Ha7E$*|+8B2}iCG%0M)I+`8J(ffDi*ag!w!c(vI&fd& zY1cLkm`k_JtA$0+_L8dgbMCF{@vL%X&Bs->>Y6yZuKe-Pe`$1d1zvLLYH65+)8NLt zjK_?w9ZubY$7_C%7r%<(3gjrj`7gZUC%w;3Cw{I@zP$C^i3Ny$gM%pLqV88Yq21$v z7d6Cs0eX=`zCi9Khv3S~7oZn8=ml~)$h-i(GDB1tfbcA;l7XzSjwSzCzMy)HLL9~) z&+-GPhJQ<~+~DbmfT4Fh@l+bpQxTW9<59lh2jAHG`Nn>SF_Ab-P>xtO0Co!*^sOT` zFd*y)0rg0+a_47m1e4Q*rx55kavp+t$u0D$)m(Ef2SMU>TL=G|LgW>!jGTyLEpWcP zjbQ!OU|O-$9cU~;o9{?uHR^E2cz%*N?xo{hCVq4Y%llyXg?rk5y#$5LB`r!s?|6~1 zgQSR=99=>e-=U#4r~6IVeubUeG`1r9%Y$2va(K+GnuO=!YtO@Gvm7+-uxkoeixhl1 z?z}3AIGIia12(nKj!-3Xj?6ONT--))T{)>#_3s(_sF@^U6_Ey@CY+akIdfI~U;_8A z-7zA$x=_uk$bmI`1zkS54RGqM=OW}Y`#Quw{?3;a=mK@eu9;G10!-Wplb^x7?_Ms) zRmgeIjWlmGN($YCpq9qBqp=$a%|BzmeVjs8*8 zwj^gDe1|ojgSXt+0^V2=TbP@%q88s~s4jhdSqEEV+ms@<@V4}>0|TJU>8F+|4r_Bk zh==~AKS19AA15!4D&f1ejYqdt!NlBupN=D}xHFy!3x(<+Mm7-m!FPdhK&Gb@*vZ4YD;mD7tVZhLF$BuAQ)$?2BXS;RqVLjyrGDVAy z%30tDNFfc6YSeetzxLgmLVuM|sZ8f1reM&7K^PDGS>Xkro~Y-p&acI2p%w?OW0n*T zm-Sf_&aHp3S(N~-fO*w$xD4nQ zq0=`0J?`P({y{BpId|C0*});E>Dxc;wrfGs{9|*$SrdmDbV~kPTJ*X!oWX=Qq6 zrw6t;I{^VYe@D&Ntwq{Fx&6-h%h}=X;f^)Tu97^^u)9hX)G#~{myesKMnVXTAe4}`DN?O=zUu;I)EF%_kwLJuIDBl}X# z?4BR&;*(wW_kax@Od11E*lfCcF3az<+a2P`laHwc7lEmr7Ot2=;%QtHg6=1qa2b~> zdo=5Eu{ba>kJe!uv##uQ56|ptqRjotdk0rWtUhbG$EJ|o;|!zTiNWjx-21!IOq4w> z-X0S=4wvFxMI(Tl0&Np=@=7H5aUe0;?YGY}Uib3(e6n_z>6QgV4!a!NQ_djv{VZiG zOdqy;SNYV!`|7;F8ESCQss{ZX_s7lOiL0k*F?^Tf4kl7~TvZAcR^6u*D#M{lpXt4n zcjBt<bgxqp7#t8*GYvvU{R0m#iTyB%)9BkS`WmeJEhYRjTUNE4d`HHkwx zoF~I%5gA|54nl`HpF8c-1NQfX{pC+i+23RFU2(rdtsVBf&;Ii7n3Nq}a6r8b=otsm zW`B1{g`Q}>Y;z*Ts7-)&#rKurW!U9N;T@CjC**toeo)PAqpTyMYqL+I(s8y=aBmaB z^>ha5{!PZ*Ee4>MjUGO>Qogb$4q^TQ8Gvo_oP9szPxjMJsk8f|^)koi+yv@jCy0IM zP7vWc?Frsnd;I%WCfwq69$r;g#%-iB_+%%E6*|jFY&WZXc0z{#0g>=iMZH=xJv1P* z+U21O!^>SNn(CSZ0*i8Gk5JsVLDX0$>Rh#3>{cMJ=JF^?g`Z5QZ zlqfpkP%`D3qzPhqd57>;SZ!PRM=E>D&cqNSTO$8?9+P3T(IL1)x}`@tjB{ZpZ=CKl z*PoVM(iChzYxa!J=Xp@t>Vh2gK>xyB-BUj0L*)x#A*s1fQG7U^w4f-Eg&ln@74H(n zqHH`geOBtz;Y(E^|8$OUEyc_>tqFO5SbesFt9`;-V)Q8;C49EVP5CXNH}_YVJ84Bs z;?hjqb{vR+yHl5K^!CnTwl%PczZw?R_x)QU2e{L`vy32sd*DPbYeR4%@7XLBoD3)h zK{aVVRfjcB2i9iDdPE@1(TinnwrV<3pLx_!2QrjppPiF#B*;p`vY~JWiMSYV)K}V} zl1%4nB82Knzc|7{6V`(?n2`Ti)rrUXMsg+kQ%P6sk1a9;ZQWKYXks22uIQ*l|Dc=IIy`27 z57?7E_I;;3z+?Xqdttx7vmj_wjK=<9H>)8CJXx@ve1JvMt*lRU#QtH2;kYkw%*0`b zJYiyTc$oF&!C_VsOA);HfkvZwZ&AD%4_U{hecErha> zqxm61V=W^zniuv=UiNi)5s zB!g>q(3Hygr$hLc6y70wu%C_FWpqxS?Mn#BSR-0K;oylmm&5llMeUMa;-(Zg52$yE zi^Lge_?S#chsKzURfb`FI_$PtW|Z}I<}UlLtxt)Oiu=G4&9Rg)j!%b2%HoHP=PoIk zdoEnoI~hXaNhd>&ws?>iU1Be&i>r)5)UXwJp41K?X`ZQT5@e#g;qG64l%)*cdgAl@ z36ZFitWPSCe^0w72jwsfkuS&nPQScjE|jIb+ScH=lHkvK{Lky_vck%CWzun7KGFGsp zS9k1?)copD@c3+}Z78T^x3CC>mb1cADwm1kq<_fdt!;}=5b!MJ^sEsMlRcEWbClzg z-R_~IXqZ`l_q-rjApJ21AahoS!YX<`hm$@g9zEULSs-tNVWcm#3;(d4ZHBQP+u40) z!<-zW#dXr_Fs+>m0LJe3_u43b?LLNoowoaJS)jk)YnNsOfZ6p#6gAXVvV@CfyBL9W z(ml&%nq#t5WauqOigsqdLCo)GW3`kWV10B`aw>0DI&yaI@1C%~Y^Fcm-8(GnykgY$ zc96H7-Ggdr%un_@ZEWhW$5yEb;jqK{br*9_p0u%r{w_wOS46R)H08pQL@eY9j+2vf zZ1b?+FWSdp-cJC_fHS9^T2p~v$o#b7Li(HCQ{olbHsFt<{$piVu)oJ9U^byIvO{X# z(qppx^&Mvqj@}Lqb(lMQZ1nD*Qp%5tw)Q~yaBnF+{VKfDMFPESl*({fR<3g)YM?JO zi8@6hj{E1eMOgv%rHFFb{5yx_^qD)O-#yv2$d4)Od1a9wL1lj@zV$Nlv%r zkBobZEiAIr-@uuAx1TP+I5SUo_v_8NOWKvJOI^CTm!s~ay?dHX*p=yOU_-Dj4N4An zu$y`L)<_V2(aobl0vLA+VChUc6waTb9)bK zobAp-TLG5qu^nYHM!Ve;&OB4v_5S|u0b3xTx1-@s~frio4_d}nf=i2cOvS^%OG~E@ zFTHo{;oZV}CaQq)Z3u%I16bg+7yFZoaO}s5%TRs*DN@GujfIeUQtIWb-PzyCmAun_ z^UV+gUTiUgXL&59SGs&*TPd^1cP_BWy_3Xu0?+ZsS6&?8lg_>~a{Z|hXZ*nY@uUD& z63r&l3ZQht@N?l`UCmEI)s`y|QH>iq3G}yNTdkgeUAUl53dM_+D3&cOa?gS_^uZdvR!GmO#v|FI;rgYgWkOj#W4On$Uj!CY9Dyb!6GUrFGH4-8(I zc|l)D5?&dlRFuRYFI2i-y-*#@=`Z2rrG51BYYJWRb-vJ*cBgxO(1h2HqvW71gfx)9;gDpUB{1L?d0n$qv0u7%o>(rs;dR0 zfVDiD@Bwa*M=|xb5{hCfphcl1elQw`4s+m+psdsCKRNwg_xaqzd@H31E4pG z!1vL>f2$6k_!gJp)}?)#0Au3Dw>O%^hZk?X0b>z<8|mvdnFa&?tw8QWM35QAIz$Bh z-JL<_f_|F9UlQfA>4flbBq&yfmu@9(>{0U!gED-r3Hh(Pxh*+ic!MvOEn-(9i_(zGC*x1<2M=?Bh zF5PkLAt%I23HVXCWB-^LuB9O;HdlBn+Z@ktmKzk}h9NC|t<(0}I?^alWq}@f7nZ}P zfxKg=FbJkWrf8m}8kq-0KN^BYuG1h3j9bxGnbpy9p1zW=bM=Hd0Yp z>M?N>Cb04bJBzM24$mtX(x#%R`$#;!l)y^MIeaak($3W?tT zDPcOQ4iQWF=7UGn;q>j~Yicc5t7*8NJ}r4ll-?QX*@GNEl>vWB)Zo5>OzZXZ z%Wl|wkhwxd{W!Cn5Ctk+2Q6^4xkL*$nryrR?j+@S33DEHOw2IWVaEi!sK_y3E@t!6lh>(EY7@EYQ>1uf3#H+{7s|DR+D#C8ANxj6ICO`J z`cXF28cQ5q&^ZRBPN%WGjFY>f!u;JuUiXw{zwkuQ&^_mR_XxQ?B|XBsaL37hh!-cc z+9IRLbgZ*&vh{j8a@qop-I(1jTBg;#g`A+Xn5ZZ2O; z45+{1q^Yj2J#Ly$jlI^qs36FnQ-W>i3t}qmQ2*Fo_FVAwm@>++hB%^qbw;|lZD901 zX^J|Mh%3}EyNgagyWf4fb>SOP-ogP_jbqDBe|>-4p-$bCj3c}$ojWT_b$x&Qpsp5b zR z%q8Uo2q+q<#zLhQ)2gIYSb#~NNWz81_p#kk>_#r#N1b?+=`6Tq;UGo3(d=Axg?hOi zWiDV9z9dtJ-+T-le0t<{pPRai^;qibj4#;)~} zX;H>@QM3SmK!CrwF4^zI-J>vHU+!6o9=2ZNoV~YQ%lvjWHUY@C7t;c^3z7L)cZU8b z9FE+e^cG`t`I4)LMJ4N1!a+E>01dU!^}*^$YH$mVBloa{_6cmEJwa4qcn;l>6T8<( zAf|8K;A-TS>~alJjQokaz#f*pX=R(KN=x^%iDXB=nL|ka*uMsSVQL}s;bK|0HtoQ#ij}!LKON_Jao=$Csjiw};4(;jGy#JOR&~LZ8&q~vFYc2rK*$|k z`;h^o<+_1w2u&Cs!x>B!D|5lxaEU#fNdn0mSRBLqTK>%Xe#{Ju<~^EExs^=loWf|G zImmDq2waLE@t?3h_C=du^m_pe)D`*GXwyKhgDPjzyqiojeVTB5J;hnCF6QOFDh<;w z#`~0bAa^nK=v;f=Wm4vOx=p;&N*1?MqB@XFHH}`Ul6q_7bh-(>=%vx?#J;dxH4i?g zWhE_|O&kwbLT`t;l1eFS_r7Gyu1&D8#-Ve(t~?xk_?hSzGK`xaOoc&5xA&~7S` z3tYeQ&@bXeL(hQ$9w&yE zAG}WM=XLruxbntB|H^Z?G#sJ+f9DRalM=U67$i4nxz6u(Drj19J5^}uKDvqSzjaBi6W{Q0?@L}KzVxO(bN(q*%B(ePCk&O72Row19{Z$QLQ zOlne5kbPx}Dhk77vAdX_d%%2&63lBnH8p?6hD)*$Qc{zIf`563soP`T9&na?U<90ERG0g0k>5cbp}?L_rOMpKr@htXV(b zlA_BJwvsa?a~S(^;^mrrZ~(5K1MrWlTV@T46Zl|u-r!79=Kj0%N23LNf7VtN&tF+1 z_u=-Fn8PeP^i|9oar&k3-SHI#4+gq>^I5w2Dtp?%ssN1&red<8GCuFT5`B*$4Pz&@ z#1?b7MJ1tSD?snl_OjJ*b0IHr25SWcyewf~)8S>y!D(GxT-CH7w_J{#iJ+Ll@SF+E zZL13~vmwKr3>qrSjV!ZalCHrlj;-eXSvE`n&fwbPKhF<9Uc89Oa1D2s1icQq z!JW8)34|8U#^>7pa0qBv9bZnsa_+O_!ho6yu9EMyyttO&6?E$df9&UrWH3!dOetHT zS^qNf#uzc5_<^CkDc@>QEmQDYzLc67HFj?~)vx7jD)HWLFc_7jH*(2+C4(=|bf+e}VR0o!7o*L!AdT=AY&Z0kOpXaxi` z;zT3xVVn>AYq2&sKS?|oonVB2;hr@2!`Nk4y1>MA%l{c26}qZ67jmAl>sey=+Mhba zNV^qQTJGAI72sM0jnCJ;#&|m7%w%I_-@@2DFUy0->h*Jxo@*A(`MZ4G+;2p`F*E7N z=xuXg(FO(?x4keO$GD&y7I(uHB9%pxF{J!t0+wJcL@GPs3h|)PWd1eGEWEJe)kmnB zBQB3k&e;a0yaD(LcGspj1EDbjZ^ZU_l#id znGk=Ik23>y+NQva9?vqE#Oayq-E#w6>HOpc9C-=V-oAuxtg@$8*(F zWnCktZ$5h+6cCa9kS0Y>bYVr`IjeNAn>8wWznI!j#lv1jstyh_CJG~2F!6xDF#ECf z8HuIu76v=oU3W#2H{ab-Vy5JR!cv4QGS8p0`#q`fN7@ES(|N z%8VNadzm2QJEl6z%l8kKD_|?4slFJk-!b;$iBVZrl*}Xek7S zRS2qVXWSS0*tCR^;=su1Vdwsaq2#?54%ZgZJ-k(`e50vfOthD>{n?9Dl z=YV(iGf*5XyX*)WY)U)Mksh>=A>1m?n{$m^hGcJ6UEo*g2W>Bk@O&?0XO}wB^1PjE zOUg<|$#q9^#v*R-rOkR!#8vc~j~7pk|oyS#PU-;Jfqf^PP8e%V^?z@U+w3FO8Ico7AXo%MMWk zggG}vMF4BE&Gqg!VsR_`eJ}9UL;l$vLzo0S0>#y>kOUe_>I28xfNQ`(;G(we2pV5AMhaAln4WO4x2A z8nBT3_U@HKRE7if!eI#5-%^6hZYrt|tK=3VGe82xdcV=wAAGoQ7rWo+o%a@--#r=l z`K%BPZ1r#)&D%Q(s3w2l=9+!j(^@apNp_Y;`4JYyG}SAymghf-g?8pd+U5~ z-nmf{N{l}D!2Plz@;@%jj@&eIDQCDPM;XYr>(GL-q<7V-qT3v!>^q%9n4di-wGI~w z{7=o!x})xYE^d>Q($?)G_mQ{JAa(CvKr~lGEY0j?u_GawZ_+V7m@J+y<`T31?2{&H3c zM^Tsrsgc7Ox14MxfL9cLn1;|PVC#*>Gf;Z#bt=LjOAJj|t~Q>cq?!%f%)MGUdC1Kp zzd>TT)|9ys=Yv$P=#a zs3~Bx#3jKHILwOdhafq4@%w{Yc4=-|&$$jG`_1pHjLrLMu1Wl@`2A&i))uU33m z-RgYJ6|*^EFJ1pV-cMTOhNWd}j@ZO|pM)UcL;unrxWf=+tkmHOVwu%&Ej2WsDsRVr zF+4MQjwdkPF6KRjnI%F~X&E_6G8~QhNZ{Wv*Y1Pobp1T1&;2R-Lius#4zM+Zc{rYe z2o1}8q=?%ER9L`8TG+bc46V}GefUDp_!v`&a1|n&xzcN@s#bGzt}~l}k^?L0Gk10t z_sK6aAN1>0z=dY z!$A1a%6xD|-4($Ccp9Q5?zkY^*@CW~$8Cx6Z6ZAeih1s@V+N2dPnY6Y z>tDM!RXu5dL<|G@+JlviyI$TmMuuvb;Bu&O&zsTWYQoX>FPv&sS*Sojxnr&GPIN2x z%k!d9UlmKd+1_zn|AK!jajAs>0Sb0ICw?6;)(f-h0I^({RR_exohq(7kY8Rds!YzB z`125TH!2FN6f~eG@4=C`EJvPTG8+IVAYM6J=JYcbFA1bf>)8E%vx(3Pi@E*u zQM$0(FHeNcE0|KC@-7U=9tSPHDzBwdV{TgbE>yj$X40@s&{L5=P+x`@Z@mGZDlUBZ zrjA1}UN8N?Wevm%diK-tUsgE7-R&Isk<@2L4k)dQ8IT-j)_42tEEst1 zR6H5XDtj~MOgykC&aw1$dK$9J^>mga#z9HWuE_0KiC@zYMES;Z<3ZNT6R@eqvvEBS zC|_b{ZLLM9VP?=;d4R)QUWK+q7pUihr3_VOK^PBaxNcpM)6(-bqeYJF<~^52qpT^< zWe#vvI?5fGM!eVFg-Ly7zt7^>cZ1)?Ggu?H2H`A7Hk~l=Hl0iF-6q&L!R?0X-*hkH zJ{E(S<`*})-iF`2p0ogXv9TM&2)^>MTw3M7oK8De>iN5n6^!+gvM4Guwct-+=XadH z{6(w(S9pAAa`+(`s&`Mq6e#Ah+KGz5iK2RdM^~c3p8yIy6CmKG3P{E5Zeho=Dx}<{ zYM9D_AmOg)^)LrPZ|8vh?X$mK_V-BlL(-G9--$T(>3IB|Bs`0E+a}D!GZW_!XXs4tnclCyMPOGu2 zB9w|kR~^`jM2~N$JTSL$=B~*O5m9WEbUn4Z4FAS24jJS9tpGn#}$p(~YaW{M3 z>u2MY%L|{Yjl)g3db5V$DtBxaBolvXv(@h#Zhvg07B) z#PmzfCJirq z1LlmR513=p(jt|!E}eV%Y|K0JnDn^l{!UIe^hpK&e3uv9CoL-muKBw6#9ZUh6}L&D&uQfdoQF3B{b#QG5e_P8}tH zu7i&1=VXvN)%v+=YbE{->m6gL$13#B=iLdPZ0Jfe=CkOU^GbegL(zPo0 z%I&p}=xg$3mhgt2z4a$v;#atkrM#By&~bT9^GW04dTSE(aT8$L8)JmW)|4fx-0LKP z?*wik=OxWbOe+KO(h6X+CyblwQv(J1> zwzy}0i;!dfD9p2H6DBj~A~YXIjl3Z;7MF!Ezm3Di68qhhpO#$|%ZL3f!pw>L_ByD{ zOiLFp;hbz;ygu2Dh8hzO*g{93%pw<$On%^(Gn|5T>U^l|&|k`tSR0C?Fc5vGPz27kTlWSGW38N{43jvG61|=u1m5*aJjuK}9_uhP zmsw2+YvMeEFSGGmhF}kRc$Os5?OQEe<9|yzi*w`>1fyxc-0JcDRK0dm5fdxxh+lMYwi_oNyN($7 z_SSW90(gkQg0~9=oA;E`>oe%0rjmk{u|mAaEkg3>%6aqt z*;2ND#u4NeA6*62Zx$d}S{l@!9EGLx#-_BkiE9}14jy7g^60}fcj7#z= z!R@B4L82SxSoI6J+aruVAj^(M7WeZ^R}cMf?Elqw)@Qqan-??o_n7M5Vv#o}5RI799UyLdUGj$X>&2U1jE=$x(7-+?KZ)S)$)auO1#Y%IhL-)XK-TFfY=* ze=9Gj_l|n|cL}ive6%fL1ov2T5tpb!HGnL(i^K3Bm4@y#B14o zeITAcM0FHLb!2kPRYvE~+?S%C_A`0mW24t0df?c3^6Xb*ut())iosE==f#MGg)m7u zCW6U;wf7eQFQY}OkBEGlG8r>c4~8n3S>%X~NT}nO2(l+ls}ISRUCpeMs8-z}gIR-n zQhv4DqQDtBUG{8;tM`*k)e8wec6808#i}fX2L`$r<5@D<_SCTli^ z$6%5PRkADaw?*~H$*h|(S#)TdbS0<1@3fAw>c&e;?2ju|IU$pjH6a z3O&-Ys(BX*_xZHgM`C-Hz^!`<=h5`f3Ypnd6i$hn-yv&pj{7R;V{cEg?=1JfXiZqP zJ1Qsc<>0!R9l{{sqfD3uS(1K1kuo63LS3_1?kCTrm5S`ij^0I`-jOXfLLVeN9Hqeb z!1qy|`XMqE{2!&`VZ8}oP2h$un+6NoB*mGKcL~?q)P=Vi@vdZh)ES4h`oC^3H=P4u z-KksG5QQpIBNWUbnX{Dju6atRHA7ZjX`5hV5X78$NcwU&_k`M7yf3@PkcyRMI`~w0 zEEd6B7w%_e=+slj-KF13_GxfZ=#7Fn4XXoQT7lIuSxPj<3ixc}9)Hf;7o(r^leAw2 zyS%H(J|on=(`?E7S(EsVa);T{q`H|j1^wXq{B>+DW=ss)sYHs znhGJ2PT=EgxN~x(chO9y!KFw9v`1MdY}eJ@gk~jUUddrkvek0K>5GYEFVV$hsNIm> zQ|6R*HZ~~#ZKK7mAqmdXHfZJsx25vBj-*tIgIOxJUrcz+h$YEoDPGgqjc^RBd*DL{ zeF5!N`ZC)Pb-jfhJdeG*r`Q=y|6dmU&uBwegUggMAiH z&H;;Z{~AQaiCs6zl~hVu^K0a*YFRX5CY$}J;N~_%Co5Sn4DYo(7jBeFIU55~;_aC& zD%8l`?FJ(rXUWd)xqlhKL=sGV{?ox*5`zkSF&07(>x15yNKv9jX z6%4C081SGSv_==&{(jggHp5tlo#Maa1tsmXeJ_gr4=}5X`2^IEfv8RU?H zeqUh6wE`MS{(_3F-p9^mB~lvMVN_d+<*&dS9XT#nF)r0~Lw5waC>jC=7k=bB#89xW z!9J5D)un!>c7Hz{iNv)1TmH{T>9hPcRMxqRoIR&jT$#6L1z3JI$CoR1`G|9o51ulP z);}OzsY9E_VO@8D>S#`899a&bqDgfjRNUB2wb*jbjFzF5od;!T`N_l^`%Bq&D8q!h z_I+8jE;iLX^F~ziXCMI?FYp7;ncWulk{RqeIG?piR+`#|BZS!di93x*kAMn_jdQhbM?TLEZ=5ux;Z!%POSBI zIvEJ&Bo%-fYSQEe>@l~uAWeMllkcaEW07|xt`>(iaYbgr)!QYM^)iZgSvFMps7+s3 zkGRQltWK|;F;Pf%+p+NbIOCkCc9u0L{<0^#`y9l1_K5lRGq%?}AgA{D86kP!Km}%m51xyOqLL54EYXc0g2ZTUWJQbVd1o(Q&qN=`T9S zR;hNu5jIg%4CFQ$CGAX{<*+I_#8w+t!7(;LOYfX?E3bLXg<{9aQ~(`-Y{yXT7NQP7 zJzbO^b6a-f&{D|(w;~LRj<6|OkIqNEw!=K%3plzP(EQCF36rDufXMraAm4TvOr3P8 z<CPnnN;X6DA&c25VlKJC6}>hRY>T#(CzGg5gkBc^x0AejU> zVe8H=f3g3??*{cc#Fmy_lCeve<7Y%vl@;AV))hOui**&(2rN8{k9Ol}C~1!pOocr` z7Vu&jf6ljo#3lu<;pgAGn#*xeK5{;D=Cj|O3;{6)cfX*`xk{!{4KbiIip?-;T3G_~edcr=Vb?lr=`T#oE_LM_9Cnp@U9R7=ZsK}H=}R#?6V$|O%GLgI z?w!`zr0h!VXA}x?%-O((fg-GO&QUQ-m1GWP9@iCzFEpwgOf*Z!`!bG<-K+Pdp`%z$ z49_}?vWopt>0s8q^8Y?#MP{QkNaWFMB!fd9efOR7x1k5-JxXPdos-*RT6>R8w|l*g77(%5r*HRIt^M){ls%S)agQBs-0QMx z`-iMCJ-=|322AlLd+gw)0-FiiUM{AiN(=c|lIGyAPn?M8j~*L%d;4dCG+PXaDBkZo z8TI`>`_8h4rtk6Z!9gZV{0ZyoTm%OJa^Pfq-s$8Z_IfXEp&n|v-HiR+zIbj5^~g1C zz=QX)Yd}sJ>egLax9c(Em&!kPX^(%n?q0lor|Sfu#l;qp(&wt4pg`^)ID4g z9cHCCtln;}*#(+p$&JM$s-U`RNWy}I3H{#{Ef$0<%>|t)x$e0EI*D5{LFQ^cr*!Ho za1!BEy`8=K?I^KObt$57#a!IaL!Xz9Qs_#&lrVzQPTiwS7n3j_ro5R0@z)VdNr#58 z&{%`V=Y|H!+-h#K>Wtewg84WqF;Uo6lR9`QetUIVCLvgvCDRcM=}A44vdnzoIEOFi z0k6XHQmDM;SZQk061-Jnjx`&YRZcMt$x3B}Q*O(=ErIrONI%4Bt!13n9&_Ue!QI)< z4|gerN2R%}r6?U|`hib=++ieMuuF|Z6YV~Y@*yyI?H%%6Xd=3@%BO^4@>b}?s6nol zd;0#VyQiq9S}dy^WK^G}C2o8pn%xXP=2ZfeE1w9@t#MC|$z)@gtoTJ;ixKtN1R6=R zqr+)-vPXyf(Y`eUa%yAcXH*enlC5RtjqlmpIm~7&u@KmmQ{Y{0F!FMu&uet>X}3&j zSHPz3ezohvjc%*OMf!6Nwwuv&g-KMV`in__ap8@xe7Z$` z5x$&t+ns~4A7A^<$cx-j&4je&5ONU$sSwqHqD2AB1!Lk)DU93j!|bLygf)p382J&P zXUT6n_C`qrs7=Gcb>afS!3Tf*km%M~N}}7?4P562|No!F&y}R5ta)y+YGIz+p?ecf z{M)fVvM0Lby=+f(Yj{6#2l)DzJPi{ue_Zi@ zBA7#%%p5r*qz6=R`46aUCi3$iSFePNawxod)AzCYQIVcT4py7mx^W}l z4M0`=XLjok-7A0WMnhL5xz!Q)GLJO>_iX4oBUsV9N|)pv=Kt|;nIo_EkzoBuWKkzB z1Dh|#oz9u(53c=@m3#FMq*my?0*%%XPV4G(uCM;k)Ui00FF-wkZVKaT_%~b2Ea#YI zCEPMMFUKvJUAc4NRoO*b2`%c04SYvb_~4+JUAay;o{xFe9IJK=^A6JZn%$XzNKL{R zFe<^UsEu`SbDHpCRzth{$A<>&)lQkS?>6zu zYvmk#(`#(-ct7ARpPiP&(A;}9A*_jO?j@#E?r_X!&JCh@)()*_ctqL$iR%m)z5PS} z{=r|@xW6vA;=OU}T=~fA(^G3=)U2p26RI5q@!pNDLnaA3FncA}yn+v{gY{F8-P9x# zMfprEEha4rpC^IQ7W6L-?xSlbJ_I+oW&V>V#-kHDsf$C12f{w%?dXM)7{XyVs&;V7O!mcUe`I;%NK7aQ#1$giWl2)=m$7N3OXBtkS-_oSb3*Oc#p;Pm^Vt*`0hv+ric2O8m4& z6m?b#gKQc3xoTRlO*nJ^o--#GCcRROXH8PS7}xL1+3v~i{>$0^Nq0}piL|@Z-i5!t z?n!B?C=TMFd(f>2!jKH=@PHkguTndg=&54ewekKQoFDE0cAY&nMGEox?(gE+M&K(* z?P2@)?B%R?cCKB1ReGD&!NK0a%h_JLzbpC|*mA!A-~uiW*#xfbo&neP_VL2%yxRUAd3x_ICGsZEHZMwU8RO3Bqx{3v=S$$;ocM z7=dOfrblmL!44KbXm=F#0y4bQHB{AuIcoqg#CDd{Py#*0h~O>F?ff+i=SK5>?CtKi z1yz<@AH2l=S-+&S_I8f(@9xgtLQdey_z_3%{OH_|pSK2$4c*s6TRd#H4~2n~ zYZ0{@&N{ubHv8UVf7|UZ+e4e`%QohDKRAbV%WU@$&vO}i%#@~qRjeO%Dy#R-@Oa{G z2UBS8pLW}&m&~jR-7m%uYh-D^eO}7a6qeXDxuTaZjGCVYOj+Xcbp-`uPn0ESHzD-z5p49bit{(R<%h9Rxm$(zH{4M6_ zQoNq4KyzJPp!3YF#EjEiKJ9~IC+Oks!3mb@o~|&r>!JiGe$i75ds(7iv@Wvu;uo!p zq=@k8;rG1*9BK1-LG@PGA`5_t8A7EPT%wE_Twj#AL~X9Xx-LGt*z*W#c3FG- ztbf4+tKad5Jm}tjFDP`%kkc3uke!&r5+En^6^E$Zqxs-*WuL`7uDm;V5{@1IPuH4t zfOqd({txdNYyN?1fYpl)^A!^Q)0uLSD#}VwB2`5R3d*b6aux8(S6u!N2owHy9g!!~mgJH5p zs?71S?kJp!(hr{JVi@b;d2YA+Wb)BN|w+R3mWoO13qoiaQl}36Ijr>bulSL#%iz@C1R2LW&5X} zXVw7`#kcI~p}8a9(g{8_D@-0>|JJLTC83IsvN4>^7<@K<=i(m!C-1OG^xNCn{JmT) z`$3(qoeMd0tLy4bF4MIj(tVRbXjW}k7u0YXsupO@u9H9b(2>6wU(b(?4(VkD;x4kd~6iUNeqSeZC1M@=9`{xVW7 z)Utz{@OeME^_n2I)a|_>bt`j%3&{U_OflJE{+`_W4QZ_CsJ5=Bf3*inG+J=R+d1G4E8yA)hl(Io#*-$AP7M4}` z;1%-WQsKj8As=8>O3V6%WfeKQER?g$sDG@M-s&G0Rk&6<_jO$DJ-i9 z{HRdi#|j_Dg?yNdXxYiAu&mM-lfu3Tlz|@<4*Wo&EhwZdOq9-mpGBpo3dYkyjHe35 z(?X1=3WukK9F7#~qC)B-WyD2=BQ93(jSKOOZZs#!t;L@ zRk&3o?lzS;G=grx;(6_66}f-nn{bv)XRz>dp50C^!g1^6*Z&g^e`OEB5YH87dk9+T zCqb_8*o|Z78+iA-cjd=PbgKjsM6*GHmKwF>l50@$uP5#lfCt_?=ii6>N=uv)d<;O?>lf`;xmKW!?bu6FPz($yg==R9 z<1c@4aLXsW6d>6OI=p!64S*;37Hsz+eDeb*hl)lNYY+=<`@>C#w@lk4OHW}6V`VL} zVC=b#v$n9s$eV;Wo?w)n(-~W@QnoIgp+i_MC7$G|g_jv-qIe!TEAfODipQfzv`UU_ zwx|ehe^4s;!L=9poL@sXadkdo$ME{wuRnxC+~0$RpvJ*zetVKvp5Wdp4u}@R2$6xZ zj~_c9?>5q{Q2F6}fJ(r$9}u@;i1)9gC<6ZtZCuJGrV}>w%%tmW2|oSGI+(cuT9+Gg zr|B^OJ#uCN=r})6_CL*I!6sm$^tBtCdMgKjl*<6X|5>*(h30#4s_oL1s(5#sTe0GJ zqS}xREP&T~jU(e~9A3EN=g|7b_G|3g*ZfJUJE51Lr1{;Cq}80d&XvuYGD7r`Fnq`M_U&CSGiEOwIhGFMDk~!2KhI=Pk;e8UKER%KrM=HsjS)i#8|VpI@aue zVyxL;4QryM%_e%_<@#w87G1r($y5*BUOxu#c<*I#zz|KoG8TOI9X$BX`PaVrja3y!QS7 zetFctUwh)&L78Qd&w#Hv1Mm#Zvgk+H>rejDOn-#E=HyS@!Lq0a&}&XSKghMTnU6vL z6j-pd0l=ZJIScq?Ddh9MG%r?9R@6qnTp^5l2jjtDO=S<(W%Cs^2P{_#|DSYhfiR50QhGWlNWOf!1RvG1VvJ|9O9Ora_hv*iWi#ULl@_h*?ubAu5{6cEq zM1dUf{N21dZ$(Ofwx%4It&RmTKa8-zf`kEBO?Syy<^|AAVXSBYG+ugqmN&I_Tu>YHIPT}PN&o{ynLNp&xJmI zI5yeuG*gs18P7wh_vw&IWK`R5_~@`$Iwg({L)_kc*hUIB-lWlOELaW6#`7hwC+_=A zr{2!N)f}?%_s9d3A}i0X`1`e#kgItl$Lu zOVdsXyek)L)w2nB9a~Fdb4y_$QLNQiR?Xg?XK8RQ>auEfRvH_u8k8e4IQ@EAU(SEY z>YBt{Ne;EJl+P1y^!^z@Z;8Z(wI~x+jbyp+U&rurPMRb(b5rF9oGPBbuNGCJs*x%` zScoct&D`r*#0&q_p$CaM`_Bv%ypbdX_u6Cc=cI}uw1D{i%#QS01&{{{46eoTbAu2H z05&n?M~0gdM8faE^&EmJ>77e7i)aPmT#VKQ#gjMQ;{Vh$7O_TwkaCcViK#$qUgB8p z!(+gwAB@D|M6^}E%~L6_&$-9=cP5vc{-O6r#R0&X|ja5|Mo#M@kF$>CeN($ zy!0yxd*>U+9PN1-fSGg|1w3VK9rDj))p?00S$yZSEjY^al0J<>7--3DOMa2rbLueR zHwnbV1PNG+zY?txLU^;wAM6v1MMGy;tx^69)M7V6m<@}GC$6thtOdMShPSkQvcelL zdKdYyic8*CA?Vk%yosU|nnF=x5VVwzdh1b9sf8mUw-(K4Y4NK!@NNXPg4D~fh{rR$VWQTo!>d$m zo!?|3s_@74x4H028|gR~*?{Nrpffv_gCxF(Km&g}tS}}N+HY5uCpuD|Xgg}e!)<GUwdkX;6fzmW>?ebq$2hMbXVbCQV(%Q@>Je8$&zPOUp8Qp2 z-NH%rIac^-Q`7+UHIZ?=>;dQ1<0EnFqw}YeR^r@bDrC)HKur^#p#7m3Xa)LRw7{@s|3|0pvMxBbEJY)sztob zTqV)^5xontia;>>6-nSsAfkXwSiY3wr2tX7i$C&ikz z{8(n4#JqxMys&t=jgrv1VOHCV8))a%#s-XD{!)xz%-MPAw2ZJ*OqkjPBj0IpoY;E@ zw2wrBmUAS^FWB2xfI0i}11WQte!l~=3v;)Smx3N(jeixi1Te{^jSNf%MB$W}9L|8j zKl>wg(eGVWNu|O@1EE0RpKG>?fMF-A#;G8tarx3WfiXL#bNt&ARN~Hs=V6-J=!zxH zNkZHnX7ac3W?OC-i{DDt9Q@CD^X5$wvu{|$>4#&?*YgqRA8tBV5rE!wE>IlqSRnz4 z7h|2pK)mExbqw({xDk3r21DB4a}4O!@jLH-=9h{pLwYV61faZP0>L(nQd9tZID(18 z2iyv%#XGMTh#M#O`4ko=^Y2)2qdyZFKM1@CXP;Ua zN+_y%B|*&}*9I0I-T=NBauQ0z$cbd}Iovj78u@?mkx>IvQLzwF{GcO&HllhHNNXbd zH!Ul&fJ-`FehoucgC*v!_}U$h!*~607Fr0s1!=Dm0 z@_N$=XZ8FE2tXtEh(RI_l$pViPIbnMhDw!JETaWan+-#|zGN0!Y)UV-_bNv0iMRBJ3e~XS&{7 zvWA#D@bxx3`NVSalb=7bNYf2|S%SEb1y&3EloWHp(k8j*Nklr?l@%kvd@#%K?lK@Y zl@LM1&=S+came;Q+zF3w<&d3=Svp(CIZEni2t24%-U%z?NMScuV^!r@b?QaGbNVmy zp+qF!?KLB!1-jvO9J)g`eSD;x6mAjhxLz z8(Nu1!RVbE z4P)TUWD0BB3m^3CZNAnV7c0AoJGR_rD~bTn#19xiCgTQxY006-Z{#4qe=KquCl1+N zDdZ(8KNwuKMT?_TBtP`J7%?0#gO(cf=rx5U7^4vk8mfks zz(Mh@Vjxjeg9Qm3dbn41fh#5a!WJUcY0OBIaKISOAqz{JByky-7a8R(6kU@76AsDu zew^^@?8zN6>TNabo*xc|-D9K)k-Z*X5r*|P`E^CItxbn;A)|v!6#xFp(h=O`{|M6R zuwas{aLSppSoh#nP%U{M)I9xybwBYwfgh3sYtbj-79mVH!Oa>kwiz|)9%2>Sa_l9j zMw9DX=AvYi0>0no50RZO(5p5>I~lsR!~eNu5tr!A3d95cj~Af#X!!E$R|GyzZ8~`N zOhD)69jo8w{{*3cet9V#@PCGWtifluk8zOf%IdGU-Qfk|V3BHisFadlbmK)DGB=tL zgMM2zk_fkElvzZfH2cv2^gG(a9PwvfBE}+oYY}47VaM-BLp0Q~8D?tH*L|=m22fB) z*f#$Sy+k*y*+aFS$fQDQ$|qV~@mQ_RZ<`{O#RIJ_f2vgF%zH+ycmWO6Q7-QrzpDF4 ziXi(%loW#~GP`9y^Xn+8?Pf)$B3XdR0iVIb7?9M;A;i?mPODC`%y zQ!uRP%6p$0AZ*8e5i5jOft6mCq!&LG9VZMz`MH78JfNBnM@-Zyxh4;M_7bEIMhz3V z^x<~m#q6;DhPwFT=*#{hmP`hY1dPFhv-j!^tGH+u=daj$Ow=;j3SzCEIk?bsqDlxB z;Q~Ug;rysy<9Szfzb5)rr11CwObo2M`k)BB_sL(MgCa}tutqNU?I%7IL1+E# z{$PTrY{)7nZghoNl0_B%6Dxq38o8IrR=3@4Z*_S7JyB;CL>Tb_lV^fjN zQTQ&aEe`)1LVR-!*H4>4wWo3jrFesQfc{LJa6H75@mtro(`%1~(aPJ^mfXH;d7*k!AUBUe*uBexO=Ks6e6s(~rvv@(EVS zyo8xfH4GHdsp;+NgG8Of@J#D93p^Hz>NoM*$!53oLi`sg5IULD|AQjdGJ#{7#KcK5uNmN>7uTqHE~)jv>;L4dg7Q> zv6i~(&|tvNQ7vq`sMw5vdoJiNUN3|B$;WCo`(lrCoav@x-mf}MYTH#3@07&%L=&3l zqPU)76a1zr)Qs!YrQ2nBliyWMtJ5i=)LBv=A-%SreSNT_cd}W}5HqLiKwVpzpr-t6 z4b)Q0tj=Rv$vZ;rAU}Y%2Fm1Ht0M6ID+NcMLU6Umwe}cP{GInd z=mY0%#`g7k-`pjjrCC{vr5l#mU;ivA`0ze*XQrsJ)<_UTM2Kp9F+!}t&Ocf`&ObU_ zv&nY2=o+>zz)Zga&_T3CRn-5|&meq}Ee+ zF}VCADG{3E2fCZwhMIgjVat0_>t!4DyDb#^l%oTG2XJ^|O1%v5W&{r!IY1y;FN< zK+%w~r1qLeC{#=bYx8;kti0;@s>^}#pu#6hHalKcy^PY*PbBEg#MlN>x%#urSB75I zHcf<7KGPYPuKHU`=8vDfsl{w&`lXOAcejU|canTr-WK@_%6IxsYIK4l@+)%6vH~1ZM zvPrC=l>u@6@cG+arq~y@=2ke%t#ijV(9AE@3d&}y;Mtr}e}iFIwVt$@J(J>8nsLFV z;IDtKiVtl1ahbC|E7o`&0Q=rdh?5^);WWy+^1gAqfz5`xX2YkuVaqVSI*hJHtbu!W zoRx=PhP-bWn`|dJh;5CUU^*1c-oR~WdFRs!MjC84eZz?n^F+X~rQ(E9RxK7xlbn^y zRsRTb21uy1YN}fJL)GdeBxSb4#?e3R8k224Ur``3T{@ZK7I`Vmgfj!wRyt)wOipvY#k zMw!xV!dV$N4piJm?wjV4@sNoeB8#pvqdB8yz@9G{ZD0c4S6#U`%L|y2GbJ>FFI@k) zu)lbFz^4x5MST%Ve1%`%r%BsF2g~4BQj_4Hm`VzJtC*s~TET==mt|qosRV;nvl*-v zD5Lkk{@DTE)a6M3@B~-F_l5vJn4?$HjS~SkLQiyq=%gP%`zLVBpb;X! zi>rOOzscd?Y%Ej8z&gdGK}=5X|4A36nyqhi5M-MF{9v<4);=+M*zC`g`D4mo$ljpp zUqv%g5?Z_=JLt3iVEYGaM%g@J;=N~8-mC08+WNj^D$Fcr14EQyFdU4WUxU$0TbPBq zbkRJ+gNJu@7EAvy?ehhAt3UER1opW(gw8ZG*x>|HHah8{A>{|ect%I)Kqm}S5}VUq zII#AlI2okaeFSqFJSsNgjtA@wn&rnBk;8u2z+vyQL|M8r8Dv54j0Q$HFxnV!dj%cS zh6nK>3D(h3a)9F#|7((c&yF^;{62rQMgya4Uas`4-ED#-K*MYz>~?9I|I0$#s)pN->UDIY!KcWALRxr4843e78YuQ!U@W5$`F(^ z45r5<#q-C{xb;(Nn6NI+{?)Aq|K7u@JmCNO;Ll7MV;G*miv8q2Vf_5zy|41W{P<(d z{y%u%z+ijN<@BDPjacI?jNJFaIQ|}futQg~V9N1yQ&eUcdTTypxci=W3_CBP>{7mAPz zJ;Xd>!eRQpD&C`!>7yQ9;|xVR*CX7J>!5LTmergJNw_&P({_DV@in-WIHgP zZcC|gR6t5E0ksX>F-aXo*cOGxEVVmVv6I(#R}$->eZaqgP@b*`O`hQ7Rf87`p5Wo& zHD9AfZZb*fwu8X2n7p-N1?PmQgYZ%?qAq>c3J0Ip-c;@^6T*?_I{Rki^j_;QVC^Z$d`E=GTic}VZ}op9t&sln`%+~ zOE+uoYklhP;CCjIy0c~%-LjY~^ca&@M|`DFvtGYS1%x`jdG=!5T z4@|88(2BM%&#fGIAFphD9m#L~6;mJSybj-R0FeI0n!u<{M{nX+ zJAxc3b1y;gFL;X5|9x;je~1mD?{E12fj2Z_^F<3ZSIGBNmka|7waz8P^rO-_7&229 z4!J-Te`j4Lh|$OgZovG1zEY?HX9_+4@~- z7wlchR(sL1iiO9hY^m7XG;6k;TZ zX@eqnRkfhBfRPsOd+}H(lr&cCTiG-nLEPNa&K+1rX$o|$fibA_bKRlmPmzDB?sl?(Q9i7s&>BvT^{A>rLsJWR9e_9S);PfM5ItqY$c;Q??pE^|N zbSEzry%xCh2B$LD;`H`Fgm+lRCvC#ox37lV``{#~``5>A4k>55U#pYQkDuN2{i@5J zJORnQch;;+< zniWDaL{=z|P4a$P>_Bk!AskhiW-BQ*Z)ZH7kl6G1u9Siyc(*;f*-dE;E&Z!9Zz>R`O(HMhtO zuSw|pmF#PmC`P>I{~>s!9Lx65HY1G$__t}8L4BpO^ptw}jof>e=z? zuF4TJCl>as9j3qGXWaQ=4efRhY@63hM(jz@aOw^iJP-_ZL8nsg(EMnCon95{;+R8f zqs#P4Q<%XVxP}uYGQlUMPBDHq2h!IE_)(9{{|MI(%GM>e{^7EYw3EtWDFY4M-HYWG zKh&|dcwq2{0mWO*ZWi(l67B`kIc4xTq}LP0h-YB~cricO=)zDhHlFy?WV1iaKKB}o zllMe>(Ga~2|Cwf)5r}jl#L$^igu!F3?Ra8>l%?FF3{F7WA!-IwuEc{xhu5^??h;mh ze*P{DY$fEYm;)eNW|WnB7bd$jUb8|_KZ}xWT7_ZMLu#7!_08aB1^!Y%jOE@UY{UXT z%yv{wnL^4`Am?a{(Fyt@E_$8MaP_2+LI=4M{$B_vEOJbIZui6;&pJr-kFwCMCzjv9dfl^3zF{|(o$IGhG0fM3WA z(S)Yc_q)MnslAOP@*4CHm`9BL2NriNG7Pdz?9Ob}8<#`~#(yVW$z8s+D121~vb4N2 zH3~iQ>YW~IFs!)3ivt56q-(;E9oTJJ^V27)ig#<=YL>j9ntC4xMCM0{+3b@LYFYEc zD0!mAB%C}2pj4vZ5YXWDZ=HjD z($kZ|4&wXZm7@8?N@64YJr|sJfBh>3z#n8uqd>lT0jR7Zd@Ul8CiOr?fGm2r`bp!N zPj+op#+cV^>Q;S+tH+O@sWdcjfn_eUbefP*M+RAeJhf>|2vykY_atmoP>XH;E7z}p z-?BIqATXMhI3Z*>6UDO|YpE};en!M=M?OCI44&~+*$3hwq!ea2=r6>Cc)`ZU1UzRW zS-_`lQWyZh>Eufy@vR;=xJnk04Fm@@ArPzN13owLBfRWzgsKsoy7fRp8Q2OE%7=Su zo`M2jmf-gdWj)VVO!-6avXDuyn2Z;?qtZ3Qugo^%6Hs)sMW)~H3C|k?J&p8 zOLqKI!PnR83Vl!4?7u48!Ma`Gx3*HB3N|2md=QnXGwknu_@PRHK9R5o064j3jvIXE z8w%m51OC6lb5G2j%OGDb9y{GJ$rq0e187=?3{$PMlmPgR11nG zBZ}YohN_6WMzF62KE)ERW%2pS9N_BR`(^&X|Bz{mM82GEk1tO(>$rJSz;g7#3|Af& z*n`Vl=9|+J9E&EDs=B-^TSMnYLKzf)cphBhc?|*;Co+aAe;82l8iO%TWG0Z=fQHlr zA_J0YlK(dLImFJtLmDADK!4zWy@kol|Fq0(Mm;3mxyTb1GYt~`xp-)ss49%KmIHw2QL^h;ot$@JZzfV5uER@VeytqjCy;)g_Z04u!v(!@@2!ux!hdPN^SFmq1J3C ztLC?;eJ>j{S_9#8$i+Eh%a|_C@`2Ta3>2JO2cNm^@ZbRpA0eDJ zNwr~u0(9&Wycv2qQp$lN%C87$w?_g8Na_m3hb7Rsxy7jUHmuw@TEoDnsoZ=pgqJ^z z6P_F&&Ugq5PgUDUcqxrXgh#7$uJBY-raJe*S)hhRFQy}EfLbl;fGN@j8_Tz0<=>lm z*KcznQ(2J7W~ytpDAKJ&b_sc3U?;%y#}~TyA5W|66L5m&X&}&FQJ}&%HFX`+yb7`T z=pL7s&Ek{sagNP*TVMo?>H#*QTqJt$1dnM7Kw9|SNy}$tjnm@?0DJqDJL$abK?U6h z$&rF`gZN}U`bIfoY~H7LP4(#*`HnTdjd2O*sp+dx-6%Id2X$UQh7kM3qmHW5XI9wr=ks!a5iv;#H4q zdGT6{u)e~or^TJV5zh_!PkGzu9W*Y;1>Sw>TU{o0jvfgRzt`Q`yv|MO>q#cPhU z_o}(~BZt5Im;OkZFw%;QI3O%9CR@?fG)O5YrmdkuMzFk1K?$`>44$!S%Sa)COn87G zpSzf9J)RxGhjKs%c!E|r1l25Fruj^D9xUD9m|M0nPz0nr{IRrpA!rWL~Nt&q?_YA-?>TMQNN*}a@O2-=Wq$cs6(KxHWx9B9! zV(uC-eo3~a=Pb*~*r|ot#ZG9*N!ZolD~w)0qlNL`4H4oIacC;G-MxS|r0e<4oxgz2 z@+yC|1(n5m-*>w9B2x=HM$o}fu5X^=tEL+KN_+|?J2(}{fa|Mb{9$d#cq8ii4KuL?O8%hFM#;G=(+QJ96GUY13bU-0n(HO*ZI{+R(H zVoC#w5y`g$IM8h#ou@ILg&mQ2l!S?Zk5qPg;`T6L5wC!j;`(Q1vy;u1a36x`F&5t8 zm!}x*93DLTPgD$~t%<*8|FKPT{Lc83EyPFs${J|hhFwc~E`Kt9o=ey1ZE>XBls_3u z$~A2p?68^l$ru5Dn=ROY%TH&>hU9URIPf|39KC*t_h^&+de99%dh*?vbUVBoq#Dy z{J}2J5>R}$H$%jlCSiG(W5OZyaw-7SNF$an7Jp=)X2WZ)dc+@R)Vvj!sH|#0q(Jue zfGH*r3<8N1=!9fR1}_m}3CV2PG8lTr`M; z_JG3ip*rFBGyaY*xOWg{0pTzy0{>;DKo(yLkOkRFFrA?UDE*ASX-bsOkoy`HDf1Y%EVA zf=(^e)nVS(+|zLf>=AV;n$)Z>y#_R!Qtu z%ebFpI=z9n79+It%}FL+?Rt;h);>3DZHwNrn*Ei(UG2~uL=!f-TBqpoU1!bSSSK=V ziBtH0#!lhv55@&oqh`d0r@+IToUuWdW*RcbPkA?E5j?%4ef(*06_3RQ( zcZa$>-0gacZt|iJp&c&4AhGRHI?f^?y8N&x2BRSiM_jr1t1)n9hnPd*4!Hxq8hi5c ze{WXy^8Ei|-~*C${k!=Z{xQbaFUpwe>_WYV>`!e6l?5D5#$EEN zN@i>NKOr0My@@qf)PvAl5Fnb+|4&G7Q3`I5Tk+A#2|1JtB*TZD!IR2du6Uw74G9qg z@mS}}YA!&v1j3kFW4!`-hi~bLsbTQq4*Y60-Da1v1GfGyeS_ z+*AJ#s|%3%aWY%_l+~HDN6;@e34Ojxhc8}?by(7ZUNyt1%$H>4DH3Nae#FS^L>Hn| z_*Q04B(*HZK%2~tfEJ}Zo;b7PidD;tMP`QT%Dhl=r^<*JRsjRypqUvID)EAgL1x8T ziZZ5!XGW-`Y7rwEGbglBOG}lRafqS>4w#u4-6u-Kp)+&B%Oss3*V>h-bXk9=5cnMN zMFnuR%}oDu*#X?iHgmjfMLGA5&1^4OiB~v#X0G3|I+`hbCYX+XWU!DSSEfcl4bGQ%L)WD(6*CR`w$A^dY+RTsot?8@{x;%Q;$nokmL zSrXT6m5D)sPmWl{m~K-e#+2`y6<&0J^ya(|xz$in!MF3`76Cyk7EW(~?{i z_#58b>!283PcQ=WG+qwgy%SM0&Y*&SKWG%Z&Fm3lj~X{A@6T#POSr)@ea;lDg?t}N zTWq$wjtr{l%1YVnbUI%Rzmlsvkxo=We6W&+*ks$k%saF_ut|B9&r6(PdRoQnk}2FcqqX$DSao*a<}04v7pxt_BNzCT4Z5R? z$9Wnc@~$e%*=0Vzz0X^I`N>KzE2gGBB4)(?Uj^K-&e3NOt_=bCdwnN+KWuQ)UlAw< z0_IIoYM9E09LT^Q@87@2kehj1t$O^zhMN$>y34Oib_(h%*ej$pW*4FO$h*e#2{bX# z@eLPC)3Wi$r(kB@dhzl08>oC>F8ZQCIo5D{4#2^>X8=i3Pw@>!n3QlG%SIs*O`$P% zeYwd*NMzFa(afog-Agd5vXK17?5ac5kMV&bn5MF4040FK0%gBPv_qwlhv!%DjW-+G zS}Vpk&jk=}l*4S?loi7hZqowZxN-H0U$9jPwQ+M*6K<$#Hf{o6v4{63LhT43v$0OA zjaFAHfXb{ZFVQz97*xwJwE$sRkzp3M>p3hamXafy1H{vs}i&P3C8{1WFZrD0VWm>PYOEK*VKzR48rWAZED?aFp_w z!ljCXNUDZcuNqa6eKM*zUI?g&z`x(jPUT5Wdv}O201vFfJ9=Stgrh)}WV!Az?h#(# zf;Sn^*`Fo~qb|kn*$q8$LI+UP1fG3yo^S zPgba<=gm7KmHE46{%{WZAAIM3!pEvsANil`V<*0J0!HO};Z^w$URf)UKR_hv>q36w zp1E>d159&YwqT^;16cfE1?&ht6sRApKm`ltL*O7#%M`1=`@Z504!>AYSr@86{tcZW zS3c+r@i(%w6oObnbD+M!TZ;Hi{lE^8sx*pU{9pxaA}!$?{1<*UFMzEh!HV`13*P{1 zL!tT!EG^dHWP|+hKXvmAU;E6dtr?GSPyi%S8G%G%Anw<%WFd#y%{Goe2qfS9Oh~V#g#(zli?emCs1oq|4>w$s|P{nk?dS z7&%7L$H&JT8!6*L8xx7+L0oH$858m*ByC&>=#Mlu1or6okZ>kZmVBlzRzJ^xS^nT` zcsbOu8|sz-c3;gJj``@+!bMVb9lD$kB3A_Hk`rJ;)bQ<~&X+u_NWv@g0`-D2TsLu4 z+Sy2^le3OX;tA!QWeyt#(uU&a;M`}B;}Q_o*&8xI2VM}?UmLz!K%7XOP6CJDDh+v2 zoPc<}M4<5PTq5!x_66@A9%sm*zw$sXnW_oaeBt;yc)MzN_GV)6H1)YGKP%Z;W)6Xu5yQc#}Y69$=6pk#`WB}+o4QZqZmB>96BHR zKYk|Y*WN*ARV?!HODg3EEa_lB=mbk@jZEBY#QLP)4z{}l(z7yOY>Zfm;xunda9%^8 zJ+bdFo@|RbT;sj}=|Jsu2>&u)9rX|IrTzQ>%~sHVoMa5@)BxeGo2b8m-u$yEkPi{l zf{fT}JFX4Ql=Nm&eDAoMy^hxD1Oz$k9_x7+3xb4Eb@^3!8l*=-Bq9paWr8^NG1 z%Sz?woDBYRj3o7-=fz=48Tt?kUK~cjn+bEO!KBa=MyA2UyWu!2qX8t2>RDJ;14t@W z@zHUdDz~BWIMQbU`Awhus8XhDpo0<1u9E1@5q_$7&;NX}Lu2rnSuO>%Z2BynI%EZJ zS4uE=`I2HCml)bC3qBP2PmlYTOmN(_j_Ka~f#~i4iV@_gSuopqe;}P3-|x-dAE2u$ z{?+0x{2p!4yR!wik0FklaXf78umOVy>Wm$1&`XRBD;~EhU5AE^>|Zzn);E0vyUM}r zb#058}@uD;C^TfqD$X|1 zcG;1jTsCm~IlFwEy?-a5%i1iA6IvZtWnCCvd?v{A z6%w&0x!D~~(jp$EZ&*7*tGh<`Xiom?D?}hwKe!%O^uYy>MJxs(AUZu1_E!qZOpdJ~ zl1USFE!sieN#uJ&UF)I{Q;Eqk45s4Z*DkEM%BdY%IV?MM2v||%X1TPbH%Rab3>=~u zy&5$(XkA(Gfj*U%Mz8!qQ5}aMB1>TpY3nmv(Y7$dZ7-&&|NYFEmc+@3CLEw?x|8Xb z|G=;u1=5)ffQh3a@#Zy}FJxpqZ5m8PsNA98%!)L(EzDEYCD?%=h=R96NwnHwEC~X8$T*R&3|Q)RvIe zA2(t4;kI1i7H{mg^F`CGTd?o2tr+fs+ESr|&H1LmEH5{+!&lG5JG@=LuQvZdBVsxb z=5`aCKWbUK?*}`J;(nBiRP!2RLVJG z5BX`WT4(YIJKZWrcQ~gV9Y`J1eQk<^dZaCNRQI6~hxG^=^SB-shJI{MqAm@set?e& zSUlEW?kRHjv!Big|Yh0`P%0m|Gt`a>&veE%Nl}p zcnfUd>~5=-cEmhD??r_SR_qR3OuYv?(B{`Q`nw59?9Hy$GL5)ejdLDZF+*R__KrbE z51D+iW(Pc-I}r;6fyC|N5mMW!LmI{;uvrJY!Mtrmw4J266KlTzC}(I<`bh)~7I4=w zzqxh24fXJPbeJ1-1NqNzw_Y@Lxq}xTOs~8y(K(M*A=O!KD#`S$y!t=zdc~|D+`{tp z*N|e=qo4}%dB#@Au03R~n%@XFXDLYx)cSb_f%F+{6@Z@UVK=BOYF~c*j7J(n=*Au! z^mz|G&7D)(|AQ(NIc^rSJ+4Wh`5u&PE3ugd4*`DOt}x_mbeabn?+lc_$Cp&UkLJ+) z0HW9NAir$cxOI<<8j+rg+=s4gci10jS;z?_*Lbex#2|=&%z2vuy>tf!72{tMDOt@Y zgKo{1jWb?@SLBa^B)1kp;A>ZTSM6NY39Sf|q*2R@TC7pto>c($@n6S+>F!_0P?=C6 zd@@Aci%J2+uvFbmoHY}h7u^sNPX&?a)M=1>Oo!(d+GxFG^3o8a?980E*S`9ga$x5N zP6&g0>m`Ft@Bkh?FTsw&=0m1ZF6{IVK8z6MFEAP4KAa-qz>fRIut4}uLWpI}he#$S z@MBUC5looFATk`@aiEluz$JolFDXLffZi36XG!o5ECmo6TLp%7Uc$b@<2zaJd$fl6 zLMjb>Z?P9~+;*-P&1Jrjfrq&4&lj*`YWQ6vliau#9x7qafbEe9#O(%nN|3FEizY81 zYYW2e3Y0v+R_;+;>&v;CjBxPhu7gh2&H0|o1NGkn?0XFtD4!*F@hSM7`>LAXb`G}n zO5{wy7=20V9^7Qym*NTf*&)<$65mgu6kC33jTrs4eI}jOZ zyr^Hr_9qK9KIR+2nnScuV1vJ^z4KH}m#~dan_Ha^fuo2e0`uH^(~P;3$`L# z^X~addb)s{i#l=Y!PETqOF3#L*^>wG1d}oc^ca=HCTBdV^JjwjZM9*V-JuiJX&2j8 z7A(<#TkR`JGTzf*KJuYyEv-F#dp#fdnv`23NQs%*@K()th5mY3) zH$g)uQ?oy`afi_l-i6$&>YCMjTbT@s7?0nn={+H+@QU$`5Oux!wg}c3--uJw*97bT z@z~WMilfgbbh8?GQS=KFEV+e68hWPSm*Bd%iG;pDM~pBRGVCX!U=n=THGNH}0HV=N zI5qtzfod7vC=I+E+%I_%Pc&ZiZdEVELnzW1!u48y)GCl^6l$%OckSV!P$ST)8eXMB zk9JVkxFa^+t?j$-VgUR?W0_Z=YVK&;D;5a0xdS2qfw$W+{NWg15Psc8(J&A|^5*OX zjpEPueGCNy0TloJ{RNGpTsD8M;_NUW&JO#7Ms&TdiWnY%0W{ydIeF$0N&=R(!15-D zy<&g)aBZj8<_TEl0?Sbl%ar^oV+qFo+gn5WVn`18KE>7ac?#3NSszze2bYX1oF%FnVYIL!8S8&g7qbJl=K* zJ%>Pm=8xyzzN=R8`35i;m3DgP5fg)m&NYA$SbpajM^(|rso_vKl1`qT`6xoDC`}wn z;quT`ei0u|0D}wd7sOC{@&p`yHHRvf-9S<`CEe z2>n)#DPgZ%lM3~$N7thJ751=H@c`^Lr33i3D;(UJL$V>aZdx*LMo8w(mL>CM>ylZ= zBtt5ZhGYy}Y^R7}BUDL_kIMrJ?tbUN{<}DKSG{zw|Azg;t z(A$&{$GBY)iNj(@M&9$JScZP%rvHT_+U)KNaJKXi1tlYj^RmP_ z+GS6kTvz?g`to4jEFlmMJbD*JTiumU;9QB|_BD_|n%dt-TizOvHr^U#&wMA|xrHlb z*)v=#rjs}S(!Ixz|9{0ub3EklzTZ+us$o8lX$7Q_f?fu2q>ULBUv7I?e7W5ay+m*|owk?*2h*Svs6D<=oEu~5Y zfww6aM7UkaaHCmBHXgGYEg!I%B`2<8u-lXl;M=Zn&=MGu4QVQ*CG+y|C{-{FbenQv z=(a1CWj+r|1At`z9r$SO1 zVdYU3wlAx#TYQGgwYbE*S8yJq$rtHk3t+cuGWlZL;|gz~f(8@nnu?ape}8|GDi{X3 zO}Q|1+Z7A=QiP;J_*!@tVhjSCa>wM>-0G>)!M?J_D|>t2*x^jBfhJ&m=DB7SpCH3Zlf64_l$5d~iuf5JleI?Bt8# zdeltMQ({;!FZvqdwfXxq*w|M(pz;WQ|LdO_x)1Mu{WF99@ZJF83CVwN5cvbIDYMpK z&K@k%Vg>B?+26mZ;X%^t8gm)}3o3K#uYcx$eRwa2?&RSlvZjY^!}y4BvTYcl6ErLi z_(|Nwt!I&A?&6VH;eq3yhwi-Y`P)t-f*gf&p;J?m0snNr#p}MD-iBS(*9f>XfAmHc zlZEBf^fxhCSZ-CXu=0nG-$+$E8@3<22JFKJ(KcH}DBqMA?HSER{^wElwRb5dG*G6r zFctkGk^ad7S|rgwyv{LoFnTd~$53CcezC^zt=O;^I8pP%pcvNi;2*Z^eFwzMem`J( znfEskO0i>w`G}3|)$uon7bo8xzdL#L{N&Zi#sBPKkWcwAU#vUU+b`oac0Ex;9#YuS zY=sdC#HX*%PlBYxYmlT=-3dPMyJLn#{rK6BpY0B@K9I@_GH}iQ`d5j*>dx6J!zwd% zqvb>o56UnMpCA1DuG!FY>|}_3Y}MO`SQHM+qA!Axi10-)2T{9ul1eo0l%v;4R*zx_ z7OxUT8y(%P!?Zcp{f^ai#7*RC(d7NVg>Tp-%mmDl6T5^NhnaC1p_oIA!@7>6U5~&! z7_XXU0r}EWO;;Q|VSow9PojWd^0t#SaN6p{5rl1C0%qVfChF>%uWxCRM(7klBjBfz zb9K$eT=GE&o4e+|)7EZo`E|!Me7T8k3Db3-jwp=hZ;!V{GH>3)j=+=5oByyOHI6M| zQm@VVBLq~p@oBR2`K~8GNWM)ML$!#b(w@PKV=EKTB@=fYN2h5jy%9qSXW2o-R;ER!-Lg5Dz~my!w0y>0Fcdc>qq?=>hK3?Df#{xG`8RFzxY-KQSVH34n-?f|AG2=GDGN zo>roDQz#Qx?F>u!N9OyQ-pCh8x9(H;P)X6^d@O9hv5C>*O|0wt7Ty~RVK%#5$KWKL z8q`9}f-Gt}^qYDjg38gdH?u1#JHo+j`Pf_$@geY8ycT0QS#>u#K8_<&{Nu!dQHqtfd73GaJT%3t3!jWCoc~e8O=|lumGr; zkAg#H?Z=#jtnDsPx8#xaWDuiGX#wr zjqE8rnflBB%D^h`I&jNdU;A^RCpR~oCcNz}nkJgvZaXc3i{RX!x;D8fuB%5HiY#hr zEGbiquch*#FKc+MYu>QU!=Kb0W{QC2$-q?&9}Do{%n0Nfd|Cte0LV_$-@u#q0mK}R zCr2A4i5zab#@Of(N@}IVd@O0v1*qk&$|Drqbuz zsjbZf?tfWVZCNBWqk!SW+0-MN^6$BP_2%1_$LYAhmtr)!AkR6xrP9ciRU3hTClg!f z*I&>Fh2`J^YbPj9`>l^wmN$IUfjP3|Chl zUs~ZW$(CBGx0dMSP0cfqB^vTXO7o~0kHLK+BOYsc+$o8_Akv9blKADf@j)s!0Tk(T zlmgY|YavE$(c}m-`N!6}_fJi-DUpHtyEf9PLvVfLvoijz^(-X5Kf*UW@x?Rc>&Ux! zw)3agXS=g|e18(((^7Yn5Ab^U>|%O!cHJoSHk@r>5PT`8o@p=0j=x zU_rcPk^pUk+^JnkNAVq=bGyB$`qn*vbyRs{9j!&hL$q^pGc2htXGTlN2dWe<<)6``y`#$L(Ai~ zo3`xGH4px)8R+?O)tEQ~ad2+c4qM>lzQ z#wj$wkxF>!5}tHaavz?f=9PI3R##&ATE(emCO)H@5Q$SsG;LfYnBy3Go*KZt7&_YK z14797e=K2cZM`}xnQW484motf_~wA0WPrEW^tcgzTRvV4Z058jRGf8&euzDf~vWTR` z(At6Ozy5VL{6gvO5=KxlM0w}wV^klftsDbpv7jZB>6-1APF3rf1hoKs<5*QRUb2_n z_ko&YE&~DLU1~H^hhEs=z|CJeUfgznzLN3K&AMkA?tfbI<&Wj#ABeFe3_xeeLyFJt zTiF<2sYN|0xLZEQ5DBb*%CbnVT2my-I{IS?m9$!<%jcIIEz71rTu7pUYO{s=Wxh(z zjFqnvmTU&~N!IISzWN0hYXv0y7?fp{%Gb|e&Z*~qq_;a>>Bf@&OC;|7t?mU8rXzpw z)6ub#D2C3i?nzO$8b5v5xS{6G5(gc%D16-Y)^WWq(^LGHNtyl2PZPq_l_TSq{xQM{ zvwhjSnw4i@vyP?)c2}B4?T$!OXs@Gjs|XeiNRevgNE*fzSVEw^*SaA4}F`@hsd!EBMR_54+Oh>Fx1N%(@IyiAa5-ta z`I$=qyq@vDAH+4%e`%@VFK()Cc6fRMHm})bS=QWL1BOK3Kw5W{;qH5$^?mqlBzcGb zo4tSkzVGlaZ0x96K(6_pnGA}(*>%fM@69e@ihMvIfr*1*A0mn$=_K$qhM%GUrEtQ# z{4XtQwY9&f`m)WFL!$(E!UiuOKgk}y;BAlF=9LXX?#$}Yrr^Twk|S)&i{!Ah4#?$e z^?#UsK`yZNqWI%yI0?AtCUj(@(V{jRKHCki)0$r*ulvL2 z`pO>ny%BVHvJsh+Knxjb9xT+jvs7NT&Js%@tb}}nW6L?;kG3{ro>%D?F#ww|R{-pj zOq8o?>@AEq&cQjy8!cfR#|%j7M3#U`9LoZz#4~{~T)G%t%W}sYGFS_S4E_N_2LE_# zv_+0?kY6|@4giQAjs#R(w0Ye@P=4|)pRAB_(OtlFt`-V`NYXZgq(gnj^-RXrM~ zpzR(Dl&kJ$r`1JYAH6dF@Ox9HK?I#u zAMa-2KU6IyV4J_Mzc$jV>Hi|#&oPDiT0aExUgCE@;;gPF=#Djn#7`YF^q#1!-EFg( zy{x*@=iAFG9P~G3y(4N?GC?z71dy+*R$-YShw8 zUbky&xK=8^X0xk0qK-%p>EwtT0iP0cBS1e*$c<=x+?K(^wxEGw_g5h;Rb7{D=(=3C zxuYO`{>BoJ=+b5our_HV!fg06W^@I&$g#a^R7x?!>hS-6)6b>Ob+oe$8GXzihqN2{ zW%}tt!YAe`0nksDuLK(ZCA(O*8SPyu8LDIJLBOLrmTm4(wd!tY!dQWyF0}{|Eco1b zxhqbx?=A;V$q2w9KTT2q-u6ctG^$2hE}Oe@kf4UfH@4mh(uR)NlipC@aq9y)(nK57 zKr2*_B#krpcU|^IqyDHqe$>!m#fd{Q^y6pj>}%o5MD!d4#x(aw=(}U^=(Pg5!}GKq zH$EkN!T^<^pJart+K)O!$+0Kf969!+oT$OKYX47<0SJBwDD32|ujdT*i;2Cky{A7o0&{8jRXlD|sXNb*;oW&_zI^?Myj`(E>u z?~J#|{l{swNIYRd1dyIHAB|$xEYJrYJ7I;pBrVOZO}?d>x8T|*2ud(ux9!c zK!Bl?KQ2jq0>aFDrw1*r`wad^`vggcHrjNLnxdR1FVO%T3@;6I^ss;fmgKi#0a(d2 zqSYYg?Fm=2{_W_aO1mbC`yi&Lm-R=ej^Bco(83@lN*##fs&E=IA< zJRkHl|4?T08We+ZnGrvhiYYtdU@B^CJQ@d7ks+zY$mK;-FOqZaN%*8VIS%@XBIS7F zzof1z+l(r!QZjU0juP-j>gq+gTrKjx9O;T>RZDRKFl&4oR{)cS>3WBS2=<*m=4EFI zfV_|sAnz!TBi_cg4xW(9E!ppm!KOIfF|beLamO0o;sm}f`yLVu`8pq(+u=YyUowCo z`gg$vX;`utmQ4INx@F)kclv&T;7N8&g#1KiOl1G>K9?k= zdi1HYW!$SzfPNa!KGFE}1@@i%%X7RFT_m}r`e-jqu%FhPO! zIh&bZz~6>vNmZGS@!u1Vp0%|HHQ?WNE9G{+j9+( z2pIU=FiH-tXgl+T(gRJ&aWuj)Paa`;k5RTscff@P;}tvM?i6{SV^6~$M(US^t~chF zjH?WX!!&KuoaOME*U=)!b1Z8}l(XJ=&5p-yRg|1?NYGI(E06%j2)x6L5P*gqWFQhu zaAjeab49uaQm(hZGW`ZE&fUN<%Ae5!;T=|ptV#pHPRbAX$HqxH@5>^C=Fm}>01_LI z>ETF$8HsHMlKY!%_5hdTjI2etq~#vf?ky20%>JmcW&h+Y^o8>a5%M1X}mE@rD3YZXN>0mMOSX_z|Exn zShhdb)e>p{4c>D=Hbh*afBfv=;0gSEQq@KIaPa5u$IrfUL-8P@2(l!$`Mnr;D(DF2 zZ6{Zjy;*s1ec;SuBd_9+xDFPCBks5Tvs{UWYTm`5ZyI=q5Kr*@PotOkzL10tRZ(80tf2lS3#rVW5Hj7>~c+!L%lPg8?`p8fig4N2C^tPiiM>)D6V zgXsNF2fVJF*+YC98C=`TpdowiriYMI*49#HM&wk(R!|JrJVga@241?ag zyyc;5ZPzocqQ~4Pe`GzwNZC=$?2sVH)`wlX5K?-1N>KFzA;SVBR+^t@*Nf&7l1N=w zY|VIdM@!2~Dy9{PA)_x+@Av^jReBm)uHRfx+vi&qHXKbsKt?mt9I3IFqc1?!# zi>bzl_#-5ZzDE(3F&P;=>`|7G<;}q5-EdBAbUvneBelHYejZTNHGRGG#h1 zT=5`eHeIwDGKap7v?wa&BIed$%Ld!IYr0ItIlp3Bwf=os(eTUsf%wiS=Z_xAzJzp= zMk{P|Je*ix2eR!F*1Gd4cj~hZ^e^ku{wiapO>{@Z*Zjfx3e$o|>J3%-!$oFA=bMnR z_Qg^#80J@~(Q26CRWB2-^+hGte(3-YMNX~ZiE5*R7I3BYsMZrWWWzyrn80u_Ul|rX z*LN95eci*<)a1>6VsIsfIPO^`FUz9JFU*-Giq6eNh9Q4bck2}_;f%ta686)5jO2tT zJ%)ZSL5+cZ)g2P5h#bC^KKCGAO_%7RD-F*1!Y_#IsG>7_F2WRMWrwFHYJ%HQ2K;LA zwY*w&jdW1(}LSHZ0t-cLH$%s zKB1H@P(5M*-E8Ndo-kcz7gZE=+=gMlYl=$dJMO{si$pD|dAak&?m@R=YAb8?39AE% z3E%=y7#}1KCg*Q)ZJM=B1L=>i%9iO}QeLW~Vv&>d@zA{Ps;q$kMMc_AxQ#ryg^q9eZq37Gcu7pC!q>JJ1 z48;%Z!`nb~yU3+xxszdjMJ3WB}ds0GbEU@(Ku+6_* z^#*%zYQ!dXomr{L&)zx%!gNV;D%F3S&rR zDw0%fXYvrbQ(ZlQR-OPhzKkXlZtEgmN*&E)6xmKQaQ<{r#z`M$HJ%!6cHkqiF0!wu zeCyEQto0Gsb+%ez;yO{my@Aj-0RVIuXB0-IzKgqx@-^|kJxl1Hn*Z=ryJPW8xYx`8udIWBE^90XNkl&E6}iD&kD>`=bx@J zN8oz-oy=vXRn&-Zc0q9>nf=?r=NOu`7JeX zO#O+i&UL=3_F0R#b((`j?wu+i{`WjJiUT+>tM9R21mL9d1-JuSF)-3cd$(J4(+_e0Nsx=aiq|J?(CFBekx0z15u*$ z)AzD^U=x~W;NpuUe<_SLCphiwkuJW=t?2jqXwb4<4x+j0Ki<_|$=_RUvfEU-i1Hrs%|14e!7Xc9g4% zP2&9-PuMOjFFUM1cZn9+=N+pNwre_DV|QOc1m2F*Hf&wmB9z%u0A##Sb^q`_jn(B~ z{amdUk27wQW$O>zXN$yvyZl}U&Q+pV9$`BZi#7o{AgPq`VJR@F*~5Pm>K3ex`3f%g zmXL7}!8$M>0X^I~$3u=JNj8ORHfyU|c(Tl)xJ`-aKZQ8hq7FEAoP1+iN9zCZY~;|f zZY#F&vvZ04bziBa8&bJ$H>Pn7S56L**Z6re+8Bxri7VJKcfYTen~DjpMgbR~+5$;i zqGm%%wj`Hr$YkB}Ytt>rMWEV{qH1;b+fAuqC^o0!cbil3yA7#W=JO4SU>G)}VO|yO zhC~30je7);>~GvDNXn+&a>=&#-)%ZbIg+hV!nTsF5VQG~RDQ9sTmZ#}RQ&nA-;fA~ zVN*#gn?F|@D>4knhIG_<-E6E6a3q^f;LY`t`Q~~Fp!jkNWPG`)^0wGqOIvI#jfahi zc-WYR+ivrLfjE-sz+++04%hsmoqGohn#6U?eBCl7AKrZ*F0U>h;ZQ@O6H!+3_yd-! z>bh=PJZ|2W1xGM7GL=41s6Ti%@`e>T;-Bt`^n2f+4^i_rRfN$@A{i zkM}nv^s($tB1d?LtG2u@A9mo<&?DKJ2el1fY;D5Z{G09XW>p!gl4;ZHm z_pMN34E9Ns*baA_l62kgcrZsuQ)_*QFmY)z`zZZ7kUq6rZ5PE&DOwQ1OzLO9Fg3zF z!rV6LQ%C0D)Vc9AQJ8id+#^;_9p~tkQ-pL8>!aQTJ6OrkuL)~2gaJj+I~RdzxTRB& zgIxsb-Q;+4^0R&QAl%~y=M`li*1rAqufB@X^P4|6D;@efxhD$m3|9Y#x5WN%#4kMb z=J#jIyuDR9sb@`HTDyk!q#*c*?O|;$z_)ODCtRY$yJb5AZrWpE5WxR>FYJdFoNE}3 zo0BW9Wz!Qh$ z{Si#p!wfF5v{ApaT8k)~wjl6AcNm_2Fj^u`e)6BWy0q%CcsZUmQBx$tKYR6&|LAiV za`-fxf!nXaBPfz>Cmu^;9VX(N;6he=$ev(dydQ($8ZZ2V6vis=I`BMNU*C|jm+KX@ zp&`*)9w8M|s5)aiI+=S$dlVu{wEhX}1kFTFNdu(syyO68{JCH}6~P%=0L+$a*hTWb z>aIYeXGiI71s;VAgttke2PbuuunmcZ`-dFgsHR!vU=sfQVJy5D|Qa1hGo)?gR zQhi|_ zuA|)ptM8;L|LFqY2^74uN9SXN1?TCyTHwQ~YBptZk>K4u`&V=(lCqUMiX2?NuH%)v zi{?b4_H|%*q5VT(nH7UwTZLe#JHwNyYc+o`Gw;jUu(#km@EFS+>ZSAp3t*zqeYn9d zNb7D2+pyXg)hFypf{mX)#24|91u{$w{nV*VjElqcV~Nq>9~?(FU@6qcHd|_U4rl*7 zd%Da1=ZO8^GjJ91%)JtQQ2CP<)`mmUyhpL}g`Bkc zum9>5C;an~%D`ASg9rwseGQbM`Xz*CSg8@rm zc$}3FeVc2l(k|5m)AaYmYS^KPa3yn!@jdkNQMR!ME6+W=kPiNhjfk#f`)k!f-Wp*7 zrA~8U70VKurfzt3ZhSw{r+YwDD_e?}kbGmGX$6iPR7_V;|I&%Z?TrzfYJ3@ebnx+V zY?F@q61Ocwi2UHI=F^tEEMY!)CW)Pq$CDHp(9Do>V1oz8En6vuD3AS_e-uOLnOe;W zt=`LUXcMrQh}%W*1WuSmAj7i`aGpcjziIocoCu#Qj7I-6o<@9LtAvj>cKZ z{(sIB5Hg_+ap@py3|oh*CS+unnzecj&3dCgl7^eg1g{7{j2_f*v!k|^LvbjiZ7U!# zy4Y}jC+=95Rw0%8+&DW1i05F6=pwy^zeP@I>ZO&~J)x zp9It%7gOhc;Y91YpdH#_M48a!)w8-J-LcT8s@3Fm(l!Z{_oh1*`V<0vdm%N%6K1to zpwO9K%)`c1F#j#;K`UdZtk#HHRFoXY+2?tY(dD>o}Ok$1@WWc zFUywUEEoS+E>Z~m7|TT!iPhHn@2tGW@Xvh6$D{ufQG`5QoMZOV_D_OXII|*J zZJ_Zyi~^s>3?K1K@bt>aVPg`e{jwYs#!QFJ$4Y=I!&zYrRr>hTFit*!ylTY0qR05~ zJqB`=*2E|>7aKkX#7)ffLxfm%GqZvd;H+l|;xS&o{u%x|gfk1AL@+LqpTgK?+|(*Y z_e-x~d3j9*-3iFA<;@iL+A)H^hR8d4Cky_=vgQ>e+hbE6{NKQ6KOd5esSIjj=Yt7( zsRG!B+3d-=A)4n)z)jvA3;V={6X>VsK5(LvwL&5g@hiogNHI<_Fne)$e!--BQ$C`V zHeanuwrKUubqTq2b`=t78^WN${TV(>pi2wYA}yFuHlj&@YW&oNoW!DiYN8l4FmL`c5At#6w>kT4(VC%tF1v=mdfeycX0>x~8-eIXX zK&a>YKqdX8@B#OWS|vOcj(%xOl=&7g*<|s*5-i$w44*FhRk-IxBW@+K(_EX zL;QtR%`mIW+PZb!5S!nw9bTSp$u}am?u-JY!9zOW4u!Ik;1l%BnzQxH2*{ z7;-SE`$^%`=7~3gTqU-%iIN41s8EaQ`L0llT&H|5bcXj}g|B*?haK90uNc{n`+VzB zhTwzQ1={7A2BDHmF$khu8bKfhjR6Fl+ z9Ez;JW=7%zT?0ZJ`b+-ogz~r(PnR@p`BLyIoEUzP`D$gVS~E+nk)YPeP3xqkB{I^= zt540Z0dm2?BMTNa&b9z>l~g^QMNRQ3UEVmHp6|_FccdId22WcQZqiRW-=~}EGsLFT z*e}7UONg82&E1KAW#wB|zJuE#%Jz*=NWA_LJe`pk=8#`W*K3CAo`qDO?~AJ zUx05Yzg^=?40w`tWv{KG{7s@9;(p%G;0-^RtWXc{NF{CH+H$*QtF(aN$0oKU42c0G z#;&h0SrI01n!Q&{yvNmox5P#RJ1S$;^-!W|G;+!iz2!5$U@hka44u8`HJ6njcg^ZK?a33#3 zcfDrBvt>h!O|kvT2OaS0Cq0(c~?& zp2@4l3__KL^uGKh!6)o+`|!9A-Cr1&=xqsSC)QWULBTi54z|y^$jb!Bwqd87Z21e)VW^pd#F6()YdJgQGH=`1Y0Z8=}Jcovnzj7}=6 z)K@D<^1$q#dI`?Vmu&3p&^W`PRXad}z^I{p(-ORLhkO$YTWp7%|L{*xr#;yMNR7vg zueuDSh>uC=&yK3Za+&h!*UN`2wwXqufts(Z!%KK-t^N9IO97J4V|-<-V&;)Xm#8?N zeK6j6NPAI62NqrHeTcz%1jKj?NDA6~jIAkKrd9K7?b0vnV0gKRe2#v2*Pe&bB{aa3 zw(AY>FOddh;7URZA`PiVSaBMo4xmIU=zb(`- zd<6Qm;iG^fW9B!$=R(|aOeY^G$5k?b9v@)Q-VT9BT9nOP4fvna-pUcsWvxMBw(YWe zQq~emJTOy=tT5_X9&1*sH9$Vpvp4%Se-4xVf$Q_$@RAQ#$0;tugW zY=0Ym@`!BtV*wtvwfJ?x)R9xRdRMsc&ERpnz1ged?~c#*BCIPe`bOJEoH|+>_kHdC zN*jr_8x3flz#sY(I!@QJaVSJibb|S^(Gz&L1^zqRB@G`x zeI;KzdougaA-OH)l>9wAW->JevO>+C{Ncx1n~XmV(qVGPcI1;eRVQ9r1%*JolqK9e zce9yz>yUAJpuqkBYalQ96;Cp%IX&?2u0N9~<}IM;B*I;;n29>Wd%8%Y@p#%%u{vs& zOE!V|vyqy)Ea1^CP~eS@jX@YVnHc|55JI2;Wu^s+2=z=nVo8*+C40Vx zL4uF4JoG1po)kcfOGNk&XdVu-@1@(7M1(~`C|m(Q?E9QS6c-Ku9T!Un`fyX9P!i}7 z$4PzFWLhW7&qj@z-Sq;+eai0y$#R?U(!q1IobsVLex4CXeB=-<8B}TbAilMbAzV0m=EdsW zoUa`3V0wL>iPOYava|%D6J=Fl{&pe2{LQ{#{&qf;{%V-u+@{5L@|6i>P~d_fA?{}n z{0B*ieg*$Qm)CIWkte%Bcyiwxz6ecUv-9X1n@S2T4+2=oWvjpAtXKW|fPb`hx!Kpe z7)#M6WI7RWe8BbW_nb$8&6YDe<~rqrh*ha%2Yb;)V)Dm`12`8f({Eq=sI~U}h&3P* zt>C9BJPok|8aXRSpff;SlqLZ9${HtF=~pH`c*>^6QANE##NTzEMS3B*x@r_$TY1P)x7ftv^j0&m{t|I z=fp1`Orx48MlV!e4li($%jGNVA$pY@81ydLLd|r=pfu1w>?kFereM&JNg|9EymW}A z{J+&(%f@Xl2DEDXJo?Ju8fWZg1j2I&l?vk`$fOz7QTn)bn~kw7*k$8fBU5CJhps2c z+Z(>S?YV`vQ00?yehw8$F*YsQ|B$k$7gT##&D* zrlIAFyd8R6!r{e=Qia8iuC-vRW;4B1E1rv})K(;44f)j%L$B-&QEP7x z#0$*oaW9^eURB#MA7s_

-JX_Ni73WxIi`>R3E$i($0FxY#0{;PUwgLC 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�FJGl{jXRH6+Wn=3>A5i{DHDi3C8F+@8IT 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

vc={MO| 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 nbBA3Whh&1* zTsRk-X1-x2A3EjME-pPeh^TqUqo7k>d-?h7sv@ysqnu+-QTT*0NK(%6Gop&bR#aywtJ2MOx;PSY+I`)KFm9CqHAp!WGr!G1UwLRLI*IBZ`-;h4O-qe9uZ ziA$(A|8#o|xa%DY#zubZ@cbDeAHUeUI-1YPH=w5o0ttGfSHaCs|H z9zHV-lm1`PU>m)tLss4Wx9=`eZi!gt?>?3S1kOzf{RaerMdR&DcovB zz0RkC1eZ2zc`Zeux_2k^1g*g(Yz=sAisuU|?i3I+C3)57^G~(%&s{{qB;Ol9zAs|c zX8!bSWz#cqA^>gZt_|dN8*f8y7poTEDc^02hxyvuqB$|?K6~`Cu#vems95~+S}hvH z#6;QdxTkN&n4q!l^zs$cV!Ws*J}s(lgDYaz{`#1RU8=m5*{!P5yJ~=(m*oN@1OQMW zmLzs%6N`?)W_fGILXuVMe_3uC=oK5ee0#08&X#B$qJ`(25iGW#jlt6utp(05Swy5# zo-PwVo_%kE<_=K&AfHy3l|6Da7=xA-517rrDsS9a3}3N+H~otO=SH>ou{tY8CHnuj z_jgTk-AuzUdj9^3r|#3FiV#8w?{&ni8DNYtU`&X!Yu8hg$;5y$-~nSy)&B2$mef+W zq*kl7)_|Ss_JPO48m-n>tJU9qw=edYy$_V&FJ6|X6sx67cj!N0-oYRGPWb-dStcx* zvsna}F^H69592=vJ|_nCHp=v#otzT<%8T9tQAYP&Fir`zw0jF7t8dDaDoE+Ch?Fi} z5=FDxG6Z_o$Hokeh8Y3>=WM!-S70y61g2d4%gaGoT}2c&GR;%!keufBD{A0oavEoS z2H%3~7)a}VSInJ}CtfjV$F5j_kpu|5g@vn<4Lir53&1mmJ{pl6BOcppOc%Q$X-1<^!A+9&FZh7T3X7?1 zI4>z6UW;N_wJ`;U4E>YmzTiLsCWB!9O%hkySa|NV3$`}ceU z^)9Z;=74$h^~d?Y>06kmz?|eDQ9%-@EJRJ;>?BeAhu~M=es9BbNj8D2QIdGTwt%lw znjqk8Hhl7#L=Q}iqPXbQ zgGsVO2(jn$?KCOF#Meh|={Syi=w^jYLG4Kfg(r8rws{gWFJwZvWYSbj`D79cT&Y~Z z7*|Y;wnLW2U`~iF;Mz+@-egk`T#jo|x3YQV_E(O*k^m%08DMRR$BS>ivYX};ft@4M z_RUv!YMawURb=bwD*5IQ+qGEpw1*=}wUNz-ayLqor_A^aE>|Nh+&1sT2rmZ1D+h@u zBC56E>7o;RHAwPa3;?z9C^Z2JjoVZd=Bxc^Q%J17N>WIekGKBgLzsKu*rXoVGrZ>d zpnK*4AU8hVT*^FPR>rqKkjC3iQLS1wF}D(<>w;Q%g{>RLM2W zE)x-!g1LA%+;%SWVr4*hKQ9lmqAw9_WtFOGlsEewl?o^s3Sw8%H$3o4_Lt?}*`4a% z=LpbuyT7z2^R7+8yW-iC*qr+zv3mKR@vtEI8m6ohoHBd6nIDmojp*1w6TTQ$MBg?B zZR^vv3b!L|*O++a1IbYHo@9No8Et+bpPvWV-sZJ=PcpzvFzL%d1pE}++T1SZB*V*F z{PEW$HOz@m|8k9xJ}3EgK9W~HBh-l>#|(SDCT+3RN!+tdck{`7o}16lHUSQKLZ91D znxf|m`J^dv-Z%JpOFn6mAey3wz!Xvv(F8o{rlm=DGCc(CX@Vb`=7=T-qBEmyXkYaC zd-91%jDl1}(Z19t|Py3WA_NUnf*8j2Go@_+^; zH+i5LcktE~`B`Qa$%>YtsEu>`WciXP>IrT<=q)MC6yMX=_fnLcs!2>i%B zv}{&+$`G?)`i#w-*7 zGjAjWDaur|@^O?)!oVMQ05}Wt3c(?BPzzO!3;|*jiX%y9sUX$Mu%xUp-sEl=_pdq* z0~R$lc%nI%eT(XKR8IPCoGvp^>L!PKV0xt22A&Q;2($OlB9!^zd`x{b5Ow_VbpLgk z?wdYCNx{1M-Ze&=Dg2q zIX8ZE@vOWld%S1dJK3X>xZJXSSNkNcDX*KdWZEOjVM+hRE-u?OU{AV^EMt>Yauht0 z+-NTp2`0z_%8DI8Vvm%-&7rO!hRjYwbj;l^MI3S7C9I|f-)22BW^!Jrz&Q=y3cMBY zG3%eUAE=n~;ZqsF(OZGeF7ou0#?B)fiCmyfV1t$T2xm;jM{`WPWO6qs3jpkPkuBzY zxFxYDuRvsTUUG|Hh_lFh*J!1V&EL!VNH!0R`4&%s-7R`kMdP0=ABL{VVL zv#H8Z7$qfLmure~*VEZ{&iR=WswvYA|3P1VrO&D0WB3X z@H2Z?NI^)71&WTjt4JkHg56p6A$yA1hc(BD1(4^&v{PRJIV_*2-kg@WWA-6CL{>~v zV;k&<8?Bf~C$?d7oCVvl`sbKLMnC6k%V~b@u$NI5|I3qdCMR|~I)#fzy5_sR5(|pO9XR~Oo_%q=5s*>=N0kUptxv30k~OB*s&=I4TgQf98nx;JUb{y z$gce)1qupT16+Vq*a=d3 zp4WGlRl_rHAB|q^8fT|DuDMb+*@S@XiqzfXv#hsDov2n)!Dd583-Tp<<5mge4>ygH z$0cd`SV&j9xkOY2N?tbaOj}{zrpaFxM_QX|H9c(v%5JZVBClQU@-7s=raW?3H%TI zM>-V!}3_?lZHC1Aj2~wo&?k}DfF}xPv;;caQz;Dd_mgmLGIqgBTpuw*+wG2dV`3V#*ior7WbY}G*jA-x zXiSPn&+z{NULY2k^wMpan*(};C_;eq-WCK+^8$;-Y_ASGDdSlN6j zym%Jyl6{v=f@Of2HfAvkIyYHu&k{opk7k?$R0SSNN%rz0cB4vey*4SYq&iYfoALW) z*=da3y()b!TouV+Nab5|5EVs=)C-{O(|d?mW>kGTlobw~m;Doi2S!~D9+;*CJh?iJ zGHCxm4bNXb3wWujLBaLAa4QBH6fLn)=9PVXT^_xhIjipoZt9BvbWm+7 zZ?N^3&v8M%HVtdCh=#%*!uJ|CL%_QhtF41Bl!_%~kgA;`lisIJZAVU6uJ`QJRKQn2 zMJ44SXGJ}EVju^nq|c7Y^}edeg3gLRrP@P@d|Xfvvr;1U=oekHOTK{0)wnqo!&mY+ z+^A}gD7RzZk<8`m{fVVo^B&{SyI+`` zviEt%1o=xmzmjiusxsjk%u<8a2~lKbVoUJ-Vgq&rCk0iga)~bg5~IknJD^Os@8UY^ zg49qyq0*qvLepuF;jSO%Vp|KGQllzLw6gas;HA9T1xZRR6DSM0+`XzA5)LG|S_;XN z>V}fhiewjGsQ_73l&oP1DFxi4e|KYLaLc?G2W54&cPsJHm4tj^be9+ymiI3hrYiC) z7Z{LQn0D710|yvIkvAaZ*&*0N-;$<*11aS1*^H!*Wz~Qhn8F z7sD*Lr=(I|0XeD^3CxPb6n;y6-q!M~#JgvM4btLwmot_fBhJ|K{s(jxm zxn^fe%=Dg}oD%$%qJ&+g$iiM>l1#y}b86oRr7lmdYZr6pjF>x%y{r2O{jbVWIlC4; zMC%o~KR#@1S*kh7NvVSdROzDhpm32Y8Bt)bWt>%x=kBm9Uw2py zt#q&O@2HNC=rNvk+2oIei@g+L#*F(plg@`#Aru4#mM7=jkNOrm@6|A{(sQ>1tEYVz z?p49crxt}9U5V+N!Lzt#NQ@(U)AkEs*0Pm{&%#!!k35&;p75O&p*wx4gG&$i#H!A( zYcqP{TepW2UF}<^WRmY?31C?~xMb^$shR1{05f}PKFqVC5+^ThH7a|kJN22-=A|ti z_&eD|6E8*w4Ojl{yaJ(7DG%>oKZ|Zs$&bn`wvy}H+!y=IPD#t;%C3#4S@22^%KI13 z0$!P4oDa)GkonD0`cJx~l27a~Dsh&q`c}@_4od#T`<6P-Z0oL8%I0-=_do z>>-dVX+|qYRW?m-M(iN>dHP--!T_wOxGRTZ=xbpPCAEpv^Qx>T)~p_@@-PphQ2UOH zv#v<8(mlpS>iGMqipMk)>G*J#G2n=6%C0yV2Np~vIi z6JkxL)wAp~iJPN7#;$D7fI?Ewm%Uu3~SZsNNAl{Ey+a`x8>~O&7b96e3~VHP$&euuxS}S%)mE<)e)w$XRjztI8kem&xOGvFoQ-OipJ{7 z3TXC<5~(Rrs!UENR>zg?56nlJ?UhpEv-`*1p1JB6xR){eDNg_xZOwv7EN4G+N||LG zUASa2i=WyIj$2!c**6yh|8?v8x9{KncYiad{+0jxAM{{46S_t&4n_ix|7 zE%7`|77PU9_h0efUw?$(zkTg*_U@vX5c4#Sk3`ZjkyZ9U;)Ew4h{8GZBlu5$pz z=3p_f##UpD@Xc4pLEUNU6;AxxeDlqb(-mNIP&U|}4D0KgZ)`he7@GrgOH>uN*npU9mZgjtmSBsn-u+bI_C#_Z!@# zoj?sweK^RG^3Bh7YL8LnV5&B$5;h2T;klJR&9_N}<={g>Hs6ZD zcJmDx!Oh=wkxvA*8WU=6*WM^`5Vc;^ZqL)ARwbTSUKf?9RY^lDx2bY4l`B)ZtCi%a z@?cbMQ{}o>E+niQHiu(NPONXfHX^oee>Uy6R-fV|t4!sc+o$>H|RFUGZFS8vmTXTI1)rrB7Rj&Z{WG3<>&yltz4 zcy3^J5~0WXfO(S6G}`vZL42at zxVO>~Ms(?nn|rr5k?8O+h>_{0i7EP3xMJgWFU(i_@t^-JCb8gT7C#)Bs$&aj{Db+l z-)HT|6rX+~E#6|YkLL5e`TT+}5*Y6Z&=ddm2lAfzH08?3f9K@Cb`$;Qy9Pgh7~m&u z^QFPhbNq~;Qb_MJpV#E`=K+2as6qSB1N<~IfzRIt{@NO0-FiPXwu!alzZ~X|+K-0$7#-9njf~7)Y|?kRA!~r)8mc2E)m=}t5tI3JAyGqi z&9s4)Q8oC-KSigz*k*~wQ((=2_YKPsqV=sXC&9(S4e(BZFSE$S46VBuA5z#f*3PIH zZM2+c&O$iIR}^QL6Gcqf3>{V8c16Eu*~EJ>=I6IX@X7I;kqubInV1t~Iw0Qo?AE%$ zOWsthi=NtN9u#@5!!_B%)Vy3usRRg*y=C%x*1kNG^Jd0lO*_QLY4!(|x1+(7{Q9zl z%Dj`G32T;D5UB`JHr_#+ok>*f9kGtBM{4F_-T`R>R)$7!QfCR*pL5}oXwF1V0vpsO z;1*G8prtnJuc~~tRjvn~lELAW@{OA1k1UqG|B)`gHta8QXuf#r=wIRx&EbYy$O-L#G=Vm9T1ivn$ zL;hOqfg|&d*?cNd5CRCa(Vi!2M&x$5;47FM>rh$Ojl;#kWyX=6rV{*WT`pyHRmetF z9@wP;sLi3L1b3|7f#O57CY~aNDbvO|Rnq3Da_y9^wZhe;f=vs0EXyHF(mBAIiG=5$@JkB9Yo zt=NddWwT(!D18N2ZIZ>~XW`u?{-dx89pn}zC*d+)JTapJT&5l^@|u}ES|pa!{5`!u z>W>Uk!;X5yI1xvmzo&KJ?`6Gg%xiP&z-DDzia@*8vG~CfmByXtPVLKeH;7Uzy!z%@ zl+NlZNO*37TUQokl*!-E~%{@r7a!(Jm96|RO~~pPf&y>eFAOv*s(A6 znVpgn{2d^llq4>7Ld#A{n-sre$x|ixjlHtK%(}R7eJX|1M>*9_c1laK{iu&Q7n=S3y!{03uZ)t4^))AS+Yy$g0%UC~AVoN;>HZ zS1aeVrtH4xasT_XpocOytjyMZTkJR3>-5)=jPJiL!2QY~B&aIdUX`QC;D9Qq<+MljGRr0_tki|1q4(P=I9HqH=Mo z|CG0F%0*+y+Iwa14~haBtn!o9sLM;7$1crY^a^zN--df|Zza1A7GQs$T@K3I-vRlQ z-Mi}R-H@+u?;9O!j4Q#rKv2n7pu^;pHu*={Qz1LKN|S%BLKf zAv{KLWPo3i(jq?|fQo7H)BnD-$iO-N?w?#X@Tj4WEJ_3!Ptr$UZ4Te`=$1ZP%LI_T zV*}>V*B|Hi{r>lUE2VTzl5PoE5jRFo07ctz7%Yyd1ueWE>T86F-h?v8Hn6!BL1TWs}Vby;41x%Hy46dK5Aat~1GO zg^bgeJ824OA-UovlW|bUmN?(3Md7EW!m_m-tM<#isE@Z*I+OBP`rowGX&K+cW(v+Nb z!;lSXg2c;<*VpY=`_ZOv+&pfd?@wr+Mf3G1l00vQIrV-b83I4s6ol`B|7QL($Z1G& z7Y6wdKao6w3!H(>djk`~cVML7&0#L_o=dkUWvM|maFp)r1`@lZDHSkIVA7hTNZJVd z)EWXT@;YcMySbr6F^QO^#OM+z?ji7Ks8=t_o=Wkhogdhr{+Z z;YzSgy+LQQ}Xp8xG90ehKYW^vb-;oan5MoJ=x|`Wg5t z-7S1bE!I3ad|RwV?{|Qt_nguDIPmw+0$y~$RmT-;b8vKYz*U03QiK=gQwztJd{TG3 zWEe?Tya^mhF6COb`3=>9cc~CFap*DgC2y!QpwopS)W*Im!8;qBL}UvaI^mqPrdsb& zV4lTtq>9MzfPF%|qLntd-eEPwV$ZM2zOuz@I&&cf0WGX+4$KQFd;lrQxZ9NjQ`BQ! z`{U~w9t{)n!vFn^)VVB~9pW-CFY`6Wu0~1erhL`0vr(#$6cl6YyQ#iK(7v8AHSKb0 z>~UM@O;SRnbwSdaAEl}im!tOi>BLr#FeM*Ow|ohR34S$-hGYDjeqNLB?@6A2eCHRU zGEfy@VO>S`2%Tl zOXl^3z)6dA$VDQk(uo$*$Q7iZ3agJehET;76wk=?9H_x)djd5mRY8iF1VuP#u?^bS z59ITl?0m2)IqXkMn zlQI5ER*~Z3PYLFJA%#)kxHK{3Uy|>>SV;R8fuLzmSKyqeN3Y5F?XSO(5-qo`Fv+j4 zj5hJ-#$3`XvvOgQhF6@nXj{McLnl-01_n?^8xq{ zAVAv%PDU`%9~OW8F#Pei#ecsIfBdwV;-`^+uko1&*o)-xe83AKIKq(KhkbzmfL6dV z!u=0_!3bcpfn$N4hX3Fw!fL}@s-KVK2us6=nq6mmxW(Ka_>B`x2c| zTtyLoHb2Z|6v;~ZL}Y71v$BHM1H^+SfC=!QIgYSDut14$8?k_!M>#7Dm+0NlZh(+j zP$D;jOF7j_YTuCwWhTo2tb>kQNgC(*jc{Ym-U#ZFJPTV{E>y$97Pw;e@@M6rOw=p~ zG-YF?<<3~)u;&a3>JVF7BhBT_eN(<;@~2LH4`fT*<|UG+rw2UvORvc&qNMHdA>bmq3#UafaF+myRkEYiIKH3FilS;9_B?9} zU~-*KNz8vCr$d2EXUI=Ms~2&q3dD<8#Z4xk`>2>1Y^!#)>y{5vN%r*)pAIhZ3E$`so9D25A7 zLijl9sNCnpKRFM&$bK~=s#ItULK1XA*we*Iz(!J8iReL_z?J;wO+XR8@><^GTu2;IEZYe=uFf7W7z0p<#Ge3oKfjmAi{u^^8AKMPkSTG0S)barh}E$Yv$%dM(@IU%YE+VMWPx zAgehdU(vO3nRp;NIcH)`iHVGovts*-7rCCSL=yMINqMdXlvDGw@!hTYxq>g| z1H1b#dC~GxOvO%yZg0CvMNec1y~w)n6(qVPY@}A^ya$_VT4616(r|t)mUo6J!44Bz z-IxsWo>m{^IO52ZZMul+ymCzHeKunUu0+fyYK51F-7>F{2|&-7>`+fhl5*1qG)<9$ zx7c{yDFg15jFe$^rhy|M%TO!sd1q-rXK#_~VL6RNftPW6Drm0k{&`*He(7#2lAet5 zKeBLWZ$IZFn}$9|x>LYUn2&h`-(l?&?in0}Tu&>9V&2_Yq{ErPx=WlSZBiu7lEZfX zcs9n{%T4AAl5nIY|01S=TB`^lX-wd_$BGv@x>r~lSbAw`Xp^T|nuyG<{a$vY;`pgZ zi|UB0q~pyvxf8Nd5Lc*YfkLzE3e-qi3D(F;lj*UFO`Zy~wn~;*k$MUpv;>cDO2J%c zeg*Oq-Hb6++3gsAC0!=$#Eb4YDn(7qN^-X*tA<2Fye%juuXynRSh!-~c*22JR6vPH$jV8X z)U&Ijx1h6zZ`MSvF;!^E{>^bY-$lXw649PLw5+7TjV$uiypwa=n3qctW9*u-1c{VV z5agc57>+##E7Wx4j8<4PGddzTvS|}`N~A!jprj=7#h~B;8F12hO}B!&olQlo)*q873TL@2=U;5Y%f0Ob-;i4Y3>MfFvb z9fzd|ef{AfKmf4t0ssP%2BvoSEA;$#?4kV&-h=;O#K82!q+p8BpG%iy3uZy;D0l&O z1I{R9Ap)j5^vHHIvPTGDh8lb*r3HVH`X4MWzw%*JrpfH-Dp&&p8B{^Kv`+)r@G9W}G&40HfE)CTus2PKU9VW0jAo|y zibX1z&3A*cK#~cjG$bwzq=l0Ve}y>(;Gw?cn?GG|%Ish&y5bPc28EtZxO-|IHDVd( z2W4GE$yKnZXz!%UXBhrt*5Y1p>8{ddJf4>Qz%o|Aj1wZO3TpxRYYKJK)`&`}61W6<3yZ&c5#*9SFJkowP{$B z+*+9)`k`y`>^k_2X{*2+|2Micm1OT^G2z7e#hi(YncXWT__dcJ-^cD%H2bt-g;H6U zc=^hFxRTXeJFS{go$^pS23Z#P22Ma#*E^U!2gYIGuN*wLC6wDSlc2{E6xR{o?uiA?k`=m-{c+ z272_qa+HgU>2)HA=n(Wy>^SDKdMWmvy_uEZH^)_m1}?1}8)}$A!d{^;TJ5zWa9@t3 znvr~oy+?CUWq4+h(%nWLvdC$Uxs063Yw7ObIc`1cmZ@MU zGs@i#hDtWe#=G!1Erq|__+6f2b_pvzJ|vg@4)O;0k|w>A%-hr>{I}gn#HU=n>P$mFcZJVOcKw4T#uQ&3| zuO>UJG?Nz(K;_z(Z|M?Ml(=yB=>JL)@flRikk7W(aqM~A-lU{81%(*F|l zj0YNwEgZqTcCxTt^nQuaIg^crL+v~fjT)-iv10WOZQ+W%OlR3B2^TKsgR=6cu(&hM zO`IkI%5QCU=)mzyLtj1WbAa-jN;S?MPuQa(d2PQF*6+$M0MA5=_0n$u7b~sWgCf~Q z=X<=*g}tWmeklx$mA!i1F^UDfKj`BsqrtNZMH>(p@nSmYeWE+xB7Khg)lr$Dd-icF zco65o17Y~jHEt^5vLkOyc$vuZgToCd{hxKk^UMq_I4kH_rHQ#BMbeRF@7peuT@=uvON(-L+8b9g`PVw&wq_F#dv9WgfhiX9;Z-@aL}6g8b5V!U zf;L!`-CVVaCLh!NOrr%Wswl2G%b~UL^xX6Uueo^mLxE>IDBnoS8jj)~TIo;jzje~R zu5f#;T=4>R?QHC*b6@*Ty8k;!x5U#wAsK%>>P^Ove(}1uNiMLgcNfMZ)+L??# z8-?lu6F!rzOMxAz4+?Ty>n+y~0hcQ{RfS=6uM2H&^+P#rVXM1)AnC&(PSoMsaZz6&J`ub}Y0C zMjsaCM$S-Y-eL(4AfQUtWQ|+gfeVbe$-?)!urtM1sP8N`?wwBxBw=CUM_2C$;LE-E ztxdeRwYBJ_xfuAbTi?HZ|Mvac_ixMiW*Dzm{_lUx-wpoV3wF!hBdovUzrX(M|95-? z(Fa$4eZV~W`s4im?Z55Yc&pi7d~2-c-EcyuzRlghak?YV41$nO;=FzHM_+~un}Zxn z!j^pV`*AIF5W%rI=xRumhHt*&L+7wLh(G4Lh2@)X?gjx4G~IytZuwi^{A?%4F;Ao3 z&3CI-!G-h!JvN8Qka$Snd~MhDjm?3DC4tPo`OS8~I=4*@Aq`sly=iZZsc(Hba?%9? zhkYP{g}(WG_o+9P$c;E$_`0}{Cb*@;+L2eTA`P*z6SZm)@+wYrJ8=56TWY7`g{pIG zzBURSIv(J*htc)|6awuyFRg&R*g=7@4_ zx`IhK=7xcsw$ZFcguoZv+|xD|4RHruy(Zkj252#kkekJGjwi*a=t7xuZBpDw@i1+Z zLbiHY9P^MFvsK&qBeP+@+K>PIXMs>>gZ77`$>M|=k=n?QTx#_A0u$@GRk$5RtG{;87273;$h>hobK#e%A0RV>eguj5ZfrrK- z71l$82EcFuiwMx+zZt1IM@Ju4R6_$a4BoBV+Jkewu!GGno#DT{wI}dl@SCuci}jCS z!7Qgf3lp_aIcS$-9y=pg<`;u72q{L}9Ug5F65>JxDMGW&ZRHHHb{#i0w@~H`=k=;ng9&I1}v7p~|d~-!+RW6@8Tb$+EpdvpI(_Hho(d%$9K)iu#tCavc|4)dI&icFyJ$adT$JIgR7mvpj>pDq0#m z|1h*fSSq5x(pjXAWv@HDPV#;gM&!rK>SgI}FwpZP`w4!oSk{L7!(sPX^y_)eVbCC-gsafEPDIGF zw|M(#Y^{Pier`xx;1j4x6&H1-q<+I9=$&*k`#Z{9V$#+6&#Q(LX-~j z>JM=dnw%fFHpiu1<5#9(O>s&>90K@WA7N-z*V30Y(8a(s_93eaYgEMsHsm7c*$FAZ z-zy67rBaFM(161~mqnm&UWy~idWfx}P9|0xmT@>O}59r!DyuL&zA4XV2_-p|quEqcqU@(TELJ%V0@k#Ptt@#q ze^Z{GMAr+}ioAMIt5Zav)Z%o?aRN8M$WQsrOhvo4s;l5Rl#?^D{ra_GP zTp3-IDEc6?0A10gQmHAiL(5taB~Roq_}k*pYKxI78R(n3`l?+gs~n9h`=~6{uJJ52 zqk(>D3F4(FeAbWpjJI#^j?l+G;{|Kj!25g!z`diM(b(=jIp}VR?%4J#pLnH4cvUVq zk)5v+yz`f-_H&Z4gd{`?EAS3{&NgD!tgb$-1phb|8FkHeKBXR6DG%JpB_)<6Zb-WP zg8qu@U8&307(6=QpR)H=MFGX9&njbz3+b7`#Z#RpapT9Yiv=SrMet#B(TS}2@rG2bm zeauctTL`|c3bghX(OQ)hy|Z`|#Rv5r$AiKu|8;M2HFK=&vp_qaLjVnE2P=XSlUQ%k zyP}Z)J0QAJ-hY%8BH86uf?rc`qRW!LvUZbGPB{=Y5I{L+ zqaZj_tMAa>ag*L&8%r6-1{{2;N>vx8(&l?lnYqSPpYp44Q0{#R%5UXp9uIq)LIRZ0 zN~Bstgu-#%?SjS9l`z&J)?KKsAq!NP5a3~oRYZk94l(>v8DoYe9Lr64~ zzBY1Jv$cxI(;DYJnHP8-QrI&ujAD?N3Rbr;$V_4!RxWQ!rFQ%UD@h;)#JYV}}Jp60H2>_4y$_iK4zqq&QyUi|dEzEk+ks4iakzg5*} zzE_#~{_Xp>@86#9TdAr|QVRecSi3+IOWFd7xAsc9j}I7xqL}o451Xo&2C!nM5ryXvR#W+Nu3#?6vd@y zh_Ja(9_5iKk0S5t(>71)`v@hQ*0=TNxN;atxf`Lh$i;42mkJ(O)NR5#3gg9M`V6y7_`%TO$lxTIDFM9Fx|zNh=|x^@`FbDdZGR zS}`b^>pfRLDO&AS4vuDow6;xqJ#iJ4q9SQ?ZWd8lsa5;cezY}mZvKE0Ii|49WGgC^ zGV>p%UdeI$VawLEC3V6|HbM0oO&ytE$!D&XjsLXuN7|Ali_>yqbT%6!efbeK>oV0@ z?{7gW-%KG83>iaEU~)8SrIwqpKjGOniY)U1Hx;&=IWFF5c;P?O16AF+aouEdkm1NC z-qi@Jt(cAy;1EaVfInpI1qj>#GOL2X0WO^)JTh$}k8tp6aGg4fmQ>({)%AgCB37qj z1I|%rBA2qySoOH3Q_Q4?y6&P!5MR1Jlgpm#mROFsZY58plD*91{y*g%VGVgF#IvhV zs)6ii$5GzD5*+LDSYx(LgEN9{zzyLF&I?x4Q4PUtVLSvboGrj1)=V%7!{AvoQNNg- zc2wNu1`;>{uH~sCl0fr;w9zb>*$ML}MKsEo;kr^1iIff68j^%)5Pe{;_#*yE>8OE2 z2ZX~k{hMtCo(fJZtPK1`?Lns7kf_t>VkDz*djQP^Es*&cNoJH^ed8CXX@n$LWjryn zV5vw-{8+5PqCffLtfrcBLp8)1=TFHsRNoO~jCHHP+Wa^wO&YR2c#~B8qC|G{6oB*m zE#&_j1ceQ5ZY{#qXQI}I*S-L=+f&1@Oq8t62=Of7YhCwFevF)P^Bx^M3NiT1XUq#I zM}+YCTgCE$$>c!`;k_r`mM34brYqcOl%ts|QV6NT)q5RLNF0+47;X^ntDs0IvxMc- zjz*D7<~dg7PO**b4J3O$D0_GDJCcXk*E-MHxhWGE%}>j7TLQi*M{}cam(1V5OSnfH zRp{*MVR@KKSTyBmG>N6Zo$F>v(j{1dleGbn&#leM+w$5hVW*U%aba=QDZphirf@BN zRD_8x>pk-{SpL@|lPYOM?Hw!zfYx=UocsBNu9saPFL0;mUK& z*jzA)tZvsfPpq?`eI;iPtq!}X0ZlMmo_SR+HqRNM#;u)GGKr)H2l{03`dJex_|LZ6 z=LfAO#1{cS4|V&38vmA*4yP)5S}vWc`f2-f@=4#N&p#)>LaFhC#qMpj-pFswVL#gz zRsBxOkIEn6u1D2>d|Sk71>^-{?QyE5!^dpfS(I~#RdpCb2&5l?Ps2jetafMSU4&Sj z2X{}Bs@@b5wP(t=CLp}i6P(S&s0#Bks~G1Qf_Sx}p9{MD3eJPMBTs_Mmzz6KF0Yh> zgfUdhSCR~4wg(@kEKaPN;-<`kViA$W`HB@|oATLu)I}>}Q`e-*FjT-0jTW36R8+k7 z;$?YI@r3JEA?k2#+)?wUjE-OLS_Q5aex+(mTZZsiz>5SezEiS0tIXQzP)zERrHnoL zT$ST7vdgHHQ*IQstI}(NDT`aXVFN2|BQK zMj`CAO5H8|vgxbMT?Nrs!7n{94qUyfWNZptE4$BHaol0X50T{KEDw7)D8Naw0uwcr4#*$&Lx@M zZ)EPacj8M;R#53ueeSfRzmANSbl=e8hrO~xbf7N<#8hcm^4cS{h9hz(Tz^q!g_t{Q zO0FZ+_?TBTgNXdS*Z0bLoesGaBR{IEaqfCX#V$)R$~|!m`LD1;CA7^(3SE1VwCTPZWyErRKQbs#oFZ{hX$Ny zJHm+__jgK;`_RG6>x&Q;Ou)gK@0Rm?6g+$bJ*n0f9VtScLZ~_)>y)vbO9M)60<6}Q z=2E6xAiM%Y$5&V;)NF~)!e7w+Ge?y-kgyH)H6Eg!y1E$TQ~-#7Nfbup*uJ_`R$Ix2 z8;Z-_=N8#FTrSKsV-rpdrVWamWYd9Yc-3|`WqWd1%}7tYG2*Rvp+-M*^I_Uy<0!sv zN(y+OjqrpRdth&19jE@5L6Gn|`Yuovj-T0IxtSGIWcz{fyx{lib0g(Vi)p^ky5qt6 zOh-nZlG@Bu(?846MR1Y)u=wu>k3b(67s`e4YF9f4xPd+ zq`lWEEt+u-=A5A`v!ex@7#|zNG86V9c2m1MDX(W3jg?)c%W;nTK~Q1Y&uM6oj`*Cj zaoN3c%0&Xe66Dut!UY&{Yb~fTJfQ`O2IPuINPF&yK=uQ9{z&czxq!u31H&$F$;r#06qP&AD1bbJkOYc!qsM(SsM4RAWLUZ zDNQP7$1d%Z&|G$O1vthg!7I3OcRZ1Dd(x4(!eaPLEtuvh>* z3=Q0{4A9bX6OD0SgR>O=_IYv3e)bs%U^xIL^bVK|WRBbgAwFDv9F&D#XEm`S0*nX9 z@D~iz^=khE76W)v_n!R?9>Un&TGH>C+p=FkneOOmWH1HdsPEH>Y zi8)sa?jNu>M9mQW5@9r&z#Uxj@R%h>nHvOpsN zo?Hkw%Vgx0U^ya8IT&t6fRLX4L52gVIypNs9sSR1C7U2E!K$2~*t|?Cpfbu14c>4A ziKJwgm{-b)&+@`RZ!=n-^zO<#40M-7J*3*LfmU^$>~=mv%d4-LXVJKV^KY+o#PsF))keoGWv4MrAmJNaRO zejgD1Zs4542&A1fLl2o@m^aKc6kT8magt!Bb3Jb;7)k|!l361yFX+N|r6@y|7tDlD zXw1lYh0Y*I{`f>HaoXigD~e*k>@Kp7M`9qDQ=6ea}# z4mbuB2Low1{C0WeBy*TzL1b+2Zf=h>1}?poq<{-A7~b&_cuIb7_Jc4LnngJQ0*|-5=ej;`b&h|Er5pO5FR6V-RWKJErhrq+3p^{WEJsR zG8|z~Q1Geb!r+(%p2TU4D*LHXg`V-`7Hlv&zvD16ZWpk@apT5EegushOb}l%FnK*n ztoJBOhlFZ0zOXKBOg*VPuCs#M>^Q-yr6WNmIWr|TCTYC_ImDt&AKa)yez4LcjV&dO z8q17dpQWopB$AwtHl|s|J3_7+bJeC)p(v<)l6AIwrMP4wMbG{F?H}{`VCj|a-Z&do zIbic_G0PYhZ4lbaK62J}*_tI*J}+gnb{f+wy71w%c<>wpLx5@X4r+5Nos?%ih&Tx0&@zXP1Y)=rF`9Zx0y+ zA!Hk4fsJ2QpP*Xsn)h)jbzPvUV|$&Hvspy}Zf>Sh%pGh=qFIg1VH>-A+#T!Oj+hZ! z{PW1o=1$Ax-pdsJo_Sy4f)^X}Gu7YE)|ou< zEbFTTzd9~QQA`S1-xQ84+Oh(2A^7ZMmEa-C?kjWno^COlCx?GtCuI@cVE~@cAS2^G z3wV8=D;C+znM0~M;cQF2ldr74`WD2XE{DLj+T0jeqVEWEM|>bjGT!^je3q&Gkd)l} z%zrjER|Wh>v-mcKTTVZNoW1YKCoSqnd!{)==({v~$fwLFEd@y7|J>l`ulU*6j2sQ} z<)4OzFK=hGSl!jJiZRc`F>yT573hE2Dua>gFXI2o^#(Ee8AS!8D-oam2;7(<8hX{` zm?=`iiV9pqmdWQDvWY^thBGem)-0}qUx`%htBRs!)VLS=w*auvIvjd2LKEtnKyHU9 zl{0(~T_w$yn9cQTj-gx7r-2J-XI8?rCw9tnZ$O4VsJ$R`xG=C1zCIF$?(YXVA3R(* zEb8X3CDsIextj|n(hHEBr$oT-a}5Gx9oHa@k;&tt*3b}{hvvWM2uk8y1)G9}#yD!@ zf~@mrJb!faZY=n7;XEtO+{TNNP|I$1Vc7X`#X=6tkeLse`-fxhk3hD{25uZ6Ig4;u1@oD7`aW(piPpgVFljK;l*fPx~-hYyXQ>KEwf78vr zqy&GZurEE=RL>5cW2(QKgZhgyEdyGt%@k>^V?>oI-=U19IOC|Ny@0eis{a7#F|!8Q zHP#k=+v|Ai_r@{eI}!{KkjV{j^FSP6cK%B68_q~M<8-5aZOxbC@6bi))hV2nR_`-8 z*Y2{wXXMW;_>dDp@FYyl7#v=R;LUsG>{0lTm5+(GEB`QidX+O-ITB-w^H|jAs^PsX zhc5FPXN8`*vLat~)lpVDuasYkT584MrUh>lygU1j=0R4;cM&nOLsFLST~!RJgI-wK z`P?CirL4dDe=0r zOu9mrv+XUfLi(aNe+xGMUj71>9eVAbtT|&^Lmshj zw#$r-{;K`^>(Bk`e*+!?SLMMOJsaF%tI*p}6u5Q=CPp<+4%TJT5Hr#sK(v z0PYw+8%734zZ1j@()*sw#5cd+PKc)UV}`Gbm3iwMucs7NY@GN%3uR?iw}S{u>b69p zXz=um(i+u5N$d5U+C7a+eM=rT7u&T{O{)J0KI&IHwa_b@C*^!{)w^4-_Ud(q;CXBg zNf_+3n>LXOBJT^A(vv`MO!hYm-LO;s5O2P~L%f$bAK77{*Vcv$GA96HKl+U^I3%5T zAEUS4DQW7RlE(J?ZR|`0pVWniy7v4=K7S#f)J2H85m7g$oZAs~P5PO9(l)f1`A?Zo z+9q{n`a&ua(K1PXoYoEL*192mv~EcEIyWTNr-(W~cprx!nVBrwew|MDTOdDYG!@KCrrAC$cBNhjRuu)ZJ# z>*64YC2-dES>%hW@rsSS*DiOe!lLt1N2FrmW)T;ovNogL#3H42#EVwtLE-V#LHnvy zhHuEFq_cve68zeWK9h@af5~QvGuf!yRqL*GZIP`;*_DSRE(v&2KFdt5&M2jwoU->D zS<}`Psg?G=o0sL@S+wfWr^{d_WrHqY`izV9&t&b=9tEXt?=hR%ZYiomm&sj9DqHl> zEG$p4VndJwC~t&aj>F7pdBO?~pvMUAr`1J)WC54*WzR%SMl_?nKCRmt19qF_(VxJk}3z4lS*6*AxN z=!lMS#XWj=ei@SU8S7JES}In7#CrteAVu1=JE{+oXje^r<6_mZ^uH<7^zCM>fDdbX^`uLdMOuOtOx2(x_I|Y5Q_%2&4 zU`f}$avT@0`f$5lwbe>y__5dEmc@!ou7LTAHkN@R{yn zIE6EgD=ZoB(8RVb7Yl#^Ofz|ZK`ZuIT$q(v}u^gxoi?o zs0bg|1~Ec!xaw*6RuhltVGwV}>VRoO@rU!US}`70`xD6SWSx~hH0TUc&o_arY z{1*A!K){7xJ=skp=F@R;ic8AA1^XJm1$RqcyFyDa1+rApp3WMK2eSQgf_$GsjhciE z7L3|iG>R$~-@hM}F*}n5wcGBn52svE7v|iN3LR(<%-Wl>Hj0%niqmARy26MOO#vuZ zyySh!&tpsY^%kwD3j6M7ND(ZT7LUKQ9C~rW|E5d{Xw+4F9;B!dVI4 z#o0-7nrWJm4jhd(49L zwR+shX8!Dyl;AfMsdUshrp;USJX2DdMVG=>t?fStTP02@;A8QQr7AdX1mLh7TK_0SWAZlw~`I`1ah&s<{mR#!T5Y$*Z< zF^61Us1w{xwV8s#{D#q$%FPp{v!LwfVx$Ev@wiFk( z0aD=sJ~WX^bYmNWPAB#-`ab=KwS*UDkW!ISgUEZQN?0Tv$0`ex^P0! zF{v|=mVr69$n3*0;iix($FPF1y2w&g?|wy5=VFpt>8C{WWCd2Xe(d#tyv8OnHV^fh zs8plK-c}P|8!4~P;?^qCl-~bU)|BRF)t5tZ{uH&Wxf1+^!Z*3Y0nTB*4?1i55z%b=d1+3rVxHROimdVwk~TEvXfJSf5_THSl{hl z+o@owuN?YXj+Y&dq9!`47Z@%Ua40g-R~C`BpPGs8!(=vPCR5;cE_PC`QLt)nZaV^i z%?0;>we8fkA;+nW+jJmwT8SY!;ce^=`q%Glkf&-W%aVa5kywf&WRw^mk@Y2%bw zd~>$k$QFFt;AfB~qruM~$S19;L#@2Ilo>QtN3PZou|YdKwuSGQv0to(_}r$(*w|s% zF~@|>BDHQ5ppQS}tsgNyYr8oD6(#kGtfxSr92i$?Cp8!#7~s6&;!apVNaW_ZjBIo_ zmwp~v5%L)5;T_PctP64k)KO=CY;MscWmi5rvd$g{Dn;KlD5WOZL?tX_HjJs78RylKx&)#(huzF=O7ItM?P?A2%22t@u7>_P_>N4M#EU$&=|CGr z7oLcsvvU1ni+*9Y2zYJJ)&C(*F}s3V@N%$m9=!{}K-P0CHS$<7#!FBgL!GtY_sbGd z2|f6ny!qQIFTpLw{4+CVn2R6t8*$8e4T}!E%Si+YciANg&Ou>O;5OA<;d$05yJjC3 ze}5b?WMDD+U&)%i6(^OaGCJ^^K!l~l)ENgjcFlkXf1))zU;KT}OzO*GQeSXVH-Cte z%C4Cb{N-VpNoSAVjB{A*p`>v+*_UGNSN6H7P-Ck5RH{zz<#Y;px}gK_vPLLl{ct~1 zFW5XkPt9fmGn$MQ?nckD$^LU08rQd1;6wE(nU>-r=kD)Jui0%^g4ZPJ$Xpkh8jn42 z(CMnB!DRe^d-S@h2=uGy6*%yuSGe!}zP=KB&F-rb{G-ALl+`J)N|FUGePVD44vz2h zpqn?R68w$g{8cl1dG6g_o1(+btFmyiR91`4l$Ed@3KjySM`?2Ru9UDnEKko96>>*e zawZul9*&;J%Ll)iOAh^gRDL?KPf%AMq5uAGCI6w=@8xCQ2WNGZW?>dnln}hbm%KJ?aFSxQ8`=a@8 z!<3K`1rd&Y@5i4O&3~fJg}m?=d#Mpi@bI}~JbVO;+RCYHz^zY4X z?O=egV{;*#_hH9Lr`SB_L$<)|`4~|6OQlO*A9>}%|Q*+l#_iU0cs zKdBXxPR+))+Rtn9`I&rD>mjvTQU@?P1`40XxPBs^^f_%$*NC>EV|b_dq{Rm4yeNFS zCg)@m=~h~6sa=N!Dx;-!h%kMe?Z+KsMQxuhQ10$fbZSf8+cNG&oLOgWyW|mPm_Fb| zCXO*$@OJRXSY1eR-^DMX4;}nvMi5yhqpb0FN4#N}bqC@6&D0KbKxtgZF7ti72t{5@ z-C;D-RoP?D@?@6J_x87KrS;d0$?S^xz;%b+0iM|`CG;O{OJrqtT4unUB9b5=@N)8i z#$`a}A?^cg6v_0&LcYjG9z;$B0FT~d2o&xw?-sC^^RY*u^gx*JW+~0uns2xdW?PW0 zHqS6<96;b$fCuqoIVwB9_46qOmMr!um6B<(!4{HNX{4RaRHvTQCmf2b=o_Ft1$KuY zeB)zbi$WmxGo0xB>@v!#v9ew$MEtoaU7nQfsPTv`z1QnjKzZf;m_f-QrOan>t`wNR zPm`e+wZ)!hDnee0N#>`VM@XhX4A+2Fud7pRlQgn)HQ=mAjWY_s8ebG*i;rK0-is4Q=Vi%PFatI6l?R% z%Fwi9zn6;($Ld?I_?19|6XkKnN+|U%VQJs~FBPVZ!t9q)G-$PJQufk1RQ6w;f~A5> zQ2G{i%?7Lmuc+q}U-q>#RR(D|!%S^)9wm66P3C%#H^FNwg_OuiGMK20(w*~olLkXh z8pD=M?L!rHD-Gvje+k2hoWq}MDL0Pfv1jo{yEck^u)XK1O^`1qhR#k^3I6^?*~ZMu zqFkTK1PhwNFD(1QJ`5OQmqmt7wE(qYc#W zO;4r0&wQV+#6I(fUI*SO!X%?PD+3EEh@{Ub>CpT@>@zzhCHM^&PTj;>!w$Qoj5S@C z`^-*B3I4(57i!|vk{xzQ>9Vq(O=r0jj~Ey94*1w_m$Z&*uf#s{w~7wDa|r}|?6*rw zmur_FEYoLpN=op~EvhDWU3N-fW>5MA4D+&?+-G)5O7PxUw8=ZEt9J=(%&C~w7%|jO z=|Jo=J0&G}C&krf34rS@C8z_RbjT1?MTr7}1T5QuJahi`(2eGCx&DFL^jHe+Eu+Qk z!(u6}vRR~I&MWYGTtM@zNskqqSS>$U7a0+>X*=cAh%s8q8=`f~mg}2jPntF%nyX0D zJeRt_b(Pyk*-zVZ`-~Lw>r$s$y)9RmJ)}M;JovjC|-gnF|TS?F){!x7rlnmbe z^YD+~5J6kkF8vqYq|%h8oVtJ6^IUzN1132+ae56Up3s4u&l|&_B12Q*nv|fwD&wVkE+P|vQ`+*s91b-zZ~v2 zm7Q~nfoLjK2K6>#35UiXjb+dZK4f9qK2??`X+bakE^CV?auQZ{L1BXw^Qf9?#v@Lp z|(Ocfb1nmUCOg_fxt8IAf5C+NNj=_@a&1N#Uzz{ zjQ^2uQ~n^b-ojE(y-o+D-G$KDGH=GMQ;M$UJ#@LQS*Hxik33AftZrV_VnYGNy#9Ze zc~}OU$^q9vmZZL2iF0L5fxcJJXv1ZJ86bup_=kaTC4e`xqBeG+h+MA;oWPa)*gkX0~Jh&_FNwimIO-$S_8jy`q4B&&kY+F)}Qw8`Zc z0>FV`?$3s$+Tcc3V>NS8aQ@vW=R1ypbVkfD+ih&(=1;JGCqd~^bo&(;B@A4>T`84C zl@8k&{2-|zr2t8*-W{-c0W{v-v3;so)$(f$iY5J5yat{7aJYy+2XEAa-K30-iID5djg&NU$Ldp&E%`7?) zCyZN(EZ6v=>A-yK`>rs}3y$I4_5$KIA*ag7kIl0|c^OMSuz3BHv~H#0+;t1y-7itf zn%k(P&rjwMMV{Orm*>Db>6wxD?fpj1e56@H_O9SE60pFzhWTTbzlR!?C&kK}@^s7T zAnC9<+m4fKi;t>xy4enm*nH)r%Kf|zu{$ZR>a zz__ixMOWd}BFbU`BH7|%2xYI@6$}emMa8RVnmH;&P~n0VK&)_aZiR~@gISwgkxwUA z7}V9XY;0DFd~%fRnK0DD@myywAY{9Rkx6AHrK%~hsmaMRl*UuyJ=iwB_bdmZ0=}{f zz-vpAkbFr2bVGF<^vm%xKo=vT)dnt-%jcX?xJH{%9r>&T?}EIQx2`-TW$Fc23BA_C zO$pw42}-P)dP>S5q&qo1e|Abr@MntbIqE5aK#=qa1jTbia-Z2LDZy`!%Twa3wITmu zcqWm?f zW`-hn<>G4LS2DQ7%QV!+47@+Q(cnD`_r#rXu;?Aj%4o{lD%Vgt@YH_;Zi5yeIPpK4Z*Su+CzedO z-%k+rNjdZngAl+qIU!$goabahw)gYo^A^h@%wi=HsUINnQMAqgt(!pe{nL5^w9W!m zV9`wfxmpDD^Aq``&ogrf;OA;7(0*wfT9bj+SjZ{k=-B9ZX!~3nx;}KwIb|QMHvfUN zPpd%qstD&}Lq9*;st9Lq#Ht96il$_ROEzzq+DIQB`5}PjOVqhfQ`c-r|85{=Qi8Kt znF|{Gl3vOa?}IY8!Lrb7vS%ELc_%xFD0}e5p2*LdmuIPyJ?$kE%+qz1K+E9IWJ3GJZa3h};SJqle4pFxK5mjPQC+NKiUY5LN2r_Y2HnHL}ie&PjV4=Ob zeXrzwQu5Y_5*tOE$D(G`P-hr$34o^ALL;UFc1aAh&Ohf-%c8X#p%Xo4S;NHy?W6^> zcwRo|1_J2lU2tR>I92N*!9|#P<~JV#mC+TliiD)Jd7clSq~U5Otj`jesad;pP#jfc z-`==$DD^GP-x=(yW>nFOS?o8! zJRiC`;4hJ=DiOhISDXkx;2KVyW5e5ErFh*JNia)7Si(SV3Yoi%uK(5Ir5bk^-J0eaV}_MBf%N_fbwHfy6Zt8KQ;P%per@-(T#dQ_Z?(lv{|!1ZYQ_=jCMG(8I1 zgQBb(FRDySfD7x;d)X4?P(U6^K9uBt~REDWCYF zx=DMXM*6R{X(uupca-a_Kb;wkccv@1F*JD|R*He_kPNev`MjO#Tm#pdE zHCoA__gq7ZboegWcwW23E@bI$GmtnbP|XiV%C8MMY|6YmEk=A~bXrJDVh~z-b|%L- zjr=#&B^bY+e^^tyD;%-QxSBsf>~iXrV(jZ|OZH(V43u5OOz3C1>MDpX9hoo}eV3NkIH_9)k!icfo_z^-LD`fB{t{AlEfw(+`5Yy**%n`eo>&72p#n$WJw4%I2T zWR5~K+Je}}s;9F%o}fsFGvRSJ#Bm!)6d8;T?j zMJyJmVA6XO0N~u6r2cuj5Lvu?jA2Dlfve!YLC{`Hi$E}2{vTakIwGoZU<&g9aG}ra6NxEF^epK``PE|+>+Nqq;=5g6M zwZnQUGoxH8>ZS!^1;@j_FgWs=a=kOo2b2m6J;v-(=SZ%OrOGHdc9tH@qGux`$ASBL z1%j2h%Vag8lm_d+msf-LlUEQ~-W);5jJhgu67h9Q{(rVM2_h9SkQ5k%p;kX$;paeE?d6@XWbmvjxQ&r zRPklPSo0pBH7?h)(9(jhl8Z|l1Iym)b*KBM@U>NkYJIb^&ohOpumc7tH6j~|-dR)9QZ#{=3Wm3+gRe<{rDJOE>q(+LSBk3Aa!5X)ki3@4(X8~s;>(@7{1ar5=F;5ld{p2Q|vK@y?7NHS``d4Cj+ zJC2$<^7QE6q0duVlGVxbfj}o?CLU4-kq*ma&YR%-_U?|q?uzr3$(|%xIF4O=8`n3?O!4N7uRg*>VaC7h}K}K z?Ee7IKrp{*zihB9sfZFU%bqT9N;~J~QCG`zm8MTQnzfgrQXwl=D76F|d(Q&CHZ8u^ z4y<6kO2(H+&);J-_pih=mz}KgNNK8Ek%xuJ#)he-P@OBFI)DWw(M7(pl*PXsTa@WD zyXs2t_lhzFtV^ucVh(_@k%8+8h|w><=yphF0WSAFx#owQ1yP@;ZwCoQKV)J-_scAR4( z#1J0eH-FektM9-A@+vN*XPvRRP(+?9NGMOWvN>>N*c=`Zy#^xrb}jU$MfJ*c2Wu*U zZXXci8bTkZ^$6er*)re!X18`%D+dFz2~pG82gJnXo3HLVO+})iBDn9HUoi!qglbb8 zquS$9iDH#FQ#tmh9ZV&isYKw)b*~(IQiT;B5Nhl%!uuV(3Dfc~aUq&PjQ=Zx_%z=S z;ydAydqOAK)?bYae%!yY)xuiCvMZy}7S~W0U8SGDxQYr32n%@oMq;`Xs;VBgJVBZj z!sDk-}lbuQ$g5}ouEXio`?Jv~qycs3zs8qA_o?(jwPUMae zGIGtMdROUvYqt;^H_@&5(70RiQ)BKu`0u0t&)#$U=AIjyO}`OpWxg`Z>Zb~qwx5R! z_F>2vn-|YN4Dm>~ie66*|JE9-N=8V$jpN(1&SCJ&Vi;eT;his@pX2cEU(3VGPG1M# zo#UjkAs`S|FT88uQ9~bDx<-Va=+U@sC7r(O#c-~N^z?nQ#K#^eJ8K-*iyz-FUU)yG z2k@h%t@e*=BLn%)H^%WH`H?FMH+MzhK9JICNr5z4;LMy8`20jZX`7$`8TowQ_)mJ^ zXe)d8+HMzH`qrMlk*aD}YJ$T2Y498HL(?#MI*784$8+`3r7B>+aFIZZz!2y_UA?GE z7=wpticUYsw8o~v_$=Z>hRKp}_s2KZm#5KDW(9%Zc)5nK%^&%9{-3vsDG5{Hy$$#vje7#pC6YQ}lSdeP@C z(FQure4poU*8oPM-D>EW+cJfq9j`PY+ zSP5PeTlW-XNEwmiW?!3YNeSLLM}WrrNy!i}%*l`-gvTTJkvOF6jFsRauh|PxOi|Mz zkbzRSrbXkQ2@V%zqwJ)V@Lf(435nH&NSo9`J~%xwa|D=KSt?ak7_k9 zi8W0yM%?VA_AbF3yy^*QLP4!w#SGpze;B(6JEC>98*Vko4Qf+bD<)%nlLrIL3AvI7 zS*y+!V>lFyo)`X-Om0VFqV&yIb{&V~oA2gD=*0{3v3@v<9luJsHQr6o|Dg0l+)i6`^?#)#l);ksgILP1SmDCq3UI%+L7rn7 zgz3${xQsl5yq;{vmFGfo669mz=uKvzW3lRHtX5J~-7IR)3KJ=ivvQKIEH32Leq9>| znIp8yFJJ(?E&tE*-d9pd#ZEdU?_17C0k8Y`D$*M{27$xECBzX-v(?-X0iwFqSKB$9 zD`ZIF7JF@{jKF-{8F#P5OHvq+79*TWLrU1MA7r-IsFsTh^;k}?!qW5^qzf2}(KZH; zV~7!PJ7?SwDJ>09)#rO)^YjlGlR!4hMj=49!_S4`v6G|K9oT3ez?t|$jq=#_zfdLf zOwTJhuC9DLs6v!F4phKg`Nd4q1&*oG6UsbCRQF=A?#!zvs;impbLuUY`N7J|!SJno z!_4`cc~AP{Zg5Ql4qI-j9%&|xY=Og;JFkGLS$gepTYKM>y}NkC%-%kwAna*q1ur#^ zVq*z=q~Sv{>xy)-GcDm?R7lXz|6(~?ZI-s=(sko)uRuCbj(HkCACy@h{l0X;qDqEJ z$Y|e@p@Ix7ud7{Fl`gkuU0q^p;kOMdJcgC&t~NS4B-eo#qsPJdLCNQ`qG(Z8jaOVR z%qk09Z2VrHXo+EoCR|noL4oqlp$bPAaz^51Ma4&{eeG-aLXOj&0m?@EoP zseNz3nv^V3KatO0$R~9@O@IB>*{nWVo7IsGMdEB$J`@Qi%i5g4py@b*&FzwAFfEv_ zkYKh99dogHMe7rHbfbF78=#CfBT(sr07V>t`%y_L$%;5KRa9nDTi+A<&axFs;16Bn zoU|!Op9_8^*QL#w^(^4Ua&R3GOX;P0C0Bkk@09|D6k>#OG_I766xNhq3)9oG{SnvY zBvjem*Sb3@(r{MJxX$vT^oDYI*K4zpX`QY1`W%A%GO&OIMqNs@bpMRV31NWJa9mEr zB@TyOvbuHD3>;8NnPyK*@W5+JibcG9nTugE{2WFj-l-Y)Z#~IT$+a%YfM8bMd~25$ zy}^bF!!4zUnU9im1_FP6IZ9ppgp4nDjEi3`-$0w5fXSMYb0AzS*IZ0b5T(nwY+?_= z8}5n4P2a_R9AvpRbdtfxAlU13@E?i>mZ3i~{QRE5?METx^7V3jfj%{o#zFRzh zhk=M^P86>71y;g;bb*Lpnk58UD1$#A59LntEVvH-;G^w_9|4`U}wRZCfu09)%_UliG>+3~8mDCMbskO$J2Xq+ih zXs`?0$d~ijBYNU>mhfp>@OYS%Z4t`RxHv}1%BfypWu_XJyEoHk zc7e6v71b8m13QylyLh91m5o`M`TRjql^{Nf@npzxlo6$}P_!hoKiR7GP%_;eiQ~@m zr#kQ}du5GI<+Aiu-rULM8Qk0%Px}+{OHau)Aql^MyOROGzqJn zxa5n{#)DD?Ba3#YR}#wROe9Gj!D zCJ7mavtfk{Lm%+?Q^z@Pv)cxX<}?chcn(90z%Uls0V9}aV6d4*)*u84C~bH)TGpJp zrg@L5aW2GwA0h&Z?3803v{&v;?zvyavB_7Bjw=?jrH3WU1 z8onqSu@(y{t}MG>+RA+$Zq342az^?izg2@^L4L>QLkD%HHbiXbS2Hd;Lo0 z-1+M&UtL*W1j{KVl(mOKs5)fep)vPQS*Us5B(u+B)df1@(NsuPyOA2Fq*S$MOcs1W z0=s17J3;8#+|IBw=G(O2K-A60t)LkjXix?n#6=M1gIF4Sh~=)$q0M3fx#g!sq?%A+ z>vK(7lD1d>New-p`OhZ!ua!pq=XEHZ{bHrFQ*+{0<$R)4So^cZ#7q+V$eZ#ilaoHO zAsI;^D?EYospUR%0ot*M5(yA2)5Is;Eb>U?@by3ddwA!qeF8@&PlQszQT>!f+hXmwN$gFQt{WX6XcD*a3P^r7a{|d=V6p9O6 z$;+DK!E<7D zPj2$G=s;0iE5~VNgFXWl4R@$xdK&#K1uB$IeX@3u3G(qzaqY5OqXn<9aF(`)bxzIG zc{Ra|eJ$!XwUaM_vcT};+inIQC3sh8SISyh+LQpNeG5xJop&Xx;k1^CWQYLI)3YOS zh}jiTf?w&l0=r6zQE`BulDPEUg|)ZOu?t7qkV?NAuM4$sl;_~g@^8mt|17TykmJMO z=S+g?7M4!E6mJSk0aKi!C0*Rw)u0=H`iwgqoM}IRk+snFQ4Fr1 z0GW$@klPXe?jMj!Q!rRm=ABV3VyyRL0-Ot~!LJ?sp^D2kkCvfyjH!6!W(HSAlg zP{@&>NP!7ljcuSGWFXJvW6z0_fV+;i+ONf++d-gjyxcFFl^HXX*PXHc9ufy$=e-G; zHoQ;9VVPG65=7xuO%?q;Owt=2xuvD}xsNWK(lfrz+AfCv0Y=vJpxkN~ytYc4&e80_ zg|5)l>+fajh9wloTNu^0CPcM~Hda=TZKh+|m~G;iIW|K#$594uM_RQ6u<0?1OA{%I zv<1D3G|s&L6}_9~DJjF;SAQ>0m7FC5qPtG6F0}tuwFX`37k%kUd^|P$N=>&i6Vpn^ zTxrUbNh_I|WDrhHfI&MO5(uZ)XzARjAy=Q*>=ht5ObqX1#)X1vf)r;u5<^hS|GZ7fthPe^ogGe zc-=^)*;xLQRpaAW*$Yshu|9@V5fe$qlT2P^Bp`at{J5m3$YqD^hIjY6 zJUqr)K%JL*^uBq}ElyI&eP6vShmW$=2SA4C%l)s&e$3{*VmY9KIt1>by!0hC$WBlh z&bWHo&DB{6-oWG)?z6X0T#FPpc|D2{#Y_6Z|-){PjxWR_RwfOml65-zLiWBK!g){l5i-# z`OR*kbCc}A>uI(CNuzh42A~Kg?3+;<{Vy1qSGFAyO=K4`YaGjNs=E|Y5j-%t1%%j{ z$8Bf1NJx2NVqP>~-F4R*HWzX_+*MCC$+{p^8NLy-Inun0ttUVO^YTy5nz$_TMFVun zKUr&nF}7OfCQ{U{Y+EZis81(o65DG(PPVMd6EZLa>QWlxLsYHm7$N#eRl7b#yj8mX zOe22o<%pk=EEuwv1*=?4t@aw%D?!`jlPbLG6k5YF+>$qo03|{j~XePr6xQl;AHEy1Z`@En~?NsijQ$eqB8Lm01=*H@7TnlWr^{$UUZfJW^ta?{jhvNK^If_nLAKR3B5b}r@Z>PQidc! z%1M}5TAk5ZIm%Tzp!S=^k>0y=TAp`iFqwpHJqB~7FcW{9m%G*$b5folA<6VqQiWBI z5xBr{sg}(1EOA~yZd4&|XD8*E1S6?)QrC@Q1frCXqe!hCZb=&EGWw$)LRRPejRY>0 zG`@+ZQiz^eVe-QY8sEolr#Mn6Ht%i%}YdB*ZwKF+odm^F${r zsGrxFprTxbowl5XuKwl2h$No{mE;7Km^KmZ33{@ANqk3XFhN@NGX12=)AtR2=Bj5> ze_86kO55K?eyX#)pK30JEs`Qb2jeT0eaJdy76KPC#J8a8;C?O!&=%hB@-r89!P;cy zizCY3d-Ye2wc)ClMEW8SEgUSDayM2pN17*8KV>VTL~5e7U5J3ol*hfl%=ey*1UuZs8`iV_&gS~!vY87U9ex3y~$a1B$5O3b2Jk@ zNnrh{Sv_#}Q03>^=wjqf#5Ksu=#^PvC3Pvg#CU?u*~EA+^~%HzN$BOwJHIX^wUCZL z7djxCdG6;-_7ZN+fyb@flrQH z=cH7F75eO}W!o565lJL&nG=Irs$wQF$$?6DJeN!?T@d6G6HBF89*HGc$@2kWX1d%- zPe5835BGgGA&feBm(^5o4gV!vaX*{+EXqe{w%z=Ue<}`vw%FO1LAS61CH#5UQ-FAH zP;=r7s>O@MvZGO++T|XDzH7em$FnT?6X!O3V(>88rzD%v1y%StPxrbL&<^B5jmjFT zn&(y;EUS-WAFAw}l+Fuhav}HZl$7At6!qxTb~7a_ z^6>ImI2|dbSI@G{wwSU+8F`Gu`@rIbCzVb@#(ib5;@a=s;)s>tFJ6`-f_n0S1){>T zBprSZBm+*gR5MoEt<8^$gIa-GowAN9!*4FG2i*dsw9!KfTB=8=F6w|MKDSB&y!rdH z(09rAEw3reP7W|nijaBimchjyPfTHTw)Bvi|E_P<*}LQdE0x&@V-u#76X$VMJD9{; zD@3ha?9?`|%mN9{5@f2D9U&Heoa%0Bn9f;9ThsAQ?aCz4LPDU^#!ea&BZSbLRg8Us ze2>Js+aw`0bk!G)*J7jZ+O{?NiUBJ#^Zg^SxPEa~))Ql79UF?XE~JAy{O(2hHN7aM zx_zvG$@N)I^4rYabRYqK?R+HIV0EqLhrowKjIWhTI%YwaV~Iz8MWS2S@T2HC)WgRI zFt#DbzV?oa{bpVPI`;IN8Mk$$u-|b)og%*$e_QV26*qwW!$x5g;G&PqIG*pKfy8Sj zT<@*_AmM!n-lK&$q>LpZc%AwDl=-C2E!64dLr6e>)z$JENuf2IkAf@UHQ}6FI0uDC z>4hAddO{RptQHPX1qMf`lOP{O3)#~NNsu0VJSLDo^mh<6P{q(odG#_|HDO$N*?3g;VXQG=6{oRgL*t0j&#kNQ zb6z8x(UZh8D46XFmXPR0g$r}R+A#okz2BuvfNFP<@`h?_Bm0xojz0RLNmZ5k;?bQ@N84``~-`+12 zy>~dY+EPs~zlFI=ks|rtD_mVPYWCRS6&W4{EmsDnY$`%yO8FPiDBE{5mx@TF4x6v+ zeO2E4ER9iuzftIs3%I3Lz2}n0vXZ(gQN9ayhWXCZMujEz8X=d~6=U9!n^#7KRW`2-##1l*xV5O@2BwLY%97bA_yI02)-PnUYUIbN4Ixq@iNxP6szLD!2n%)22}+*UCr6u(fT>&r@G25#L5_ zn_=fpye*f8)Qmy0{*MY4Etn5$tL^QeWZ!S0-oL%MT5aRXJ@0B(e7X;vfjWdwR=b{X&k z_j$s(?r7AkwhY2+>!PUVUU3fs#=)=)~JA+6f=p^0<~mT>SLbH+>k|i=A+j zdFFF-NGf*}SkJX#%I(1eg26Zr#ydxFDv{YYn!RA`?ahQ)bM{w~IdulUWzGQmGk!fv zShkRzgNT1xpUT%Tg;@UqaYI?ja&RK^MseC*iWehrUTOD~ewv>UMjnO4nk*wtWE)0xQltbtg|eXn*b!bltjf~(aK zbFc63$iLMAuVp=nwK4SnMt;jEl%EH_7zI*51YX^VEj=@xM+Zf5g-f^g^e0JpMVrf`LU@@9B!>6!feK+Clmnny+Iji+BxSSHc$PfNvnRF;8m)rLu7R?4D#EkU% zAg*EX7_-0gAtcf=Jnu)RYXnZ$vcuFn@V3EEn%3%LgP%W<&ujc_T*X-U?<4sS3b!Vo zjpd=ue}NC;#412JA4JDFr)+Jcu8IP!;~Mvnkx5yGwBX>SN-89fFgL0dg?wDHVpGq? zm}6&Oh_tMN-OF>C`z5|g#on^M19^Uwy;KK5YJC@AKGArN7DNo0?~XW4@U5;6Jy&Kn zT~idKV%4oI56}Hv%z@Hl^q|mnrd|Ew=nC+y?Tg^!J6_|9*kd#ghuvZWlxa)vsd&BE?`vkie_1sCh2)Vv6#LBUdv)ON9bed(7*D;% z6s1)5-f2`NqaP2%-m{Zaf``(XuMJ(REUn7f>jEd($R#pwfAi!TBVW{H{ZX2%?)PN) zU8kq(egwLTXLNpA_BUWQ(IPc>miLA}N`vnd@p#!jEz6Iut`5RS<5mEbWa}jBwBXWn z#}p2PyTUeag7SNJ<238E5XOA5n-&g)8_haC8AS5Uug0z}3pR&R;nu&%jMO*3e390g z1k@y_%{MAayh@(ja${x1fmi@5_6k1v7K(Yq~9Ni9%F(Hz!KL)Hoaeo z9^*6CMFiLr|5bF{qN)q3B>4qDLj?%^jDGoupV2Q-_Hh6CGx?<1$?0>t20v#$=`22G zJ}Dg9o~U{PH#VAe{X>JFG%%H_k|>;?2^<@e`i?4^oKon^w$bUdzb)|P@s;Qn7buA& z@8E!0>0)rb=uZg(UIQFMw1Gpo5G$sLq^?hF+YOpaCvyz*#{))YqRSIp^3u4|4@S-W3?by-nvyPYSO7?CV1XN~= zU|AK+fTZY>n=3AzxJb=a=P0###5B3!dutU^ZXC`+DrM}IX;Rm%1g)Om z$|G=avyc0-^gVgO_rnF64*lRZ0nen`)=xuhVC_BH9Fzs03Y^xF1=Cc+OKK&A``4vA z2`)zvp-3jE{LSRj<4H?X*npyJJyH7i#`Cqi_Gh&hE7AW1b_^0wXV~PfUb40D+lCb` z#DseeJqzpuZy$UX@S+JVj~J<@qsZl}#deNql_ZWVzJX^zvJ#-ZcPsJuXL%)JU!nM- zAp^sa^cd6nLD@w|c2hecgdsbc^94aaXM8H)y74O{`y-k6;;Xjv3Mt354r2n#Qy0R< zG6IX*f`!N=%DuchYVGhj?kH_=uk2$?^k+ezpfK`l|5EHTJ0&Ifb=X>| zuw92r-oQ*Iy@Pts^PUG{@7c*|!7D-)|E2q-ER|bub8l2moQ1S@*(oW(-|dxmDM$;= zh=}{trMmYX-W@*69{#VJu%wnCuI7qN1HF|JN8OydmEbq!P#W_dDPx$KFsb1sFkrgS zq_g90(Kkx)t8#FUc~4=0?JQ&NJz-!Iz{)l*UyWt_`>W~ZbCe+j!JrMgg0sWPi_rqAq@l;E%6ECD|D zo02ku&V>hN`piyA3I0ZrLVu<(dgRa7KouOfDvu+7zI5R4UzF|R1PL-%HDP%26DDT% z&=_Zlp}(qMizCWTSPA|?K_ki9(OJ^!goV9T($3eaIB=h*W@BSB@!iO z=&8tE`S1Q_E|cH=-_M#ho(ri=AAKute*gCG`&Pj zTu9NnGIZpVaG^~$#`9sqn?JrtVuKqo0``U} zRv-iu-*4B$PlA;{Vta5il$saeCj|?H63~x3wbO+=B#}(a_o%|b-A>?VPPs#Z7QXq~ zZY}gA7qC#i`fR5bdS&xUtWSc_g)s4(ac%R;m8l$i65=idp^wA2l0uZn{U3ko7P_!YLQ%QJ7Cyc2>!pUSedp;@E9p{nzt`n^|L0P%Vh&&LDD;j z$>qEO>gu1YhHs7AjDY5={btZ#JGy%% zGDR-$qCLq?VHKtzRnjPUa;y>3ndps_Qu_& z!hS$s$t6adBmRSy-}*XJI`Gc(Pcr{^NX1#!Esw5x*6%bczg@ciO4l0j!+w2sGxyZE zt&u3*Bvkro)5yiL&gKAa5|i@l7)2PH`0EqNjP->)za_%XJItgd*7KpllFf7V3&}}! z+rTaLnO5~#8|tqqv&}K4Sfm?-c|M?8k0HG*YO&<3;9`t~a~j1n)p{@&Zn#MrILenl zWE$=VY4|f<>2u8cFxl921UG3tY6o)DfR^@Jg{#gAcU^A|WM4F%Qi`(A$WL zV4kXisFhaoMrdZj5%&#TzZbE0%D&qL{9$WP0RFI>k-5b+_Z6*@tBO4EywRI7g(l;~ z9$~lQA?1%8E_EqvQ6cZfxh9TsD1-|e;mLeEx51qB4F?Ml+od_NCSXx5=WH%|K>IIzQi z&=O$6>#(4(R1UOVG0Vf-g%7tOTuY+XU=Pje!>CLIu~x7_fBbXm3m@6sxp$F%$Y=8S<@!t==32=hY(U-+0{zw zrVI-bXY)t-bl0#ZJQK!-H&Q(WQT*UTmbU|{lCp8w1hogxYm0!^F2ps$F*@Yi|aDlf^3c#1cdtZ4L=7Hkz&2j zrAZNgFtJtzq8FM)iXYKFPLr3@c5iK=S^70?lfP=F4YxHvl{YP zTWTJnx;{^R^D1L54FGAF?=d1v?5z_09H^OC+Cd7oYDivO>G`yzJ0ogYw*ROeacu30 z1%38m-IDQI2KmM8dc?_jUzbhGvF#y3seIyz>>whQgtKo;MiUlqSiD}+7$cd>1vN_x zl}cAJ*T7;Fs(n%(LS`o83IeZkBDDJMW>s@!adk(Mz0LR+moK4|LflFd8p*);PfV{)~+$nXUGAQ-&xN7vWaz)vvt64eWO4eq# zgD5^i;7GNNDPb%C@2WM@_AO_)Sk@W&uLNI7O!M4Qk0H8zAQHWgS=XE;dPcaBJjUg@ zI#o>%QH^<2KG|I+(_ypD^)kq6 zzMazbTOHPpS>3#Kf=y~0QcYPDbaTb&yzI$BfU(YN#pt~Dp)6vvz;LIfqOMCbbhCXw z!2fLPDZ1l+PRa~=ZJ5hAPJkpoJYg?hwiumJo5krd zRSu$rp%s){>@_q9e2ZM>o|w-@%lFjl=@LbO_uSd8inWjjNObsN0v)@HUbxxo*yot9 zxWO%Rt5bC_EA~IeYG3|)*|1o|NE~F;)Wdru~H70N6*RnQ%~4Zu-Dl($)s!=%)G2R zr82^1n(1)YFlOg2f5Ew-&B)4*NUmzUk38-24cCTgB)1SJ{nIQy9BaQqFMp%#BGyj}R2Fi+gigzfGCd?MSz3c$(TQU|=G==FFs zt8h)?hEVvKh;P~vMu@qRsgI3liMJ9yqmqV)v|Uysuo@*c+B$S0&1f2ATQqRS{_a;e zg0SNwG6O%lf-;Adv03@H3G23Y3>na7#+LK0EDe0EuZcET`FY@rDPCC>ZTwJysStRT z3<(OXdZkLoOs`7t8*o6RGA8WgShdvx_GhL~2nO=2+_89x61+?AEF~spH&O6QlzH=y zivfIO1_n`TZea5xabS7m)q!`~9VwMIJMW_6S>=Lc{BTvWcl34Ut>RL@A4st{!)Df>DCM z+^^Co5;$4orT((bg@vVhUGsh1sP_W(o@F9L;L@gs#I; zun{Z!9odNG6SFdxF`7St+j7CnVET39$-jT==7SOY90+mttD_`IVm8jc^?Dxt_+fFL zKG3=uLel>Au@kI`2BpbXZnzse{Kw`(p8Snnr;fqqLel=naqZZXEc`j6y#dh6T`-dP{^JwxChr3weJp&hTC_#w+;h{(fz?tG3KeewBp*2ody*rWy}0ojf2UbgS_7@cGiwmOLc zn@Ol@_^!61l#SGEq4|(~N^W*b-YMpN^AS0^L|AtL-YNNf9VI8T*pVhV0Ni$rV)x@r zhLSD-f<$Dj#VzfJof(M^?(#}rju-?*SI(v-#|~B+k7pL4tlF(H%EPfD=L*RxQk4Zu zHpgYp4zlT7RO+N?Y{bW`=-*@btA}M3MJ5L%*Q?Th;B3F#YbL#Kk6y3#MbSEo2}-99 zSE5;x+{yN_$L+KnxTN%HhXOVg4z6EQGD_WPbXXpA#;ey2J7i2Jz>kA@&= z+s}0<8-B8~;ZdQGgFEIKpX3sAXdXtXuvarK*@#b5u4WpHAk3g{4hqMH28nMud9#?1 zzt|v6xf?YIjAVJ|vmP%5$<#D20EQ=w^B^iakv-P1uAY1TFyJXxBnw5{eV z5W*7Rq+W>Gb45CBLI>)6H>_M%$fP0+|D;6XX+z(2^~<0%#dMO~jRNun}0T|r0I zs1kSG?TdY8mr)7+@@3gh8t4W%TAa~B(E^3b3I2Uu9xSUpWy5273vv|*s`7BI7U}%iz7O~;b zp%XS0(i+@UmwT_QY@g_w1iSQEns{utB?l9*?=M#5tzWCnAug6&PPa9@4q~(O;~+?Y z&?dx>W$G1|yI>ZI)F&waenN?wmWL;K^G}^VObkh<_STO?`u<3Q#ceS9CnBeRCgI>8 z$&)WG1DTb|TZ^x^*luvy@<(!xCr6VSg6RG|b64Q& z#_v@jV9!1G?9@Q*BocwT3Nqi!)XGIEM)Nn{s=o8TFQTfXX^m?<2r)@#qr|~Sib=W} zr8!x1zIv@nQVe#961c8$B@xm#X{pdO0L7j!|72qTH?)5;Z(_~xCRdg;?LB?V9((^} zWe~(dwe?b)NH4p#4SHFsJ0)cpe)XkAMV;#pnNJ!fLp`ME=PmjCocRo5Xd3*aeWeh- zIIZoi)!NPsd05#Nw6e@~w&URqmAZwuYrKACU$)R@v_4E^2N- z=0o9V^B~vi%Zn61-D@qz?41LAm(K4it*IV02u8y-n8}GWGbJ+BSw4e{u~P>m^?XO? zxIlSabdHM}WG`p%7;(6B@nuj_&}Fn>sqbE_Qq!2bH8ya9Z=6Rh`*X&8+X0pGvR6j$ zs@Q}`2e|gPr~`}-uy(7JI=n}h4gb4}P*M>}Is#Ut1^9Wvt}%In(*7-V_r4kj<^BUC zj1qbE?SHjr|Eax!J7t~ID)*h<`tRKw7`3bCszNvUn9okTr%V^;(u>sQ6xD*?FKbf*{mbg}Wlc{qSQIz4 zBHmSL%)5|dd$Y4vg1>Z5nT^Sg(rwmiA8p7Vlb)}}IPrV#^0hdq?3|V0R}_gFI~?D> zf=O?l?s=G=u2(=;t^kgyq*K3B7}l0aj};b-&1GB>9ac**v{glZy{8yj**G#FfJtuXG%LWT}bWy1|{?v?}=#AtyHDJiX(G@$Y2PILktK5#D;NYRfe|jk-xp^e4n$ zhTRL-a2j`+-4!!l@09wslwW{d$NW^X-A3-hS1-DG!z$zTt~z?d)`G89MJw~F+&vF` zZS_13U0Jhi9K@(PN&ZAc9q`^3>AfYkSGEN24*!v(mbD+ftx=KO(^2xzr{1NbC;99+NoL0^&N72`}Ys{`0~@&u z3sac+XYyptFtexl;1A{<2JnLD9pi&H%mCAlm?6htCM{Qh4;}~1leg_DB7@=9uRRkV zNLN=4^V)*yPVm8B$=~T4?Rou~fL&{tX{Muz0jDh%NOOP>4w)A5O2sf^j7fJfeG>0{ zy4Ecb`$8uC$e~oa_witl12TJ|!SD2xsL(szv$(5tX*DxSpAfiXxS8QD*lrh+=w%*_ z^dEJx6YbyP?-Ts{_xA6%`1haf-_fvl+Pedv+?glAe(to~4n85XAU+KEdBvlMVaC7jxR9B9^8Q|Lx!{PVJv~XpL7i zsjD&nerUfR+V6+<+dj1ICG3(ZEqIPC<0w9Ee_tG5(_kNkMI&S{?r|gT*pw?2u}(~z2g*FL zrN7%JSMbDFyJ_a|#0T88C2K6?2CB<6H_+yn#gkvG#sr>t(^Si&E*25g4^(H?CL-Ew z$n(~eb2GpPi?>HNhM%?8iT3Y#c6Q!i)m*|8&`mX78f`O{qil;iYGk6B{c{AI>3H8N zR?r||_74O8oTkLh807kPn~YxAuIu9n*4}D<{I5UTHHKe71L1!?HW~CkOXv@9`3v=3Xux48B#lA0d2m_0sn^J)Vsf3gT` zRt{+wB?4`2u+~L@cmWvIkeiJU?QA1I%@bc>4Jh*y4*$~tbCeyxzAP}Xb(Z@T$Gb8h z4pL+G%l?p?BXpN42av=pKhI{KN9;X@{ZP^n8_eOYT+(Bsd%SVn{ z+uMH~)&VXwP)UR-z~%ps?o=z%Yq97tO9YR_K0Y znFnvyXdJs1Ge@5Wl<5RxtpD|$Wl2Z;ug1BnxzD^C{t72C`t>36u4QU3wt+b|#1MWx za@@-*&+hFQG+H3HS%7xgJ~zPZm?!PkX1VA)_oRVv{1%<}-Cc5R3Vl3`@U0&le{P<% zB;>ZCoEq}y4stv24+f6gkdFhXG-z+BTNpt&WhjFf{Yn;^`PT0e3O% z!yz=3=Mo+sxy$V?xIWAT2bRZZKu9~rd(}{g6WF;Ee<;ieKlTGyPy!>wZ2$!}zZ`ic z!(0?CwE*4$;g|q9K*qm*kdT=_o$PpGEerNSHepHa-L<&3;O@tR>@E_ZXYuJiHSABD zui$X;l97hprHXwWgP3{%*mdG8!b!xvA+$JLxApq8%nUFc-$jyOUZ44>E_CYL_iy`WhP-T((SEeob%cQ*M(#e? z++i`$uG$p*AMN$xSW5#pS}wN+7s(oYTy*tu#H_*P4&klF{zfI_6-r|@7efNneE0;# z<`4m?1Yvw3xjB~H3j*!yMpQlZg!!GJ=2ktlZluk9;y{ODrW@Ij{WkUG6}%bfa;mn27SFl4{!``o$UM{FKZUwX=o#QGEg7oM>C{tQQLBgF2-KIxf$ARnE6xZ zfBVY?2eO6VyomOqT@4EM8o|CF z5TVJw_y+-jGS(jL`JY11X7?Q?y)n$y#B^=jylol&@K!T_jxC=-GB=Qsy=|4CFO4e3 zJ~;92Oh=YZ=?CquHB6IZwm%%ro*fO)6eJjk+F?f_4c*)cHH1{H?#yxO*zfhL-nP}_1XYcLYB@iZi;iGI|}!7ov4&r zQU;te4I3I80xWMB22a{y-NanOd9aw>Pz|sG*?}UWJqUL1T36Z=Kb1fIo&U-|12&Hv z;=b{FLk&3MtNDm>f|+NA!SsTnp*lOU`gG(SbdfESNxv%sOuP+g7OY5*NK^PkfCMbIpXz_HM9%49AQ)`)zoT)g5lLSaH(ciU%Ob z{xWbo+fsD$6o}YprLk{)?Y%v<;+}Jm&h4ll%|>b>@F4s${}b=tQMh|2;qIMeckc*y zZ$I3NC(xf+zDFFtSaggF6GcTuq;FgoASd0zZg9i@Pt=Jyb0u=K$&yK0kW!FR!?Gv?`(#5jupjl?)KawCPS1tjtE)0C;I5E4lPAQfz;Yewzll^K;H3s3v*q8;Nod%+h}gf;CV4B*F$h*xZD5f z?k(G0Xkw$*=1KcAsk9Ul>dhvGH1Q$f4oNQ?tHnXRfprP8t75&H-1-Kqaulq4^9NmK zpV_xZ*^$M%Q?%0mE4pFm>TcbXI zuYf$~&*udd8r4eH58I1rbBg9OdfJlP<%k5~rXu{=u9>pO*O#D0M+zS1dpL4Z>Zwz= zdzgNoA9?mGf0=#pjN^O|{-M6vjGRGSh)#%OQ7E$6u{EHNx(D&o?ykom+rlE#eDqbB zS;uqLUY8_iKzLK$H#L_TIIrwD`}Rl28MWGsU&7S!`zKz568dKu64qEJxJaWicBTVjnZtNt z>XHaQc%&sd(trpdKFpBPQ+uW{`+g#LJu$*P`sqyI*X-c@YiHX;=i|-d>en|$WLRb+ z&>pw%prB%VkIK_4hUB~iGU9gA`?J}V*MRQ1-|qxJ}w(PH9>r~2p-;BJQX0WoBugzuQBP53$L8;!D*96~7Jen7?B z0ZhGd*Rh9=aWJo=vw+!5bXGvOfY7))vJi14&3K&c@dVg2>%GZ)T(=8m*dJhwaUDI; zgxh8o0--L_p7OYX99b>~4^*qQM_UFx+^F7I9}wz;zFyJf0IyJyN{xwIf%mV&!v(^f z*qgjDii-E%oMTGTwYTQ59K+!uUU>JhY9Y@+8Lyz$&Esgx`C>Zk$}USR@0b}I zq>CTAxmg=8Yeu&toKuztZXWc*ycnXk2i5}@-L37-5Unue6eBl?8-rfX8`LoGc))RN z^Zz_tjATd?P8fUzKkUd)!)%gka}QRh0Ewm{4xI%!#NfOk9!(K*4AfT!>j7Wf1$68Z zoq2PhN1)4X6{_tUIVnLZn=H&yvVZdaIDzSt$0@&(REC}c6LAGw+s3rKAa@|jVcw|U zS}EOG{9;Jo;?VuaEQ|qhJMi99G=&O!1CNamGjmBOycuvAO1#g}{r8Am@=>r&%Q`l6nWCf|H;8UqY@kjs$A2Op-o@zlto3pg zXt{508?_aHh`x^KgCl!X>%Y7{AT7;W;O`3p(a`INI`RhTJr;m=te^Nv{L|jn&L(2d zE?pJpt74srHirax0P(4!w^dXf`P(?+xE*o7p(GUqh5*PFpve)C)Ap@4fb7I`5U5d) zoU0u6EO_)=GQ7a+=ggMA`ZPe~Ft0S$ZYarNQ_pxIn?~iamdH#4R3>IA^bYcF|KL$X zt-;={2ubo7e3VWJ2xsu$7+Pl=H+wUczW~HZOK`@NJEFi)AGPnfPpXS;uTJP|!G60V zdO!%>*ENTBayiqz@rIx3QgOxUVjs-3=k}5rXa(^%hY=5o4+UEYV!)< z0?k5rI5sb(8w#@nF90=0%l5?kK!$p-ZM)XyA$XOi8B0+nwkgIPc9X>C*3P#$O!Rjc z1$Fs9F%FtI5aQZx^B0-Px=Tfx>*@&Fe~8+{R6)pSUtMekOzOZWix!_va7^KV?4jPR z9kZ9S%~}6U4j69z`Usj*T_tTw7Kdy41qFp5<B;F(5X0PNGZ z?ZTj5@U7z#h(a{-f;crWf!}LhBMy%3vU;)7R?Yi7AVLT)JVwK)U8QNOBkUOb?~r&qJP_U;I)zU7hWZ*%^L&)x{+ueV-lwGaIG))u<+ zMMgW~QWVOFL;51#Fd?_Y2#?J$xQt_6qZwSxe|Rp@lBjpl{l2)0ei#Jx$2JDc6B||L zpFnoxTWY36{SqnU;3pAS|B^`r9L3%9&cx&0hzNx(z6Q70%w@z4s68rPoQAf!-*z{% zp?ye9wsN+5uo8K$`3?EuXF~csNBkcve&&7Mov>tMz`xM=>bF6P6dy9*)ieI^cOOPgpddOzW7aGr1L%8ij|Z#{a5ZV%$b8$p5;TJ;QqCO_^~kV} z=^?tbzO)n69}d9FJWwN}>-H9E$ISUNP%aoKErJ|G-d%sESRL7O7$FMPN%IELa7fY6 zblGUp%zMcGOo+VSoCkn2Bi?1+ywxfK@mHGk9$nJCg4Pn6pTnCZ6rOFEQe%_N*}Lm4 z40*w(EN&8u&?q*-fC4Gzj;1B>!eZnzW!7&PBKJEExi=dDx!YUv*xr(q+af6pj)0cY zh+ng;_GG|M&eLiqU|=1Xvr&9LAfm>+w&SuB<7wEj58eBJ+8Lk_I`v*B)=eouRGaev zIlb20NP|BT-jdAr#7o-8{(27Fw$=x3hA2A5am1)@4$j2cNH`RMuSbg>+q`DZBGg;w zOHXvbXicD+y92@by&A{>sf#=`ZAex;Y z>6>_@Ct$#PM?wY7$`1(>fjTV*cHR(gbu|6CpTS+t)BP9DQ7UxKz*}s~t#i;|am@ga z89ZKKxy?`)K3?!6HU(W6NqIH&3icOv&}OS?+~y9cB!CZqT)+jj<>lU1y?9Cz6YLW; zu)hV`;HOgz+l8$nu2=>=;fc*PWw61Ks>VfDtb&WeF$oZKn|4e^AHXA+M)<2`##Wl3 zejO!qM@BIaaFrOZZnTa@tluLs0xl2PEWX}OTasz-=?U|S)13y^j>tTC0eVJaK*Ejf*$CiUN&0D0+aS=|?>p^j^khN{5d7u4FmmuUrTrFfuLmAmo&S)*W1@a1 zo>-9<1Cj53+rEngz%12)vq^e6`pT}$i5FzP@Y(9n9qt&G+Q`ZFHy{CKl~H+)JtBIx zM1ZJ>2&UplPkmfI&J6a;Jix>@8#{s4V4qU12STF=wW9JbZq1RAuZ7=m$n5pw?~d@M zxoij?MPZ;0#ZCCWWdha=B{QDdUEBT^-_>ZOf=rsZ$LR;gF^hOn&{ z9Od|tcZoRN+Bt*6J@smNT7(guBORx>F`_0P^b+vM3A})9WKaqiXYaR#9+>9Na+Xy@ zZ@h?|>leCYo(;{7ctE@(aGN+|zcZxYZ2P<2sNg;~!C;!Tq31td;iZl$fj0#*?iMH& z2dADMq1P#uY+F8pSko-YAwC~Skgzv@%wP#4%7qO>MFS;YIJN_4LYcyWB4^1e!Q>~1%x z=t7;0y+^5OZnh4zU>1R+T}0mxR1?~yH;zYb%_x|e1-J&JkyQT)>V9A$r%oPZ$kb^l zwK%=2GlCxx_g&;)Bj=rfXFh`!pZL*5c^HD^(*d&Zb|~bWU=2_uix;0)V43Tvp^8RA zNpPX@B?ALbyjzGnxHYI#Ms&r{s57GP+;PtGqc>!zQ&(j39Op70TF-214@FXj>+7)5 zW|0Fi&fk#jpMQX(IMOEkFg<&1z>v1YMZuFF>aLM;ZN)+imBDS3%>mh#K532W%@O>jOm<66d5XQTKwInGo4tfPx1v1F3+^&pU6M4KB?VbIT zp~#y%WHlX*%*c|$oc6u@ENs*0(r%NH8O^@^Nfl=iA4xpCjH1di43`kam8efw=qe;5 zaF^y7Or}o6-r6FDXs5VEJJC83G3*sEMYAgsiWUuw(s+l>!HJx*(`X$>o)0_7I5(Eq zLQc*jf>xumA)Wh{i*IRN%%`5^d<#iW_lSA}mA)5XRN*3zrhah2MfNx#N(z)iso!%z zuZa*r9K~@aTTUt%1><(IC>=L7R-QOtl9P~)x)_9P{2zqMgO?gQ#d|$CFqE`G=yMAV z=wcCD6&&)ZA8BG7Af(5%f}`ySmJ?2o$?>rBxxx8@a^Nk=A@j@76d6H24R3OkE8aq! zvi(ZS)SRH3>Iv0PQg#YSMi@*HZQdPBEKqtUCy*+=F`fhu9-g!jVV7nE>$iL|(99*_ z*qEX)beYgCwNKt?Z97u&kJfF(P(xgII5yVNG?(-H8g+q?I~u(y5b*=ghLw?LSEp=4 zdNGeyN3kU>;zEMM`a1p0L?4CuNRJG| zN2+f_S{yNYX#`-G6WR-y1LK(F^y;X23%22M2(EcJE)uP6r{FImI?l0|aso^DTfdJ` zI=a|DArE$`w=nJ*-9=qSVSmsw(W}22Ujh_3qwB@IjuyKEa&>xs3;BIYx>6*0huY8L z#c122DB{_V`08`J_c(&7pc)RFzxTA|fUu?DE8L!G)RDS}XULqtP|WJY$5hVZh{Csq z%R~xla-`wC_$!g$0*3w(HB(f%>J30Cv7~C9*7L$R(2Sf#6sR3_1|;Tfplk2_XcEds zbpDhIpSp}hDVuQQ3?e7~@83fuCuI;&lj=yv+Q5bD(J(6FIZA𝔢?zTR$l9_Ms_j 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 XOM!y@<9kp)ubH3YF*pML)B67ajsUrK delta 43115 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 J`0BsT{~x7ZP client only. After explicit CHROME_PATH + // and CI /usr/bin/chromium, this test uses Chrome for Testing because + // Canary rejects --load-extension in this local test path. + ExecutablePath: reverseWSTestBrowserPath(t), }, }, Upstream: modcdp.UpstreamConfig{UpstreamMode: "nativemessaging", UpstreamNativeMessagingHostName: nativeHostName}, Injector: modcdp.InjectorConfig{ InjectorMode: "auto", + InjectorExtensionPath: extensionPath, InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, InjectorTrustServiceWorkerTarget: true, }, diff --git a/go/modcdp/transport/PipeUpstreamTransport_test.go b/go/modcdp/transport/PipeUpstreamTransport_test.go index 6332e47..b1fa9a2 100644 --- a/go/modcdp/transport/PipeUpstreamTransport_test.go +++ b/go/modcdp/transport/PipeUpstreamTransport_test.go @@ -4,8 +4,8 @@ import ( modcdp "github.com/browserbase/modcdp/go/modcdp/client" . "github.com/browserbase/modcdp/go/modcdp/transport" "os" + "path/filepath" "regexp" - "runtime" "testing" "time" ) @@ -25,7 +25,7 @@ func TestPipeUpstreamTransportConstructorUpdateLauncherConfigAndUnconnectedError if err := transport.Connect(); err == nil { t.Fatal("expected Connect to require pipe handles") } - if err := transport.Send(map[string]any{"id": 1, "method": "Browser.getVersion"}); err == nil { + if err := transport.Send(map[string]any{"id": 1, "method": "Runtime.evaluate"}); err == nil { t.Fatal("expected Send to require a connected pipe") } } @@ -54,7 +54,7 @@ func TestPipeUpstreamTransportResetsConnectionStateAfterPipeCloses(t *testing.T) if err := transport.Connect(); err != nil { t.Fatal(err) } - if err := transport.Send(map[string]any{"id": 1, "method": "Browser.getVersion"}); err != nil { + if err := transport.Send(map[string]any{"id": 1, "method": "Runtime.evaluate", "params": map[string]any{"expression": "1"}}); err != nil { t.Fatal(err) } _ = pipeReadWriter.Close() @@ -63,27 +63,30 @@ func TestPipeUpstreamTransportResetsConnectionStateAfterPipeCloses(t *testing.T) case <-time.After(2 * time.Second): t.Fatal("timed out waiting for pipe close") } - if err := transport.Send(map[string]any{"id": 2, "method": "Browser.getVersion"}); err == nil { + if err := transport.Send(map[string]any{"id": 2, "method": "Runtime.evaluate", "params": map[string]any{"expression": "1"}}); err == nil { t.Fatal("expected send to fail after pipe close") } } func TestPipeUpstreamTransportLaunchesRealBrowserAndUsesPIDScopedPipeURL(t *testing.T) { - headless := runtime.GOOS == "linux" && os.Getenv("DISPLAY") == "" - sandbox := runtime.GOOS != "linux" + extensionPath, err := filepath.Abs("../../../dist/extension") + if err != nil { + t.Fatal(err) + } cdp := modcdp.New(modcdp.Options{ Launcher: modcdp.LauncherConfig{LauncherMode: "local", LauncherOptions: modcdp.LaunchOptions{ - Headless: boolPtr(headless), - Sandbox: boolPtr(sandbox), + Headless: boolPtr(true), }, }, Upstream: modcdp.UpstreamConfig{UpstreamMode: "pipe"}, Injector: modcdp.InjectorConfig{ - InjectorMode: "auto", + InjectorMode: "inject", + InjectorExtensionPath: extensionPath, InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, InjectorTrustServiceWorkerTarget: true, }, + Server: &modcdp.ServerConfig{ServerRoutes: map[string]string{"*.*": "chrome_debugger"}}, }) defer cdp.Close() @@ -106,11 +109,22 @@ func TestPipeUpstreamTransportLaunchesRealBrowserAndUsesPIDScopedPipeURL(t *test if pipeTransport.URL != cdp.CDPURL { t.Fatalf("pipe transport URL = %q, CDPURL = %q", pipeTransport.URL, cdp.CDPURL) } - version, err := cdp.SendRaw("Browser.getVersion", map[string]any{}) + if _, err := cdp.Mod.AddCustomCommand(modcdp.CustomCommand{ + Name: "Custom.runtimeReadyState", + Expression: "async () => await cdp.send('Runtime.evaluate', { expression: 'document.readyState', returnByValue: true })", + }); err != nil { + t.Fatal(err) + } + runtime, err := cdp.Send("Custom.runtimeReadyState", nil) if err != nil { t.Fatal(err) } - if _, ok := version["product"].(string); !ok { - t.Fatalf("Browser.getVersion product = %#v", version["product"]) + runtimeMap, ok := runtime.(map[string]any) + if !ok { + t.Fatalf("Custom.runtimeReadyState = %#v", runtime) + } + runtimeResult, _ := runtimeMap["result"].(map[string]any) + if runtimeResult["value"] != "complete" { + t.Fatalf("Runtime.evaluate result = %#v", runtime) } } diff --git a/go/modcdp/transport/ReverseWebSocketUpstreamTransport.go b/go/modcdp/transport/ReverseWebSocketUpstreamTransport.go index 2c470d7..d733e25 100644 --- a/go/modcdp/transport/ReverseWebSocketUpstreamTransport.go +++ b/go/modcdp/transport/ReverseWebSocketUpstreamTransport.go @@ -112,7 +112,7 @@ func (t *ReverseWebSocketUpstreamTransport) Send(message map[string]any) error { } func (t *ReverseWebSocketUpstreamTransport) GetInjectorConfig() ExtensionInjectorConfig { - return ExtensionInjectorConfig{UpstreamReverseWSURL: t.URL} + return ExtensionInjectorConfig{} } func (t *ReverseWebSocketUpstreamTransport) WaitForPeer() error { diff --git a/go/modcdp/transport/ReverseWebSocketUpstreamTransport_test.go b/go/modcdp/transport/ReverseWebSocketUpstreamTransport_test.go index cc6de18..a50b6dd 100644 --- a/go/modcdp/transport/ReverseWebSocketUpstreamTransport_test.go +++ b/go/modcdp/transport/ReverseWebSocketUpstreamTransport_test.go @@ -7,7 +7,12 @@ import ( modcdp "github.com/browserbase/modcdp/go/modcdp/client" . "github.com/browserbase/modcdp/go/modcdp/transport" "os" + "path/filepath" + "reflect" + "regexp" "runtime" + "sort" + "strconv" "strings" "testing" "time" @@ -16,19 +21,19 @@ import ( "github.com/gobwas/ws/wsutil" ) -func TestReverseWebSocketUpstreamTransportConfigOwnsBindUpdatesWaitTimeoutAndInjectorConfig(t *testing.T) { +func TestReverseWebSocketUpstreamTransportConfigOwnsBindUpdatesAndWaitTimeout(t *testing.T) { transport := NewReverseWebSocketUpstreamTransport(ReverseWebSocketUpstreamTransportOptions{UpstreamReverseWSBind: "127.0.0.1:29292", UpstreamReverseWSWaitTimeoutMS: 10}) if transport.URL != "ws://127.0.0.1:29292" { t.Fatalf("URL = %q", transport.URL) } - if transport.GetInjectorConfig().UpstreamReverseWSURL != "ws://127.0.0.1:29292" { + if !reflect.DeepEqual(transport.GetInjectorConfig(), ExtensionInjectorConfig{}) { t.Fatalf("injector config = %#v", transport.GetInjectorConfig()) } transport.Update(map[string]any{"upstream_reversews_bind": "127.0.0.1:29293", "upstream_reversews_wait_timeout_ms": 5}) if transport.URL != "ws://127.0.0.1:29293" { t.Fatalf("URL after update = %q", transport.URL) } - if transport.GetInjectorConfig().UpstreamReverseWSURL != "ws://127.0.0.1:29293" { + if !reflect.DeepEqual(transport.GetInjectorConfig(), ExtensionInjectorConfig{}) { t.Fatalf("injector config after update = %#v", transport.GetInjectorConfig()) } transport.Update(map[string]any{"upstream_reversews_bind": "http://127.0.0.1:29294"}) @@ -214,23 +219,30 @@ func waitForReversePeerDisconnect(t *testing.T, transport *ReverseWebSocketUpstr t.Fatal("timed out waiting for reverse peer disconnect") } -func TestReverseWebSocketUpstreamTransportAcceptsRealExtensionReverseConnectionAndRoutesCDPThroughLoopback(t *testing.T) { +func TestReverseWebSocketUpstreamTransportAcceptsRealExtensionReverseConnectionAndRoutesCDPThroughChromeDebugger(t *testing.T) { + extensionPath, err := filepath.Abs(filepath.Join("..", "..", "..", "dist", "extension")) + if err != nil { + t.Fatal(err) + } headless := runtime.GOOS == "linux" && os.Getenv("DISPLAY") == "" - sandbox := runtime.GOOS != "linux" cdp := modcdp.New(modcdp.Options{ Launcher: modcdp.LauncherConfig{LauncherMode: "local", LauncherOptions: modcdp.LaunchOptions{ Headless: boolPtr(headless), - Sandbox: boolPtr(sandbox), + // Reversews is browser -> client only. After explicit CHROME_PATH and + // CI /usr/bin/chromium, these tests use Chrome for Testing because + // Canary rejects --load-extension in this local test path. + ExecutablePath: reverseWSTestBrowserPath(t), }, }, Upstream: modcdp.UpstreamConfig{UpstreamMode: "reversews"}, Injector: modcdp.InjectorConfig{ - InjectorMode: "auto", - InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, - InjectorTrustServiceWorkerTarget: true, + InjectorExtensionPath: extensionPath, + InjectorMode: "auto", + InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, + InjectorTrustServiceWorkerTarget: true, + InjectorServiceWorkerProbeTimeoutMS: 1000, }, - Server: &modcdp.ServerConfig{ServerRoutes: map[string]string{"*.*": "loopback_cdp"}}, }) defer cdp.Close() @@ -247,30 +259,137 @@ func TestReverseWebSocketUpstreamTransportAcceptsRealExtensionReverseConnectionA if !ok { t.Fatalf("transport = %T", cdp.Transport()) } + if transport.URL != "ws://127.0.0.1:29292" { + t.Fatalf("transport URL = %q", transport.URL) + } if transport.PeerInfo["extension_id"] != DefaultModCDPExtensionID { t.Fatalf("extension_id = %#v", transport.PeerInfo["extension_id"]) } - result, err := cdp.Send("Browser.getVersion", map[string]any{}) + result, err := cdp.Send("Runtime.evaluate", map[string]any{"expression": "location.href", "returnByValue": true}) if err != nil { t.Fatal(err) } - version, ok := result.(map[string]any) + evaluated, ok := result.(map[string]any) if !ok { - t.Fatalf("Browser.getVersion result = %#v", result) + t.Fatalf("Runtime.evaluate result = %#v", result) } - if _, ok := version["product"].(string); !ok { - t.Fatalf("Browser.getVersion product = %#v", version["product"]) + evaluatedResult, _ := evaluated["result"].(map[string]any) + if evaluatedResult["value"] != "about:blank" { + t.Fatalf("Runtime.evaluate value = %#v", evaluatedResult["value"]) } time.Sleep(1500 * time.Millisecond) - secondResult, err := cdp.Send("Browser.getVersion", map[string]any{}) + secondResult, err := cdp.Send("Runtime.evaluate", map[string]any{"expression": "document.readyState", "returnByValue": true}) if err != nil { t.Fatal(err) } - secondVersion, ok := secondResult.(map[string]any) + secondEvaluated, ok := secondResult.(map[string]any) if !ok { - t.Fatalf("second Browser.getVersion result = %#v", secondResult) + t.Fatalf("second Runtime.evaluate result = %#v", secondResult) + } + secondEvaluatedResult, _ := secondEvaluated["result"].(map[string]any) + if secondEvaluatedResult["value"] != "complete" { + t.Fatalf("second Runtime.evaluate value = %#v", secondEvaluatedResult["value"]) + } +} + +func reverseWSTestBrowserPath(t *testing.T) string { + t.Helper() + explicitCandidates := []string{os.Getenv("CHROME_PATH")} + if runtime.GOOS == "linux" { + explicitCandidates = append(explicitCandidates, "/usr/bin/chromium") + } + for _, candidate := range explicitCandidates { + if candidate == "" { + continue + } + if _, err := os.Stat(candidate); err == nil { + return candidate + } } - if _, ok := secondVersion["product"].(string); !ok { - t.Fatalf("second Browser.getVersion product = %#v", secondVersion["product"]) + home, err := os.UserHomeDir() + if err != nil || home == "" { + home = "." + } + localAppData := os.Getenv("LOCALAPPDATA") + if localAppData == "" { + localAppData = filepath.Join(home, "AppData", "Local") + } + var patterns []string + switch runtime.GOOS { + case "darwin": + patterns = []string{ + filepath.Join(home, "Library", "Caches", "ms-playwright", "chromium-*", "chrome-mac*", "Google Chrome for Testing.app", "Contents", "MacOS", "Google Chrome for Testing"), + filepath.Join(home, "Library", "Caches", "ms-playwright", "chromium-*", "chrome-mac*", "Chromium.app", "Contents", "MacOS", "Chromium"), + filepath.Join(home, "Library", "Caches", "puppeteer", "chrome", "mac*-*", "chrome-mac*", "Google Chrome for Testing.app", "Contents", "MacOS", "Google Chrome for Testing"), + } + case "windows": + patterns = []string{ + filepath.Join(localAppData, "ms-playwright", "chromium-*", "chrome-win*", "chrome.exe"), + filepath.Join(home, ".cache", "puppeteer", "chrome", "win*-*", "chrome.exe"), + } + default: + patterns = []string{ + filepath.Join(home, ".cache", "ms-playwright", "chromium-*", "chrome-linux*", "chrome"), + filepath.Join("/opt", "pw-browsers", "chromium-*", "chrome-linux*", "chrome"), + filepath.Join(home, ".cache", "puppeteer", "chrome", "linux-*", "chrome-linux*", "chrome"), + } + } + var candidates []string + for _, pattern := range patterns { + matches, err := filepath.Glob(pattern) + if err != nil { + continue + } + candidates = append(candidates, matches...) + } + candidates = newestChromeForTestingFirst(candidates) + if len(candidates) > 0 { + return candidates[0] + } + t.Fatal("Reversews tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing.") + return "" +} + +func newestChromeForTestingFirst(candidates []string) []string { + seen := map[string]bool{} + deduped := make([]string, 0, len(candidates)) + for _, candidate := range candidates { + if candidate == "" || seen[candidate] { + continue + } + seen[candidate] = true + deduped = append(deduped, candidate) + } + sort.SliceStable(deduped, func(i, j int) bool { + leftVersion := maxPathNumber(deduped[i]) + rightVersion := maxPathNumber(deduped[j]) + if leftVersion != rightVersion { + return leftVersion > rightVersion + } + leftStat, leftErr := os.Stat(deduped[i]) + rightStat, rightErr := os.Stat(deduped[j]) + var leftMtime, rightMtime time.Time + if leftErr == nil { + leftMtime = leftStat.ModTime() + } + if rightErr == nil { + rightMtime = rightStat.ModTime() + } + if !leftMtime.Equal(rightMtime) { + return leftMtime.After(rightMtime) + } + return deduped[i] < deduped[j] + }) + return deduped +} + +func maxPathNumber(value string) int { + maxValue := 0 + for _, raw := range regexp.MustCompile(`\d+`).FindAllString(value, -1) { + number, err := strconv.Atoi(raw) + if err == nil && number > maxValue { + maxValue = number + } } + return maxValue } diff --git a/go/modcdp/transport/WebSocketUpstreamTransport_test.go b/go/modcdp/transport/WebSocketUpstreamTransport_test.go index b93e5e8..5892ddf 100644 --- a/go/modcdp/transport/WebSocketUpstreamTransport_test.go +++ b/go/modcdp/transport/WebSocketUpstreamTransport_test.go @@ -37,7 +37,6 @@ func TestWebSocketUpstreamTransportLaunchesRealBrowserAndSpeaksRawCDP(t *testing Launcher: modcdp.LauncherConfig{LauncherMode: "local", LauncherOptions: modcdp.LaunchOptions{ Headless: boolPtr(true), - Sandbox: boolPtr(false), }, }, Upstream: modcdp.UpstreamConfig{UpstreamMode: "ws"}, @@ -115,7 +114,6 @@ func TestWebSocketUpstreamTransportLaunchesRealBrowserAndSpeaksRawCDP(t *testing func TestWebSocketUpstreamTransportResolvesRealHTTPCDPEndpointToBrowserWebSocket(t *testing.T) { chrome, err := modcdp.NewLocalBrowserLauncher(modcdp.LaunchOptions{ Headless: boolPtr(true), - Sandbox: boolPtr(false), }).Launch(modcdp.LaunchOptions{}) if err != nil { t.Fatal(err) @@ -161,7 +159,6 @@ func TestWebSocketUpstreamTransportResolvesRealHTTPCDPEndpointToBrowserWebSocket func TestWebSocketUpstreamTransportCloseClearsConnectionState(t *testing.T) { chrome, err := modcdp.NewLocalBrowserLauncher(modcdp.LaunchOptions{ Headless: boolPtr(true), - Sandbox: boolPtr(false), }).Launch(modcdp.LaunchOptions{}) if err != nil { t.Fatal(err) diff --git a/go/modcdp/types/types.go b/go/modcdp/types/types.go index cf2c8a9..eb446f7 100644 --- a/go/modcdp/types/types.go +++ b/go/modcdp/types/types.go @@ -39,8 +39,6 @@ type ExtensionInjectorConfig struct { WaitForExecutionContext WaitForExecutionContext `json:"-"` InjectorExtensionPath string `json:"injector_extension_path,omitempty"` InjectorExtensionID string `json:"injector_extension_id,omitempty"` - InjectorWakePath string `json:"injector_wake_path,omitempty"` - InjectorWakeURL string `json:"injector_wake_url,omitempty"` InjectorServiceWorkerURLIncludes []string `json:"injector_service_worker_url_includes,omitempty"` InjectorServiceWorkerURLSuffixes []string `json:"injector_service_worker_url_suffixes,omitempty"` InjectorTrustServiceWorkerTarget bool `json:"injector_trust_service_worker_target,omitempty"` @@ -54,7 +52,6 @@ type ExtensionInjectorConfig struct { InjectorTargetSessionPollIntervalMS int `json:"injector_target_session_poll_interval_ms,omitempty"` InjectorBrowserbaseAPIKey string `json:"injector_browserbase_api_key,omitempty"` InjectorBrowserbaseBaseURL string `json:"injector_browserbase_base_url,omitempty"` - UpstreamReverseWSURL string `json:"upstream_reversews_url,omitempty"` UpstreamNativeMessagingHostName string `json:"upstream_nativemessaging_host_name,omitempty"` UpstreamNATSURL string `json:"upstream_nats_url,omitempty"` UpstreamNATSSubjectPrefix string `json:"upstream_nats_subject_prefix,omitempty"` diff --git a/js/scripts/build-extension-assets.mjs b/js/scripts/build-extension-assets.mjs index f267968..aa957c9 100755 --- a/js/scripts/build-extension-assets.mjs +++ b/js/scripts/build-extension-assets.mjs @@ -3,6 +3,7 @@ import { execFileSync } from "node:child_process"; import fs from "node:fs"; import path from "node:path"; +import { build } from "esbuild"; const root = process.cwd(); const dist_extension = path.join(root, "dist", "extension"); @@ -18,28 +19,21 @@ const copy = (from, to) => { fs.copyFileSync(path.join(root, from), path.join(root, to)); }; -const write = (to, contents) => { - fs.mkdirSync(path.dirname(path.join(root, to)), { recursive: true }); - fs.writeFileSync(path.join(root, to), contents); -}; - copy("extension/manifest.json", "dist/extension/manifest.json"); copy("extension/src/pages/options.html", "dist/extension/options.html"); copy("dist/extension/src/pages/options.js", "dist/extension/options.js"); -copy("extension/src/pages/wake.html", "dist/extension/modcdp/wake.html"); -copy("dist/extension/src/pages/wake.js", "dist/extension/modcdp/wake.js"); copy("extension/src/pages/offscreen_keepalive.html", "dist/extension/offscreen/keepalive.html"); copy("dist/extension/src/pages/offscreen_keepalive.js", "dist/extension/offscreen/offscreen_keepalive.js"); -copy("dist/js/src/server/ModCDPServer.js", "dist/extension/js/src/server/ModCDPServer.js"); -if (fs.existsSync(path.join(root, "dist/js/src/server/ModCDPServer.js.map"))) { - copy("dist/js/src/server/ModCDPServer.js.map", "dist/extension/js/src/server/ModCDPServer.js.map"); -} - -const service_worker = fs - .readFileSync(path.join(root, "dist/extension/src/service_worker.js"), "utf8") - .replace("../../js/src/server/ModCDPServer.js", "../js/src/server/ModCDPServer.js"); -write("dist/extension/modcdp/service_worker.js", service_worker); -copy("dist/extension/src/service_worker.js.map", "dist/extension/modcdp/service_worker.js.map"); +await build({ + entryPoints: [path.join(root, "extension/src/service_worker.ts")], + outfile: path.join(root, "dist/extension/modcdp/service_worker.js"), + bundle: true, + format: "esm", + platform: "browser", + target: ["chrome116"], + sourcemap: true, + logLevel: "silent", +}); fs.rmSync(path.join(dist_extension, "src"), { recursive: true, force: true }); const fixed_date = new Date("2000-01-01T00:00:00Z"); diff --git a/js/src/client/ModCDPClient.ts b/js/src/client/ModCDPClient.ts index 2e136c7..7707a7f 100644 --- a/js/src/client/ModCDPClient.ts +++ b/js/src/client/ModCDPClient.ts @@ -14,6 +14,7 @@ import type { z } from "zod"; import { createCdpAliases, type CdpAliases } from "../types/generated/aliases.js"; export type { CdpAliases } from "../types/generated/aliases.js"; +import { commands as nativeCommandSchemas, events as nativeEventSchemas } from "../types/generated/zod.js"; import { CUSTOM_EVENT_BINDING_NAME, DEFAULT_CLIENT_ROUTES, @@ -69,7 +70,6 @@ export const DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS = 100; export const DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS = 20; export const DEFAULT_WS_CONNECT_ERROR_SETTLE_TIMEOUT_MS = 250; export const DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = ["/modcdp/service_worker.js"]; -export const DEFAULT_MODCDP_WAKE_PATH = "/modcdp/wake.html"; export const DEFAULT_UPSTREAM_REVERSEWS_BIND = "127.0.0.1:29292"; export const DEFAULT_UPSTREAM_REVERSEWS_WAIT_TIMEOUT_MS = 10_000; export const DEFAULT_UPSTREAM_NATIVEMESSAGING_WAIT_TIMEOUT_MS = 10_000; @@ -106,8 +106,6 @@ export type InjectorOptions = { injector_mode?: InjectorMode; injector_extension_path?: string | null; injector_extension_id?: string | null; - injector_wake_path?: string | null; - injector_wake_url?: string | null; injector_service_worker_url_includes?: string[]; injector_service_worker_url_suffixes?: string[] | null; injector_trust_service_worker_target?: boolean; @@ -159,6 +157,10 @@ type ModCDPEventPayload = TEvent extends z.ZodType & { expression?: string | null; }; +type ProtocolCommandSchema = { + params: z.ZodType; + result: z.ZodType; +}; export type ModCDPCommandSpec = { params: Params; @@ -265,8 +267,6 @@ function normalizeClientOptions({ injector_mode, injector_extension_path: injector.injector_extension_path ?? null, injector_extension_id: injector.injector_extension_id ?? null, - injector_wake_path: injector.injector_wake_path ?? DEFAULT_MODCDP_WAKE_PATH, - injector_wake_url: injector.injector_wake_url ?? null, injector_service_worker_url_includes: injector.injector_service_worker_url_includes ?? [], injector_service_worker_url_suffixes: injector.injector_service_worker_url_suffixes ?? DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES, @@ -466,6 +466,7 @@ export class ModCDPClient extends ModCDPEventEmitter { on: (event_name: string | symbol, listener: (...args: unknown[]) => void) => this.on(event_name, listener), once: (event_name: string | symbol, listener: (...args: unknown[]) => void) => this.once(event_name, listener), }; + this._hydrateNativeProtocolSchemas(); void this._hydrateCdpAliases(); this._hydrateCustomSurface(); } @@ -579,7 +580,7 @@ export class ModCDPClient extends ModCDPEventEmitter { completed_at: Date.now(), duration_ms: Date.now() - started_at, }; - return { name, registered: true }; + return this.command_result_schemas.get(method)?.parse({ name, registered: true }) ?? { name, registered: true }; } command_params = { ...parsed, @@ -600,7 +601,7 @@ export class ModCDPClient extends ModCDPEventEmitter { completed_at: Date.now(), duration_ms: Date.now() - started_at, }; - return { name, registered: true }; + return this.command_result_schemas.get(method)?.parse({ name, registered: true }) ?? { name, registered: true }; } command_params = { ...parsed, name, event_schema: null }; } @@ -684,6 +685,30 @@ export class ModCDPClient extends ModCDPEventEmitter { } } + _hydrateNativeProtocolSchemas() { + for (const [method, schema] of Object.entries(nativeCommandSchemas) as [string, ProtocolCommandSchema][]) { + this.command_params_schemas.set(method, schema.params); + this.command_result_schemas.set(method, schema.result); + } + this.command_params_schemas.set("Mod.evaluate", Mod.EvaluateParams); + this.command_result_schemas.set("Mod.evaluate", Mod.EvaluateResponse); + this.command_params_schemas.set("Mod.addCustomCommand", Mod.AddCustomCommandParams); + this.command_result_schemas.set("Mod.addCustomCommand", Mod.AddCustomCommandResponse); + this.command_params_schemas.set("Mod.addCustomEvent", Mod.AddCustomEventParams); + this.command_result_schemas.set("Mod.addCustomEvent", Mod.AddCustomEventResponse); + this.command_params_schemas.set("Mod.addMiddleware", Mod.AddMiddlewareParams); + this.command_result_schemas.set("Mod.addMiddleware", Mod.AddMiddlewareResponse); + this.command_params_schemas.set("Mod.configure", Mod.ConfigureParams); + this.command_result_schemas.set("Mod.configure", Mod.ConfigureResponse); + this.command_params_schemas.set("Mod.ping", Mod.PingParams); + this.command_result_schemas.set("Mod.ping", Mod.PingResponse); + + for (const [event, schema] of Object.entries(nativeEventSchemas) as [string, z.ZodType][]) { + this.event_schemas.set(event, schema); + } + this.event_schemas.set("Mod.pong", Mod.PongEvent); + } + _normalizePayloadSchema(schema: unknown) { return normalizeModCDPPayloadSchema(Mod.PayloadSchemaSpec.parse(schema)); } @@ -695,18 +720,18 @@ export class ModCDPClient extends ModCDPEventEmitter { else this.command_result_unwrap_keys.delete(name); } + _parseEventPayload(method: string, data: unknown) { + return this.event_schemas.get(method)?.parse(data) ?? data; + } + _serviceWorkerUrlSuffixes() { return this.injector.injector_service_worker_url_suffixes; } _serverConfigureParams(): ModCDPConfigureParams { - const transport_injector_config = this.transport?.getInjectorConfig?.() ?? {}; return { upstream: { upstream_mode: this.upstream.upstream_mode, - ...(transport_injector_config.upstream_reversews_url - ? { upstream_reversews_url: transport_injector_config.upstream_reversews_url } - : {}), ...(this.upstream.upstream_nats_url ? { upstream_nats_url: this.upstream.upstream_nats_url } : {}), ...(this.upstream.upstream_nats_subject_prefix ? { @@ -932,8 +957,6 @@ export class ModCDPClient extends ModCDPEventEmitter { this.auto_sessions.waitForExecutionContext(session_id, { timeout_ms }), injector_extension_path: this.injector.injector_extension_path, injector_extension_id: this.injector.injector_extension_id, - injector_wake_path: this.injector.injector_wake_path, - injector_wake_url: this.injector.injector_wake_url, injector_service_worker_url_includes: this.injector.injector_service_worker_url_includes, injector_service_worker_url_suffixes: service_worker_url_suffixes, injector_trust_service_worker_target: trust_service_worker_target, @@ -1206,15 +1229,17 @@ export class ModCDPClient extends ModCDPEventEmitter { this.ext_session_id, ); if (u) { - this.auto_sessions.recordProtocolEvent(u.event, u.data, u.sessionId); - this.emit(u.event, this.event_schemas.get(u.event)?.parse(u.data) ?? u.data, u.sessionId); + const payload = this._parseEventPayload(u.event, u.data); + this.auto_sessions.recordProtocolEvent(u.event, payload as ProtocolPayload, u.sessionId); + this.emit(u.event, payload, u.sessionId); } return; } if (event.method) { const data = event.params || {}; - this.auto_sessions.recordProtocolEvent(event.method, data, event.sessionId || null); - this.emit(event.method, this.event_schemas.get(event.method)?.parse(data) ?? data, event.sessionId || null); + const payload = this._parseEventPayload(event.method, data); + this.auto_sessions.recordProtocolEvent(event.method, payload as ProtocolPayload, event.sessionId || null); + this.emit(event.method, payload, event.sessionId || null); } } diff --git a/js/src/index.ts b/js/src/index.ts index 15026f2..2ea4a62 100644 --- a/js/src/index.ts +++ b/js/src/index.ts @@ -9,7 +9,6 @@ export { NoopBrowserLauncher } from "./launcher/NoopBrowserLauncher.js"; export { DEFAULT_MODCDP_EXTENSION_ID, DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES, - DEFAULT_MODCDP_WAKE_PATH, ExtensionInjector, defaultModCDPExtensionPath, } from "./injector/ExtensionInjector.js"; diff --git a/js/src/injector/DiscoveredExtensionInjector.ts b/js/src/injector/DiscoveredExtensionInjector.ts index 5292899..8d91f55 100644 --- a/js/src/injector/DiscoveredExtensionInjector.ts +++ b/js/src/injector/DiscoveredExtensionInjector.ts @@ -13,16 +13,6 @@ export class DiscoveredExtensionInjector extends ExtensionInjector { ); if (waited) return { ...waited, source: "discovered" }; } - const woke = await this.wakeConfiguredExtension(); - if (woke) { - const waited = await this.waitForReadyServiceWorker( - this.options.injector_service_worker_probe_timeout_ms ?? 10_000, - { - matched_only: this.options.injector_trust_service_worker_target, - }, - ); - if (waited) return { ...waited, source: "discovered" }; - } if (!this.options.injector_require_service_worker_target) return null; const waited = await this.waitForReadyServiceWorker( this.options.injector_service_worker_ready_timeout_ms ?? 60_000, diff --git a/js/src/injector/ExtensionInjector.ts b/js/src/injector/ExtensionInjector.ts index 3d1719d..40943a8 100644 --- a/js/src/injector/ExtensionInjector.ts +++ b/js/src/injector/ExtensionInjector.ts @@ -1,3 +1,6 @@ +import fs from "node:fs"; +import os from "node:os"; +import path from "node:path"; import type { BrowserLaunchOptions } from "../launcher/BrowserLauncher.js"; import type { UpstreamTransportConfig } from "../transport/UpstreamTransport.js"; import type { ProtocolParams, ProtocolResult } from "../types/modcdp.js"; @@ -6,8 +9,9 @@ import { commands as TargetCommands } from "../types/generated/zod/Target.js"; const EXT_ID_FROM_URL = /^chrome-extension:\/\/([a-z]+)\//; export const DEFAULT_MODCDP_EXTENSION_ID = "mdedooklbnfejodmnhmkdpkaedafkehf"; -export const DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = ["/modcdp/service_worker.js"]; -export const DEFAULT_MODCDP_WAKE_PATH = "/modcdp/wake.html"; +export const DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = [ + "/modcdp/service_worker.js", +]; const MODCDP_READY_EXPRESSION = "Boolean(globalThis.ModCDP?.__ModCDPServerVersion >= 1 && globalThis.ModCDP?.handleCommand && globalThis.ModCDP?.addCustomEvent)"; export const DEFAULT_CDP_SEND_TIMEOUT_MS = 10_000; @@ -17,18 +21,26 @@ export const DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS = 60_000; export const DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS = 100; export const DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS = 20; -export type SendCDP = (method: string, params?: ProtocolParams, session_id?: string | null) => Promise; +export type SendCDP = ( + method: string, + params?: ProtocolParams, + session_id?: string | null, +) => Promise; export type TargetInfo = { targetId: string; type?: string; url?: string }; export type ExtensionInjectorConfig = { send?: SendCDP | null; - sessionIdForTarget?: ((target_id: string) => string | null | undefined) | null; - attachToTarget?: ((target_id: string) => Promise) | null; - waitForExecutionContext?: ((session_id: string, timeout_ms: number) => Promise) | null; + sessionIdForTarget?: + | ((target_id: string) => string | null | undefined) + | null; + attachToTarget?: + | ((target_id: string) => Promise) + | null; + waitForExecutionContext?: + | ((session_id: string, timeout_ms: number) => Promise) + | null; injector_extension_path?: string | null; injector_extension_id?: string | null; - injector_wake_path?: string | null; - injector_wake_url?: string | null; injector_service_worker_url_includes?: string[]; injector_service_worker_url_suffixes?: string[]; injector_trust_service_worker_target?: boolean; @@ -42,7 +54,6 @@ export type ExtensionInjectorConfig = { injector_target_session_poll_interval_ms?: number; injector_browserbase_api_key?: string | null; injector_browserbase_base_url?: string | null; - upstream_reversews_url?: string | null; upstream_nativemessaging_host_name?: string | null; upstream_nats_url?: string | null; upstream_nats_subject_prefix?: string | null; @@ -58,20 +69,116 @@ export type ExtensionInjectionResult = { has_debugger?: boolean; }; +export type PreparedExtension = { + unpacked_extension_path: string; + cleanup: () => Promise; +}; + function delay(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); } export function defaultModCDPExtensionPath() { - if (typeof process === "object" && process?.versions?.node && import.meta.url.startsWith("file:")) { + if ( + typeof process === "object" && + process?.versions?.node && + import.meta.url.startsWith("file:") + ) { const relative_path = import.meta.url.includes("/dist/js/src/") ? "../../../../dist/extension.zip" : "../../../dist/extension.zip"; - return decodeURIComponent(new URL(/* @vite-ignore */ relative_path, import.meta.url).pathname); + return decodeURIComponent( + new URL(/* @vite-ignore */ relative_path, import.meta.url).pathname, + ); } return "../../../dist/extension.zip"; } +function firstString(...values: unknown[]) { + for (const value of values) { + if (typeof value === "string" && value.trim()) return value.trim(); + } + return null; +} + +export async function prepareUnpackedExtension( + extension_path: string, +): Promise { + const unpacked_path = fs.mkdtempSync( + path.join(os.tmpdir(), "modcdp-extension-"), + ); + const cleanup = async () => + fs.rmSync(unpacked_path, { recursive: true, force: true }); + try { + if (extension_path.endsWith(".zip")) { + await extractZip(extension_path, unpacked_path); + } else { + fs.cpSync(extension_path, unpacked_path, { recursive: true }); + } + return { unpacked_extension_path: extensionRoot(unpacked_path), cleanup }; + } catch (error) { + await cleanup(); + throw error; + } +} + +export async function extensionIdFromManifestKey(extension_path: string) { + const [crypto, fs, path] = await Promise.all([ + import("node:crypto"), + import("node:fs"), + import("node:path"), + ]); + const manifest_path = path.join(extension_path, "manifest.json"); + if (!fs.existsSync(manifest_path)) return null; + const manifest = JSON.parse(fs.readFileSync(manifest_path, "utf8")) as Record< + string, + unknown + >; + const key = firstString(manifest.key); + if (!key) return null; + const digest = crypto + .createHash("sha256") + .update(Buffer.from(key, "base64")) + .digest() + .subarray(0, 16); + const alphabet = "abcdefghijklmnop"; + return [...digest] + .map((byte) => alphabet[byte >> 4] + alphabet[byte & 0x0f]) + .join(""); +} + +function extensionRoot(unpacked_path: string) { + if (fs.existsSync(path.join(unpacked_path, "manifest.json"))) + return unpacked_path; + const nested_path = path.join(unpacked_path, "extension"); + if (fs.existsSync(path.join(nested_path, "manifest.json"))) + return nested_path; + return unpacked_path; +} + +async function extractZip(zip_path: string, destination: string) { + const { execFileSync } = await import("node:child_process"); + const listing = execFileSync("unzip", ["-Z1", zip_path], { + encoding: "utf8", + }); + for (const raw_name of listing.split(/\r?\n/)) { + if (!raw_name) continue; + const name = raw_name.replaceAll("\\", "/"); + const normalized = path.posix.normalize(name); + if ( + path.posix.isAbsolute(normalized) || + normalized === "." || + normalized === ".." || + normalized.startsWith("../") + ) { + throw new Error( + `zip entry ${JSON.stringify(raw_name)} escapes extension extraction directory`, + ); + } + } + execFileSync("unzip", ["-q", zip_path, "-d", destination]); +} + export class ExtensionInjector { options: ExtensionInjectorConfig; protected unusable_target_ids = new Set(); @@ -85,22 +192,24 @@ export class ExtensionInjector { waitForExecutionContext: null, injector_extension_path: null, injector_extension_id: null, - injector_wake_path: DEFAULT_MODCDP_WAKE_PATH, - injector_wake_url: null, injector_service_worker_url_includes: [], injector_service_worker_url_suffixes: [], injector_trust_service_worker_target: false, injector_require_service_worker_target: false, injector_service_worker_ready_expression: null, injector_cdp_send_timeout_ms: DEFAULT_CDP_SEND_TIMEOUT_MS, - injector_execution_context_timeout_ms: DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, - injector_service_worker_probe_timeout_ms: DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, - injector_service_worker_ready_timeout_ms: DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, - injector_service_worker_poll_interval_ms: DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, - injector_target_session_poll_interval_ms: DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, + injector_execution_context_timeout_ms: + DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, + injector_service_worker_probe_timeout_ms: + DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, + injector_service_worker_ready_timeout_ms: + DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, + injector_service_worker_poll_interval_ms: + DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, + injector_target_session_poll_interval_ms: + DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, injector_browserbase_api_key: null, injector_browserbase_base_url: null, - upstream_reversews_url: null, upstream_nativemessaging_host_name: null, upstream_nats_url: null, upstream_nats_subject_prefix: null, @@ -113,9 +222,13 @@ export class ExtensionInjector { ...this.options, ...config, injector_service_worker_url_includes: - config.injector_service_worker_url_includes ?? this.options.injector_service_worker_url_includes ?? [], + config.injector_service_worker_url_includes ?? + this.options.injector_service_worker_url_includes ?? + [], injector_service_worker_url_suffixes: - config.injector_service_worker_url_suffixes ?? this.options.injector_service_worker_url_suffixes ?? [], + config.injector_service_worker_url_suffixes ?? + this.options.injector_service_worker_url_suffixes ?? + [], }; return this; } @@ -129,7 +242,9 @@ export class ExtensionInjector { } getTransportConfig(): UpstreamTransportConfig { - return this.options.injector_extension_id ? { injector_extension_id: this.options.injector_extension_id } : {}; + return this.options.injector_extension_id + ? { injector_extension_id: this.options.injector_extension_id } + : {}; } async prepare() {} @@ -157,13 +272,17 @@ export class ExtensionInjector { method: string, params: ProtocolParams = {}, session_id: string | null = null, - timeout_ms = this.options.injector_cdp_send_timeout_ms ?? DEFAULT_CDP_SEND_TIMEOUT_MS, + timeout_ms = this.options.injector_cdp_send_timeout_ms ?? + DEFAULT_CDP_SEND_TIMEOUT_MS, ) { let timeout: ReturnType | null = null; return Promise.race([ this.send(method, params, session_id), new Promise((_, reject) => { - timeout = setTimeout(() => reject(new Error(`${method} timed out after ${timeout_ms}ms`)), timeout_ms); + timeout = setTimeout( + () => reject(new Error(`${method} timed out after ${timeout_ms}ms`)), + timeout_ms, + ); }), ]).finally(() => { if (timeout != null) clearTimeout(timeout); @@ -174,48 +293,40 @@ export class ExtensionInjector { const deadline = Date.now() + timeout_ms; while (true) { const session_id = this.options.sessionIdForTarget?.(target_id); - if (typeof session_id === "string" && session_id.length > 0) return session_id; + if (typeof session_id === "string" && session_id.length > 0) + return session_id; if (Date.now() >= deadline) return null; - await delay(this.options.injector_target_session_poll_interval_ms ?? DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS); + await delay( + this.options.injector_target_session_poll_interval_ms ?? + DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, + ); } } - protected async ensureSessionIdForTarget(target_id: string, timeout_ms = 0, allow_attach = false) { + protected async ensureSessionIdForTarget( + target_id: string, + timeout_ms = 0, + allow_attach = false, + ) { const session_id = this.options.sessionIdForTarget?.(target_id); - if (typeof session_id === "string" && session_id.length > 0) return session_id; + if (typeof session_id === "string" && session_id.length > 0) + return session_id; if (allow_attach) { - const attached_session_id = await this.options.attachToTarget?.(target_id); - if (typeof attached_session_id === "string" && attached_session_id.length > 0) return attached_session_id; + const attached_session_id = + await this.options.attachToTarget?.(target_id); + if ( + typeof attached_session_id === "string" && + attached_session_id.length > 0 + ) + return attached_session_id; } return await this.sessionIdForTarget(target_id, timeout_ms); } protected async targetInfos() { - return TargetCommands["Target.getTargets"].result.parse(await this.send("Target.getTargets")).targetInfos; - } - - protected configuredWakeUrl() { - if (this.options.injector_wake_url) return this.options.injector_wake_url; - if (!this.options.injector_extension_id) return null; - const wake_path = this.options.injector_wake_path ?? DEFAULT_MODCDP_WAKE_PATH; - if (!wake_path) return null; - return `chrome-extension://${this.options.injector_extension_id}${wake_path.startsWith("/") ? wake_path : `/${wake_path}`}`; - } - - protected async wakeConfiguredExtension() { - const wake_url = this.configuredWakeUrl(); - if (!wake_url || typeof this.options.send !== "function") return false; - try { - await this.sendWithTimeout("Target.createTarget", { - url: wake_url, - background: true, - hidden: true, - focus: false, - }); - return true; - } catch { - return false; - } + return TargetCommands["Target.getTargets"].result.parse( + await this.send("Target.getTargets"), + ).targetInfos; } protected async probeTarget( @@ -224,7 +335,11 @@ export class ExtensionInjector { { allow_attach = false }: { allow_attach?: boolean } = {}, ): Promise { if (this.unusable_target_ids.has(target.targetId)) return null; - const session_id = await this.ensureSessionIdForTarget(target.targetId, session_timeout_ms, allow_attach); + const session_id = await this.ensureSessionIdForTarget( + target.targetId, + session_timeout_ms, + allow_attach, + ); if (session_id == null) return null; await this.sendWithTimeout("Runtime.enable", {}, session_id); const probe = RuntimeCommands["Runtime.evaluate"].result.parse( @@ -247,20 +362,27 @@ export class ExtensionInjector { }; } - protected async discoverReadyServiceWorker({ matched_only = false }: { matched_only?: boolean } = {}) { + protected async discoverReadyServiceWorker({ + matched_only = false, + }: { matched_only?: boolean } = {}) { const target_infos = await this.targetInfos(); if (this.options.injector_trust_service_worker_target) { - const trusted_target = target_infos.find((candidate) => this.serviceWorkerTargetMatches(candidate)) as - | TargetInfo - | undefined; + const trusted_target = target_infos.find((candidate) => + this.serviceWorkerTargetMatches(candidate), + ) as TargetInfo | undefined; if (trusted_target) { - const probed = await this.probeTarget(trusted_target, this.options.injector_service_worker_probe_timeout_ms, { - allow_attach: true, - }); + const probed = await this.probeTarget( + trusted_target, + this.options.injector_service_worker_probe_timeout_ms, + { + allow_attach: true, + }, + ); if (probed) return { ...probed, source: "trusted" }; } } - if (this.options.injector_trust_service_worker_target || matched_only) return null; + if (this.options.injector_trust_service_worker_target || matched_only) + return null; for (const candidate of target_infos) { if (candidate.type !== "service_worker") continue; if (!candidate.url.startsWith("chrome-extension://")) continue; @@ -283,27 +405,39 @@ export class ExtensionInjector { ) { const deadline = Date.now() + timeout_ms; while (Date.now() < deadline) { - const discovered = await this.discoverReadyServiceWorker({ matched_only }); + const discovered = await this.discoverReadyServiceWorker({ + matched_only, + }); if (discovered) return discovered; - await delay(this.options.injector_service_worker_poll_interval_ms ?? DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS); + await delay( + this.options.injector_service_worker_poll_interval_ms ?? + DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, + ); } return null; } - protected serviceWorkerTargetMatches(candidate: { type?: string; url?: string }) { + protected serviceWorkerTargetMatches(candidate: { + type?: string; + url?: string; + }) { const url = candidate.url ?? ""; if (candidate.type !== "service_worker") return false; if (!url.startsWith("chrome-extension://")) return false; const has_extension_id = Boolean(this.options.injector_extension_id); if ( this.options.injector_extension_id && - !url.startsWith(`chrome-extension://${this.options.injector_extension_id}/`) + !url.startsWith( + `chrome-extension://${this.options.injector_extension_id}/`, + ) ) return false; const includes = this.options.injector_service_worker_url_includes ?? []; const suffixes = this.options.injector_service_worker_url_suffixes ?? []; - if (includes.length > 0 && !includes.every((part) => url.includes(part))) return false; - if (suffixes.length > 0 && !suffixes.some((suffix) => url.endsWith(suffix))) return false; + if (includes.length > 0 && !includes.every((part) => url.includes(part))) + return false; + if (suffixes.length > 0 && !suffixes.some((suffix) => url.endsWith(suffix))) + return false; return has_extension_id || includes.length > 0 || suffixes.length > 0; } } diff --git a/js/src/injector/ExtensionsLoadUnpackedInjector.ts b/js/src/injector/ExtensionsLoadUnpackedInjector.ts index 4f61a4f..22013ca 100644 --- a/js/src/injector/ExtensionsLoadUnpackedInjector.ts +++ b/js/src/injector/ExtensionsLoadUnpackedInjector.ts @@ -1,31 +1,24 @@ -import fs from "node:fs"; -import os from "node:os"; -import path from "node:path"; -import { defaultModCDPExtensionPath, ExtensionInjector, type TargetInfo } from "./ExtensionInjector.js"; +import { + defaultModCDPExtensionPath, + ExtensionInjector, + prepareUnpackedExtension, + type TargetInfo, +} from "./ExtensionInjector.js"; export class ExtensionsLoadUnpackedInjector extends ExtensionInjector { private unpacked_extension_path: string | null = null; private cleanup: (() => Promise) | null = null; async prepare() { - const extension_path = this.options.injector_extension_path ?? defaultModCDPExtensionPath(); + const extension_path = + this.options.injector_extension_path ?? defaultModCDPExtensionPath(); if (this.unpacked_extension_path) { await super.prepare(); return; } - if (!extension_path.endsWith(".zip")) { - const unpacked_path = fs.mkdtempSync(path.join(os.tmpdir(), "modcdp-extension-")); - fs.cpSync(extension_path, unpacked_path, { recursive: true }); - this.unpacked_extension_path = extensionRoot(unpacked_path); - this.cleanup = async () => fs.rmSync(unpacked_path, { recursive: true, force: true }); - await super.prepare(); - return; - } - const { execFileSync } = await import("node:child_process"); - const unpacked_path = fs.mkdtempSync(path.join(os.tmpdir(), "modcdp-extension-")); - execFileSync("unzip", ["-q", extension_path, "-d", unpacked_path]); - this.unpacked_extension_path = extensionRoot(unpacked_path); - this.cleanup = async () => fs.rmSync(unpacked_path, { recursive: true, force: true }); + const prepared = await prepareUnpackedExtension(extension_path); + this.unpacked_extension_path = prepared.unpacked_extension_path; + this.cleanup = prepared.cleanup; await super.prepare(); } @@ -34,10 +27,17 @@ export class ExtensionsLoadUnpackedInjector extends ExtensionInjector { if (!extension_path) return null; let load_result: Record; try { - load_result = (await this.send("Extensions.loadUnpacked", { path: extension_path })) as Record; + load_result = (await this.send("Extensions.loadUnpacked", { + path: extension_path, + })) as Record; } catch (error) { - const load_error = error instanceof Error ? error : new Error(String(error)); - if (/Method not available|Method.*not.*found|wasn't found/i.test(load_error.message)) { + const load_error = + error instanceof Error ? error : new Error(String(error)); + if ( + /Method not available|Method.*not.*found|wasn't found/i.test( + load_error.message, + ) + ) { this.last_error = load_error; return null; } @@ -49,27 +49,48 @@ export class ExtensionsLoadUnpackedInjector extends ExtensionInjector { const extension_id = load_result.id || load_result.extensionId; if (typeof extension_id !== "string" || !extension_id) { - throw new Error(`Extensions.loadUnpacked returned no extension id (got ${JSON.stringify(load_result)})`); + throw new Error( + `Extensions.loadUnpacked returned no extension id (got ${JSON.stringify(load_result)})`, + ); } this.options.injector_extension_id = extension_id; - await this.wakeConfiguredExtension(); const sw_url_prefix = `chrome-extension://${extension_id}/`; - const deadline = Date.now() + (this.options.injector_service_worker_ready_timeout_ms ?? 60_000); + const deadline = + Date.now() + + (this.options.injector_service_worker_ready_timeout_ms ?? 60_000); while (Date.now() < deadline) { const target_infos = await this.targetInfos(); const target = target_infos.find( - (candidate) => candidate.type === "service_worker" && candidate.url.startsWith(sw_url_prefix), + (candidate) => + candidate.type === "service_worker" && + candidate.url.startsWith(sw_url_prefix), ) as TargetInfo | undefined; if (target) { - const probed = await this.probeTarget(target, this.options.injector_service_worker_probe_timeout_ms, { - allow_attach: true, - }); - if (probed) return { ...probed, source: "extensions_load_unpacked", extension_id }; + const probed = await this.probeTarget( + target, + this.options.injector_service_worker_probe_timeout_ms, + { + allow_attach: true, + }, + ); + if (probed) + return { + ...probed, + source: "extensions_load_unpacked", + extension_id, + }; } - await new Promise((resolve) => setTimeout(resolve, this.options.injector_service_worker_poll_interval_ms ?? 100)); + await new Promise((resolve) => + setTimeout( + resolve, + this.options.injector_service_worker_poll_interval_ms ?? 100, + ), + ); } - throw new Error(`Timed out waiting for service worker target for extension ${extension_id}.`); + throw new Error( + `Timed out waiting for service worker target for extension ${extension_id}.`, + ); } async close() { @@ -78,10 +99,3 @@ export class ExtensionsLoadUnpackedInjector extends ExtensionInjector { this.cleanup = null; } } - -function extensionRoot(unpacked_path: string) { - if (fs.existsSync(path.join(unpacked_path, "manifest.json"))) return unpacked_path; - const nested_path = path.join(unpacked_path, "extension"); - if (fs.existsSync(path.join(nested_path, "manifest.json"))) return nested_path; - return unpacked_path; -} diff --git a/js/src/injector/LocalBrowserLaunchExtensionInjector.ts b/js/src/injector/LocalBrowserLaunchExtensionInjector.ts index f407eed..4c4ca15 100644 --- a/js/src/injector/LocalBrowserLaunchExtensionInjector.ts +++ b/js/src/injector/LocalBrowserLaunchExtensionInjector.ts @@ -1,15 +1,10 @@ -import fs from "node:fs"; -import os from "node:os"; -import path from "node:path"; import type { BrowserLaunchOptions } from "../launcher/BrowserLauncher.js"; -import { defaultModCDPExtensionPath, ExtensionInjector } from "./ExtensionInjector.js"; - -function firstString(...values: unknown[]) { - for (const value of values) { - if (typeof value === "string" && value.trim()) return value.trim(); - } - return null; -} +import { + defaultModCDPExtensionPath, + extensionIdFromManifestKey, + ExtensionInjector, + prepareUnpackedExtension, +} from "./ExtensionInjector.js"; export class LocalBrowserLaunchExtensionInjector extends ExtensionInjector { private unpacked_extension_path: string | null = null; @@ -17,25 +12,15 @@ export class LocalBrowserLaunchExtensionInjector extends ExtensionInjector { private cleanup: (() => Promise) | null = null; async prepare() { - const extension_path = this.options.injector_extension_path ?? defaultModCDPExtensionPath(); + const extension_path = + this.options.injector_extension_path ?? defaultModCDPExtensionPath(); if (this.unpacked_extension_path) { await super.prepare(); return; } - if (!extension_path.endsWith(".zip")) { - const unpacked_path = fs.mkdtempSync(path.join(os.tmpdir(), "modcdp-extension-")); - fs.cpSync(extension_path, unpacked_path, { recursive: true }); - this.unpacked_extension_path = extensionRoot(unpacked_path); - this.cleanup = async () => fs.rmSync(unpacked_path, { recursive: true, force: true }); - await this.resolveExtensionId(); - await super.prepare(); - return; - } - const { execFileSync } = await import("node:child_process"); - const unpacked_path = fs.mkdtempSync(path.join(os.tmpdir(), "modcdp-extension-")); - execFileSync("unzip", ["-q", extension_path, "-d", unpacked_path]); - this.unpacked_extension_path = extensionRoot(unpacked_path); - this.cleanup = async () => fs.rmSync(unpacked_path, { recursive: true, force: true }); + const prepared = await prepareUnpackedExtension(extension_path); + this.unpacked_extension_path = prepared.unpacked_extension_path; + this.cleanup = prepared.cleanup; await this.resolveExtensionId(); await super.prepare(); } @@ -47,8 +32,7 @@ export class LocalBrowserLaunchExtensionInjector extends ExtensionInjector { } async inject() { - const timeout_ms = this.options.injector_service_worker_probe_timeout_ms ?? 10_000; - const discovered = await this.waitForReadyServiceWorker(timeout_ms, { + const discovered = await this.discoverReadyServiceWorker({ matched_only: this.options.injector_trust_service_worker_target, }); return discovered ? { ...discovered, source: "local_launch" } : null; @@ -62,30 +46,18 @@ export class LocalBrowserLaunchExtensionInjector extends ExtensionInjector { private async resolveExtensionId() { if (this.extension_id) return this.extension_id; - this.extension_id = firstString(this.options.injector_extension_id); + this.extension_id = + typeof this.options.injector_extension_id === "string" && + this.options.injector_extension_id.trim() + ? this.options.injector_extension_id.trim() + : null; if (!this.extension_id && this.unpacked_extension_path) { - this.extension_id = await extensionIdFromManifestKey(this.unpacked_extension_path); + this.extension_id = await extensionIdFromManifestKey( + this.unpacked_extension_path, + ); } - if (this.extension_id) this.options.injector_extension_id = this.extension_id; + if (this.extension_id) + this.options.injector_extension_id = this.extension_id; return this.extension_id; } } - -function extensionRoot(unpacked_path: string) { - if (fs.existsSync(path.join(unpacked_path, "manifest.json"))) return unpacked_path; - const nested_path = path.join(unpacked_path, "extension"); - if (fs.existsSync(path.join(nested_path, "manifest.json"))) return nested_path; - return unpacked_path; -} - -async function extensionIdFromManifestKey(extension_path: string) { - const [crypto, fs, path] = await Promise.all([import("node:crypto"), import("node:fs"), import("node:path")]); - const manifest_path = path.join(extension_path, "manifest.json"); - if (!fs.existsSync(manifest_path)) return null; - const manifest = JSON.parse(fs.readFileSync(manifest_path, "utf8")) as Record; - const key = firstString(manifest.key); - if (!key) return null; - const digest = crypto.createHash("sha256").update(Buffer.from(key, "base64")).digest().subarray(0, 16); - const alphabet = "abcdefghijklmnop"; - return [...digest].map((byte) => alphabet[byte >> 4] + alphabet[byte & 0x0f]).join(""); -} diff --git a/js/src/launcher/LocalBrowserLauncher.ts b/js/src/launcher/LocalBrowserLauncher.ts index b1a2708..b153114 100644 --- a/js/src/launcher/LocalBrowserLauncher.ts +++ b/js/src/launcher/LocalBrowserLauncher.ts @@ -121,7 +121,8 @@ function candidatePaths() { ), ] : ["/usr/bin/google-chrome-stable", "/usr/bin/google-chrome", "/opt/google/chrome/chrome"]; - return [process.env.CHROME_PATH, ...chromeForTestingCandidates(), ...canary, ...stock].filter( + const chromium = platform() === "linux" ? ["/usr/bin/chromium", "/usr/bin/chromium-browser"] : []; + return [process.env.CHROME_PATH, ...chromium, ...canary, ...chromeForTestingCandidates(), ...stock].filter( (candidate): candidate is string => Boolean(candidate), ); } diff --git a/js/src/proxy/proxy.ts b/js/src/proxy/proxy.ts index 3065ae1..46186c7 100644 --- a/js/src/proxy/proxy.ts +++ b/js/src/proxy/proxy.ts @@ -1242,8 +1242,6 @@ export function runProxyCli(args = process.argv.slice(2)) { injector_mode: String(argv["injector-mode"] || "auto") as InjectorOptions["injector_mode"], injector_extension_path, injector_extension_id: optionalStringArg(argv, "injector-extension-id"), - injector_wake_path: optionalStringArg(argv, "injector-wake-path"), - injector_wake_url: optionalStringArg(argv, "injector-wake-url"), injector_service_worker_url_includes: optionalStringListArg(argv, "injector-service-worker-url-includes"), injector_service_worker_url_suffixes: optionalStringListArg(argv, "injector-service-worker-url-suffixes"), injector_trust_service_worker_target: optionalBooleanArg(argv, "injector-trust-service-worker-target"), diff --git a/js/src/server/ModCDPServer.ts b/js/src/server/ModCDPServer.ts index 846bce3..ef5163a 100644 --- a/js/src/server/ModCDPServer.ts +++ b/js/src/server/ModCDPServer.ts @@ -7,6 +7,8 @@ // when Chrome refuses Extensions.loadUnpacked. import type { cdp } from "../types/generated/cdp.js"; +import { commands as nativeCommandSchemas, events as nativeEventSchemas } from "../types/generated/zod.js"; +import { normalizeModCDPPayloadSchema } from "../types/modcdp.js"; import type { CdpCommandMessage, CdpEventMessage, @@ -32,6 +34,13 @@ export const DEFAULT_NATS_BRIDGE_RECONNECT_INTERVAL_MS = 2_000; export const DEFAULT_NATS_BRIDGE_SUBJECT_PREFIX = "modcdp.default"; type MiddlewarePhase = "request" | "response" | "event"; +type ProtocolCommandSchema = { + params: { parse(value: unknown): ProtocolParams }; + result: { parse(value: unknown): ProtocolResult }; +}; +type ProtocolEventSchema = { + parse(value: unknown): ProtocolPayload; +}; type ModCDPGlobalScope = typeof globalThis & Record & { ModCDP?: { @@ -81,12 +90,38 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis const attachedDebuggees = new Set(); let runtime_types_promise: Promise | null = null; + function nativeCommandSchema(method: string) { + return (nativeCommandSchemas as Record)[method]; + } + + function nativeEventSchema(eventName: string) { + return (nativeEventSchemas as Record)[eventName]; + } + + function commandParamsSchema(method: string, command: ModCDPCustomCommandRegistration | null) { + return ( + (command?.params_schema as ProtocolCommandSchema["params"] | null) ?? nativeCommandSchema(method)?.params ?? null + ); + } + + function commandResultSchema(method: string, command: ModCDPCustomCommandRegistration | null) { + return ( + (command?.result_schema as ProtocolCommandSchema["result"] | null) ?? nativeCommandSchema(method)?.result ?? null + ); + } + + function eventPayloadSchema(eventName: string, event: ModCDPCustomEventRegistration | null) { + return (event?.event_schema as ProtocolEventSchema | null) ?? nativeEventSchema(eventName) ?? null; + } + async function publishEvent(eventName: string, payload: ProtocolPayload = {}, cdpSessionId: string | null = null) { payload = await ModCDPServer.runMiddleware("event", eventName, payload, { cdpSessionId, event: { name: eventName, payload }, }); if (payload === undefined) return { event: eventName, emitted: false, reason: "middleware_dropped" }; + const event = registryMatch(eventBindings, eventName); + payload = eventPayloadSchema(eventName, event)?.parse(payload) ?? payload; for (const listener of eventListeners) { try { @@ -1010,9 +1045,6 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis upstream_nats_subject_prefix: upstream.upstream_nats_subject_prefix ?? DEFAULT_NATS_BRIDGE_SUBJECT_PREFIX, }); } - if (upstream.upstream_mode === "reversews" && upstream.upstream_reversews_url) { - this.startReverseBridge(upstream.upstream_reversews_url); - } if (server_routes) this.routes = { ...defaultRoutes, ...server_routes }; else { this.routes = { ...defaultRoutes }; @@ -1040,14 +1072,20 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis }; } if (typeof handler !== "function") throw new Error(`Custom command ${name} was registered without a handler.`); - commandHandlers.set(name, { name, handler, params_schema, result_schema, expression }); + commandHandlers.set(name, { + name, + handler, + params_schema: normalizeModCDPPayloadSchema(params_schema), + result_schema: normalizeModCDPPayloadSchema(result_schema), + expression, + }); return { name, registered: true }; }, addCustomEvent({ name, event_schema = null }: ModCDPCustomEventRegistration) { name = normalizeModCDPName(name); if (!/^[^.]+\.[^.]+$/.test(name)) throw new Error("name must be in Domain.event form."); - eventBindings.set(name, { name, event_schema }); + eventBindings.set(name, { name, event_schema: normalizeModCDPPayloadSchema(event_schema) }); return { name, registered: true }; }, @@ -1122,14 +1160,16 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis params = middlewareParams as ProtocolParams; const command = registryMatch(commandHandlers, method); + params = commandParamsSchema(method, command)?.parse(params) ?? params; let result; if (command) { result = await command.handler(params, cdpSessionId, method); - return this.runMiddleware("response", method, result, { + result = await this.runMiddleware("response", method, result, { cdpSessionId, request: { ...request, params }, response: { result }, }); + return commandResultSchema(method, command)?.parse(result) ?? result; } let upstream = "chrome_debugger"; @@ -1162,11 +1202,12 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis else if (upstream === "chrome_debugger") result = await this.sendChromeDebugger(method, params); else throw new Error(`No ModCDP command registered for ${method}.`); - return this.runMiddleware("response", method, result, { + result = await this.runMiddleware("response", method, result, { cdpSessionId, request: { ...request, params }, response: { result }, }); + return commandResultSchema(method, null)?.parse(result) ?? result; }, attachToSession(cdpSessionId: string | null = null) { @@ -1189,6 +1230,7 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis async emit(eventName: string, payload: ProtocolPayload = {}, cdpSessionId: string | null = null) { const event = registryMatch(eventBindings, eventName); if (!event) return { event: eventName, emitted: false, reason: "event_not_registered" }; + payload = eventPayloadSchema(eventName, event)?.parse(payload) ?? payload; const customBinding = globalScope[CUSTOM_EVENT_BINDING_NAME]; if ( typeof customBinding !== "function" && diff --git a/js/src/transport/ReverseWebSocketUpstreamTransport.ts b/js/src/transport/ReverseWebSocketUpstreamTransport.ts index 6c2b379..1425a52 100644 --- a/js/src/transport/ReverseWebSocketUpstreamTransport.ts +++ b/js/src/transport/ReverseWebSocketUpstreamTransport.ts @@ -51,7 +51,7 @@ export class ReverseWebSocketUpstreamTransport extends UpstreamTransport { } getInjectorConfig() { - return { upstream_reversews_url: this.url }; + return {}; } private setBind(bind: string) { diff --git a/js/src/types/modcdp.ts b/js/src/types/modcdp.ts index 5cb398a..b5602dd 100644 --- a/js/src/types/modcdp.ts +++ b/js/src/types/modcdp.ts @@ -153,7 +153,6 @@ export const ModCDPUpstreamOptionsSchema = z upstream_nats_subject_prefix: z.string().nullable().optional(), upstream_nats_wait_timeout_ms: z.number().positive().optional(), upstream_reversews_bind: z.string().nullable().optional(), - upstream_reversews_url: z.string().nullable().optional(), upstream_reversews_wait_timeout_ms: z.number().positive().optional(), upstream_nativemessaging_manifest: z.string().nullable().optional(), upstream_nativemessaging_manifests: z.array(z.string()).nullable().optional(), diff --git a/js/test/ModCDPClient_protocol_validation.test.ts b/js/test/ModCDPClient_protocol_validation.test.ts new file mode 100644 index 0000000..e8de0b7 --- /dev/null +++ b/js/test/ModCDPClient_protocol_validation.test.ts @@ -0,0 +1,99 @@ +import assert from "node:assert/strict"; +import { test } from "vitest"; +import { z } from "zod"; + +import { ModCDPClient, type ModCDPClientInstance } from "../src/client/ModCDPClient.js"; +import type { cdp } from "../src/types/generated/cdp.js"; + +test("protocol validation covers native methods, native events, custom methods, custom events, and native overrides", async () => { + type CustomClient = ModCDPClientInstance< + { + "Custom.echo": { params: { text: string }; result: { ok: boolean } }; + "Target.getTargets": { + params: cdp.types.ts.Target.GetTargetsParams; + result: cdp.types.ts.Target.GetTargetsResult & { targetInfos: Array }; + }; + }, + { "Custom.ready": { ok: boolean } } + >; + + const client = new ModCDPClient() as CustomClient; + + const runtimeParams: cdp.types.ts.Runtime.EvaluateParams = { expression: "1 + 1", returnByValue: true }; + const runtimeResult: cdp.types.ts.Runtime.EvaluateResult = { + result: { type: "number", value: 2, description: "2" }, + }; + const nativeEvent: cdp.types.ts.Target.TargetCreatedEvent = { + targetInfo: { + targetId: "target-1", + type: "page", + title: "Example", + url: "https://example.com", + attached: false, + canAccessOpener: false, + }, + }; + const customParams: Parameters[0] = { text: "ok" }; + const customResult: Awaited> = { ok: true }; + + if (false) { + // @ts-expect-error Runtime.evaluate params require expression. + const badRuntimeParams: cdp.types.ts.Runtime.EvaluateParams = {}; + void badRuntimeParams; + // @ts-expect-error Target.targetCreated targetInfo.targetId is a string. + const badNativeEvent: cdp.types.ts.Target.TargetCreatedEvent = { targetInfo: { ...nativeEvent.targetInfo, targetId: 1 } }; + void badNativeEvent; + // @ts-expect-error Custom.echo requires text. + client.Custom.echo({ id: "wrong" }); + // @ts-expect-error Custom.echo returns ok as boolean. + const badCustomResult: Awaited> = { ok: "yes" }; + void badCustomResult; + await client.Mod.addMiddleware({ name: client.Target.getTargets, phase: client.RESPONSE, expression: "async (value, next) => next(value)" }); + } + + assert.deepEqual(client.command_params_schemas.get("Runtime.evaluate")?.parse(runtimeParams), runtimeParams); + assert.deepEqual(client.command_result_schemas.get("Runtime.evaluate")?.parse(runtimeResult), runtimeResult); + assert.deepEqual(client.event_schemas.get("Target.targetCreated")?.parse(nativeEvent), nativeEvent); + assert.throws(() => client.command_params_schemas.get("Runtime.evaluate")?.parse({})); + assert.throws(() => client.command_result_schemas.get("Runtime.evaluate")?.parse({})); + assert.throws(() => client.event_schemas.get("Target.targetCreated")?.parse({})); + + await client.Mod.addCustomCommand("Custom.echo", { + params_schema: z.object({ text: z.string() }), + result_schema: z.object({ ok: z.boolean() }), + }); + await client.Mod.addCustomEvent("Custom.ready", { event_schema: z.object({ ok: z.boolean() }) }); + + assert.deepEqual(client.command_params_schemas.get("Custom.echo")?.parse(customParams), customParams); + assert.deepEqual(client.command_result_schemas.get("Custom.echo")?.parse(customResult), customResult); + assert.deepEqual(client.event_schemas.get("Custom.ready")?.parse({ ok: true }), { ok: true }); + assert.throws(() => client.command_params_schemas.get("Custom.echo")?.parse({ text: 1 })); + assert.throws(() => client.command_result_schemas.get("Custom.echo")?.parse({ ok: "yes" })); + assert.throws(() => client.event_schemas.get("Custom.ready")?.parse({ ok: "yes" })); + + await client.Mod.addCustomCommand({ + name: client.Target.getTargets, + result_schema: z.object({ + targetInfos: z.array( + z.object({ + targetId: z.string(), + type: z.string(), + title: z.string(), + url: z.string(), + attached: z.boolean(), + canAccessOpener: z.boolean(), + tabId: z.number().optional(), + }), + ), + }), + }); + await client.Mod.addCustomEvent({ name: client.Target.targetCreated }); + + const extendedTargets: Awaited> = { + targetInfos: [{ ...nativeEvent.targetInfo, tabId: 7 }], + }; + assert.deepEqual(client.command_result_schemas.get("Target.getTargets")?.parse(extendedTargets), extendedTargets); + assert.deepEqual(client.event_schemas.get("Target.targetCreated")?.parse({ targetInfo: { ...nativeEvent.targetInfo, tabId: 7 } }), { + targetInfo: { ...nativeEvent.targetInfo, tabId: 7 }, + }); +}); diff --git a/js/test/test.AutoSessionRouter.ts b/js/test/test.AutoSessionRouter.ts index 42921be..7b7693d 100644 --- a/js/test/test.AutoSessionRouter.ts +++ b/js/test/test.AutoSessionRouter.ts @@ -66,7 +66,6 @@ test("AutoSessionRouter bounds detached session guards and clears them when a se test("AutoSessionRouter tracks real target sessions and execution contexts", async () => { const chrome = await new LocalBrowserLauncher({ headless: true, - sandbox: process.platform !== "linux", }).launch(); const ws = new WebSocket(chrome.cdp_url!); await once(ws, "open"); diff --git a/js/test/test.BorrowedExtensionInjector.ts b/js/test/test.BorrowedExtensionInjector.ts index 00291b2..c4865b3 100644 --- a/js/test/test.BorrowedExtensionInjector.ts +++ b/js/test/test.BorrowedExtensionInjector.ts @@ -3,21 +3,28 @@ import path from "node:path"; import { fileURLToPath } from "node:url"; import { test } from "vitest"; -import { LocalBrowserLauncher } from "../src/launcher/LocalBrowserLauncher.js"; import { ModCDPClient } from "../src/client/ModCDPClient.js"; const HERE = path.dirname(fileURLToPath(import.meta.url)); const EXTENSION_PATH = path.resolve(HERE, "..", "..", "dist", "extension"); test("BorrowedExtensionInjector bootstraps ModCDP inside a live extension service worker", async () => { - const chrome = await new LocalBrowserLauncher({ - headless: true, - sandbox: process.platform !== "linux", - extra_args: [`--load-extension=${EXTENSION_PATH}`], - }).launch(); + const owner = new ModCDPClient({ + launcher: { + launcher_mode: "local", + launcher_options: { headless: true }, + }, + upstream: { upstream_mode: "ws" }, + injector: { + injector_mode: "auto", + injector_extension_path: EXTENSION_PATH, + injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], + injector_trust_service_worker_target: true, + }, + }); const cdp = new ModCDPClient({ launcher: { launcher_mode: "remote" }, - upstream: { upstream_mode: "ws", upstream_cdp_url: chrome.cdp_url }, + upstream: { upstream_mode: "ws" }, injector: { injector_mode: "borrow", injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], @@ -26,13 +33,17 @@ test("BorrowedExtensionInjector bootstraps ModCDP inside a live extension servic }); try { + await owner.connect(); + cdp.upstream.upstream_cdp_url = owner.cdp_url; await cdp.connect(); assert.equal(cdp.connect_timing?.injector_source, "borrowed"); assert.equal(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf"); - const target_infos = ((await cdp.send("Target.getTargets")) as { targetInfos?: unknown[] }).targetInfos ?? []; - assert.ok(target_infos.length > 0); + assert.equal( + await cdp.Mod.evaluate({ expression: "chrome.runtime.getURL('modcdp/service_worker.js')" }), + "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js", + ); } finally { await cdp.close(); - await chrome.close(); + await owner.close(); } }, 60_000); diff --git a/js/test/test.DiscoveredExtensionInjector.ts b/js/test/test.DiscoveredExtensionInjector.ts index c47d861..9c864e2 100644 --- a/js/test/test.DiscoveredExtensionInjector.ts +++ b/js/test/test.DiscoveredExtensionInjector.ts @@ -1,105 +1,49 @@ import assert from "node:assert/strict"; -import { cp, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; -import { tmpdir } from "node:os"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { test } from "vitest"; -import { LocalBrowserLauncher } from "../src/launcher/LocalBrowserLauncher.js"; import { ModCDPClient } from "../src/client/ModCDPClient.js"; const HERE = path.dirname(fileURLToPath(import.meta.url)); const EXTENSION_PATH = path.resolve(HERE, "..", "..", "dist", "extension"); -const CUSTOM_EXTENSION_ID = "hhklgmbgnbeghnjidampacgmgnhelifg"; -const CUSTOM_EXTENSION_PUBLIC_KEY = - "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzG1LUbtH0aHMKjTAUeT0saY8xfnRNENctFJme3C1qnsqT7PAXMxJC4nT7tBZy2gEGRirBb3zIZ3OyAu9a0QR8lTLupDp4qHWOhQ7dl9ZjxjQdYa4Gby0xuXLdQrJIxDbmuv+UVJvYa8vRTwQB8koygbzDDDP5/YiB6mc0hbh8XBb82Ossy7T280k8280o/rS0CXdioUraCHj58PDhfxbs18TBcYfOjuRqua9J2oddxobtGehSD0gDtbvn2IWDtRajOlgZZyuS1vLoSR7C1ulFzpRSYPEMhI2x+wphut7E3QImyJ577YeULVGpt988FcixOou7udjx3/IUWjpq8046wIDAQAB"; test("DiscoveredExtensionInjector attaches to an already-loaded real ModCDP extension", async () => { - const chrome = await new LocalBrowserLauncher({ - headless: true, - sandbox: process.platform !== "linux", - extra_args: [`--load-extension=${EXTENSION_PATH}`], - }).launch(); - const cdp = new ModCDPClient({ - launcher: { launcher_mode: "remote" }, - upstream: { upstream_mode: "ws", upstream_cdp_url: chrome.cdp_url }, + const owner = new ModCDPClient({ + launcher: { + launcher_mode: "local", + launcher_options: { headless: true }, + }, + upstream: { upstream_mode: "ws" }, injector: { - injector_mode: "discover", + injector_mode: "auto", + injector_extension_path: EXTENSION_PATH, injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], injector_trust_service_worker_target: true, }, }); - - try { - await cdp.connect(); - assert.equal(cdp.connect_timing?.injector_source, "discovered"); - assert.equal(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf"); - const service_worker_url = await cdp.Mod.evaluate({ - expression: "chrome.runtime.getURL('modcdp/service_worker.js')", - }); - assert.match( - String(service_worker_url), - /^chrome-extension:\/\/mdedooklbnfejodmnhmkdpkaedafkehf\/modcdp\/service_worker\.js$/, - ); - } finally { - await cdp.close(); - await chrome.close(); - } -}, 60_000); - -test("DiscoveredExtensionInjector selects the configured extension when multiple ModCDP workers exist", async () => { - const custom_extension_path = await mkdtemp(path.join(tmpdir(), "modcdp-custom-extension-")); - await cp(EXTENSION_PATH, custom_extension_path, { recursive: true }); - const manifest_path = path.join(custom_extension_path, "manifest.json"); - const manifest = JSON.parse(await readFile(manifest_path, "utf8")) as Record; - manifest.key = CUSTOM_EXTENSION_PUBLIC_KEY; - manifest.name = "ModCDP Bridge Custom Test"; - await writeFile(manifest_path, `${JSON.stringify(manifest, null, 2)}\n`); - - const chrome = await new LocalBrowserLauncher({ - headless: true, - sandbox: process.platform !== "linux", - extra_args: [`--load-extension=${EXTENSION_PATH},${custom_extension_path}`], - }).launch(); const cdp = new ModCDPClient({ launcher: { launcher_mode: "remote" }, - upstream: { upstream_mode: "ws", upstream_cdp_url: chrome.cdp_url }, + upstream: { upstream_mode: "ws" }, injector: { injector_mode: "discover", - injector_extension_id: CUSTOM_EXTENSION_ID, injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], injector_trust_service_worker_target: true, - injector_require_service_worker_target: true, }, }); try { + await owner.connect(); + cdp.upstream.upstream_cdp_url = owner.cdp_url; await cdp.connect(); assert.equal(cdp.connect_timing?.injector_source, "discovered"); - assert.equal(cdp.extension_id, CUSTOM_EXTENSION_ID); - assert.equal(await cdp.Mod.evaluate({ expression: "chrome.runtime.id" }), CUSTOM_EXTENSION_ID); - - const targets = (await cdp.sendRaw("Target.getTargets")) as { - targetInfos: { type?: string; url?: string }[]; - }; - const modcdp_workers = targets.targetInfos.filter( - (target) => target.type === "service_worker" && target.url?.endsWith("/modcdp/service_worker.js"), - ); - assert.equal( - modcdp_workers.some( - (target) => target.url === `chrome-extension://${CUSTOM_EXTENSION_ID}/modcdp/service_worker.js`, - ), - true, - ); + assert.equal(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf"); assert.equal( - modcdp_workers.some( - (target) => target.url === "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js", - ), - true, + await cdp.Mod.evaluate({ expression: "chrome.runtime.getURL('modcdp/service_worker.js')" }), + "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js", ); } finally { await cdp.close(); - await chrome.close(); - await rm(custom_extension_path, { recursive: true, force: true }); + await owner.close(); } }, 60_000); diff --git a/js/test/test.ExtensionInjector.ts b/js/test/test.ExtensionInjector.ts index ad22de7..85f3bb8 100644 --- a/js/test/test.ExtensionInjector.ts +++ b/js/test/test.ExtensionInjector.ts @@ -1,148 +1,14 @@ import assert from "node:assert/strict"; -import path from "node:path"; -import { fileURLToPath } from "node:url"; import { test } from "vitest"; -import { ExtensionInjector, type ExtensionInjectionResult } from "../src/injector/ExtensionInjector.js"; -import { LocalBrowserLauncher } from "../src/launcher/LocalBrowserLauncher.js"; -import { CdpSocket } from "./helpers.BrowserLauncher.js"; - -const HERE = path.dirname(fileURLToPath(import.meta.url)); -const EXTENSION_PATH = path.resolve(HERE, "..", "..", "dist", "extension"); +import { ExtensionInjector } from "../src/injector/ExtensionInjector.js"; class ProbeExtensionInjector extends ExtensionInjector { - async inject(): Promise { - return await this.waitForReadyServiceWorker(this.options.injector_service_worker_ready_timeout_ms ?? 60_000, { - matched_only: true, - }); - } - matches(target: { type?: string; url?: string }) { return this.serviceWorkerTargetMatches(target); } - - async sendTimed(method: string, params: Record, session_id: string | null, timeout_ms: number) { - return await this.sendWithTimeout(method, params, session_id, timeout_ms); - } - - async wake() { - return await this.wakeConfiguredExtension(); - } } -test("ExtensionInjector probes a real extension service worker with shared base config", async () => { - const chrome = await new LocalBrowserLauncher({ - headless: true, - sandbox: process.platform !== "linux", - extra_args: [`--load-extension=${EXTENSION_PATH}`], - }).launch(); - const cdp = await CdpSocket.connect(chrome.cdp_url!); - const injector = new ProbeExtensionInjector({ - send: (method, params = {}, session_id = null) => - cdp.send(method, params as Record, session_id ?? undefined), - attachToTarget: async (target_id) => { - const attached = await cdp.send("Target.attachToTarget", { targetId: target_id, flatten: true }); - return typeof attached.sessionId === "string" ? attached.sessionId : null; - }, - injector_extension_id: "mdedooklbnfejodmnhmkdpkaedafkehf", - injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], - injector_trust_service_worker_target: true, - }); - - try { - assert.deepEqual(injector.getLauncherConfig(), {}); - assert.deepEqual(injector.getTransportConfig(), { injector_extension_id: "mdedooklbnfejodmnhmkdpkaedafkehf" }); - const result = await injector.inject(); - assert.equal(result?.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf"); - assert.equal(result?.url?.endsWith("/modcdp/service_worker.js"), true); - } finally { - await cdp.close(); - await injector.close(); - await chrome.close(); - } -}, 60_000); - -test("ExtensionInjector keeps the ModCDP service worker alive through offscreen keepalive", async () => { - const chrome = await new LocalBrowserLauncher({ - headless: true, - sandbox: process.platform !== "linux", - extra_args: [`--load-extension=${EXTENSION_PATH}`], - }).launch(); - const cdp = await CdpSocket.connect(chrome.cdp_url!); - const injector = new ProbeExtensionInjector({ - send: (method, params = {}, session_id = null) => - cdp.send(method, params as Record, session_id ?? undefined), - attachToTarget: async (target_id) => { - const attached = await cdp.send("Target.attachToTarget", { targetId: target_id, flatten: true }); - return typeof attached.sessionId === "string" ? attached.sessionId : null; - }, - injector_extension_id: "mdedooklbnfejodmnhmkdpkaedafkehf", - injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], - injector_trust_service_worker_target: true, - }); - - try { - const result = await injector.inject(); - assert.equal(result?.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf"); - const session_id = result?.session_id; - assert.equal(typeof session_id, "string"); - - let contexts: { type?: string; url?: string }[] = []; - for (let attempt = 0; attempt < 50; attempt++) { - const evaluated = await cdp.send( - "Runtime.evaluate", - { - expression: - "chrome.runtime.getContexts({}).then((contexts) => contexts.map((context) => ({ type: context.contextType, url: context.documentUrl || context.origin || '' })))", - awaitPromise: true, - returnByValue: true, - }, - session_id, - ); - contexts = (evaluated.result as { value?: { type?: string; url?: string }[] }).value ?? []; - if ( - contexts.some( - (context) => - context.type === "OFFSCREEN_DOCUMENT" && - context.url === "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/offscreen/keepalive.html", - ) - ) { - break; - } - await new Promise((resolve) => setTimeout(resolve, 100)); - } - assert.equal( - contexts.some( - (context) => - context.type === "OFFSCREEN_DOCUMENT" && - context.url === "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/offscreen/keepalive.html", - ), - true, - ); - - await new Promise((resolve) => setTimeout(resolve, 3_000)); - const targets = (await cdp.send("Target.getTargets")) as { targetInfos?: { type?: string; url?: string }[] }; - assert.equal( - targets.targetInfos?.some( - (target) => - target.type === "service_worker" && - target.url === "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js", - ), - true, - ); - const version = await cdp.send( - "Runtime.evaluate", - { expression: "globalThis.ModCDP?.__ModCDPServerVersion", returnByValue: true }, - session_id, - ); - assert.equal((version.result as { value?: unknown }).value, 2); - } finally { - await cdp.close(); - await injector.close(); - await chrome.close(); - } -}, 60_000); - test("ExtensionInjector owns shared injector config", async () => { const injector = new ProbeExtensionInjector({ injector_extension_id: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", @@ -171,71 +37,6 @@ test("ExtensionInjector owns shared injector config", async () => { } }); -test("ExtensionInjector sendWithTimeout enforces cdp send timeout", async () => { - const chrome = await new LocalBrowserLauncher({ - headless: true, - sandbox: process.platform !== "linux", - }).launch(); - const cdp = await CdpSocket.connect(chrome.cdp_url!); - let target_id: string | null = null; - const injector = new ProbeExtensionInjector({ - send: (method, params = {}, session_id = null) => - cdp.send(method, params as Record, session_id ?? undefined), - }); - - try { - const created = await cdp.send("Target.createTarget", { url: "about:blank#modcdp-timeout" }); - target_id = created.targetId as string; - const attached = await cdp.send("Target.attachToTarget", { targetId: target_id, flatten: true }); - const session_id = attached.sessionId as string; - await cdp.send("Runtime.enable", {}, session_id); - await assert.rejects( - () => - injector.sendTimed( - "Runtime.evaluate", - { expression: "new Promise(() => {})", awaitPromise: true }, - session_id, - 5, - ), - /Runtime\.evaluate timed out after 5ms/, - ); - } finally { - if (target_id) await cdp.send("Target.closeTarget", { targetId: target_id }).catch(() => ({})); - await injector.close(); - await cdp.close(); - await chrome.close(); - } -}); - -test("ExtensionInjector wakes configured extension with a hidden background target", async () => { - const chrome = await new LocalBrowserLauncher({ - headless: true, - sandbox: process.platform !== "linux", - extra_args: [`--load-extension=${EXTENSION_PATH}`], - }).launch(); - const cdp = await CdpSocket.connect(chrome.cdp_url!); - const injector = new ProbeExtensionInjector({ - injector_extension_id: "mdedooklbnfejodmnhmkdpkaedafkehf", - send: (method, params = {}, session_id = null) => - cdp.send(method, params as Record, session_id ?? undefined), - }); - - try { - assert.equal(await injector.wake(), true); - const targets = (await cdp.send("Target.getTargets")) as { targetInfos?: { url?: string }[] }; - assert.equal( - targets.targetInfos?.some( - (target) => target.url === "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/wake.html", - ), - true, - ); - } finally { - await injector.close(); - await cdp.close(); - await chrome.close(); - } -}); - test("ExtensionInjector base inject reports the subclass name", async () => { await assert.rejects(() => new ExtensionInjector().inject(), /ExtensionInjector\.inject is not implemented/); }); diff --git a/js/test/test.ExtensionsLoadUnpackedInjector.ts b/js/test/test.ExtensionsLoadUnpackedInjector.ts index a514045..0a74207 100644 --- a/js/test/test.ExtensionsLoadUnpackedInjector.ts +++ b/js/test/test.ExtensionsLoadUnpackedInjector.ts @@ -1,29 +1,25 @@ import assert from "node:assert/strict"; +import { existsSync } from "node:fs"; +import path from "node:path"; import { test } from "vitest"; import { ExtensionsLoadUnpackedInjector } from "../src/injector/ExtensionsLoadUnpackedInjector.js"; -import { LocalBrowserLauncher } from "../src/launcher/LocalBrowserLauncher.js"; -import { CdpSocket } from "./helpers.BrowserLauncher.js"; -test("ExtensionsLoadUnpackedInjector exercises the real CDP loadUnpacked path", async () => { - const chrome = await new LocalBrowserLauncher({ - headless: true, - sandbox: process.platform !== "linux", - }).launch(); - const cdp = await CdpSocket.connect(chrome.cdp_url!); - const injector = new ExtensionsLoadUnpackedInjector({ - send: (method, params = {}, session_id = null) => - cdp.send(method, params as Record, session_id ?? undefined), - }); +test("ExtensionsLoadUnpackedInjector prepares the default packaged extension zip", async () => { + const injector = new ExtensionsLoadUnpackedInjector(); try { await injector.prepare(); - const result = await injector.inject(); - assert.equal(result, null); - assert.match(injector.last_error?.message ?? "", /Method not available|Method.*not.*found|wasn't found/i); + const unpacked_extension_path = ( + injector as unknown as { unpacked_extension_path?: string | null } + ).unpacked_extension_path; + assert.equal(typeof unpacked_extension_path, "string"); + assert.match(unpacked_extension_path!, /modcdp-extension-/); + assert.equal( + existsSync(path.join(unpacked_extension_path!, "manifest.json")), + true, + ); } finally { - await cdp.close(); await injector.close(); - await chrome.close(); } -}, 60_000); +}); diff --git a/js/test/test.LocalBrowserLaunchExtensionInjector.ts b/js/test/test.LocalBrowserLaunchExtensionInjector.ts index d19d448..875dd9a 100644 --- a/js/test/test.LocalBrowserLaunchExtensionInjector.ts +++ b/js/test/test.LocalBrowserLaunchExtensionInjector.ts @@ -1,76 +1,148 @@ import assert from "node:assert/strict"; +import { existsSync, mkdtempSync, rmSync, writeFileSync } from "node:fs"; +import os from "node:os"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { test } from "vitest"; import { DEFAULT_MODCDP_EXTENSION_ID } from "../src/injector/ExtensionInjector.js"; import { LocalBrowserLaunchExtensionInjector } from "../src/injector/LocalBrowserLaunchExtensionInjector.js"; -import { ModCDPClient } from "../src/client/ModCDPClient.js"; const HERE = path.dirname(fileURLToPath(import.meta.url)); const EXTENSION_PATH = path.resolve(HERE, "..", "..", "dist", "extension"); -test("LocalBrowserLaunchExtensionInjector loads the real extension during local launch", async () => { - const cdp = new ModCDPClient({ - launcher: { - launcher_mode: "local", - launcher_options: { - headless: process.platform === "linux" && !process.env.DISPLAY, - sandbox: process.platform !== "linux", - }, - }, - upstream: { upstream_mode: "ws" }, - injector: { - injector_mode: "inject", - injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], - injector_trust_service_worker_target: true, - injector_service_worker_probe_timeout_ms: 30_000, - }, - client: { - client_cdp_send_timeout_ms: 30_000, - }, +function crc32(data: Buffer) { + let crc = 0xffffffff; + for (const byte of data) { + crc ^= byte; + for (let bit = 0; bit < 8; bit++) + crc = (crc >>> 1) ^ (0xedb88320 & -(crc & 1)); + } + return (crc ^ 0xffffffff) >>> 0; +} + +function storedZipEntry(name: string, data: Buffer) { + const name_buffer = Buffer.from(name); + const checksum = crc32(data); + const local = Buffer.alloc(30); + local.writeUInt32LE(0x04034b50, 0); + local.writeUInt16LE(20, 4); + local.writeUInt32LE(checksum, 14); + local.writeUInt32LE(data.length, 18); + local.writeUInt32LE(data.length, 22); + local.writeUInt16LE(name_buffer.length, 26); + const central = Buffer.alloc(46); + central.writeUInt32LE(0x02014b50, 0); + central.writeUInt16LE(20, 4); + central.writeUInt16LE(20, 6); + central.writeUInt32LE(checksum, 16); + central.writeUInt32LE(data.length, 20); + central.writeUInt32LE(data.length, 24); + central.writeUInt16LE(name_buffer.length, 28); + const central_offset = local.length + name_buffer.length + data.length; + const end = Buffer.alloc(22); + end.writeUInt32LE(0x06054b50, 0); + end.writeUInt16LE(1, 8); + end.writeUInt16LE(1, 10); + end.writeUInt32LE(central.length + name_buffer.length, 12); + end.writeUInt32LE(central_offset, 16); + return Buffer.concat([local, name_buffer, data, central, name_buffer, end]); +} + +test("LocalBrowserLaunchExtensionInjector rejects zip entries outside extraction directory", async () => { + const temp_dir = mkdtempSync(path.join(os.tmpdir(), "modcdp-bad-zip-")); + const zip_path = path.join(temp_dir, "extension.zip"); + writeFileSync(zip_path, storedZipEntry("../evil.txt", Buffer.from("evil"))); + const injector = new LocalBrowserLaunchExtensionInjector({ + injector_extension_path: zip_path, }); try { - await cdp.connect(); - assert.equal(cdp.connect_timing?.injector_source, "local_launch"); - assert.equal(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf"); - assert.match(cdp.ext_session_id ?? "", /^.+$/); - const service_worker_url = await cdp.Mod.evaluate({ - expression: "chrome.runtime.getURL('modcdp/service_worker.js')", - }); - assert.match( - String(service_worker_url), - /^chrome-extension:\/\/mdedooklbnfejodmnhmkdpkaedafkehf\/modcdp\/service_worker\.js$/, + await assert.rejects( + () => injector.prepare(), + /escapes extension extraction directory/, ); + assert.equal(existsSync(path.join(temp_dir, "evil.txt")), false); } finally { - await cdp.close(); + await injector.close(); + rmSync(temp_dir, { recursive: true, force: true }); } -}, 60_000); +}); -test("LocalBrowserLaunchExtensionInjector prepares launcher config", async () => { - const injector = new LocalBrowserLaunchExtensionInjector({ injector_extension_path: EXTENSION_PATH }); +test("LocalBrowserLaunchExtensionInjector prepares an unpacked extension directory for --load-extension", async () => { + const injector = new LocalBrowserLaunchExtensionInjector({ + injector_extension_path: EXTENSION_PATH, + }); try { await injector.prepare(); - const extra_args = injector.getLauncherConfig().extra_args ?? []; - assert.equal(extra_args.length, 1); - assert.match(extra_args[0], /^--load-extension=/); - assert.equal(injector.options.injector_extension_id, DEFAULT_MODCDP_EXTENSION_ID); + const unpacked_extension_path = ( + injector as unknown as { unpacked_extension_path?: string | null } + ).unpacked_extension_path; + assert.equal(typeof unpacked_extension_path, "string"); + assert.notEqual(unpacked_extension_path, EXTENSION_PATH); + assert.equal( + existsSync(path.join(unpacked_extension_path!, "manifest.json")), + true, + ); + assert.deepEqual(injector.getLauncherConfig(), { + extra_args: [`--load-extension=${unpacked_extension_path}`], + }); + assert.equal( + injector.options.injector_extension_id, + DEFAULT_MODCDP_EXTENSION_ID, + ); } finally { await injector.close(); } }); -test("LocalBrowserLaunchExtensionInjector falls back to the default extension zip", async () => { +test("LocalBrowserLaunchExtensionInjector prepares the default extension zip for --load-extension", async () => { const injector = new LocalBrowserLaunchExtensionInjector(); try { await injector.prepare(); - const extra_args = injector.getLauncherConfig().extra_args ?? []; - assert.equal(extra_args.length, 1); - assert.match(extra_args[0], /^--load-extension=.*modcdp-extension-/); - assert.equal(injector.options.injector_extension_id, DEFAULT_MODCDP_EXTENSION_ID); + const unpacked_extension_path = ( + injector as unknown as { unpacked_extension_path?: string | null } + ).unpacked_extension_path; + assert.equal(typeof unpacked_extension_path, "string"); + assert.match(unpacked_extension_path!, /modcdp-extension-/); + assert.equal( + existsSync(path.join(unpacked_extension_path!, "manifest.json")), + true, + ); + assert.deepEqual(injector.getLauncherConfig(), { + extra_args: [`--load-extension=${unpacked_extension_path}`], + }); + assert.equal( + injector.options.injector_extension_id, + DEFAULT_MODCDP_EXTENSION_ID, + ); + } finally { + await injector.close(); + } +}); + +test("LocalBrowserLaunchExtensionInjector returns immediately when the launched extension target is absent", async () => { + const methods: string[] = []; + const injector = new LocalBrowserLaunchExtensionInjector({ + injector_extension_path: EXTENSION_PATH, + injector_trust_service_worker_target: true, + send: async (method) => { + methods.push(method); + if (method === "Target.getTargets") return { targetInfos: [] }; + throw new Error(`unexpected ${method}`); + }, + }); + + try { + await injector.prepare(); + const started_at = performance.now(); + const result = await injector.inject(); + const elapsed_ms = performance.now() - started_at; + assert.equal(result, null); + assert.deepEqual(methods, ["Target.getTargets"]); + assert.equal(elapsed_ms < 200, true, `inject() took ${elapsed_ms}ms`); } finally { await injector.close(); } diff --git a/js/test/test.LocalBrowserLauncher.ts b/js/test/test.LocalBrowserLauncher.ts index a644925..054cec8 100644 --- a/js/test/test.LocalBrowserLauncher.ts +++ b/js/test/test.LocalBrowserLauncher.ts @@ -27,7 +27,6 @@ describe("LocalBrowserLauncher", () => { const port = await LocalBrowserLauncher.freePort(); const chrome = await new LocalBrowserLauncher({ headless: true, - sandbox: process.platform !== "linux", chrome_ready_timeout_ms: 45_000, chrome_ready_poll_interval_ms: 50, }).launch({ @@ -82,7 +81,6 @@ describe("LocalBrowserLauncher", () => { async () => { const chrome = await new LocalBrowserLauncher().launch({ headless: true, - sandbox: process.platform !== "linux", remote_debugging: "pipe", chrome_ready_timeout_ms: 45_000, }); @@ -115,7 +113,6 @@ describe("LocalBrowserLauncher", () => { async () => { const chrome = await new LocalBrowserLauncher().launch({ headless: true, - sandbox: process.platform !== "linux", remote_debugging: "pipe", loopback_cdp: true, chrome_ready_timeout_ms: 45_000, @@ -142,7 +139,6 @@ describe("LocalBrowserLauncher", () => { const userDataDir = await mkdtemp(path.join(tmpdir(), "modcdp-local-profile-")); const chrome = await new LocalBrowserLauncher({ headless: true, - sandbox: process.platform !== "linux", chrome_ready_timeout_ms: 45_000, }).launch({ user_data_dir: userDataDir, diff --git a/js/test/test.ModCDPClient.ts b/js/test/test.ModCDPClient.ts index 69f3752..83685a4 100644 --- a/js/test/test.ModCDPClient.ts +++ b/js/test/test.ModCDPClient.ts @@ -1,8 +1,10 @@ import assert from "node:assert/strict"; -import { existsSync } from "node:fs"; +import { existsSync, readdirSync, statSync } from "node:fs"; +import { homedir, platform } from "node:os"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { test } from "vitest"; +import { z } from "zod"; import { LocalBrowserLauncher } from "../src/launcher/LocalBrowserLauncher.js"; import { ModCDPClient } from "../src/client/ModCDPClient.js"; @@ -10,6 +12,7 @@ import { CdpSocket } from "./helpers.BrowserLauncher.js"; const HERE = path.dirname(fileURLToPath(import.meta.url)); const EXTENSION_PATH = path.resolve(HERE, "..", "..", "dist", "extension"); +const REVERSEWS_TEST_BROWSER_PATH = reversewsTestBrowserPath(); function delay(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); @@ -69,9 +72,17 @@ test("ModCDPClient normalizes nested config owners", () => { assert.equal(cdp._launcherOptions().user_data_dir, "/tmp/profile"); assert.equal(cdp.upstream.upstream_nats_wait_timeout_ms, 345); assert.equal(cdp.upstream.upstream_reversews_wait_timeout_ms, 456); - assert.equal(cdp.upstream.upstream_nativemessaging_manifest, "/tmp/native-host.json"); - assert.deepEqual(cdp.upstream.upstream_nativemessaging_manifests, ["/tmp/native-host-extra.json"]); - assert.equal(cdp.upstream.upstream_nativemessaging_host_name, "com.modcdp.custom"); + assert.equal( + cdp.upstream.upstream_nativemessaging_manifest, + "/tmp/native-host.json", + ); + assert.deepEqual(cdp.upstream.upstream_nativemessaging_manifests, [ + "/tmp/native-host-extra.json", + ]); + assert.equal( + cdp.upstream.upstream_nativemessaging_host_name, + "com.modcdp.custom", + ); assert.equal(cdp.upstream.upstream_nativemessaging_wait_timeout_ms, 567); assert.equal(cdp.upstream.upstream_ws_connect_error_settle_timeout_ms, 321); assert.equal(cdp.injector.injector_execution_context_timeout_ms, 4321); @@ -92,21 +103,34 @@ test("ModCDPClient normalizes nested config owners", () => { assert.equal(params.client.client_routes["*.*"], "direct_cdp"); assert.equal(params.server.server_browser_token, "token-1"); assert.equal(params.server.server_cdp_send_timeout_ms, 9876); - assert.equal(params.server.server_loopback_execution_context_timeout_ms, 8765); + assert.equal( + params.server.server_loopback_execution_context_timeout_ms, + 8765, + ); assert.equal(params.server.server_ws_connect_error_settle_timeout_ms, 7654); }); test("ModCDPClient dispatches root events before extension session is attached", () => { const cdp = new ModCDPClient(); const seen: string[] = []; - cdp.on("Target.targetCreated", (payload: { targetInfo?: { targetId?: string } }) => { - seen.push(String(payload.targetInfo?.targetId)); - }); + cdp.on( + "Target.targetCreated", + (payload: { targetInfo?: { targetId?: string } }) => { + seen.push(String(payload.targetInfo?.targetId)); + }, + ); cdp._onRecv({ method: "Target.targetCreated", params: { - targetInfo: { targetId: "target-1", type: "page", url: "about:blank" }, + targetInfo: { + targetId: "target-1", + type: "page", + title: "about:blank", + url: "about:blank", + attached: false, + canAccessOpener: false, + }, }, }); @@ -126,7 +150,14 @@ test("ModCDPClient event dispatch snapshots handlers when once removes itself", cdp._onRecv({ method: "Target.targetCreated", params: { - targetInfo: { targetId: "target-1", type: "page", url: "about:blank" }, + targetInfo: { + targetId: "target-1", + type: "page", + title: "about:blank", + url: "about:blank", + attached: false, + canAccessOpener: false, + }, }, }); assert.deepEqual(seen, ["once", "persistent"]); @@ -135,17 +166,47 @@ test("ModCDPClient event dispatch snapshots handlers when once removes itself", cdp._onRecv({ method: "Target.targetCreated", params: { - targetInfo: { targetId: "target-2", type: "page", url: "about:blank" }, + targetInfo: { + targetId: "target-2", + type: "page", + title: "about:blank", + url: "about:blank", + attached: false, + canAccessOpener: false, + }, }, }); assert.deepEqual(seen, ["persistent"]); }); +test("ModCDPClient validates native command params before sending", async () => { + const cdp = new ModCDPClient(); + + await assert.rejects(() => cdp.send("Runtime.evaluate", {}), /expression/); +}); + +test("ModCDPClient validates native and registered custom events before dispatch", async () => { + const cdp = new ModCDPClient(); + + assert.throws(() => { + cdp._onRecv({ method: "Target.targetCreated", params: {} }); + }, /targetInfo/); + + await cdp.Mod.addCustomEvent("Custom.ready", { + event_schema: { ok: z.boolean() }, + }); + assert.throws(() => { + cdp._onRecv({ method: "Custom.ready", params: { ok: "yes" } }); + }, /boolean/); +}); + test("ModCDPClient connects with nested launch/upstream/extension/client/server config", async () => { const cdp = new ModCDPClient({ launcher: { launcher_mode: "local", - launcher_options: { headless: true, sandbox: process.platform !== "linux" }, + launcher_options: { + headless: true, + }, }, upstream: { upstream_mode: "ws" }, injector: { @@ -180,26 +241,30 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server assert.equal(cdp.upstream.upstream_mode, "ws"); assert.equal(cdp.upstream.upstream_reversews_wait_timeout_ms, 10_000); assert.equal(cdp.injector.injector_mode, "auto"); + assert.equal( + cdp.connect_timing?.injector_source === "local_launch" || + cdp.connect_timing?.injector_source === "extensions_load_unpacked", + true, + ); assert.equal(cdp.client.client_routes["*.*"], "direct_cdp"); assert.equal(cdp.upstream_endpoint_kind, "raw_cdp"); assert.match(cdp.cdp_url ?? "", /^ws:\/\//); - await delay(2_000); - const targets = (await cdp.sendRaw("Target.getTargets")) as { - targetInfos: { type?: string; url?: string }[]; - }; + const service_worker_url = await cdp.Mod.evaluate({ + expression: "chrome.runtime.getURL('modcdp/service_worker.js')", + }); assert.equal( - targets.targetInfos.some( - (target) => - target.type === "service_worker" && - target.url === `chrome-extension://${cdp.extension_id}/modcdp/service_worker.js`, - ), - true, + service_worker_url, + `chrome-extension://${cdp.extension_id}/modcdp/service_worker.js`, ); + const contexts = (await cdp.Mod.evaluate({ + expression: + "chrome.runtime.getContexts({}).then((contexts) => contexts.map((context) => ({ type: context.contextType, url: context.documentUrl || context.origin || '' })))", + })) as { type?: string; url?: string }[]; assert.equal( - targets.targetInfos.some( - (target) => - target.type === "background_page" && - target.url === `chrome-extension://${cdp.extension_id}/offscreen/keepalive.html`, + contexts.some( + (context) => + context.type === "OFFSCREEN_DOCUMENT" && + context.url === `chrome-extension://${cdp.extension_id}/offscreen/keepalive.html`, ), true, ); @@ -227,7 +292,10 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server }; cdp.on("Mod.pong", listener); }); - const ping_result = (await cdp.Mod.ping({ sent_at })) as Record; + const ping_result = (await cdp.Mod.ping({ sent_at })) as Record< + string, + unknown + >; const pong_payload = await pong; assert.equal(ping_result.ok, true); assert.equal(pong_payload.sent_at, sent_at); @@ -235,7 +303,9 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server assert.equal(pong_payload.from, "extension-service-worker"); } finally { if (direct_session_target_id) { - await cdp.send("Target.closeTarget", { targetId: direct_session_target_id }).catch(() => ({})); + await cdp + .send("Target.closeTarget", { targetId: direct_session_target_id }) + .catch(() => ({})); } await cdp.close(); } @@ -250,16 +320,108 @@ test("ModCDPClient preserves explicit empty service worker suffix config", async }); assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, []); - assert.deepEqual((await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, []); -}); + assert.deepEqual( + (await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, + [], + ); +}, 60_000); + +function reversewsTestBrowserPath() { + const explicit_candidates = [process.env.CHROME_PATH, platform() === "linux" ? "/usr/bin/chromium" : null].filter( + (candidate): candidate is string => Boolean(candidate), + ); + for (const candidate of explicit_candidates) { + if (existsSync(candidate)) return candidate; + } + const home = homedir(); + const patterns = + platform() === "darwin" + ? [ + path.join( + home, + "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", + ), + path.join(home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium"), + path.join( + home, + "Library/Caches/puppeteer/chrome/mac*-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", + ), + ] + : platform() === "win32" + ? [ + path.join( + process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), + "ms-playwright/chromium-*/chrome-win*/chrome.exe", + ), + path.join(home, ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe"), + ] + : [ + path.join(home, ".cache/ms-playwright/chromium-*/chrome-linux*/chrome"), + "/opt/pw-browsers/chromium-*/chrome-linux*/chrome", + path.join(home, ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome"), + ]; + const candidates = newestFirst(patterns.flatMap(expandGlob)); + if (candidates[0]) return candidates[0]; + throw new Error("Reversews tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing."); +} + +function expandGlob(pattern: string) { + const normalized = path.normalize(pattern); + const { root } = path.parse(normalized); + const parts = normalized.slice(root.length).split(path.sep).filter(Boolean); + let candidates = [root || "."]; + for (const part of parts) { + const has_wildcard = part.includes("*"); + const matcher = has_wildcard ? wildcardToRegExp(part) : null; + const next: string[] = []; + for (const base of candidates) { + if (!existsSync(base)) continue; + if (!has_wildcard) { + const candidate = path.join(base, part); + if (existsSync(candidate)) next.push(candidate); + continue; + } + for (const child of readdirSync(base)) { + if (matcher!.test(child)) next.push(path.join(base, child)); + } + } + candidates = next; + } + return candidates.filter((candidate) => existsSync(candidate)); +} + +function wildcardToRegExp(value: string) { + return new RegExp(`^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`); +} + +function newestFirst(candidates: string[]) { + return [...new Set(candidates)].sort((a, b) => { + const left = scorePath(a); + const right = scorePath(b); + return right.version - left.version || right.mtime - left.mtime || a.localeCompare(b); + }); +} + +function scorePath(candidate: string) { + const numbers = candidate.match(/\d+/g)?.map(Number) ?? []; + const version = numbers.length > 0 ? Math.max(...numbers) : 0; + let mtime = 0; + try { + mtime = statSync(candidate).mtimeMs; + } catch {} + return { version, mtime }; +} test("ModCDPClient defaults service worker suffix config to the ModCDP worker", async () => { const cdp = new ModCDPClient(); - assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, ["/modcdp/service_worker.js"]); - assert.deepEqual((await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, [ + assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, [ "/modcdp/service_worker.js", ]); + assert.deepEqual( + (await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, + ["/modcdp/service_worker.js"], + ); }); test("ModCDPClient preserves explicit null server config", () => { @@ -281,7 +443,10 @@ test("ModCDPClient only exposes injector attach after CDP send is available", () test("ModCDPClient defaults launched ModCDP-server upstreams to extension auto", () => { for (const mode of ["nativemessaging", "reversews", "nats"] as const) { - const launched = new ModCDPClient({ launcher: { launcher_mode: "local" }, upstream: { upstream_mode: mode } }); + const launched = new ModCDPClient({ + launcher: { launcher_mode: "local" }, + upstream: { upstream_mode: mode }, + }); assert.equal(launched.launcher.launcher_mode, "local"); assert.equal(launched.upstream_endpoint_kind, "modcdp_server"); assert.equal(launched.injector.injector_mode, "auto"); @@ -302,11 +467,17 @@ test("ModCDPClient rejects unknown component modes at their owning factory bound /unknown upstream\.upstream_mode=bogus/, ); await assert.rejects( - () => new ModCDPClient({ launcher: { launcher_mode: "bogus" as any } })._browserLauncher(), + () => + new ModCDPClient({ + launcher: { launcher_mode: "bogus" as any }, + })._browserLauncher(), /unknown launcher\.launcher_mode=bogus/, ); await assert.rejects( - () => new ModCDPClient({ injector: { injector_mode: "bogus" as any } })._injectorsForConfig(), + () => + new ModCDPClient({ + injector: { injector_mode: "bogus" as any }, + })._injectorsForConfig(), /unknown injector\.injector_mode=bogus/, ); }); @@ -314,18 +485,20 @@ test("ModCDPClient rejects unknown component modes at their owning factory bound test("ModCDPClient.close does not close a remote browser it did not launch", async () => { const chrome = await new LocalBrowserLauncher({ headless: true, - sandbox: process.platform !== "linux", - extra_args: [`--load-extension=${EXTENSION_PATH}`], }).launch(); const raw_cdp = await CdpSocket.connect(chrome.cdp_url!); const cdp = new ModCDPClient({ launcher: { launcher_mode: "remote" }, upstream: { upstream_mode: "ws", upstream_cdp_url: chrome.cdp_url }, injector: { - injector_mode: "discover", + injector_mode: "inject", + injector_extension_path: EXTENSION_PATH, injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], injector_trust_service_worker_target: true, + injector_service_worker_ready_timeout_ms: 5_000, + injector_service_worker_probe_timeout_ms: 5_000, }, + client: { client_routes: { "*.*": "direct_cdp" } }, }); try { @@ -345,7 +518,13 @@ test("ModCDPClient.close keeps injector files until after launched browser shutd const cdp = new ModCDPClient({ launcher: { launcher_mode: "local", - launcher_options: { headless: true, sandbox: process.platform !== "linux" }, + launcher_options: { + headless: true, + // Reversews is browser -> client only. After explicit CHROME_PATH and + // CI /usr/bin/chromium, this test uses Chrome for Testing because + // Canary rejects --load-extension in this local test path. + executable_path: REVERSEWS_TEST_BROWSER_PATH, + }, }, upstream: { upstream_mode: "reversews", @@ -365,7 +544,8 @@ test("ModCDPClient.close keeps injector files until after launched browser shutd try { await cdp.connect(); const injector = cdp._injectors.find( - (candidate) => candidate.constructor.name === "LocalBrowserLaunchExtensionInjector", + (candidate) => + candidate.constructor.name === "ExtensionsLoadUnpackedInjector", ) as unknown as { unpacked_extension_path?: string | null } | undefined; const unpacked_extension_path = injector?.unpacked_extension_path; assert.equal(typeof unpacked_extension_path, "string"); @@ -396,7 +576,9 @@ test("ModCDPClient.close clears top-level connection state", async () => { const cdp = new ModCDPClient({ launcher: { launcher_mode: "local", - launcher_options: { headless: true, sandbox: process.platform !== "linux" }, + launcher_options: { + headless: true, + }, }, upstream: { upstream_mode: "ws" }, injector: { @@ -412,5 +594,8 @@ test("ModCDPClient.close clears top-level connection state", async () => { await cdp.close(); assert.equal(cdp.transport, null); - await assert.rejects(() => cdp.sendRaw("Browser.getVersion"), /ModCDP upstream is not connected/); -}); + await assert.rejects( + () => cdp.sendRaw("Browser.getVersion"), + /ModCDP upstream is not connected/, + ); +}, 60_000); diff --git a/js/test/test.ModCDPClientCustomFlatNamespace.ts b/js/test/test.ModCDPClientCustomFlatNamespace.ts index a391950..1f8f16f 100644 --- a/js/test/test.ModCDPClientCustomFlatNamespace.ts +++ b/js/test/test.ModCDPClientCustomFlatNamespace.ts @@ -5,6 +5,14 @@ import { test } from "vitest"; import { z } from "zod"; import { ModCDPClient, type ModCDPClientInstance } from "../src/client/ModCDPClient.js"; +import { installModCDPServer } from "../src/server/ModCDPServer.js"; +import type { + ModCDPCustomCommandRegistration, + ModCDPCustomEventRegistration, + ProtocolParams, + ProtocolPayload, + ProtocolResult, +} from "../src/types/modcdp.js"; const HERE = path.dirname(fileURLToPath(import.meta.url)); const EXTENSION_PATH = path.resolve(HERE, "..", "..", "dist", "extension"); @@ -16,7 +24,7 @@ test("custom commands install flat namespace methods through a real service work const cdp = new ModCDPClient({ launcher: { launcher_mode: "local", - launcher_options: { headless: true, sandbox: process.platform !== "linux" }, + launcher_options: { headless: true }, }, upstream: { upstream_mode: "ws" }, injector: { @@ -56,7 +64,7 @@ test("custom events validate raw string handlers through a real service worker", const cdp = new ModCDPClient({ launcher: { launcher_mode: "local", - launcher_options: { headless: true, sandbox: process.platform !== "linux" }, + launcher_options: { headless: true }, }, upstream: { upstream_mode: "ws" }, injector: { @@ -180,3 +188,32 @@ test("constructor custom command and event schemas validate nested payloads", () assert.deepEqual(event_schemas.get("Custom.count")?.parse({ value: 3 }), { value: 3 }); assert.throws(() => event_schemas.get("Custom.count")?.parse({ value: 0 })); }); + +test("service worker server validates registered custom command and event schemas", async () => { + const scope = {} as typeof globalThis; + const server = installModCDPServer(scope) as unknown as { + addCustomCommand(registration: ModCDPCustomCommandRegistration): ProtocolResult; + addCustomEvent(registration: ModCDPCustomEventRegistration): ProtocolResult; + handleCommand(method: string, params?: ProtocolParams, cdpSessionId?: string | null): Promise; + emit(eventName: string, payload?: ProtocolPayload, cdpSessionId?: string | null): Promise; + }; + + server.addCustomCommand({ + name: "Custom.double", + params_schema: z.object({ value: z.number() }), + result_schema: z.object({ value: z.number() }), + handler: async (params: { value: number }) => ({ value: params.value * 2 }), + }); + assert.deepEqual(await server.handleCommand("Custom.double", { value: 2 }), { value: 4 }); + await assert.rejects(() => server.handleCommand("Custom.double", { value: "2" })); + + server.addCustomCommand({ + name: "Custom.badResult", + result_schema: z.object({ ok: z.boolean() }), + handler: async () => ({ ok: "yes" }), + }); + await assert.rejects(() => server.handleCommand("Custom.badResult", {})); + + server.addCustomEvent({ name: "Custom.ready", event_schema: z.object({ ok: z.boolean() }) }); + await assert.rejects(() => server.emit("Custom.ready", { ok: "yes" })); +}); diff --git a/js/test/test.ModCDPClientRoutedDefaultOverrides.ts b/js/test/test.ModCDPClientRoutedDefaultOverrides.ts index e0c2ac5..24ba83a 100644 --- a/js/test/test.ModCDPClientRoutedDefaultOverrides.ts +++ b/js/test/test.ModCDPClientRoutedDefaultOverrides.ts @@ -3,9 +3,8 @@ import { test } from "vitest"; import path from "node:path"; import { fileURLToPath } from "node:url"; -import { LocalBrowserLauncher } from "../src/launcher/LocalBrowserLauncher.js"; import { ModCDPClient } from "../src/client/ModCDPClient.js"; -import { commands, events } from "../src/types/generated/zod.js"; +import { events } from "../src/types/generated/zod.js"; const HERE = path.dirname(fileURLToPath(import.meta.url)); const EXTENSION_PATH = path.resolve(HERE, "..", "..", "dist", "extension"); @@ -73,17 +72,27 @@ test( "service-worker routed standard CDP commands and events can be transformed", { timeout: DEFAULT_ROUTED_OVERRIDES_TEST_TIMEOUT_MS }, async () => { - const chrome = await new LocalBrowserLauncher().launch({ - headless: true, - sandbox: process.platform !== "linux", - extra_args: [`--load-extension=${EXTENSION_PATH}`], + const owner = new ModCDPClient({ + launcher: { + launcher_mode: "local", + launcher_options: { + headless: true, + }, + }, + upstream: { upstream_mode: "ws" }, + injector: { + injector_mode: "auto", + injector_extension_path: EXTENSION_PATH, + injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], + injector_trust_service_worker_target: true, + }, }); + await owner.connect(); const cdp = new ModCDPClient({ launcher: { launcher_mode: "remote" }, - upstream: { upstream_mode: "ws", upstream_cdp_url: chrome.cdp_url }, + upstream: { upstream_mode: "ws", upstream_cdp_url: owner.cdp_url }, injector: { - injector_mode: "auto", - injector_extension_path: EXTENSION_PATH, + injector_mode: "discover", injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], injector_trust_service_worker_target: true, }, @@ -95,17 +104,17 @@ test( }, }, server: { - server_loopback_cdp_url: chrome.cdp_url, + server_loopback_cdp_url: owner.cdp_url, server_routes: { "*.*": "loopback_cdp" }, }, }); try { await cdp.connect(); - assert.equal(cdp.cdp_url, chrome.cdp_url); - assert.equal(cdp.server.server_loopback_cdp_url, chrome.cdp_url); + assert.equal(cdp.cdp_url, owner.cdp_url); + assert.equal(cdp.server.server_loopback_cdp_url, owner.cdp_url); - const rawTargets = commands["Target.getTargets"].result.parse(await cdp._sendMessage("Target.getTargets")); + const rawTargets = await cdp.send("Target.getTargets"); assert.ok(rawTargets.targetInfos?.length > 0, "expected raw Target.getTargets targetInfos"); assert.equal( rawTargets.targetInfos.some((targetInfo) => Object.hasOwn(targetInfo, "tabId")), @@ -187,7 +196,7 @@ test( await cdp.Target.setDiscoverTargets({ discover: false }); } catch {} await cdp.close(); - await chrome.close(); + await owner.close(); } }, ); diff --git a/js/test/test.NativeMessagingUpstreamTransport.ts b/js/test/test.NativeMessagingUpstreamTransport.ts index d53e181..f51c600 100644 --- a/js/test/test.NativeMessagingUpstreamTransport.ts +++ b/js/test/test.NativeMessagingUpstreamTransport.ts @@ -1,7 +1,9 @@ import assert from "node:assert/strict"; import { once } from "node:events"; -import { existsSync } from "node:fs"; +import { existsSync, readdirSync, statSync } from "node:fs"; +import { mkdtemp, rm } from "node:fs/promises"; import net from "node:net"; +import { homedir, platform, tmpdir } from "node:os"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { test } from "vitest"; @@ -11,6 +13,7 @@ import { ModCDPClient } from "../src/client/ModCDPClient.js"; const HERE = path.dirname(fileURLToPath(import.meta.url)); const EXTENSION_PATH = path.resolve(HERE, "..", "..", "dist", "extension"); +const NATIVE_MESSAGING_TEST_BROWSER_PATH = extensionLaunchFlagTestBrowserPath(); const upstreamNativeMessagingHostName = (label: string) => `com.modcdp.test.${label}.${process.pid}`; test("nativemessaging upstream config owns manifest, host, wait timeout, loopback, and injector config", async () => { @@ -161,10 +164,19 @@ test("nativemessaging upstream accepts a replacement peer after disconnect", asy test("nativemessaging upstream installs the launch-profile native host manifest and connects to a real extension", async () => { const upstream_nativemessaging_host_name = "com.modcdp.bridge"; + const profile_dir = await mkdtemp(path.join(tmpdir(), "modcdp.native.")); const native_client = new ModCDPClient({ launcher: { launcher_mode: "local", - launcher_options: { headless: true, sandbox: process.platform !== "linux" }, + launcher_options: { + headless: true, + user_data_dir: profile_dir, + cleanup_user_data_dir: true, + // Native messaging is browser -> client only. After explicit CHROME_PATH + // and CI /usr/bin/chromium, this test uses Chrome for Testing because + // Canary rejects --load-extension in this local test path. + executable_path: NATIVE_MESSAGING_TEST_BROWSER_PATH, + }, }, upstream: { upstream_mode: "nativemessaging", @@ -204,6 +216,7 @@ test("nativemessaging upstream installs the launch-profile native host manifest assert.equal(typeof second_version.product, "string"); } finally { await native_client.close(); + await rm(profile_dir, { recursive: true, force: true }); } }, 90_000); @@ -215,3 +228,89 @@ async function waitFor(predicate: () => boolean, timeout_ms = 2_000) { } throw new Error("Timed out waiting for condition"); } + +function extensionLaunchFlagTestBrowserPath() { + const explicit_candidates = [process.env.CHROME_PATH, platform() === "linux" ? "/usr/bin/chromium" : null].filter( + (candidate): candidate is string => Boolean(candidate), + ); + for (const candidate of explicit_candidates) { + if (existsSync(candidate)) return candidate; + } + const home = homedir(); + const patterns = + platform() === "darwin" + ? [ + path.join( + home, + "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", + ), + path.join(home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium"), + path.join( + home, + "Library/Caches/puppeteer/chrome/mac*-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", + ), + ] + : platform() === "win32" + ? [ + path.join( + process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), + "ms-playwright/chromium-*/chrome-win*/chrome.exe", + ), + path.join(home, ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe"), + ] + : [ + path.join(home, ".cache/ms-playwright/chromium-*/chrome-linux*/chrome"), + "/opt/pw-browsers/chromium-*/chrome-linux*/chrome", + path.join(home, ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome"), + ]; + const candidates = newestFirst(patterns.flatMap(expandGlob)); + if (candidates[0]) return candidates[0]; + throw new Error("Native messaging tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing."); +} + +function expandGlob(pattern: string) { + const normalized = path.normalize(pattern); + const { root } = path.parse(normalized); + const parts = normalized.slice(root.length).split(path.sep).filter(Boolean); + let candidates = [root || "."]; + for (const part of parts) { + const has_wildcard = part.includes("*"); + const matcher = has_wildcard ? wildcardToRegExp(part) : null; + const next: string[] = []; + for (const base of candidates) { + if (!existsSync(base)) continue; + if (!has_wildcard) { + const candidate = path.join(base, part); + if (existsSync(candidate)) next.push(candidate); + continue; + } + for (const child of readdirSync(base)) { + if (matcher!.test(child)) next.push(path.join(base, child)); + } + } + candidates = next; + } + return candidates.filter((candidate) => existsSync(candidate)); +} + +function wildcardToRegExp(value: string) { + return new RegExp(`^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`); +} + +function newestFirst(candidates: string[]) { + return [...new Set(candidates)].sort((a, b) => { + const left = scorePath(a); + const right = scorePath(b); + return right.version - left.version || right.mtime - left.mtime || a.localeCompare(b); + }); +} + +function scorePath(candidate: string) { + const numbers = candidate.match(/\d+/g)?.map(Number) ?? []; + const version = numbers.length > 0 ? Math.max(...numbers) : 0; + let mtime = 0; + try { + mtime = statSync(candidate).mtimeMs; + } catch {} + return { version, mtime }; +} diff --git a/js/test/test.PipeUpstreamTransport.ts b/js/test/test.PipeUpstreamTransport.ts index 7b31e7c..915e8a2 100644 --- a/js/test/test.PipeUpstreamTransport.ts +++ b/js/test/test.PipeUpstreamTransport.ts @@ -19,7 +19,7 @@ test("pipe upstream constructor, update, launcher config, and unconnected errors assert.equal(transport.update({ cdp_url: "pipe://1234" }), transport); assert.equal(transport.url, "pipe://1234"); await assert.rejects(() => transport.connect(), /upstream\.upstream_mode=pipe requires/); - assert.throws(() => transport.send({ id: 1, method: "Browser.getVersion" }), /CDP pipe is not connected/); + assert.throws(() => transport.send({ id: 1, method: "Runtime.evaluate" }), /CDP pipe is not connected/); }); test("pipe upstream resets connection state after pipe end and errors", async () => { @@ -31,7 +31,7 @@ test("pipe upstream resets connection state after pipe end and errors", async () transport.onClose((error) => closed.push(error)); await transport.connect(); - transport.send({ id: 1, method: "Browser.getVersion", params: {} }); + transport.send({ id: 1, method: "Runtime.evaluate", params: { expression: "1" } }); if (event_name === "end") pipe_read.emit("end"); else if (event_name === "read_error") pipe_read.emit("error", new Error("read failed")); @@ -39,7 +39,7 @@ test("pipe upstream resets connection state after pipe end and errors", async () assert.equal(closed.length, 1); assert.throws( - () => transport.send({ id: 2, method: "Browser.getVersion", params: {} }), + () => transport.send({ id: 2, method: "Runtime.evaluate", params: { expression: "1" } }), /CDP pipe is not connected/, ); await transport.close(); @@ -50,15 +50,16 @@ test("pipe upstream launches a real browser and uses a pid-scoped pipe URL", asy const cdp = new ModCDPClient({ launcher: { launcher_mode: "local", - launcher_options: { headless: true, sandbox: process.platform !== "linux" }, + launcher_options: { headless: true }, }, upstream: { upstream_mode: "pipe" }, injector: { - injector_mode: "auto", + injector_mode: "inject", injector_extension_path: EXTENSION_PATH, injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], injector_trust_service_worker_target: true, }, + server: { server_routes: { "*.*": "chrome_debugger" } }, }); try { @@ -67,8 +68,12 @@ test("pipe upstream launches a real browser and uses a pid-scoped pipe URL", asy assert.equal(cdp.upstream_endpoint_kind, "raw_cdp"); assert.match(cdp.cdp_url ?? "", /^pipe:\/\/\d+$/); assert.equal(cdp.transport?.url, cdp.cdp_url); - const version = (await cdp.sendRaw("Browser.getVersion")) as Record; - assert.equal(typeof version.product, "string"); + await cdp.Mod.addCustomCommand("Custom.runtimeReadyState", { + expression: + "async () => await cdp.send('Runtime.evaluate', { expression: 'document.readyState', returnByValue: true })", + }); + const runtime = (await cdp.send("Custom.runtimeReadyState")) as { result?: { value?: unknown } }; + assert.equal(runtime.result?.value, "complete"); } finally { await cdp.close(); } diff --git a/js/test/test.RemoteBrowserLauncher.ts b/js/test/test.RemoteBrowserLauncher.ts index d245df9..b9bcb64 100644 --- a/js/test/test.RemoteBrowserLauncher.ts +++ b/js/test/test.RemoteBrowserLauncher.ts @@ -20,7 +20,6 @@ describe("RemoteBrowserLauncher", () => { const local = await new LocalBrowserLauncher().launch({ port: await LocalBrowserLauncher.freePort(), headless: true, - sandbox: process.platform !== "linux", chrome_ready_timeout_ms: 45_000, }); let cdp: CdpSocket | null = null; @@ -61,12 +60,10 @@ describe("RemoteBrowserLauncher", () => { const first = await new LocalBrowserLauncher().launch({ port: await LocalBrowserLauncher.freePort(), headless: true, - sandbox: process.platform !== "linux", }); const second = await new LocalBrowserLauncher().launch({ port: await LocalBrowserLauncher.freePort(), headless: true, - sandbox: process.platform !== "linux", }); try { diff --git a/js/test/test.ReverseWebSocketUpstreamTransport.ts b/js/test/test.ReverseWebSocketUpstreamTransport.ts index e3cdff5..3104255 100644 --- a/js/test/test.ReverseWebSocketUpstreamTransport.ts +++ b/js/test/test.ReverseWebSocketUpstreamTransport.ts @@ -1,7 +1,9 @@ import assert from "node:assert/strict"; import { once } from "node:events"; +import { existsSync, readdirSync, statSync } from "node:fs"; import path from "node:path"; import { fileURLToPath } from "node:url"; +import { homedir, platform } from "node:os"; import WebSocket from "ws"; import { test } from "vitest"; @@ -11,14 +13,15 @@ import { ModCDPClient } from "../src/client/ModCDPClient.js"; const HERE = path.dirname(fileURLToPath(import.meta.url)); const EXTENSION_PATH = path.resolve(HERE, "..", "..", "dist", "extension"); +const REVERSEWS_TEST_BROWSER_PATH = reversewsTestBrowserPath(); -test("reversews upstream config owns bind updates, wait timeout, and injector config", async () => { +test("reversews upstream config owns bind updates and wait timeout", async () => { const transport = new ReverseWebSocketUpstreamTransport({ upstream_reversews_bind: "127.0.0.1:29292", upstream_reversews_wait_timeout_ms: 10, }); assert.equal(transport.url, "ws://127.0.0.1:29292"); - assert.deepEqual(transport.getInjectorConfig(), { upstream_reversews_url: "ws://127.0.0.1:29292" }); + assert.deepEqual(transport.getInjectorConfig(), {}); assert.equal( transport.update({ upstream_reversews_bind: "127.0.0.1:29293", @@ -27,7 +30,7 @@ test("reversews upstream config owns bind updates, wait timeout, and injector co transport, ); assert.equal(transport.url, "ws://127.0.0.1:29293"); - assert.deepEqual(transport.getInjectorConfig(), { upstream_reversews_url: "ws://127.0.0.1:29293" }); + assert.deepEqual(transport.getInjectorConfig(), {}); assert.throws( () => transport.send({ id: 1, method: "Browser.getVersion" }), /No reverse ModCDP extension peer is connected/, @@ -129,48 +132,139 @@ test("reversews upstream accepts a replacement peer after disconnect", async () } }); -test("reversews upstream accepts a real extension reverse connection and routes CDP through loopback", async () => { - const reverse_bind = "127.0.0.1:29292"; - const reverse_url = `ws://${reverse_bind}`; - const reverse = new ModCDPClient({ +test("reversews upstream accepts a real extension reverse connection and routes CDP through chrome debugger", async () => { + const cdp = new ModCDPClient({ launcher: { launcher_mode: "local", launcher_options: { headless: process.platform === "linux" && !process.env.DISPLAY, - sandbox: process.platform !== "linux", + // Reversews is browser -> client only. After explicit CHROME_PATH and + // CI /usr/bin/chromium, these tests use Chrome for Testing because + // Canary rejects --load-extension in this local test path. + executable_path: REVERSEWS_TEST_BROWSER_PATH, }, }, - upstream: { upstream_mode: "reversews", upstream_reversews_bind: reverse_bind }, + upstream: { upstream_mode: "reversews" }, injector: { injector_mode: "auto", injector_extension_path: EXTENSION_PATH, injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], injector_trust_service_worker_target: true, - }, - server: { - server_routes: { "*.*": "loopback_cdp" }, + injector_service_worker_probe_timeout_ms: 1_000, }, }); try { - await reverse.connect(); - assert.equal(reverse.transport?.mode, "reversews"); - assert.equal(reverse.upstream_endpoint_kind, "modcdp_server"); - assert.equal(reverse.transport?.url, reverse_url); + await cdp.connect(); + assert.equal(cdp.transport?.mode, "reversews"); + assert.equal(cdp.upstream_endpoint_kind, "modcdp_server"); + assert.equal(cdp.transport?.url, "ws://127.0.0.1:29292"); assert.equal( - (reverse.transport as ReverseWebSocketUpstreamTransport).peer_info?.extension_id, + (cdp.transport as ReverseWebSocketUpstreamTransport).peer_info?.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf", ); - const version = (await reverse.send("Browser.getVersion")) as Record; - assert.equal(typeof version.product, "string"); + const evaluated = (await cdp.send("Runtime.evaluate", { + expression: "location.href", + returnByValue: true, + })) as { result?: { value?: unknown } }; + assert.equal(evaluated.result?.value, "about:blank"); await new Promise((resolve) => setTimeout(resolve, 1_500)); - const second_version = (await reverse.send("Browser.getVersion")) as Record; - assert.equal(typeof second_version.product, "string"); + const second_evaluated = (await cdp.send("Runtime.evaluate", { + expression: "document.readyState", + returnByValue: true, + })) as { result?: { value?: unknown } }; + assert.equal(second_evaluated.result?.value, "complete"); } finally { - await reverse.close(); + await cdp.close(); } }, 60_000); +function reversewsTestBrowserPath() { + const explicit_candidates = [process.env.CHROME_PATH, platform() === "linux" ? "/usr/bin/chromium" : null].filter( + (candidate): candidate is string => Boolean(candidate), + ); + for (const candidate of explicit_candidates) { + if (existsSync(candidate)) return candidate; + } + const home = homedir(); + const patterns = + platform() === "darwin" + ? [ + path.join( + home, + "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", + ), + path.join(home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium"), + path.join( + home, + "Library/Caches/puppeteer/chrome/mac*-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", + ), + ] + : platform() === "win32" + ? [ + path.join( + process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), + "ms-playwright/chromium-*/chrome-win*/chrome.exe", + ), + path.join(home, ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe"), + ] + : [ + path.join(home, ".cache/ms-playwright/chromium-*/chrome-linux*/chrome"), + "/opt/pw-browsers/chromium-*/chrome-linux*/chrome", + path.join(home, ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome"), + ]; + const candidates = newestFirst(patterns.flatMap(expandGlob)); + if (candidates[0]) return candidates[0]; + throw new Error("Reversews tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing."); +} + +function expandGlob(pattern: string) { + const normalized = path.normalize(pattern); + const { root } = path.parse(normalized); + const parts = normalized.slice(root.length).split(path.sep).filter(Boolean); + let candidates = [root || "."]; + for (const part of parts) { + const has_wildcard = part.includes("*"); + const matcher = has_wildcard ? wildcardToRegExp(part) : null; + const next: string[] = []; + for (const base of candidates) { + if (!existsSync(base)) continue; + if (!has_wildcard) { + const candidate = path.join(base, part); + if (existsSync(candidate)) next.push(candidate); + continue; + } + for (const child of readdirSync(base)) { + if (matcher!.test(child)) next.push(path.join(base, child)); + } + } + candidates = next; + } + return candidates.filter((candidate) => existsSync(candidate)); +} + +function wildcardToRegExp(value: string) { + return new RegExp(`^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`); +} + +function newestFirst(candidates: string[]) { + return [...new Set(candidates)].sort((a, b) => { + const left = scorePath(a); + const right = scorePath(b); + return right.version - left.version || right.mtime - left.mtime || a.localeCompare(b); + }); +} + +function scorePath(candidate: string) { + const numbers = candidate.match(/\d+/g)?.map(Number) ?? []; + const version = numbers.length > 0 ? Math.max(...numbers) : 0; + let mtime = 0; + try { + mtime = statSync(candidate).mtimeMs; + } catch {} + return { version, mtime }; +} + async function waitFor(predicate: () => boolean, timeout_ms = 2_000) { const deadline = Date.now() + timeout_ms; while (Date.now() < deadline) { diff --git a/js/test/test.WebSocketUpstreamTransport.ts b/js/test/test.WebSocketUpstreamTransport.ts index 01dc8b2..1f2ef98 100644 --- a/js/test/test.WebSocketUpstreamTransport.ts +++ b/js/test/test.WebSocketUpstreamTransport.ts @@ -26,7 +26,7 @@ test("ws upstream launches a real browser and speaks raw CDP", async () => { const cdp = new ModCDPClient({ launcher: { launcher_mode: "local", - launcher_options: { headless: true, sandbox: process.platform !== "linux" }, + launcher_options: { headless: true }, }, upstream: { upstream_mode: "ws" }, injector: { @@ -43,9 +43,16 @@ test("ws upstream launches a real browser and speaks raw CDP", async () => { assert.equal(cdp.upstream_endpoint_kind, "raw_cdp"); assert.equal(cdp.connect_timing?.upstream_mode, "ws"); assert.equal(cdp.connect_timing?.upstream_endpoint_kind, "raw_cdp"); + const connect_timing = cdp.connect_timing as + | { + transport_connected_at: number; + transport_duration_ms: number; + transport_started_at: number; + } + | undefined; assert.equal( - cdp.connect_timing?.transport_duration_ms, - (cdp.connect_timing?.transport_connected_at ?? 0) - (cdp.connect_timing?.transport_started_at ?? 0), + connect_timing?.transport_duration_ms, + (connect_timing?.transport_connected_at ?? 0) - (connect_timing?.transport_started_at ?? 0), ); assert.match(cdp.cdp_url ?? "", /^ws:\/\//); const version = (await cdp.sendRaw("Browser.getVersion")) as Record; @@ -74,7 +81,6 @@ test("ws upstream launches a real browser and speaks raw CDP", async () => { test("ws upstream resolves a bare host:port CDP endpoint to the browser websocket", async () => { const chrome = await new LocalBrowserLauncher({ headless: true, - sandbox: process.platform !== "linux", }).launch(); const transport = new WebSocketUpstreamTransport({ cdp_url: `127.0.0.1:${chrome.port}` }); @@ -98,7 +104,6 @@ test("ws upstream resolves a bare host:port CDP endpoint to the browser websocke test("ws upstream close clears connection state", async () => { const chrome = await new LocalBrowserLauncher({ headless: true, - sandbox: process.platform !== "linux", }).launch(); const transport = new WebSocketUpstreamTransport({ cdp_url: chrome.cdp_url }); diff --git a/js/test/test.proxy.ts b/js/test/test.proxy.ts index 9a02837..e0c9190 100644 --- a/js/test/test.proxy.ts +++ b/js/test/test.proxy.ts @@ -1,23 +1,24 @@ import assert from "node:assert/strict"; import { spawn, type ChildProcess } from "node:child_process"; import { once } from "node:events"; +import { existsSync, readdirSync, statSync } from "node:fs"; import { mkdtemp, rm } from "node:fs/promises"; -import { tmpdir } from "node:os"; +import { homedir, platform, tmpdir } from "node:os"; import path from "node:path"; import { fileURLToPath } from "node:url"; import { test } from "vitest"; +import { ModCDPClient } from "../src/client/ModCDPClient.js"; import { LocalBrowserLauncher } from "../src/launcher/LocalBrowserLauncher.js"; import { startProxy } from "../src/proxy/proxy.js"; -import { ModCDPClient } from "../src/client/ModCDPClient.js"; import { CdpSocket } from "./helpers.BrowserLauncher.js"; const HERE = path.dirname(fileURLToPath(import.meta.url)); const EXTENSION_PATH = path.resolve(HERE, "..", "..", "dist", "extension"); const LOCAL_TEST_LAUNCH_OPTIONS = { headless: true, - sandbox: process.platform !== "linux", }; +const REVERSEWS_TEST_BROWSER_PATH = reversewsTestBrowserPath(); function delay(ms: number) { return new Promise((resolve) => setTimeout(resolve, ms)); @@ -64,14 +65,34 @@ async function expectProxyCdpWorks(proxy_url: string, transport: string) { const cdp = await CdpSocket.connect(proxy_url); let target_id: string | null = null; try { - const version = await cdp.send("Browser.getVersion"); - assert.equal(typeof version.product, "string"); - const evaluated = await cdp.send("Mod.evaluate", { expression: `({ ok: true, transport: ${JSON.stringify(transport)} })`, }); assert.deepEqual(evaluated, { ok: true, transport }); + if (transport.includes("reversews")) { + const runtime = await cdp.send("Runtime.evaluate", { + expression: "document.readyState", + returnByValue: true, + }); + assert.equal((runtime.result as { value?: unknown } | undefined)?.value, "complete"); + return; + } + + if (transport.includes("pipe")) { + await cdp.send("Mod.addCustomCommand", { + name: "Custom.runtimeReadyState", + expression: + "async () => await cdp.send('Runtime.evaluate', { expression: 'document.readyState', returnByValue: true })", + }); + const runtime = await cdp.send("Custom.runtimeReadyState"); + assert.equal((runtime.result as { value?: unknown } | undefined)?.value, "complete"); + return; + } + + const version = await cdp.send("Browser.getVersion"); + assert.equal(typeof version.product, "string"); + const created = await cdp.send("Target.createTarget", { url: `about:blank#modcdp-proxy-${transport}`, }); @@ -118,11 +139,11 @@ test("proxy upgrades a vanilla CDP websocket to ModCDP against a real browser ov }, upstream: { upstream_mode: "pipe" }, injector: { - injector_mode: "auto", + injector_mode: "inject", injector_extension_path: EXTENSION_PATH, }, server: { - server_routes: { "*.*": "loopback_cdp" }, + server_routes: { "*.*": "chrome_debugger" }, }, }); @@ -144,17 +165,17 @@ test("proxy CLI maps user-facing flags into a real pipe upstream browser session String(proxy_port), "--launcher-mode=local", "--launcher-options", - JSON.stringify({ headless: true, sandbox: process.platform !== "linux" }), + JSON.stringify({ headless: true }), "--upstream-mode=pipe", - "--injector-mode=auto", + "--injector-mode=inject", + "--injector-extension-path", + EXTENSION_PATH, "--injector-service-worker-url-suffixes", JSON.stringify(["/modcdp/service_worker.js"]), "--injector-trust-service-worker-target", "true", - "--injector-service-worker-probe-timeout-ms", - "30000", "--server-routes", - JSON.stringify({ "*.*": "loopback_cdp" }), + JSON.stringify({ "*.*": "chrome_debugger" }), ], { stdio: ["ignore", "pipe", "pipe"] }, ); @@ -184,7 +205,7 @@ test("proxy CLI maps local ws launch without requiring upstream ws url", async ( "--launcher-user-data-dir", user_data_dir, "--launcher-options", - JSON.stringify({ headless: true, sandbox: process.platform !== "linux" }), + JSON.stringify({ headless: true }), "--upstream-mode=ws", "--injector-mode=auto", "--injector-extension-path", @@ -213,11 +234,20 @@ test("proxy CLI maps local ws launch without requiring upstream ws url", async ( }, 60_000); test("proxy CLI maps ws upstream URL and route shorthands into an existing real browser", async () => { - const chrome = await new LocalBrowserLauncher({ - headless: true, - sandbox: process.platform !== "linux", - extra_args: [`--load-extension=${EXTENSION_PATH}`], - }).launch(); + const owner = new ModCDPClient({ + launcher: { + launcher_mode: "local", + launcher_options: LOCAL_TEST_LAUNCH_OPTIONS, + }, + upstream: { upstream_mode: "ws" }, + injector: { + injector_mode: "auto", + injector_extension_path: EXTENSION_PATH, + injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], + injector_trust_service_worker_target: true, + }, + }); + await owner.connect(); const proxy_port = await LocalBrowserLauncher.freePort(); const proxy_script = path.resolve(HERE, "..", "..", "dist", "js", "src", "proxy", "proxy.js"); const proc = spawn( @@ -229,7 +259,7 @@ test("proxy CLI maps ws upstream URL and route shorthands into an existing real "--launcher-mode=remote", "--upstream-mode=ws", "--upstream-cdp-url", - chrome.cdp_url!, + owner.cdp_url!, "--injector-mode=discover", "--client-routes", JSON.stringify({ @@ -248,11 +278,11 @@ test("proxy CLI maps ws upstream URL and route shorthands into an existing real await expectProxyCdpWorks(`ws://127.0.0.1:${proxy_port}/devtools/browser/proxy`, "cli-ws"); } finally { await closeProcess(proc); - await chrome.close(); + await owner.close(); } }, 60_000); -test("proxy CLI maps user-facing flags into a real reversews local launch", async () => { +test("proxy CLI maps user-facing flags into a real reversews browser session", async () => { const proxy_port = await LocalBrowserLauncher.freePort(); const proxy_script = path.resolve(HERE, "..", "..", "dist", "js", "src", "proxy", "proxy.js"); const proc = spawn( @@ -263,15 +293,25 @@ test("proxy CLI maps user-facing flags into a real reversews local launch", asyn String(proxy_port), "--launcher-mode=local", "--launcher-options", - JSON.stringify({ headless: true, sandbox: process.platform !== "linux" }), + JSON.stringify({ + ...LOCAL_TEST_LAUNCH_OPTIONS, + // Reversews is browser -> client only. After explicit CHROME_PATH and + // CI /usr/bin/chromium, these tests use Chrome for Testing because + // Canary rejects --load-extension in this local test path. + executable_path: REVERSEWS_TEST_BROWSER_PATH, + }), "--upstream-mode=reversews", "--upstream-reversews-wait-timeout-ms", "10000", "--injector-mode=auto", "--injector-extension-path", EXTENSION_PATH, - "--server-routes", - JSON.stringify({ "*.*": "loopback_cdp" }), + "--injector-service-worker-url-suffixes", + JSON.stringify(["/modcdp/service_worker.js"]), + "--injector-trust-service-worker-target", + "true", + "--injector-service-worker-probe-timeout-ms", + "1000", ], { stdio: ["ignore", "pipe", "pipe"] }, ); @@ -286,105 +326,117 @@ test("proxy CLI maps user-facing flags into a real reversews local launch", asyn test("proxy upgrades a vanilla CDP websocket to ModCDP against a real browser over reversews upstream", async () => { const proxy_port = await LocalBrowserLauncher.freePort(); - const reverse_port = await LocalBrowserLauncher.freePort(); - const reverse_bind = `127.0.0.1:${reverse_port}`; - const reverse_url = `ws://${reverse_bind}`; const proxy = await startProxy({ port: proxy_port, - upstream: { upstream_mode: "reversews", upstream_reversews_bind: reverse_bind }, - server: { - server_routes: { "*.*": "loopback_cdp" }, - }, - }); - const bootstrap = new ModCDPClient({ launcher: { launcher_mode: "local", - launcher_options: { headless: true, sandbox: process.platform !== "linux" }, + launcher_options: { + ...LOCAL_TEST_LAUNCH_OPTIONS, + // Reversews is browser -> client only. After explicit CHROME_PATH and + // CI /usr/bin/chromium, these tests use Chrome for Testing because + // Canary rejects --load-extension in this local test path. + executable_path: REVERSEWS_TEST_BROWSER_PATH, + }, }, - upstream: { upstream_mode: "ws" }, + upstream: { upstream_mode: "reversews", upstream_reversews_wait_timeout_ms: 10_000 }, injector: { injector_mode: "auto", injector_extension_path: EXTENSION_PATH, injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], injector_trust_service_worker_target: true, - }, - server: { - server_routes: { "*.*": "loopback_cdp" }, + injector_service_worker_probe_timeout_ms: 1_000, }, }); try { - await bootstrap.connect(); - await bootstrap.send("Mod.evaluate", { - params: { reverse_url }, - expression: "async ({ reverse_url }) => ModCDP.startReverseBridge(reverse_url)", - }); await expectProxyCdpWorks(proxy.url, "reversews"); } finally { - await bootstrap.close(); await proxy.close(); } }, 90_000); -test("proxy reversews local launch auto-injects the extension through the real client path", async () => { - const proxy_port = await LocalBrowserLauncher.freePort(); - const proxy = await startProxy({ - port: proxy_port, - launcher: { - launcher_mode: "local", - launcher_options: { headless: true, sandbox: process.platform !== "linux" }, - }, - upstream: { - upstream_mode: "reversews", - upstream_reversews_wait_timeout_ms: 10_000, - }, - injector: { - injector_mode: "auto", - injector_extension_path: EXTENSION_PATH, - }, - server: { - server_routes: { "*.*": "loopback_cdp" }, - }, - }); +function reversewsTestBrowserPath() { + const explicit_candidates = [process.env.CHROME_PATH, platform() === "linux" ? "/usr/bin/chromium" : null].filter( + (candidate): candidate is string => Boolean(candidate), + ); + for (const candidate of explicit_candidates) { + if (existsSync(candidate)) return candidate; + } + const home = homedir(); + const patterns = + platform() === "darwin" + ? [ + path.join( + home, + "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", + ), + path.join(home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium"), + path.join( + home, + "Library/Caches/puppeteer/chrome/mac*-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", + ), + ] + : platform() === "win32" + ? [ + path.join( + process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), + "ms-playwright/chromium-*/chrome-win*/chrome.exe", + ), + path.join(home, ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe"), + ] + : [ + path.join(home, ".cache/ms-playwright/chromium-*/chrome-linux*/chrome"), + "/opt/pw-browsers/chromium-*/chrome-linux*/chrome", + path.join(home, ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome"), + ]; + const candidates = newestFirst(patterns.flatMap(expandGlob)); + if (candidates[0]) return candidates[0]; + throw new Error("Reversews tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing."); +} - try { - await expectProxyCdpWorks(proxy.url, "reversews-local-launch"); - } finally { - await proxy.close(); +function expandGlob(pattern: string) { + const normalized = path.normalize(pattern); + const { root } = path.parse(normalized); + const parts = normalized.slice(root.length).split(path.sep).filter(Boolean); + let candidates = [root || "."]; + for (const part of parts) { + const has_wildcard = part.includes("*"); + const matcher = has_wildcard ? wildcardToRegExp(part) : null; + const next: string[] = []; + for (const base of candidates) { + if (!existsSync(base)) continue; + if (!has_wildcard) { + const candidate = path.join(base, part); + if (existsSync(candidate)) next.push(candidate); + continue; + } + for (const child of readdirSync(base)) { + if (matcher!.test(child)) next.push(path.join(base, child)); + } + } + candidates = next; } -}, 90_000); + return candidates.filter((candidate) => existsSync(candidate)); +} -test("proxy passes custom extension discovery config through to ModCDPClient", async () => { - const proxy_port = await LocalBrowserLauncher.freePort(); - const reverse_port = await LocalBrowserLauncher.freePort(); - await assert.rejects( - () => - startProxy({ - port: proxy_port, - launcher: { - launcher_mode: "local", - launcher_options: { - headless: true, - sandbox: process.platform !== "linux", - extra_args: [`--load-extension=${EXTENSION_PATH}`], - }, - }, - upstream: { - upstream_mode: "reversews", - upstream_reversews_bind: `127.0.0.1:${reverse_port}`, - upstream_reversews_wait_timeout_ms: 1_000, - }, - injector: { - injector_mode: "discover", - injector_extension_id: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", - injector_require_service_worker_target: true, - injector_service_worker_probe_timeout_ms: 200, - injector_service_worker_ready_timeout_ms: 200, - }, - server: { - server_routes: { "*.*": "loopback_cdp" }, - }, - }), - /Timed out waiting 1000ms for reverse ModCDP extension connection/, - ); -}, 60_000); +function wildcardToRegExp(value: string) { + return new RegExp(`^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`); +} + +function newestFirst(candidates: string[]) { + return [...new Set(candidates)].sort((a, b) => { + const left = scorePath(a); + const right = scorePath(b); + return right.version - left.version || right.mtime - left.mtime || a.localeCompare(b); + }); +} + +function scorePath(candidate: string) { + const numbers = candidate.match(/\d+/g)?.map(Number) ?? []; + const version = numbers.length > 0 ? Math.max(...numbers) : 0; + let mtime = 0; + try { + mtime = statSync(candidate).mtimeMs; + } catch {} + return { version, mtime }; +} diff --git a/js/test/test.translate.ts b/js/test/test.translate.ts index fa122de..d11c19c 100644 --- a/js/test/test.translate.ts +++ b/js/test/test.translate.ts @@ -25,7 +25,8 @@ test("translate routes, wraps, and unwraps ModCDP protocol messages deterministi ); assert.equal(wrapped.target, "service_worker"); assert.equal(wrapped.steps[0]?.method, "Runtime.callFunctionOn"); - assert.match(String(wrapped.steps[0]?.params.functionDeclaration), /attachToSession\("session-1"\)/); + const wrapped_step_params = wrapped.steps[0]?.params as { functionDeclaration?: unknown } | undefined; + assert.match(String(wrapped_step_params?.functionDeclaration), /attachToSession\("session-1"\)/); assert.equal(wrapped.steps[0]?.unwrap, "runtime"); const configured = wrapCommandIfNeeded("Mod.configure", { server: { server_routes: { "*.*": "loopback_cdp" } } }); diff --git a/package.json b/package.json index e706aa5..8c3f474 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "modcdp", - "version": "0.0.13", + "version": "0.0.15", "repository": { "type": "git", "url": "git+https://github.com/pirate/modcdp.git" @@ -159,6 +159,7 @@ "@types/chrome": "^0.1.40", "@types/node": "^25.6.0", "@types/ws": "^8.18.1", + "esbuild": "^0.28.0", "oxfmt": "^0.47.0", "oxlint": "^1.62.0", "playwright": "^1.59.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 159662b..58943a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,6 +27,9 @@ importers: '@types/ws': specifier: ^8.18.1 version: 8.18.1 + esbuild: + specifier: ^0.28.0 + version: 0.28.0 oxfmt: specifier: ^0.47.0 version: 0.47.0 @@ -44,7 +47,7 @@ importers: version: 6.0.3 vitest: specifier: ^4.1.5 - version: 4.1.5(@types/node@25.6.0)(vite@8.0.11(@types/node@25.6.0)) + version: 4.1.5(@types/node@25.6.0)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0)) optionalDependencies: ws: specifier: ^8.18.0 @@ -101,6 +104,162 @@ packages: resolution: {integrity: sha512-23pSHE9+ZEPa5wXGeAcd8tA0Dn8Ba+pVsnjKVk4VcnJ9s1soEDt7197R5p87hPpw4X52uoBzFFlC7HGIPhFYFA==} engines: {bun: '>=1', deno: '>=2', node: '>=22'} + '@esbuild/aix-ppc64@0.28.0': + resolution: {integrity: sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.0': + resolution: {integrity: sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.0': + resolution: {integrity: sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.0': + resolution: {integrity: sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.0': + resolution: {integrity: sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.0': + resolution: {integrity: sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.0': + resolution: {integrity: sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.0': + resolution: {integrity: sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.0': + resolution: {integrity: sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.0': + resolution: {integrity: sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.0': + resolution: {integrity: sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.0': + resolution: {integrity: sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.0': + resolution: {integrity: sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.0': + resolution: {integrity: sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.0': + resolution: {integrity: sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.0': + resolution: {integrity: sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.0': + resolution: {integrity: sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.0': + resolution: {integrity: sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.0': + resolution: {integrity: sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.0': + resolution: {integrity: sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.0': + resolution: {integrity: sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.0': + resolution: {integrity: sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.0': + resolution: {integrity: sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.0': + resolution: {integrity: sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.0': + resolution: {integrity: sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.0': + resolution: {integrity: sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@j178/prek-darwin-arm64@0.3.10': resolution: {integrity: sha512-7KHluUGx5lAEtRKnleVSmZGsc9JNeVMRLbSngwU25e4XiJNdczVPrD5EcNwjngh4qoAm5xs05LE/waH7Kcowrg==} engines: {node: '>=18'} @@ -772,6 +931,11 @@ packages: es-module-lexer@2.1.0: resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + esbuild@0.28.0: + resolution: {integrity: sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -1308,6 +1472,84 @@ snapshots: '@eplightning/nats-server-win32-arm64': 2.12.5 '@eplightning/nats-server-win32-x64': 2.12.5 + '@esbuild/aix-ppc64@0.28.0': + optional: true + + '@esbuild/android-arm64@0.28.0': + optional: true + + '@esbuild/android-arm@0.28.0': + optional: true + + '@esbuild/android-x64@0.28.0': + optional: true + + '@esbuild/darwin-arm64@0.28.0': + optional: true + + '@esbuild/darwin-x64@0.28.0': + optional: true + + '@esbuild/freebsd-arm64@0.28.0': + optional: true + + '@esbuild/freebsd-x64@0.28.0': + optional: true + + '@esbuild/linux-arm64@0.28.0': + optional: true + + '@esbuild/linux-arm@0.28.0': + optional: true + + '@esbuild/linux-ia32@0.28.0': + optional: true + + '@esbuild/linux-loong64@0.28.0': + optional: true + + '@esbuild/linux-mips64el@0.28.0': + optional: true + + '@esbuild/linux-ppc64@0.28.0': + optional: true + + '@esbuild/linux-riscv64@0.28.0': + optional: true + + '@esbuild/linux-s390x@0.28.0': + optional: true + + '@esbuild/linux-x64@0.28.0': + optional: true + + '@esbuild/netbsd-arm64@0.28.0': + optional: true + + '@esbuild/netbsd-x64@0.28.0': + optional: true + + '@esbuild/openbsd-arm64@0.28.0': + optional: true + + '@esbuild/openbsd-x64@0.28.0': + optional: true + + '@esbuild/openharmony-arm64@0.28.0': + optional: true + + '@esbuild/sunos-x64@0.28.0': + optional: true + + '@esbuild/win32-arm64@0.28.0': + optional: true + + '@esbuild/win32-ia32@0.28.0': + optional: true + + '@esbuild/win32-x64@0.28.0': + optional: true + '@j178/prek-darwin-arm64@0.3.10': optional: true @@ -1619,13 +1861,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.5(vite@8.0.11(@types/node@25.6.0))': + '@vitest/mocker@4.1.5(vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0))': dependencies: '@vitest/spy': 4.1.5 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.11(@types/node@25.6.0) + vite: 8.0.11(@types/node@25.6.0)(esbuild@0.28.0) '@vitest/pretty-format@4.1.5': dependencies: @@ -1749,6 +1991,35 @@ snapshots: es-module-lexer@2.1.0: {} + esbuild@0.28.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.0 + '@esbuild/android-arm': 0.28.0 + '@esbuild/android-arm64': 0.28.0 + '@esbuild/android-x64': 0.28.0 + '@esbuild/darwin-arm64': 0.28.0 + '@esbuild/darwin-x64': 0.28.0 + '@esbuild/freebsd-arm64': 0.28.0 + '@esbuild/freebsd-x64': 0.28.0 + '@esbuild/linux-arm': 0.28.0 + '@esbuild/linux-arm64': 0.28.0 + '@esbuild/linux-ia32': 0.28.0 + '@esbuild/linux-loong64': 0.28.0 + '@esbuild/linux-mips64el': 0.28.0 + '@esbuild/linux-ppc64': 0.28.0 + '@esbuild/linux-riscv64': 0.28.0 + '@esbuild/linux-s390x': 0.28.0 + '@esbuild/linux-x64': 0.28.0 + '@esbuild/netbsd-arm64': 0.28.0 + '@esbuild/netbsd-x64': 0.28.0 + '@esbuild/openbsd-arm64': 0.28.0 + '@esbuild/openbsd-x64': 0.28.0 + '@esbuild/openharmony-arm64': 0.28.0 + '@esbuild/sunos-x64': 0.28.0 + '@esbuild/win32-arm64': 0.28.0 + '@esbuild/win32-ia32': 0.28.0 + '@esbuild/win32-x64': 0.28.0 + escalade@3.2.0: {} escodegen@2.1.0: @@ -2156,7 +2427,7 @@ snapshots: undici-types@7.19.2: {} - vite@8.0.11(@types/node@25.6.0): + vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 @@ -2165,12 +2436,13 @@ snapshots: tinyglobby: 0.2.16 optionalDependencies: '@types/node': 25.6.0 + esbuild: 0.28.0 fsevents: 2.3.3 - vitest@4.1.5(@types/node@25.6.0)(vite@8.0.11(@types/node@25.6.0)): + vitest@4.1.5(@types/node@25.6.0)(vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0)): dependencies: '@vitest/expect': 4.1.5 - '@vitest/mocker': 4.1.5(vite@8.0.11(@types/node@25.6.0)) + '@vitest/mocker': 4.1.5(vite@8.0.11(@types/node@25.6.0)(esbuild@0.28.0)) '@vitest/pretty-format': 4.1.5 '@vitest/runner': 4.1.5 '@vitest/snapshot': 4.1.5 @@ -2187,7 +2459,7 @@ snapshots: tinyexec: 1.1.2 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.11(@types/node@25.6.0) + vite: 8.0.11(@types/node@25.6.0)(esbuild@0.28.0) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 25.6.0 diff --git a/python/README.md b/python/README.md index 1967245..82bb61c 100644 --- a/python/README.md +++ b/python/README.md @@ -150,12 +150,13 @@ Native messaging mode creates the local native host wrapper and browser manifest Use reverse mode when the browser does not expose a public CDP websocket to the final client, but the ModCDP extension can open a websocket back to a local proxy. The proxy still serves a normal-looking CDP endpoint to Playwright, Puppeteer, Stagehand, or any other CDP client: ```sh -pnpm run proxy -- --upstream-mode=reversews --upstream-reversews-bind=127.0.0.1:29292 --listen 127.0.0.1:9223 -pnpm run proxy -- --launcher-mode=local --upstream-mode=reversews --upstream-reversews-bind=127.0.0.1:29292 --port 9223 +pnpm run proxy -- --upstream-mode=reversews --port 9223 +pnpm run proxy -- --launcher-mode=local --upstream-mode=reversews --port 9223 +pnpm run proxy -- --launcher-mode=local --upstream-mode=reversews --upstream-reversews-bind=127.0.0.1:29293 --port 9223 # const browser = await playwright.chromium.connectOverCDP("http://127.0.0.1:9223") ``` -Reverse mode is opt-in. The shipped extension has no generated runtime config; it always tries the fixed local reverse connector at `ws://127.0.0.1:29292`. With `--launcher-mode=local`, use that default bind and the normal `ModCDPClient` launcher, injector, and `ReverseWebSocketUpstreamTransport` path will wake the service worker and accept its connection. With `--launcher-mode=none` or a non-default bind, an already-running extension or test must explicitly call `globalThis.ModCDP.startReverseBridge("ws://host:port", { reconnect_interval_ms: 2000 })` with the chosen endpoint because there is no side channel before the reverse connection exists. `--upstream-reversews-wait-timeout-ms` controls how long the proxy/client waits for that extension connection. Once it connects, it self-identifies as a ModCDP extension service worker and the proxy uses that reverse websocket as its upstream. `Mod.*`, expression-backed `Custom.*` commands, custom event fanout, middleware, and normal CDP commands all stay routed through `globalThis.ModCDP.handleCommand(...)` in the service worker. +Reverse mode is opt-in. The shipped extension auto-connects to the fixed local reverse connector at `ws://127.0.0.1:29292`; the proxy/client listens there and waits for that extension connection. Keep `--upstream-reversews-bind` when using a custom extension build whose compiled autoconnect URL points at a different host or port. `--upstream-reversews-wait-timeout-ms` controls how long the proxy/client waits. Once connected, the extension identifies itself as a ModCDP service worker and the proxy uses that reverse websocket as its upstream. `Mod.*`, expression-backed `Custom.*` commands, custom event fanout, middleware, and normal CDP commands all stay routed through `globalThis.ModCDP.handleCommand(...)` in the service worker. Reverse mode is intentionally scoped to one local browser and one reverse extension connection per proxy process. The browser may still have other extensions installed; ModCDP does not require `--disable-extensions-except`. @@ -230,7 +231,7 @@ dist/ Built JS output used by the extension and Node CLI scr 3. Attach a session to that SW target and `Runtime.enable` on it. 4. Call `globalThis.ModCDP.configure(...)` to push the resolved loopback websocket and any explicit server route overrides into the SW. The clients do this automatically by default. -Reverse proxy mode flips the bootstrap direction: `js/src/proxy/proxy.ts --upstream-mode=reversews --upstream-reversews-bind=127.0.0.1:29292` listens for the extension, while still serving downstream clients from `--listen`. The extension artifact is fixed, so automatic launch/injection uses the default `127.0.0.1:29292` connector; non-default reverse binds need an external bootstrap call to `globalThis.ModCDP.startReverseBridge(...)` with the same URL. The service worker sends a `modcdp.reverse.hello` message and then accepts CDP-shaped command messages from the proxy. The proxy maps downstream request IDs to reverse request IDs and forwards reverse events back to the downstream CDP client. +Reverse proxy mode flips the bootstrap direction: `js/src/proxy/proxy.ts --upstream-mode=reversews --port 9223` listens for the extension on the configured reverse connector while still serving downstream clients from the proxy port. The service worker sends a `modcdp.reverse.hello` message and then accepts CDP-shaped command messages from the proxy. The proxy maps downstream request IDs to reverse request IDs and forwards reverse events back to the downstream CDP client. ### Send diff --git a/python/modcdp/client/ModCDPClient.py b/python/modcdp/client/ModCDPClient.py index 6639219..85de523 100644 --- a/python/modcdp/client/ModCDPClient.py +++ b/python/modcdp/client/ModCDPClient.py @@ -13,24 +13,23 @@ import asyncio import inspect -import sys import threading import time from collections.abc import Mapping, Sequence from queue import Queue, Empty -from typing import Any, cast +from typing import Any, Literal, cast from pydantic import BaseModel, TypeAdapter, ValidationError from pydantic_core import to_jsonable_python from ..router.AutoSessionRouter import AutoSessionRouter from ..types.jsonschema import type_adapter_from_json_schema -from ..types.generated.cdp import AwaitableDict, CDPEvent, CDPSurfaceMixin, cdp_event_name, install_cdp_surface +from ..types.generated import cdp as generated_cdp +from ..types.generated.cdp import AwaitableDict, CDPEvent, CDPModel, CDPParams, CDPSurfaceMixin, cdp_event_name, install_cdp_surface from ..launcher.BrowserbaseBrowserLauncher import BrowserbaseBrowserLauncher from ..injector.BBBrowserExtensionInjector import BBBrowserExtensionInjector from ..injector.BorrowedExtensionInjector import BorrowedExtensionInjector from ..injector.DiscoveredExtensionInjector import DiscoveredExtensionInjector from ..injector.ExtensionInjector import ( - DEFAULT_MODCDP_WAKE_PATH, DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES, ExtensionInjector, ExtensionInjectorConfig, @@ -120,7 +119,13 @@ class _ModDomain: def __init__(self, client: "ModCDPClient") -> None: self._client = client - def evaluate(self, *, expression: str, params: Mapping[str, Any] | None = None, cdpSessionId: str | None = None): + def evaluate( + self, + *, + expression: str, + params: Mapping[str, Any] | None = None, + cdpSessionId: str | None = None, + ) -> AwaitableDict | AwaitableValue: payload: dict[str, Any] = {"expression": expression} if params is not None: payload["params"] = dict(params) @@ -135,7 +140,7 @@ def addCustomCommand( params_schema: Any | None = None, result_schema: Any | None = None, expression: str | None = None, - ): + ) -> AwaitableDict | AwaitableValue: payload: dict[str, Any] = {"name": name} if params_schema is not None: payload["params_schema"] = params_schema @@ -145,22 +150,28 @@ def addCustomCommand( payload["expression"] = expression return self._client._send_command("Mod.addCustomCommand", payload) - def addCustomEvent(self, name: str, *, event_schema: Any | None = None): + def addCustomEvent(self, name: str, *, event_schema: Any | None = None) -> AwaitableDict | AwaitableValue: payload: dict[str, Any] = {"name": name} if event_schema is not None: payload["event_schema"] = event_schema return self._client._send_command("Mod.addCustomEvent", payload) - def addMiddleware(self, *, phase: str, expression: str, name: str | None = None): + def addMiddleware( + self, + *, + phase: Literal["request", "response", "event"], + expression: str, + name: str | None = None, + ) -> AwaitableDict | AwaitableValue: payload: dict[str, Any] = {"phase": phase, "expression": expression} if name is not None: payload["name"] = name return self._client._send_command("Mod.addMiddleware", payload) - def configure(self, **params: Any): + def configure(self, **params: Any) -> AwaitableDict | AwaitableValue: return self._client._send_command("Mod.configure", params) - def ping(self, **params: Any): + def ping(self, **params: Any) -> AwaitableDict | AwaitableValue: return self._client._send_command("Mod.ping", params) MODCDP_READY_EXPRESSION = ( @@ -265,8 +276,6 @@ def __init__( "injector_mode": injector_mode, "injector_extension_path": injector_input.get("injector_extension_path"), "injector_extension_id": injector_input.get("injector_extension_id"), - "injector_wake_path": _defaulted(injector_input.get("injector_wake_path"), DEFAULT_MODCDP_WAKE_PATH), - "injector_wake_url": injector_input.get("injector_wake_url"), "injector_service_worker_url_includes": list(cast(Sequence[str], injector_input.get("injector_service_worker_url_includes") or [])), "injector_service_worker_url_suffixes": list( cast( @@ -354,6 +363,7 @@ def __init__( self._launched_browser: Any | None = None self._extension_injectors: list[ExtensionInjector] = [] self._cdp = _RawCDP(self) + self._hydrate_native_protocol_schemas() self._hydrate_custom_surface() def connect(self) -> "ModCDPClient": @@ -592,7 +602,6 @@ def __getattr__(self, domain: str): def _server_configure_params(self) -> ModCDPServerConfig: server = dict(self.server or {}) - transport_injector_config = self.transport.getInjectorConfig() if self.transport is not None else {} server_routes = server.pop("server_routes", None) server_loopback_cdp_url = server.pop("server_loopback_cdp_url", None) server_browser_token = server.pop("server_browser_token", None) @@ -624,11 +633,6 @@ def _server_configure_params(self) -> ModCDPServerConfig: return cast(ModCDPServerConfig, { "upstream": { "upstream_mode": self.upstream.get("upstream_mode"), - **( - {"upstream_reversews_url": transport_injector_config.get("upstream_reversews_url")} - if transport_injector_config.get("upstream_reversews_url") - else {} - ), **({"upstream_nats_url": self.upstream.get("upstream_nats_url")} if self.upstream.get("upstream_nats_url") else {}), **( {"upstream_nats_subject_prefix": self.upstream.get("upstream_nats_subject_prefix")} @@ -871,8 +875,6 @@ def attach_to_target(target_id: str) -> str | None: "waitForExecutionContext": self.auto_sessions.waitForExecutionContext, "injector_extension_path": cast(str | None, self.injector.get("injector_extension_path")), "injector_extension_id": cast(str | None, self.injector.get("injector_extension_id")), - "injector_wake_path": cast(str | None, self.injector.get("injector_wake_path")), - "injector_wake_url": cast(str | None, self.injector.get("injector_wake_url")), "injector_service_worker_url_includes": cast(list[str], self.injector["injector_service_worker_url_includes"]), "injector_service_worker_url_suffixes": cast(list[str], self.injector["injector_service_worker_url_suffixes"]), "injector_trust_service_worker_target": trust_service_worker_target, @@ -934,6 +936,35 @@ def _hydrate_custom_surface(self) -> None: continue self._register_custom_event(cast(ProtocolParams, event)) + def _hydrate_native_protocol_schemas(self) -> None: + with self._schema_lock: + for domain_name, domain_class in vars(generated_cdp).items(): + if not domain_name.endswith("Domain") or not isinstance(domain_class, type): + continue + domain = domain_name.removesuffix("Domain") + nested_classes = { + name: value + for name, value in vars(domain_class).items() + if isinstance(value, type) and issubclass(value, CDPModel) + } + for class_name, params_class in nested_classes.items(): + if issubclass(params_class, CDPEvent): + event_name = getattr(params_class, "cdp_event_name", None) + if isinstance(event_name, str): + self._event_schemas[event_name] = TypeAdapter(params_class) + continue + if not class_name.startswith("_") or not class_name.endswith("Params"): + continue + command_base = class_name[1:-6] + result_class = nested_classes.get(f"_{command_base}Result") + if result_class is None: + continue + method = f"{domain}.{command_base[:1].lower()}{command_base[1:]}" + if issubclass(params_class, CDPParams): + self._command_params_schemas[method] = TypeAdapter(params_class) + self._command_result_schemas[method] = TypeAdapter(result_class) + self._command_result_model_schemas.add(method) + def _register_custom_command(self, params: ProtocolParams) -> None: name = params.get("name") if not isinstance(name, str) or not name: @@ -996,10 +1027,14 @@ def _validate_command_params(self, method: str, params: ProtocolParams) -> Proto if adapter is None: return params try: - validated = adapter.validate_python(dict(params)) + validated = adapter.validate_python(dict(params), strict=True) except ValidationError as e: raise ValueError(f"{method} params did not match params_schema: {e}") from e - jsonable = to_jsonable_python(validated) + jsonable = ( + validated.model_dump(mode="json", exclude_none=True, by_alias=True) + if isinstance(validated, BaseModel) + else to_jsonable_python(validated) + ) if not isinstance(jsonable, Mapping): raise ValueError(f"{method} params_schema must validate to a JSON object") return cast(ProtocolParams, dict(jsonable)) @@ -1010,9 +1045,11 @@ def _validate_command_result(self, method: str, result: Any) -> Any: if adapter is None: return result try: - validated = adapter.validate_python(result) + validated = adapter.validate_python(result, strict=True) except ValidationError as e: raise ValueError(f"{method} result did not match result_schema: {e}") from e + if isinstance(validated, CDPModel): + return cast(JsonValue, validated.model_dump(mode="json", exclude_none=True, by_alias=True)) if method in self._command_result_model_schemas and isinstance(validated, BaseModel): fields = list(type(validated).model_fields) if len(fields) == 1: @@ -1023,22 +1060,29 @@ def _validate_command_result(self, method: str, result: Any) -> Any: def _validate_event_payload(self, event: str, payload: ProtocolPayload) -> Any | None: with self._schema_lock: adapter = self._event_schemas.get(event) - if adapter is None: + event_class = self._event_classes.get(event) + if adapter is None and event_class is None: return dict(payload) + if adapter is None and event_class is not None: + try: + return cast(ProtocolPayload, event_class.model_validate(dict(payload)).model_dump(mode="json", exclude_none=True, by_alias=True)) + except ValidationError as e: + raise ValueError(f"{event} event did not match native event schema: {e}") from e + assert adapter is not None try: - validated = adapter.validate_python(dict(payload)) + validated = adapter.validate_python(dict(payload), strict=True) except ValidationError as direct_error: if set(payload.keys()) != {"value"}: - print(f"[ModCDPClient] event {event} did not match event_schema: {direct_error}", file=sys.stderr) - return None + raise ValueError(f"{event} event did not match event_schema: {direct_error}") from direct_error try: - validated = adapter.validate_python(payload["value"]) + validated = adapter.validate_python(payload["value"], strict=True) except ValidationError as value_error: - print(f"[ModCDPClient] event {event} did not match event_schema: {value_error}", file=sys.stderr) - return None + raise ValueError(f"{event} event did not match event_schema: {value_error}") from value_error if event in self._event_model_schemas: return cast(ProtocolPayload, validated) return {"value": cast(JsonValue, to_jsonable_python(validated))} + if isinstance(validated, CDPModel): + return cast(ProtocolPayload, validated.model_dump(mode="json", exclude_none=True, by_alias=True)) if event in self._event_model_schemas: return cast(ProtocolPayload, validated) jsonable = to_jsonable_python(validated) diff --git a/python/modcdp/extension.zip b/python/modcdp/extension.zip index 268e970c6af6be16e5388468db0aeb106cabe5a6..d48ca552c711acaceddbab33088bdad663ffadfe 100644 GIT binary patch literal 510634 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

    vc={MO| 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 nbBA3Whh&1* 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𝔢?zTR$l9_Ms_j z6L*uXFc<3rnJs6|tpd(r4C%XqTM$L^^d2!Jnd~9wqbpiNxakEA!hWj{jFXx zt)DlV1NMk}16ncMiohjd`#KJ8fKCM8us|bnWSxX)Or=HW)U?!+(g==QmOm5Ccnl3q zh~`gfMWSQ1RN-Npuw4j`0!5``0yLFm&UOF_4khSsj>j}1+_+v5=7FWyd`JEM#f~}n z=R|?y(a1OojlhtBs)Q4aRx)S3Nq7sQ2Xc4|506dA39AmqsKSHM5v+VA4ho55`nH`i(4k8WOq%u@-^j@oJP?|FviMhx8rl&t$AxQeof^#e+iSsx9#8m*gvPh>j>2XNd9?HgA z*G*)`1GbJN>fItvDzS%%--k=;t{CPDTJD-R4^04}eeDZ|rL2vfs=FEZF@D0%?w8z| z$EPXSNpDGllU>r+k>{)luetB<(V15}qwf>l`H>5SIdXqn{^AV_W8%}}L@@4DF!r~c zv7du+p&v(-=)w`GE6`z}PYsrvSa6{~c+0>exc4Gon-LUTfC5h3A3soZK)BwXlhK@f zv>(MuF|mZ~bblK7NG3yxO|f?n)1PqpF5uOch5w9?SD-ccJV)gp*R5N) z`Sn)nmBH~N5-d@Gby zU)vdYO5jrc9vMh8m(}?Jwte4)9dHE8ZT?>^<{qWb`2~AXAQwnm{PPNf%9Qt8!{n;VjN$9@AjG1^@IfD54%yv&cH(P<VR3tqkqe<*o;+XOCzSP8e@TmwV$aQOJ7Fu^o#*_;TpXXc-N%NfTf9 z`_x!^_rVeOJ)s5{yLPBKpg+AnuKujv(YN1>TEYOi3cw&{O zI2WxVJ_EIcBQ%%0?h&0lf1_R=K?vl8D6*pcP zYwi~SG{IPJkYqjcs&Db+LKxiT;+vm7puvDNQkU6gGso7fbP`PQtKQJq?}K z+$$T@$tAcsH^3p?MCoT~@w)Xf@|^A)PLJw}ifg!EmnXU0?-aGJ`!u9JRNLY0V}A9= z-+AzxdJC;-F!B&PAt{g?*Kfg1JpYXJHqc$ILKkp=12febFr_|~8~F{=Gtd}&dQY3* zh)cR3*gEDVh6G4>;*cv2aP|?>;5ef2hNzoRd^mQ3-hC6JlQ-R%%^0{OW@ypDn+op$ zyrd$IebOFOZma!iUf+rEEWh3A{h^Y1yaz-#?cr}E>%8wTs?0jy!#X?qa~Q9)(~4ME z4ZGTNYX~tSFGTg@rWjH4SB{zFZ5{^{d@L?OaG7xaL&+=BPkT_%;NXO~VTe7x2~l?k?7P7M%3g2!i# z^SlVQ+RYa>gGK4Hc>sQ20bT7yasaPNX*@LYo$+;Ly^r z8D%N|5XB*sEtV!IB*p9+AzavGZB5GytLe$xFG=tos z2Vtxb@p}Qy=KuWo|NNi-^FLRU53}3<`G5b<|L1?sug>qzCzt1sv-$u0_<#QA|4!P^ z$$UQf(tf#}-L?N+|8+5&ns3eJ2Ie*uF`)hJL`}G(6_Gy0E{&6;YX#bnd z=hp`Q`R(ne8NPpa{=xipKbzm4Uti%5=U2C;zxnL;)8$>*0U7A@Y&Ly=>%YDBt*4W# z$^1(Q;s3TDFs}3413#z9<>mF~+tK~x65AV?A0{{Lf0wg=>{!m7v$%|#FCG9=eKv3^i1yz@w>RSluzc_@N zEeKWniRr9CGG#`w`U29+voG!yTy#}zPwqyymx+O*8TDN?_*ECET@Nm6UK~NZ?ZSckw{4u zdjcFvb0{Rzr6)Ra5qTDlV2CYbOEqT`ku5^8uW@JvA{`?1u!R2%#tUS=E3qivS23nW z_m!WoTPV*WETn<$Ijr*V{C4u!Wjo}_hggI~<=V( z{dqy$E!Xfh7gYSQ1i3sm5&X{VuDQN`e?GfK2>2`@6iK^drrkF?(XY9O&GB(_{b3;m z%>F*U`?Ba`etk1r@cYj&uGh1V3xWS`{P!~~F<~7J=I4v25_6Dk$FK+@G^v%IqK&T> zJnyFu4!~eOo4midUI-~cN7+`-hJ?-J=I+ycc6>Ftxjnlkqlr*AO=qKsyR*yIP>juj z$Fwy(dUZ{?jNmcT`t@vj$Fy!Ae;efFNnif9dGq$N*j+rnv`W>JtJaNSamyh%|L9*J z$aMeF9P#MHe;Ww!?*=b!h0$v>-}#sJum5g_hYPO!K5}EA2JEZr`3J+a+t#l@E$(#X z)Xp)VO|R#+zq9%EhuPMRF>>6@uKorE|L4j1f*&-UgK>r!m;S!~Fgd@%f&72}pa0+g z^Zy4>O9KQH00008004lWC*etOc}5Te0P+GC03rYY0A+Y|Wo~n6Z*DJbZ)9U+a4&OZ za&~EBWnXu1a%*LBE^2e^{rh^`II=g4{y$g2_Rc#?p0*vGWjoW8Wy|)gteH;t?xbhd zyONAUOSH{MA~huC#7X`GTO4@n4Wr@V0P$(1%KNJc#ZseSw zkG;#Eqj2v0;QVy)!5bxe2cp~;J>kr%n)#z4KW( zUQE6C>E1k;&z^n`$N$;g>+ZFmDlf_7r#IcFqcHO5$KHn+3i!|S^OrxJzj|?UdVYF# zb~=3h>iql8HF#3RzzB~0ldr@b{nY)oYiy2?jT$I;7$++W?HnNwF z<6k7b?kz`vu{Dtt(`Qju8y;6NQa=qDrj&^gBslgRax_|SR! zCus4{zy5N1e(wB<@X!0`yz+=-q-pPDHq7`-cN%;A4e+1-P1}_=YmZg5ckRZMU)!>s zOzf1LdMI6kss|^5Dw%NZI4@8Car(=S^W-9OgE9I0zv1{Oz70mFQ4~h( z_h~R9^8|mOmII|g$DYH40a^wo*#^+OwbI11)eurh=_4iUdYLoeGV;97UPDL&>F{Jh zwD^{LLFQa0qhi3WJI;zQ@j7bxsblIT!9wnydu2WLyAam(5e zqPs{^CTFin=Iy<67>DOr^0P!W3-acTB+@zxeBmm#@#ye){Fdqu1xZ9KHPO=_{h`sHU^M0~2Hj-76B&AMo_$ zuRk82{$el5_73v!!6K6JpY+Xi8h(sViS|lgrcdbmI3~I-eMf)E=coT(pp5d7Oz|RC zU%!auyO-XL7pbr5Ba|YvRUw}8bVNUbN=9k;6L^2&#$LbsI{eiSlKrD7a&JXC^Nmcu zh^EW}Bnp?7D>c!_U`8? z;gp^LJ!Gj+fB2#wK7@XtGD<$7@8d9dmB94lU*7)W&8K9Xq+Mlw3AxC6?JBK{{z#t^ zxsR1M@BrQhWTvAs@-sCfMH=lfO}Us({Wui?{*%3#{f#V&87q>ssW`Ya;D_!Au_X^r?9OXCyz z{2LFdK&kLkmX6v#N7Jb)8v1jdmKxNgRa&X)b4UxeTR3AKFVf*>G>!M~1+isP{UCnB zyO<2_Q$>5oC-nU_o&S{1!p~@$=>mi?*z%5M;ZK>^puZ)N49&fO)G zzlezu7|~UdSrpg`jq^{en1ql-yu`< zXacJMquj>1R-K~08${hlzQ+MCw$P>^kw0PyB-nDJX4t#*r^MK9G;Szc0jMDh*Bj@D zABf#din#D1wklzT-e{%qV$9;+Om>{}cS7k%LiS(+`}EUgR9GT4a>E5tY413(2aD~5u0Xba+fsUwrD3(u9=3`;eYL#@WjE5&)UL3q zcUW;#8s(~4aFO;f<>UoSaLLv-1~lmFy(DBMHjFl_OLS_!HAt@$_Tp}iy`)XrOmRR| z0$W#+|Z1z#?nM*`nDb-jFVQ^|q?(F3ad(jpU`c zQ)26lZ=r!(82eDz!l$~1AIukt(&_XGWj>^Fe)|nQxe5KT(^UDJnyrmETtp*J;c?

    t96Fo;xk)5XuwjJ-XcIsbLw+(mtVS`C|rUI=eKl@(lH&sE`<& zUV~N(u=`k*O4B|BQ6@to@#eS{M4)}ZWXVhCDSay`j>wvO?2UinNq!`T;~st1pt+C+ zNW!TX0lr0&y`=hK@AT(aFaG}1OXp84-^~5gpkLgJm}lQ{TC@m|J@pk~0Iqx6`LnD+ z87)o37F$k*CDQb7Fr$WOh>3T*evisx11M@lGGOqHJ>%^6dmNxIpvg?|Il7pVoTl+@uelKIKs2 z0&NS4eT#H=f;})3{(+@I-G~fQAVL}6oK&_TY{+f6pT&LynPVW&j(v;nge>(Ue@;|< zOp_UNE?=&vyI^4VDT+QrB`V1gip*O5G4d0gHTphUdH$r!g~r|<5TeZg^yL_}ljA`O z8c#9-953^V++!tQAq(XWfeH~DMC{;_w*{WB_Nl^Bur9vb?U>Ek*7P@n5E?O=LT0Wa zDw0j?WxDa87NM`4K`vk?F}apA`*-vw)=MN2(oA!zIKA)j6IQLEM$APxQi*0i`!?fYhFN~xvAQ@$z2Y#%`i%0dakmIsH3_sHTREqZ$|x%Pqv zY)LPsNsKl^_~hZm;q=BElk!p-tGbDY%6P-K@nCa~SD9|=DLX6Ow)W{^Lz1e`D1@3cWd3Q^icMgTDdB1OXg`_)e`_fnIVzE<+^ z)nJyHM2yhChabIYNET=f(%Zx&CVwJk;5MGV`PbWzZ{yu}Pp^ovw}oH4jn8-AeNUh7 z;urtg{r_?}RZ&9(+gFhx2;~q?2?*H&gj&wZkWOuBE+lMK5$>Vg3t`N#cXGbQ#fbeqv?8F%p&46(&Mj*e zxrq)NDkPJ-jjl8U-W0Y3a&WDYmIOPCNS*JE_?QR(2Esi#k8a`OxoGPZAc19#z|x1H z3biNHE>cMU;*dElWVb^uG|{y!U3 zU_ij`n&KCb_Rx3mmaO2!j{6*KsE?*B{apBE2tNVdn30O$Xy|F<+$54cfo)~>Ev14d zRiyMz8{r}|jB%!rw=}W#V6BV5Pe`7YB3d|Oz!udN>QVrwqDA2}Sqtl-8w5m`#B*;% zrUB<7By-_=UdMX}cBkLdvfguo#DbeUFnD}xm;dA$#jqcHMBY8iOM@+mn?N);*$zzVu_3Iw}hI#gc-(Dc5-C!kUk~k>}rtGAN^I8FX8if0b*n zbP>jj|HZqUawA$>C8XsVOS5xj-BA|>u|a`eyg~>#pm0J~s}~Bw^{Uk{F~WWE>XjcbX zo$sBkVCz|C88+4Qe(T8>n&fWlJ<=KP#nbmHaDleO8pQmWdp7K1BHyOC`2?-5#B>ZP zz(JADb5L}^?PFdGwUCWeAqP8UGRqu;HT*cU=9`zA2Zzc334IwMUkM9-MY_9)5Q&WKHE7oM|-y|I&`MV!_c z>Q9Ju34THml|)$C^O;S$bB<~IG7$na4=@fR#E);YcpqQE3$*gJ8GDkq>>u|{WiJKu zm@MFACIjC88W1%dUIoO48AIuZ4iQcAmk1`p-S5Z(p z$^hqk43#ZAewmN$`#tI5(b#^Udf9Gmt1@|4?^r*N3rG46eWQ-~>~X;g)JMfR>aDwq zV*v4GJ>vj7+msv&zX!h4)-}kR3(09?)IS#>b>`&8idlMg;~waEaA;#AyH}R)5Nlst zWKMxAbxXP!BrHlsfQ%yIcm`CpNMxO0F7*C^1zOguW9xM8d)J_T+~7s?RT)x(`pvPW z!s)og1eUs$U>QuareX$M&~2+?>r1o0M6sIbwY2et&96KI%w~c)Vv))g7fk5*F*Nq0 zq0vZvNaX@{M|tZ9ffq41Q_)IVG^Q1fv?(u5GxE;yrbOrD@i=9o!o!VhOreUhYA91d zEp5XJzt%#X@(m6)+ahNZMp}_f24S#@SgvbK-9Oo@kDiL7g&%rqeA;17hA+T7mLBL& zjj&I9JP}3nU~|>FWvsX)$g-Gk!lylYzQO8y!Rlb|-}vvI?+J0D>mgd7ZlB1LtJ+p0 z-wsxmwAx9T&1|Z%zr9Rb@v(#kcmnOPV{!Ui;><jBTpJ`tGGj#+&3f+TFInjmvjaWDeC@sg^ zVhfzTpJk=iT{*VM7|Kq4=1*1iv2{tFY$4sewFo9b_z|{()JEuM-Sl>-z9{UaS`|HV zpl>lr2XyNelXzH2p*&87d``G`Ht8$mM+HU2AAPcfBt)cun@grxxj17;t0J3&$o0G*5oiH!3-tvTPyuuPujRMev;b!Jc6jGPM-+Sh^kN6M9$kWCO(sFhz8w zII6s%%9JYxkbE$jAdxP2vF4DX?k@^@XX1pF&(3r+R>JxEEv5xiBa2m;{)iLS2u(du zOB?FG)7*sk`Qa>=ZgHjvUfa$SDa0${%74)D@ghhXBu}f!_NVXoDI<>^|M8}8TJO~9 z&^&tGV2?VO=NDu)i*DIYGH^QyFVbXEv0vOK)b|!FSX>^;ERZzApyBSMmb8j3L#rT0 z49TG+1z*x3>9wPz;p_g@G>>Wn7{~J(G?8?Z(HflX|4Q>&Da9px|AWH`y^O-ykQ3Vw ztuZK0LRVp%tE^aez1qIVPORtj(Nlc)4(b1*);zpIe!$I7PkC|N*x)H8pW0O6raLZ~_&q6@JA`mgYaP7H7;}1! zPn~w=nA6h2Ln5zjZOB0p@8s#HRNJJv*>Np@2eOmgL<#k)jYLw2rI*>92*XD7F4brk zEDD75Zy~i2qQ*>tKF)7&t7V`LU(1sC|3I~_j`#{#+UL0FYlGJZoH@vvX5V$w~m7992 z!!bKR&BxT$D1G^SZxMUZ(G{7opOdA+Xu24ad3$R(4Hx6fsT+A)Hml8AcM{#Alx#$w zk%ph~@gcz)7~f}&tu2J#SORL@vF#NHd-UZ|kOuF;vJTM`nF)-zoM~voKf~B&5(5^p z!;#5+Atdc47wDSc_w#GLo6 z6|q+abLcR&Gl#v>bBKis%28s$feTg_9q>;FYBSe8xEN*alT`{mc?Dw*$r^k1gK~;Q zoRMMsg?a||P|cA=7C-crOBpYltjBHYfwo>-wr5l(7VrfXy&}_eiHZPC$f!u*3I!FN zxQSP$CP5=kO^ek#^w_@w8+vQ^pxy3t2JL32 zzu)T)2EF~}{uVKzv(lT%2V2_;kMgQ(=9Jvp?{@oxZnrt;44MbMUaQ~gk)m;1sqLDE zJX8z>9^_D(cVEnLvufZ!3Sq|(`VYl|aFfIf*dV6wdo9>{os;1S)(pjx+A`u*dr!gr zd5Biun~rG_^2|7Y6GpT2#hZ8OI*MpK)g zmZ`o9d?~M1}=iH zm^!|nX(@bhepdYZcnx+_1K=8sQr$@6j>WKi7AaA1aGWObq8aQ`!k!x23f6eA>$KE- z)Ez@)(<^ppyWV(HafE_?CA!KoZsk7N!-WLD3 z>x`Cio2pLkMZ-0!suHwfkP1Y_=-SY#wrL(e@n(o-_7geoNOCVkH8c$(^r9-Av;c!d zo%tE_7A>KqI4Wi0>0rqzK*%lD{^3c;0x_M-AWS0Y;gwv0h^;v~JZVy<5=kN)(~|sD z!^%8|M{o!i0`PfPa#tv=!=aH2_swN`)qsP;&To1v)iMHW9vDRF9BQ8ZLa<<~qoj?45lS>V~AicB+?{`74 z7;(o#+NKofTy`>?V!~ppOSvGbxE4y9bmP;8Fm;)?#~`&T5gm~owFVuI+Jzm=~Un-(y^FlOQcJIz1--f;0t^;#p_oVRKHqPm< z9f$upmlvn-XZ-s)z`{SXMChx0%+u+=&)EehJC68!KK9rb@t3FI>6ITmE&rwbpcS9; zGVyo%;>43L#CMbf(W*Q^c~KJd0BIM>oH~??=#C=Y!jw>^x=9IYoD*STQ-$!^=dp3l zsnc>AF3Q*tCa zsilIrba;$Lynny3!0^?Z*M2@@*is8)#L{GRV1 z-q_y8mZ#xF(eTnm%LHPG+{yHm}25`m0Ap|3Rj950aH^7Xb5MzZ+@ri+GGk{BSs1Y&y_a7Xg+&mZ#J`Ut2Mg>b>{|oX+;Kk>`h*;tZBH`)j>?Es`OH( zq@ve({k1eh%F>LMyo^ zIpa@Tt#0HP)UqxsMS4qGdg#cwx0Al5?uqFu`inkiZi?v(_LIILCUopYr!&`=MWSc)E=_+N z-K4azU+MF{^1M%HQ=Y?b`Ywd4iPAUp7k$2< zclpRS{5QQ%vnBZm-{~{lTu-#qn}r{I`IP*S_i=jT6Ri&YIlZG2wfu^={94{hcg=31 zyAI<7@aFU}|4rW|vuRK14f%w*Ej2t4~9U9(2{&`71$s60n$)f)K|{=V00n>EUZ zMk=*N0~GmML}VEb7J@SF;s)M%8B7*dAr*p&)+}!0=3?~Cw7x1O%o-NG?28$!?$nu$mf?Q zU({0W?r>_-urvet&hmV}{e1g54)IMJX7CJg%jEX^e?9r4GxqMudzJHIdNlYB55a#0 zmGH$$n_w{J4xLX9=hRAhv-Q7Q>1`-9IgL!h;0Z{>_wD7mT$(7nyo^Oa4w>qGtoV6}(S(=Bc5@Ei0y=U~up78CuMM(lRpb7iO_AJ;N0X*CbqZa7zhWBxWr*j_i5%eMcyFVH2l@kC^RKo0wY# zSd}AN2B~Li&7~#>HeWP5MNZ_3WuRLCc>dLQj7n{zLo^|T4qm^RVwDqok> zvA-%8MA{B3-aQ4`h4tFM-i(Ith*mft694W?f9LMWQ<6@e7|N8I0 z{rK|d-PiwsVRQXqG7ILr$qf|O?x)3lLRsA1o1@)-kk`%hH61uCK|1BLDA` zZBmDl?nhg?AI)_Cw59u}neN1v?u4gE&;GJI@Z^#{aqX z?)wI*!un$SPh=Qx?R~$sz5Sn!#@jbi`7KYNMooek?5W_*EJ{jbK`xAQNj ze8xEc*&ik0RpidE{n6cT^cAE$ABMAe7jR)uC;tU znKF8J4I?Q$Z)aubW@PAOW$0vN$Rw$qk)e0@n~}a@PujoR{w?d>;O@6WIedueP9vOn zQ#ft!MV9Rjc1`5?1d@=n_}0iY8x3)JC|$s<)5r5eX5bNG+GKf!%O#Zc?(o~+L~=rY zPIB>9n>pB8gp1g+0$x4e(?-pNDrnPtDs4fFsUIjyUQLi*=bYQrvu_dd!AI$hw;#|CTp@Z zZTzw&aHIWq+uPgkWjixMd)Tp{bfm{38et>TgHphe{DRfz&iglS-^Op>z5)~`y=9dw zWoL^SD6r<;4tnl>63@4`IA$oa|LJ|6o_q3zR%|FGhF;KK--T67kV*r`Gvupul}hmq z`J75QUG}7-j3FOlJ_k3W-&hdqCr^EDG|>C9Apv}mk5i0Bvo? z6#f#7TRE&L+r{FXYN+%b$6WOHUpnnOoJ49SO*Amp2O&(he)vI5I|_1>pA~Sswm1?Y zARdFJt^^bi-cv->0EpV!Hu9AtY9KRmK*=Dh-^FA}Y^i{-Zbu_bL8XdG!pC_0qx!AN`zm9BRkRV{tvxM?Z<1?GUD%UhlLr zq?`(K(U~2NJ!c-;N$ItWL-ULnO}Vv`b(T=Md%=;%0O>hw`Aa!%u3T16Uh(^|;Gej? zL8RE;3j;Sv+>yM;A$@?3gp0EE0prL3TEgW)k8mbDi1bKj?6mVCk4uMb5@QUO=cCAx z&CfLH9`qYZBsj!3ENKhj0EpJ&HzIzacgdWk-oq`OthbWdiCP7U%dXm zvKkuFQM3kv4KJcdJ%KM$q}8j}{9sCckc@eT5_$6QrOcz#YtNjX+qa1Kh>x-cpBywM z8*~%4iD`tl7F9{OsJ)c$^Z*%PV4Eb`Cn=nhi50#RhzGJy!tk675aqfc&eKCj7dbs# zK>7mi4R{S(_i!Uu`V^PRZ|zVTs=nu}V)@gbYMMAvn;@v@^iI@bS^H`f1h&tpBFxl{FW zFwWI)eY8t+x%^<4c~%(fm4>Wlbt!g}9KPFoGuawpKFx3grBFRvO|-dCs6tEcLDQrK z57(?4qG$dmf#Q(Wn!teI8bMC`IVq76wTGjbi)bUFJET*cN*0w@ZtWSP@c(Fnod!H5 zGE9TJzH%?UUtrra7<*Ae6J|Or~RE>W8_M5ZCWBP8Xv$7w*2-L(llt0K;)-=v?K6hv$ zOZ<3#NfB4LJHpPQS7%tFD8G>utZ)8@Inu%(HG!OX`8Vx#YDV*K`sg5R!2<*G%pojq zM7hTB-WBu|?>Bxkn`iKUP1R4JRersn8g_D}D}jJT=2>G*Mo;ps7drX)N zI`$76KZ>bID<+3uChH5hXS-%t)fO{>BHbS^OfABRxNlBm*-#k3FK&kxN)HRWWDan3ShJ)hN459K1uq)wV86e;h13zPlAX-5d^;nbhj)Cm zl~>UT;$9lA75I(kN>g}}@)onUK}3c&6Fp;eS5*_=ge_fp|8wBJo#cspB&r71rq}SE0_3cTm>tmRHM;l$cVv>x;VEfqY`v6?w{o?EBu; zOXzT>J$F1->XQjA?yeebX;Smt2GasUw-)FG=77aZ-J7~`@*)`118K?~wp#Vogw4slE!9qsWpiAj+tEuJjqq?BewHwlO~x3zX4<^bBJ87Nl90 zZ9#g(yp|S-6O-i|AabniM#3YP2=$-_P`OM!ZM9sI5h%I*e3pYCf!L02tH1KJ_no2td&y(is}}*N)N+o1hc@RAO~A zc?`GjD8xUcSu74JS22o3o|Q+VbzDKz4t-p*=JYwRs!!R#5 zV2m)r&OcI7!qx$$kQ)c|`vVRUacsZ*01-LXG(7hHWR8z`aY@I=lgHsvd3bodyD%d+ zU~m9g=FnjD@eNb@{Q-xD2wzctXowuO9B3>B2&T8yQI6@C;vrt}i^9AW*9d%FQ5|t&_paSoQ%$hMSV1O&y!?@t3 zdW4%K<~6{dl%r{XK{?*IaTyrZ^E$r&!D-1#E(2DFot|BkR#ZVn3R=0X4Oe-i3R~`r z7+_nfPABham1I_MyieX}!Ec;{tJ1c#6I@woU0dSp&IW2e;feO* z`IHQZt+#~wy-R;etgA+YT_g8tThBZ5gBPOzesq&-*aU=FWVB3nH!II7_K0@LS7HRs z=#sIqEw<5&lE)tFPQc2{!s4kv@)~LF+uQi{mb0}Nd2`QA8n{RQ&Hbs@Fz?bnBP}}P@}W1Hi#OEvd=Cq`*^w-b_)VJ^4@19-}+hD}*Ol17q1$=hvdm1R=DT}Ef7Tx19)kM5JvH~5G6@7zhypiWm8{!3L z-BYK#P4rDyM)c(LsU6A6-F{|a!GHhrbt4HUUa;f1(<`!mOs>Ii0{lG~KP3Bw&j3jr z|Ln3$FzGL$$Wgzi3)g z)PKMF>E#}~+?h%dF9gxMMdsEmh{&Sk{No>$-_OAYrR~@vjN8g4f>Mfe?h)?hCztFe zl{UU>Y>@{BLE8|%Lob&SlxE+~u4efG!`5v_QRM3DHF_2L4z-Ftl?y9MbL0jUrG;fg z6czc|BAKQHS;3d7KQk%MSZs3QC*JK2cO4_+;-@)ebf+%@{OhMhf^TN?Fh= zp`U00&q^?W1>}&`K!+<8!GrJ88syZD&9A$XyrgZ*;3Sn&*%DT(qzlvgU0#E1bYOEN zFRX_Q8$u@7Amo*!1bivTT+HNSG9i-r@C|96fI-p?c_hxbrC3C$B4$OZy<+ejOB+;ndo7x-oId-M;hwQKvY~xoU`@h z%j9nBFzrOgbx3IrGcDeu{%HH5AWmZZM=*&Bd-WY;{bf;5@b3BVvC6R(u?80wCA6>@dzFP#5Hwv!; z(zD}qIhuAW1Bjs6?1y}LKH^pK_u?n*I++Zzr%9=24U8-KUePZ&DKLR=7N>*FmhGoS zqUQ_Yk&zM0AX0=_4B@F@Z;{X|w>wjAyC{ zig{)&<_=j5kMHLpry3>~ZKWc_D2fEoiZNDwj>5=l*%?Y$ zG+HDadj(6Bua0PFv%>D;_~8=Hp_2m6eGUULRs0h=Nb!5|M)C1ZV>{icvl?SI_MPQg zg%gGJ4DYDDbeM1R-a+`AnfY$pqAq?7$aluxn9nycGLZoK1Bs!9qH)8adLlGD4<0>wv!F2^!pP2I6EkOj&E&oD5-6ktTlA ze22*sSO9*nT6?AlX;#GoIM0QLTMVdj@m%1=9?WV)yhKAOR>6L-3&Iti)3@Y1eML(p z;z-Rac*-XM!p2MgszFBJ_8){as!TVeuN;v1n`t^b- zx@1qkqxY06B@%;@lmnO^7_EfEd|>TyikKlt!dx{Vtl7xb^MPdy*ZF-p>>t z);)Kck}TKT#>5SA8>85xkJM><$C-MUwQB zPF>NZiw|baDQi0ROrjWc7>_mWM+XfLYR=?9dQ8wBW4ToQX8>Wp29OL+Rysb?0(i()}}>qQd+;t z4Fp6vn@E4rmuZag97ADf8SN5FKLEpt8GyTkJdtLA1f)<+q&u*+i8mlV5ettUAqk52niWnDy`JJBca65X_uE>pLa$z16n+B+CM*SKjRPRh2zmRvEn zBb-$EY19~72l))r6gA@2-5&~;Y)tluZNSG28HvB}VMFWsMIA#5il@Q`99jLPU|UK! zToMHgdjf3o;$BA-jm_EdvF<$Sb!GsR750xviD-8y^>`+elfG$$e_~HT0pS|_s0auM zdAFdVsCVv>*=DUvusegJS}*X8pt39n@(li4m{d;>;L#X+XxNDPAJ;6b0Atv_@)Fxr zwZa^w&PSH%h@Lcv3g{Aeyha?_b;*Q{LCv!$6^0H=S447yV@K?Nu$0E?$zqQ%3QxRC zm%QNwVvlY~pLv0eN{`Lkb*{_g1D@$t$2vFJm zF4+6dJ5piU_bBAV&;DE(Uu=~cc%Sq+0xc~yiKcJl9)Vnt@Ot6BMhcXVPCN*4!j`y@ zHdL?NS2MR`2{T7Wn&8vzSEUho1CzhYX^31+$R*R*kC>qk{;SESJ^7nnrxQjW-Dtce zmJ%p6_0r|9Rr4;1+#rS{Ha#! zsN2Q52lOlbAd|DyQ2xbp$6+wNRdq6>P1pS#p1+Jd@3Ut)@KC7vexY~TXPq=c7BiX+ z#I_L@&U3(#q|+|f?W0AUgtM*8{b}+2=~LLd38Q%!xd~y;+>Kna0HixSfF^{Dg`_zo zMdAlnJRf&;A_jyK>kG~&(mRCTynDB573k=US_eKvLkef*9XdK8@RZSTCkLV}kuceS zll+nMgSEJ4nNutM-hdL!YsTgM)hsv!{*JHR{_C$VPT03!({HCU*Prr-zx-W13qSbm z>q|EXMbhD~_*ZUZn|Ny!r|D!r=NymiUmx>-|^eyFr0ega&~s<3jU6h zzPg=Vgo3@nn2yM?D0j+V90j)`#Uuzn@`7K&48XqrgBV`yo8%qE_SsjaDe(9Ie(_qA zn6mSKLSEX5ACDq`MhtMG15pAD@Utfr|6yN$@yGzGYFg;qWtC?3#wM zBc$xnjIJGVv8u8~gOXeZEQxv`S3Q<>8K^ax=dhq5oHo0QmMx$hVGEg=iS;F7%B2tJ z;YL}T!bzIqIX^LMM4gjKiE*a%DwS*00?9Z1+B}XwFM^@yPPt}gjcju(Q>&apvhh)B zQ;JO+Vck8`($YhQzohFeOYh(gY};;H6dea52H{T43l||3S!qxGk)KR&k2I3DwbZ(c zsPdd{uZN52_!r7sy>4qe1qt7!Im=eb`-N>#a=OjtW#s*XmWBsM{=3IQa9EIzXO=AI zsFk!6GMWf9o?BL1fSwRRdA>(`nvMy&)owOJ?zGV<9g?#xx9z-!(VamlM4+{7WSG_A zOh2e)kijTiLdhB+oZgVhfV+gUR+xj1m-&&XFXvqEeCZ_eDJji<(YQ1d;T-QjQ+#Yu zA!QNYN#U{N%o(mbX^ncpB`@Aws@jrV4A#kHxDflD$TRqWW&M9dBon(1>`qw6AC4mAbW%hYa2|8zxH0TCG zqp<6NJ@Le!4-GRahZv>QtcHlvHNf=39ZeL(RFe)WL8fgZ5oYZUd-co)^*f;(NwQJQ zU(C>Jls;BlnMp;FaMADdhaS{L%VCa9kxv_$g^JkLHJPR76mE{mG@4QAo~{suXkFtl zGpv!+DQOrZtW%1Ho}N8RBN-lz4EKOlF<;tk{Xf8&F-ZFkw=B?REZsD6;j(CiN@K>! zHSQ*h*hOVh*8_K$G!GxU}ipwBIA3x#JVGE>%Dn6CxS$NFbA}Tvaq+79?^)tawMNyLPgOv zeCS0ZWlWm#r-S!Au(CZ&kt#IW0#Cg%mpew7d$A(eof)jkw2F#?R-ql);t+b;N#^_w zTfuV6`a6qUOQ5RCcL|icMxauVaan9}%w>StOVJ4lmyHm8weZIl>dMB2{_y^beiB@?dc2 z43r1^ht7WXdf`T5e1zmTsA(vQ5A}7z9uZhIWE~=>3{SP~7K>8Nf8TArN8_R(GC1k? z#tn)Qq=xk`k$HOsv7x&~rR0XDTvoU}$h?Yl|MK^8!u`wN^Yufm_YdgPhS>Y}XKdeJ z3;ai(Hw@E~1~*8}e2qwJ*w^=v6=zmSy6+b<;ZN`@BmyD3E}OS&wn0m;46N@7@cB{5uKwKH06 zwL|@tN)y>$h069SX6xU}F3SGCJS!K|m00;dB}x3BHl+W4WgJ2*N8bYuaQO7;n$kA|g$f}~qkCT8xa!H#-O{TcX}R#hU|5<-f$NILVL zE@u$Yq)S^w{y3^Ua1Bb!jY^huB}!KrnWb*Wne!0R+J#{(l=RarB$4_cWyc4#z|w7X zr&tG{l@%(FH0_SZ5p{EBCu!eNV$xvKvaav=wPjT+VA)>Mi^!Sle1n&y*YKXG8Ikzz zJ#A0rI@yV0QRAPTCJhyxKKP5%YVTJl&Y}r9zwTWJGI`t>Ey&JNlp2RD>9XUH1$$pn z|MBY>P6NVnwsF11%H66wZkZ#h8d$!r>wqiVPR7Z9n9Ik~gESTTKX+@Tj0h~EsyjfX zr2r7A)dc|*#RJNM4y)atIKV-wau`}`c|G8@Dr*5u}qq7xzqBo;x;5o;zFQ7hL=Eot+{`@glf{ zN4JoS$6Yy8Zk)h9P{NIklT_J_EpP15P&S+m;GdcPpstyBmSI%E#SI@at}w_-ySU-x zc`k0Ei;AXKegwLlJ;>75s}L?&p${SnnM<0uRjB&oD6#mVz@DN9$ZOIeJFa*oY3X+1Ju zLZVktQ!%5oZufNF{)bgkX&{esd-Wo9y{hVbA<8vV(H_bQx((Mqy2x%seNe-zx7>UolG9ZH-Q zqfn`;EgD^@q|%~k@1IB-^{CwFp;w^Y*HlbXN8wl%UhtFiP^QMDG$aOQ)rv73@C~O~ zffurF633A){B11&gYCpe_LbzQ9HkUXXY(-pGxLHB_*d$JP%|KwEWWfdV6iGoX#>|;z3l*In+3Y*xFn4YG&z?#SdY{qvw#(Jm?%>bK#`< zBwu)C%vuqZDOKz!?7xB=o^7#`(o5G~K}}!S^N0B9qptUaDfC3h99S~L(IN#=bpVgQr*SN z09M{<3QXQu=m)GUo65TMy(zSYCZN{^rMFd!e;_k78DD{0R0k)6T{i??5c;$1MfLIL}L(CeC4=)N4_~Smms=v{6{W?3fya2hT4waQ^#6Iajnab-tOy zr}$h$Cti?F`=48^QaX!L@ite}mr5*V-PRmP^S0Y@)l%h41Tb@`sDp(kG^ckeRCJbh~$ z^zV_t$*+U~dmkh4dwHKX;k-8|rm+pW=VCC5JOEWFo-Q-O^f?L_5YXLG!U>o<8S&Fp z%%o~zg}f(!&!2qZrGEeY-Fw@xG8#!bJPm0{W)|GKinIu3fJAe$Of{X=uY6e0i0Rd4 z8J34d9(%szTw|1xKjRooeDcK~-;r|QTo#jV+CY_^0(U~x(;LIFD%Jx~$chwgOzX?K zL{TQ1+<}3NuHcgYR8z`~&3X{LoR6xdQ0C)3%B?g5Pt%tIz{qzX-Y!=u94dZ== zJ2KA;V3r@STuO6==MaOGACN*hs-yr3svN=Z7?JeyD8;94HlMUn^i= z_`|)g)>Xf4rEkFz=*!@m?IxyhbCW&%;Wx`Z604n;fz03i_Q};^)Sp`QB%1~;F4|SxwmZ#@HFoB4@%e3JFKmRSOy>P>lg3p z^wYfY{$CAP)v_{KDRWxN2#zEC0(X!#<|2CO_TGok4;ov)ZEfFeKY70lzr@~66en5> z&<$2CB46m$o2CSTh_KmxEX&MPY(FT96RQ-_H(A@7j)-V3U3=i`Dkeyg!`XX{JFB#B_{w zDY+JJAvRahS%4X-;sS5#7AC@ri<9W@$}L1s0bbvfn5=-Y5bmk;*$7)138z5l}5CAscbn1RwG+}yok)< zT&N8Ab{93&vp2<-_c$`tYYqVdJXz7${ADGa+lKchGcBsTU-X?@?l{QR%UV%DX)G zm0TAYRSjSd8FxxO5-hQ=aoNl<#+_;f*<(E~;V1(<*Y{m@$s)|vtZiM<6SLVC-4?h2 zOAz~>TL|rkvTXvGo)`*s`Fp-cZ^b~u5=QR~q2&3AV6ty}G2B*gU(%Q-h&QPtis6n0 zlmjd2UA(4PT8KSazzwV5Nv-gMLsEo1eh<)%L6Is$4(-Cdn27AnjuV!3#DYwwWUb5f zS>Rzy!eNzmHLQSH{cu=1z+ill9^~=(t~}mItFUXH{v@~6iX+dZom6PdiDfwz^fNNS z!*zf#e#+kz$m?ZOTyc#RW790ySbgR@bqF)Vy~qpx4b-#4ihL*RZu+pzpSIsw z{I(SX9QU*^ztc`qic;r*JgBQ=$-Lk^BmOm+&dMD;qbXN)$A<$N!m^>?*FA&Pad;|DsiKP?$IQ)V}F__^ihNMO1f8I3_u3Xm&px? zzcz2u2xMgGX>ldMM~0j~BO3GFjO_Q+aAqfAcplH(sd=vqnFRdVVs?n?(UYXhPIhIk z`Pz^Pn^cfFEP{Y3>A5e}9<-mfuxw%Jx63H(`U@LYRxgFh47>2JOm?}S7`t#i56`fi z6QYF9Us5Oxtam>CF`u+0l75B_CCxm;Mqvd=_{Pt68ui!eCLURDTt*Ba^%E+i=$XdJ zV%He6kTRHV)D-n7ULT=oFFu)iW^A8Fl}rW;Z`AvL-EyPG+2zvVv4R90sJrcR|B~M}H-Pb6Q@B5M74Cki=8? zGpoqw@MtdyImQJCZgjVM$q@497p!9y&MRt`9V;r(vy2b2&@#%_#P7D~h3wotKL+Rm z9C_wp1dyX2I1GgXiehK9h$1gYrng%LDR+6K<#~;&@|1tsqA{9C4VEhsk;!BolAJ=$ zUV}>NfI+@9??gYKPINEe9X#beQ6uU^*w|Llmb7fL|_s4w_JWs&?1#1}Q#@EDe<6=Q&=%MjJ_Xa8v1s@VqRA`93AMOM@e4m!)1QUSn0m4z>7x5`E0lWxYhxbNc-E-ra z%2BBbK#*&;2&&ryYq18@fy~|Cc?51R@<(hM$}-@H)HCaf-SAA$uaajO#)QcLttPY0 zVuDMevdrgk?tzr@lbkGm;|w!IoYl|ILLHV=l)bzTuV@kq;ABR$7L$)@7{;E(Qr9ON zepXl7C8ej&M(a0-GloVL zyRt5;Qg3U?mf9M64@h1uvA}+G=cV8@l5X>`w1yE@l90Iynl^)0ZZMRl+pN_*&)(26 zz=cBieEg3;7jh@W9K$Q*b)lS4pG+m&2@#1PdP&yvfKrD z72RZMm5MTBM65Yt{NLf$c(>fOBRuU2lMlxyxC~{%CkCi9bOS(gSjaMG%1P!yxjy=& zj39KF_dh?XE%)H<0}CI#E;~@Fj1tt!rDR`!h{pnX&%cKcG%y~1R2<5Aaor>2%rEKM z3JEvw1`NY412SvAS>V#2u6VP+>fQ7@a)THyx-I91EK=W>B~3y0(kC*c24p4$@RR96 zS}SVKUf|9=tF^?>Ez%$ubhIR*&HDAxrdcGYwfMKE`{GRUX!({E>~r?!Ftx~tffr71 zyaqhB8R4u%ZmqE&HY`y$yLn1=L7C$Ln`u~PG$gNI=w1WsmfV9fX>_3wN4F~O)6=agqew|22Xh)iW(L$ z)HaAS-CKpE8y>FWdUcDEvFB8mo<`s=Z2_tdYQicWL#U!5lr8O<474pvKe?l%l7dij z6ab-wD{oQaCvrdg|&H}zH7D>UmF9w*+V%jSv_K|NU7_1Z3VX{~kI|4Xobxp_)A zQRxY1)(ij8_k_!$luZcJ(){(0pauMMY`E)EMx0`qA)&LWVPc--|?~VGVw#`yC zsJnD^Lj%AT>zk|+itmbfwHS@O*mhjVvUSYTer=%F79u?d>w0);$j7Rz{%>siV>SHB zUQvEMrQs(U>bR72(Ujl#%H~^|IKQq@WARa};8bdx`e_7kI`LaPmcjj!x7>I~0~j6J zk5F+(42`Ucp2d(`_9`xM~=L)Mj!&z2axaftbWn`NjC^noQl(IH5qP1CV z4H|BaHJb)Uv$vYZP2)Xav^ry{rWK&&&$Fb7_8673q#@`m z%P^v2S`|)h8Fx)WXOM&5pNWMNq^Vcdy!V|0 zdMG!_t^#|g*UCNu7N!zGfCU@%LJrxuFE$m_^!l9;HZMkRHlMnQSH&$`%d_g?g9!G~ ze|977{tt9`We#CG`CSC?T?sX%Ec7CA0T+wP4Iv5W!|%j4w8C~4zMs5TojWuQpBeZ) z;e1FP#G$Aia19rp1DD|Kva}OuAjv3_Tp>*GHGnzWnBoF-Udy53#i+z zMk|&q=Ahs_H&b!v1bWZB_DY}jzTpoX7WxMv`S*Sc0L#$fc`)QyuD^tuRTuOrVYW>abIH;l5 z-H*g#V2K!6%L)K1Xq{q^L+V;2qOMsrLq3XUj7nGIq_q@pRjnZ!2(iBSTI(lqc1Z6X zSRUxlQnkAWjbp2cIV(p);PeXecM~lmTARIdExr8WvP&vA0}6%1Pxr~eYXK|IMD1ug zR2idQUI7KYX}-(8kN8ZJG2nZl^a!sV8aLb6P3J|}ZnSV%9BrmN2wnPH2&v9rw%#f4 z?zH$_OkNHR3CfUMqbtm|=e3--+d_3A9maKtyt~sgbq%59DtGrPP0`i5(WJZv@QR@f z8`8c`pggB(Aj$e)=Q>ZBm*3+V|k$1MB9C^?WV0Yz?;gf{51EFbi zGW|lws^QBQLgT%2b_d}L${i#$>KhK%U3svAz{e#8B&eiL*;MtQiR^s?=G4y$l}Cj0 z3N4KctB7t+k<6EyEYQl`O|K!m`31vKO|#@>_Q-tRsh0YTzNK%f`%Djs@f(&q&drkM z4~ij#IL#UrD|x%vbxQ8kPK%;JS5Z;RU$iEM*JZ%NGH9@OX~bJ>nc?lSU#Q>-2wT1E zHw~|4-#51vkda@P8mnO3{Q>^|;ptN+AeQg>EF3SUUi@@#9?WM?2}}R8yVu=oKUH3m z$4_s%Pp2VSM3J9vwD%$YgO~`(1b)s>05lj!I42l$Sf*3vMCP%R-hZGp-TmRljo71S z^eYI?xeFa}e(uFHI{R*|M&(vRbP_Fmk@!=gIcdcpI*QCNVR+?#=I0S*4>JVq(D?!v zqLRse>+Pc1Z=b+trv;zg78yM^UUVVeb?DQ+L;oDf!H7aGI_?K>3eW zse<0)q}9WIB$Ej8#WAeBBc9g^Onpg@ZNmG61)TTjjxYa zI;eP^_>?HpL%gR%DB0>X*ud#ct$}qqHtec$X25OX6khqtVevt?Qs+ z(>dae*Jz~G_19V*Zrz0&d;PR^j2)*eGb%~ZB)HTzFJRZB=Yz&Z$x^*6UpOhlQvQcH z49>+wnpFemRu?g_i|4>T=gNP-`spRsb*+>qoUS&b4wb+aC1ZQ5oD84tk%Dm>KEllQ z-~W7#$DOthls84_GZ~w9z;e!*bcpJNOP$@9Mpiz*HRvi?KL`?k^x@PIf4K);p+VQA zqcq@Cck}1F(;NULRHN_+fm3O2W@v)^Ja{4;h&Gf&2dHb_)E>W8Z(7G;GxMjQrr>Hknja|8A zxJ|r7WIc7bvBPZ*l&Fo!;j;-d;!jxf(ah6nvhTR4F6tY@3>5tYE-v7c!UNbUoZ4|{ z)Jla{Os2#I!ghu3jz0kIBy=smF4%eQZ2kF%Er(1tf8Mg`-k7elSWI2M=Hg}WrI)E? zS(Yq0MJ(g1pMA5x`UcCeAb0pAUrsD71G$5`yD!xyYY}zwFsg5(s+gc3Y~7Kpgspe7 z1b$aD3Ofof8AJA9eVi6`{NjE6o3cg1t? zXEAP;Q|tiC0&D5Hame0hagVPJ*|gum%d4idl`@fC$#b{$zEnHG8+Nl=sh9wKVQRFM zwlW-}eIrTLwy0qI zql0iWZYn7jvQ*Dw|HhBQ$Yv0m*NC17Cc}-}u=fBlHtde&N&& zD(~DZPZQc#DMi73Y>ceZnpL(fjCy15?Wfa$KRa|>_Jsavo$=Y#ov<%cHyRU`UHFmj zSZ3dEd2itDr{N&{(#sB(HN!2wLme6m71E&kG|c6OMlXGQT!VJimu0J{=0> z`DU`HDmHx|6l^jsY^b9dYiI)2fP}R;PU{Fh5bKAfpSp%Bste35N1A|D5ovzHQxdNF zCCMqoTgy=+q0e-lTarKdplBX71{mq^dF5gn28+OT7PoAMSp+4>%dBw;EVCA5(jbJj zoNG@SkVL}(k!Zl6o`P-;QejC)b`dYCp@*;CfE5zV+*>knyP#OyC=c`_Q+yf3Z)a(+ z&(K{|M*V>E&bifD%ZXkRyel%XmWJdiw?nJAG}KmTC8Cnn1fX4b3V=pt++&Xj3YnH%}X*a1kUsP8fJQ&ZYNp$Czi%*>aKo|2VCtn&kDzkfw_DWHcQOuBW8>3o*f4a1>d6{Acp`KrDYavw>>HG+7X* zh#K;0YSLPJVp3yURLGu?%DP%^!X}Yhsr^oJ`ogOQRdy^;Wd}i(7hX+JC6$OGsIs#R zREdTF1O8M?gs_}>vvw(n-R;3{Ot&+npKbctq@Txn$Q18m$&56Oo*lZTLVotWcdEp% zQ7*kr&zp!cdbDg>YIi8}Spe1YEIL6H_4K+r^li7D&8Sk@3)xk=l(jI8fyj?6tH3gj z`j_SzotT999~5xNmbi!?S$S$~y$(1&_<^o2-HjHi<&=Kf4s@}d1jL^%&D@kv;2>a{ zEpLMXiQW*`NRa%N2yrHYs%Teq%X~ zSm$)uAKar&G@4K!bb7qx?88p$sErh!zZ;Zaul013n2tI|-OUxwD%rK4uB0n$C?RD- z_p}7@$85|R4dk}gmeDF?{K<*uai8j8k3e->C;Grv#JG)mnW=yw65V5_xKB-qJ2bQ| zb!|xv52QEGigvwpJzk8jBS;b3grq2bp6xBZ>0(-kNd67t2QX0DrK8 zZ=%E<2kkQLQ7jHWptu}|H7VsR;q1E*WX`O@Gx`V&ILA{wgDm^5>E^hB}o6;FzPLTC=S^N;L5_J*@LfEz@{YmOl!(PSorkT$`>G*QSfBY7RGDi^EM9JKS8=<#2OV z!r`X7V*FU4pxE>_H2Q>{&6^d_PN55yChmyfJ=HE#)1?n-z|n3=M?B|3O@vWmAv<%0Bc zt2DupF^bzuYTVLjsWaS zK^Cjn(tZ$}JMBk5h>h}t;OffsO5R7~L|H&vB#y7b(aKW6-f-b3rFcr=uvT-nArmA%u&v-?>U`dLZ`QP4GCu#(!}g8xE} z1hv~pAn;;>OAX^i#~2M~XdXE&$9uGdA?0T6Obbg4)p&qA2d5D`)795V%N^QA0#j}& zmp1~wInH+s&eO`i`Cb3&ooZ|o3+uOr?yPS})E1d_Gr3YqTsL$_d@ZJ}66>odrm0?YlP4G=%i!l!PHe@Dq*0#6(P~2#v;cM)BrTNys ziTyzBR}^v^4V9)PY2ohk)Pt)Cnc88q;ns33+$zOe7QIgA?P>&Y3!@wXY1Fs}reQ7h zH_O%k;O!SN_U?lRC{lwg{cZzXC93chy8&8|x}{aA&5DuQHOpf{EOMnA<^4EL@OcoU zE9Mq=yU=4|AB97<&Lf2-;63WzdIO~_r;PJ`C_3%>eJE;yk!tXps0<2KS-6(sUP&*B zS{Sx|&xnz$ct(ueYMv22i)Ta+c}9%fnmi*YokgAzy;VFTMsD=>(`j==tf*LSvy%c6 zFYxmNCf_DrQI?D_$wk?$!IABmHfvj-kQupS*RqT6jw2d}(sf94MhRj1Sv&AYZpjV$ z$N0#H)WUQf-?Es)?Xp=Plk876{bg@V(Z-VAltL##isN_C&A&IRVM%e_f zvQ7BYeB_hS*g>VcO7ReWa_r@A&^cj--M;J=-6)(nt}_FIKKV1cav&4-ZA>V+pIy5j z-8gogs|eHuV#dE0o^@x(n>shpM`W=CmINtyL1;gSm%LXnwNJ8oZF%x8!%{@8ZNEtN z>`5Scma(e#uFX_CjC*rp1SCc5E9}pD_HQatWbMMQZ4ZSRzlu(~riz9Lh!?ORrj9$i zxVPPl41)f{9k~|wi1WEGm@A{CG$fYAv^XR5bWhx?-n`yHUDe`wQC8V_?n5Iu0BGG3j zk^9*eZF3jCgdp=R2Vjl(5uFmx%Ar#Wu$DnEnkQ~d1jB(T5!jh5G65@+Codr{yj-CO z(F!kICy8iZvW~ZcTm1Gft*h0`zqFSU)(Stz?sYb>mA-e)baz2w$ zPfV6^c;f=%bfPu2D5m5xrR70lW|3+McC3u`6EHlUE{&Jn#K~e_|Dgy;7)p@cUX)0v zFp`XXos95(ZsHKdJe+!uFx>{gbT2)SCoc3LNrz6zdf%IX>@uAY79n=w#W;d&gHw+r zt_s?fB|^dP%2jzE5MFumS3&dATF87m3t7v9FixzMxy}b~Og=w5*Ws8fqP_(u{7f1C zFWN+CvNLCj2{hN#r$$$cXyPg5%%K%OWBhT+3T?KC>DUcf-OL}>NCFG2#>()Sff&*=IM1rJN8Qp3hLOxya|l@>}s$|ss`eF4Bq(liMJ zMwGA7Q!}7glAQ2@7}Ug`P1Xi5mL+67r>n#hvV3uFK8MkwG|q@?NR8=-LmATv_`p#N zp#65uPb8hNF4GrUIX$LrLAaV6r zL}o6qXHd3&SZ}O)nvE-Znhh+l-T=XRUKKz zuVA;4(0B-D>IGwP+blQ)`zDDUPFj>k1lJrU` z*9#o?(zzt|-2U{6Ec*%^-!>Q&W0^P_kTuGX9icp_>Mlo24WjD6##H(UVG&F&5F~;_ z$uH?2M|69R_en{Ds2TX6E^&3DVe9GjJTES1>Q7-dvGBRLx9jnqE21K!i@z?^OQ=I; zNE|xx#GN`cqvy=X<=F;~4Rq(6-^?V{B2*UcjAam6Pd6I)-9jhpoHH!{pac@SiAe#zf zBOw(k5Wx`hG`xLc0W~db$di02a6*k=iP2CCfR(~j|La~)Em+hM{Cz}`HUUKnu82)DB(ge>90f0{ErmzM4Mf#=+W!B-0^6(d3a zyKt_e@a?CQGuiGPGFQa0)kWo>L|JZ?ye3pffl>nnR`^LqhpderKTf_1M5qjmLzpy~ z65%XjQOTvW57q_y1Q*`K4T!#WUX8A&KqE2Urwsf_-$m-nwV^<& z44^8Bom3kjWHB_BhkO)@VVWwWG#~Y`5VwBp$D1nHk2kG`{Tx`Zp96&bknXDo`=N9e zVLt~e-XGQ(LR7xaaf^O$$?wNU^a+GE>l~e;w>|p3tz2H!IX+=I9h&?E6-<*KA5`#( zs$QPuQn1djBk4arW0~|~j@a|oDs>xIfZbcoGk31l%=(P?Wfy&?g$xg5FY+Gk;KG;f z*Uf_AbRP3IGJc~z8MZA*9ZGb7gq<;ApMLL2w(z0{Ec>H>8vj@R(lNq2`Z+|rZlUfP zqBJLX*f_ehA5%}~&JZiAmK7&lsa`9*SWvTZp_w9KM?;kFNFR>JEfbVnQbz4z-j**6 zOWw>KEnn7;M?)KWs+WK}XxPp?pIe+Q>)fu;+dU)#Z6p-Os322sGOap9g2~ja!jL0W zL=zQ#pvxrFv|RZP99(DNiQ%uS9R+8V>uF5pp=Ql_TxXy5~+gN7TPj##2{B6R3Tffi;P8Z}t; zGO_OB^d+u?B?Z@AF*V@rUtc*q!|@R0F)i2Gq>p)z++P_hGA)X^!sN1%9B zyY!`T)fWGGlK!=_Q)wcuz6?{pna!*+J&0^+rm=>@di!o!VXy5vxQ%2%1p(bq=j@uz z%Q}`=tk?KV*FuukR3y#pj8pXf2+0J4U51LryU$DHzA`@YQP4v*;nGi02Bi#>v-RIV z_qDMSy~n_SRdufM;<~SmZCDSZ5;4qq+|QOkRK^*8b0%MKoz0t6`s_nhUYGw8XY!pCQODpQ^SrcW)a(0Y}YRV@Z@a`Zo&y>z*jja2gvd(@VagsIp0F9Y$!98MN zt~&zKI}?WQ5o#%h?Tbs}qarQy=xm+0l2sF`g0?YovBD9MUF%M|o=4p~Pp_i29@Me)l^XF`f6I2Qee>q;<>L{R`WtgmdxE*pEqd zx7pj6w49^q)Cm(fxC$F`B+<-^op9zSuo<`OkTQ3bQqNG-1si2 zg%ED9Ny6xHceI|}QDJYqU~Lx%jMH{1TV-jD54jPRP3bDTP@>dOoU0MVhJokM&C_pn zljn69Iv3zojyP%V6^M`~e7;|9C#CT2vC6bul%eFC*?s`_P)f5Il-)!1!2e}QuyoAV z2D=ND5X)m635$y2K+b!Et*vyBY&sP+L%h~%d9Jkqq}EDlv9aKCB}$=`taj2zA?O}prBH>H!ium`%LXg8Fsu~T1uKPR zV5Qb7u+qeh+({CJAJjO-e$lmK`57|e6z6BM#wfOB*({963;e6lf)SAlX>j7OJU;Xm z;?AG=;Uh}Kq7DQ65L#iPoS?);CN-MNm|nWjKZ!y+QnYJy8jk2XP;VCzI!4M|TV=th$NV|`2?;8;A<)ugY|{uCl^3-2+ghUQh2;yq><*wgE+L3>4LMLA_Vz zg8Ei_CI2Jtex$hVcmV{*F7JJ0q|XA1ax>Y1B1@J{1B!@}9=jH(XzUY3MJCQqXB`MP zO$v=7j|`S6S)oMqsXwX!BR#qqU3#Ny*SU4B!^pMYLeElI@13`0LbuG5ucE80_sc7t zX%DQSC+XV&C5jehUo|h@S|e7B+_4w94#fJs^vMrUnfb9Hh%gl;SMelXg*|!##I8S@ zdC}6>!Hcm{3!s$JoOqv-(26t(dNFtOd#-Fq6#462DNvMh)s<2kyXuOx;KL$NUhvDV z+-P*|-&pWYDyx_>&`62GX1WH!erECQ>>{L?7+iM=-xUQy5)&)g8y~Wp|G;7%TL3lk zM(yif0 z<)ItgQa$HR|Gn_NM^JJjK*>|4Scr*4ub2mO@{o*7V%&jC;DuWVOL`;!g7kA`K(er6 z-A69Jn)?7FOOU(@9Qo5+Oo5pdEXWM=c*B|K!F+V{gjkcY?~cV}pmOrx3-fldFar0t z#SJK@)xgbcU%Vx$x?Gf_>8k)X@A=9z$?~~J7)*v(E6iqlwgl7zl2)b0-t%7^;sTttLLFH z0!WedR%!{(-EX&XeYCV*y|o%)xz|>wzT|)K@YntBz7#6X-gimwB5eZPdw4S2{M+b zsGuN3@zS(NoE;UwM&8j%t;A=6v!puXaBzv_>WN@oU2wVXGj)-9RJe4utTV)jI7LB~ zK2=uYVBF|{ec2armNl6{7`cV7CQk_O7Miu72Dtu``rNSH(zKR zIoj~}>mZY>%`+c5>YUeZHix#kf_Ikz}WWpjuDVWcq>ZOy1}VXet6lCrTG zAB;^11b-N&)QYQbq$HLE?Mt!0v^*WL4nbD7nAg_ZSow%8oj7y3iPJ9LS*Xs2&Dnk^ z8H<*fcc@#sm`(e#*O;Il(fD_!L$c&j7g zOl7@za_$_U7p3OE;_aKwVnBM4Dyk8$vwJl$KyDyCVEcKwc%j|3U+uco_|Mb|94ao@6Q+qdlEeM`TteM`U0zGZineao2_O(y=^ zPp4fnLgR&SgJzFEgaH`?Iopkid$VwrjEV1!!#L5h=^KXbbmE7Jnse#{)|Rv5XUp^< zTuijO1OS}oQ)^k=EY$SEFWa6zUMwOna3&!fHuGaMdrsc$Ol@?VJdSAI71t#Eq4aGK^P`CuOuy zE3Q8wO2VJH=B^;T&J-hi{1qrIJN(MTi<7L#D@IS@$ScN6HS!7tXR`vYXfO5svq>0| z<|YeA>Z-ymv-~`k&@0w-O6Zm8VzQ{d6UH79QhZdy3j1G=8&wa#QS}c$y7oM-1e4p_ z`JCvha2%3RoA`cEbVebZ`jw9-6jiC5PROg^J`N@*#KyNU3xKvtKq=i4;t7G%RZk}< zbwC4x#5Jn8oy0z|Er^P9Z@}oVuUo!`qY7n!*}wa~OZZLf82?bBq}<-PGudAa*uQ(f zM_$Yt+hxR6A;pbuh}}}T`fmm>XUv%UUa(BR6ubFX?iWrx-Bs5=)FEaSM+El$bal z>STaI1lWp7?BH(eb zuCoAJ3Ug>xWVu4#d0rgnIp*iN_$y`7g#NNF{u+HmXF3#%(22_h&8!3A9ssaN1;C<; z09elkfb}o{7S#oSMP&f6-s%xj$gta2f~2@Np`RNhB_vjLlAFQslK*siFoh3x4?<2( z&C|Ug-)3P#5CZ~;wc$TB4l5iY+=T~^p;7q15`YhUb-cv6CaV_D9vg)wv4=*nWm00J z&v8leP=h9D)@5GA-LM6iwzE>R5l(k>C-!yj8N9@8!zLve;l^DroEcy?CT>8xB)QWsTk%C=bT6E=6pwTSh)n_#g5_;9eJdb!J>4S5~EJ+m0h}q`-)Iv zp|+fZGjB;|bP{U$pmG;Pp_3nE3Is8l`6Zl(c@^H~gMJwdejSB#7P*5mw(!{T7Gn^c z0}uT~0!d(K-Yx0ti;dPsyqyvTRsfntrUi`XX z#$jqfBK$^WJkNpu@rp&{DtX3R% z0il&)!9Vp%2NGGvi&0QfPZSYq+Z!zt17{J)o5gAlA~K|Eyi^nsV!l$-IS3Zz!j7!T zV~~+7nKgEUxULY(rtz{$ln^jWDv((i1Vp9mKA^6YPcre^ZQoCAITOBtNy#qb)9rc?^2whsvlVic&G{yaaf9qwV^_^zk2t6&z3}Ca+qcBqS~(4DoKO2 zhc*=P$z*wLm`_a?#y=uJB@v*+zkEc09?>65$&ctySt#Y&Q=p$~uOjX%kb(Gsq5smI(Tl%qn9me$Ha?`sr+X)-^b=0G_D=Wd_a6Q1(h5rvad6Qr@3cifyR1}P#!NlTC|o<#LQdO=9D3frchW+%4e93r{cO^tP4*ROddT;wZbE6acfZNoi+x5yBxvE2D{6(n7@0&r{l^CppY# zzAc5E$L%~FI1R|Qon0#OsVVMM){#vINg`_wO?%Q|Ih;mXXimk#&qu2jGv?HkB&YF; z=F2Hqdah_icV$6L02$9u`>4up_5h+jIaaY?1$UjskM4Xsy8sT5Dl`rBCUR;>VXwR- zr!WERT1rC_cG}D4Q+n}{EaYeQC_B$f_a#nGU52tHi(iFQQLYZ8EOC~!vn!$N;ruG} z%yuBFY#45#Q+nu=QG5dDtgpi;`Mc32tW&9Gorb~H-wmyxsPdzN5Zo5+ak5{I5T5SL zMo3%d`^m5X+s0l@DuuCo=pkST>`r1gSeUT7DIJGL? zkOjmcb#-)_W==|p%qfMRW2od+T0sM2o3MoP@KTAJW8NMeiZUU8P91krqV~9UP!nq{ zgQe&Ry@xLGB#G~tf_(BNC7-;IrYy?}yG>+OwM@g2nk)fA>cZ+^$$n0<^$T)+OImle z7c!qxEmMQT%3c}w-#*3FW69POdVpyCxxy_Bg%DLXcX-1r`Eg?Q*(zq+GCn7FmQg3l z@#(-**)ntIjm8aCTbAl>wk?hVnS5=pm#^Hg?V`yZ&(tdSP_|QKLS(F`)C^~c_k?GJ z&3Aa&*wbFO-j(TusT(JBFOqZt&W*kcUhX=rcXsW`i-^@S_Ts5O@*2$@XScPz2b-P^ zy2EMTZ~p4KLN?pzhLovgTy3%)qn5h7nFmuMxiCSkL9ry{$W$MRRFFJu9W_ zWPn8@MaS^!;ADs;Mv*<%s;yG-sxo?np}dwJVNx&(XT$*V$;!g+s)grU4gx!7QxVbp zQ!sv4XYk#7!h_6GPc7-6<>+J^`n;sTl&}LNv+^}&Mpw`+h%M*0-yGY>@si9=0ytQ9 zkDjX-v&{u%w{-rN6bz%IGKNd3fgy#$@-kC2>^0UdFi*a)^Pq*Q1j|Q>5xdg4=nI&L z`947vrHvU@tfr-wF4V(MzFc_K&qJ3p`g3Ou+Xhr^)UN0P`&G`&auYCRvbGU?ZO+1c{oQUT5{znSL=-aI1ev54j*SfA@$jV08QSis{$58mZMW*OjRmQ=glf|S9&^ES!as=-KvHY zA5&!wC!6w;quBB?a}+OOIIW4tHJePi;YRMsWRlb8l2%APXH81X=c!vyZG>*bd6Yc! zAK^GfTYMJG6Te1M%@Lu2BHJv-8snL)u{|x+DxBfOY*o$YW7g8BWAt4ZIO{rQvvw)N zxZ?>*#9y=AC=s=o@{jVcaTkP(KzQO69O=o*PI9KDpq(xyvn_Axu7+}FxUI=dL>Cd= z1d9KMEH5?#2Ih=GmY4-8)@qXq6{u6@v?f!DjEs8XUQ5Z*w%(O$vq(Q&db9jxqDu>I;!`2jtvi!FyfJ+=@VbSC3WwX&eC^f|!&{r?6tfEZi+9U) zGWI|zbt!M5lmg3kw zoJ>WT)q#%cW z*npU)HxoZEhk7U=E4}W#^RQuu7C{(WA`a2N4h>V|K1Lhj|H|E42R|1x$9HZb{{zvE z*4yh?BI`|cwtUKEbxsnwAKc)BXGR?YPfxSg(0z60OXa>gCvxEodDe|}=4D%05I8ii_z za`Md*=bPAFSuwsRxDFPSJDx1&W@*jn||nFUh(WJS=oKWauS3GE>q}ZLVbeBhY(BQib0)F9pM~?kx@Ra z*9pg8?FE1=li29U7>~#tQl4bNz*&9vbL8E4Q-2Z~d>q3)To`9gyObcOG@0m2*L_kBoMP6wn)Qps8P!JO<9Vi%_G78p(b7xc^j<3kt7?vE) z;&T{H7Nz4zp$X}s?i@sI0+X9J>4MCx&W+Ey)tivE1^$H1i}k^vFFhim^YAm#=y@Qe z?@Xp27JPW$_*7G(N9($95OYS><}AwGW>8CLDb18yIRsJ>K`y{|3-?y#q}Sm+kh$Cp zD!P}Ee6zs43m8VqePAlSH+uW&^aNu7kN92*e9s?)>g=^HXn^@!?wn+f}6B+|gY-O1ZeXPt346{o$5 z;J>^K768ylqac9sXP^%^v?K^921zYAU<&t{_YJ^k77TkRC*E)5XE080?ym1x%vmseC%NDp48)R)K{30K%4N&MKIg zSsg%QplA*uRGT~VrnkiO#}x`9zE+H^M5J@l{-Y_;SXZ})*1+P39b0z}yRpGbJh-l1 zWLzHN%Dx&8ljRDz@HJ^DqBc<*_f3FarGlZec2E3K?3ZPqrEh8eb;U|wio}Y9Z8FSd zYNOPqF<>psl!-^$?@i(3Gq(fBf$!CYe3cnMIExQnl{}KTpZJdD<9-iy+x?!ob^cW^Qn+;AB6#$@QLl z5wld={0!D}NKHfsk^@qfmX7@ukD|mMO})m)FdDNmX`o8_^AETmX?O86X5mL~3IQ_S zP@l_w3#5;J>!siJ({IP(+hAXQgU|i8_`ToTdMAsAh!ewW7aa6}j5qM1$L-)$!7Jx` zr@<&nRcAvKu`Rr22mRDvmXNlsu;co+8v597TF}RK6Qhr}b)k>9CD6xqa~bpzjR1!E zsdfVqokPJo`Z-`-&6&BQBnAn~Ni9G7)C+jOxrMUd;j%d3h=oMY&A-#K`$Jih36_>_ zV!w^ZrIqv#vYTj2eUFV3$Zq)#Jdj9cW2?kF8@c^taSD9SD0^%$$&y6PmFlw11jC4{Dc1VoCHvx!yV~`yILI zmAwz6=ek&pSKksT(1E(bUTvo&cVLN46Z#rWAbc`m3_eA2a{9QhvI+Ytq$|2iabop3 zbn+z&CG9ZTHByo^?Pi;cJS}^GmFhm?963^BbvFNL`2q?bVf|W1+kqgtw52D?yvn|fx$$1I}X~c*`uf! zen1g2y=XcqR`lqkd0(I>J4FC3d2}-0hdA49fVz`Q@}2&q)14U9)2*%N&hjoP^ zp4P;z^?SwmW5p|mbVD^qjh4+(qlFwb{Bcc=8kEvPM~zm!$HZpd%%A#`{76vBK{0C% z{iqm`#92WW^{`lGhRxdgrW*>D9d7WNCq@bV`FL22|0}Ukow&i(l{+Pm0_P(U&4t6w zJ9_1)zWFRtThs6oKe)4uGUUcGe2sm3GQLO5JCxlEs_zBMmwnrwZ$y+lq13ULk?!c4 z$@;eaS~iG@h7PU>le}O;R0w~Yu>qTtgCxk@QRUg#6`J}kDj{^@ihD7uZkDo9v%;R} zwJLjXg>~G=)>;w0 ztDM{VnaqjT5Qrk9^q6RpYw}67=-7??Z(&O)gUheIXi6I5TzIh?X&g2ocGkOhj<70L ziA0orP-{t&f)DPv3`Ji(l&>>t;*G#`%4Sqfht+iSstP6ce)_t=T1KR*KS-MwF=_j3 zF?D@mGpsM5P&Nq{#8{YI`;kdQ%@KvNNg%y^>qUt>QL3*Ol+3O@_TmNUf_XS~OGgu0 z0?)%$*MjXGQPa@Upous23H^kbd^)Nxj?mx8D$wV3j{S)jkb0d5JOG91p=q75Z)lMv z!79U~SUxO}4`aLvmASZ(LD)T@IkAf7#1+w;whhf`V>BnO3(bkkpgHYT&>W)jFH!Vt z_wA>%CK-B{ZZ4Sf_S0!UDbA)NI@i-hiCikElb2_+aGfiEI`%ENPT(b%t`bp&EwOLB z%XkVA6QD_t;7;}_gt2=?WFmkmFT8>?v8N|9-$ZuQr1oP2mdskvZ<@db#XmL?9Uk}_ zf_uj%q{AbB>u>eY-@%n-Q z`4Rg3Ai#JFNpW^c=F-@k!HMdY!*o8G0Ni|tsMLb3K3WiPbng(6(uymx-f$uyj}muz z8<7>zs^NW3I;8XjY_dZd%%sH{?fFUKxR;K1nfTEqS?dPlZy6-|>5}L~5RE9|eD)%P z)l4RA5Dn9KcVMq9i5M~SC##!kB98`@_&woAgl|)r=o5%o)vU<6jP9%lPg;>OdrxjC z!juy)j%pubnxz)WA*df{^Fp-!;x_u=GNoJyHJNuEFB#9L1YM*UgRHu5ek?-=naTWX zcS?v^n{QkhGKdv+Mfz!W8^C;28kAxa+(WsV{Q`C_AZ+f`HJd~y!kHUE&>=GWxtF!V zQovQPI=smw$%Uhc7MR{nrfx)a=Ysz7iSk_+J_TKp)&dfKQWrXfteK^8DO5%Y+Hx@| zRMb77QHhF1B^A-Ajt!0KU^FVJ3yn(3pi!Mw(5MlF!-pMM1o)7@UU|BdWvkf?-5wCUl|Cbp#%5G_pk79Kh^FkiWEGH!XM(gm9DQH;fUzj>7pobglpk^Xze-Nkc(9+!4Ez zP)MzZRUC+N5TVM%cyU~gnr{aD;Vhc_qfrP~fEgf4PAApmG*pU$jGoz0FeiiAulNj) zH3MxOX~t*YCG8{iuiaP3Qa>>h2rEqj*5W8+Z9mOP>R+#ykfrKT7)3tZFifj=rw+$r zN`o`zEb?I2kTDYxlY+<2B5-&aq2i`e157i#_T8IYc!p{<(6c}tnf=2cj7R<=_tG+t zW^&ht;ZUmaJPk&Atv*JwE0%_G{y`@wR8k?4C0vYTY3s*yKDY{|^TDl%>2z(FP8VT1 zAKaQS9ZG2-rqf*o(|Nn-(}T#p^KFc^t){nRzeB7rziVXUnZ6p zI$}=6Oa+6~ZD$-VZ_PWzf>Gc~ww z#U5IaSs|mngW<7k>(aV;rTBW)S|FfZ(SpGVr|xV$EhrH^uUZ2nJ`AZ3VDZ;&(@uc6 zNc9q56c(=x}-4!OD@Y5 zfWkuRHJc|QX{}aK`4DvbNBe|?{o~%gZZY=z(uC_D$?r!etk?5n%ni38A1=>cUm6^*+76JbDq-64h+aQ(K2eeLNmb;$XG6|=2sxkB zg`7`HA?Ll-knCmS``pLdSFk|w971NbPp0Wa( z^s|RDbXn#3pnOV96P4Iz-|vSc6Wvb>J3`-&(f8r~Q>kwsYz~c^wm+dZ<8**XZ=!ZL zt@{>|t-CaLR}K_5j08v769=(7jUh~yU9WQgcY$_pMIQv-L+cp zrz^~*-BOqG?*#RI7mto*ww_9>=DN3}v_XA@24&A^PRhG7T^xo}&lTg`(q&zvbvV12 zD+Q5Vl%GxDJxQ>Tdh4#5HbAk-CtCQp+qMb2ZJG{6-F1paoDf&TEXy7=hgf|hi-o5; zGBnQ6lu4iO z?;w_PJ8IW_lyaru$OE!)1=(NiDF{kF9zz|(^DgQQ*3gb=5q9e9tc<DlIk$Fb%UHCz^!`rx*wqBT|;M?a9)vMph9sGSosZ81y=6lS7ly2+(!En zomPZ1mD6te)S&I?qroZq=nQomqE^^+EA83~dif~Az+el@E1pD=sHw~1{Ed7~B=@=R z8vVMi18vI<&Qgs{C0MlrcG0l1bxk?nfMuk!9Q?YhW5IHqTxms6fwu)-3u|NNJ-9r~ zRF{WYMVE)Z&E=twT^?q2xjf9uxIFY%ba@znJ6>yW3_Ui0vqt0zbjg5@+Q9*RdvK)e ziVybNGS9&g{oJQd`t*CJz>i^Y0Aes0c2+3W;)*ahXv^fhS;s3>VfYc$Q^CeL0SpdW zl*9oe5p{kCJ)uHza3H&H|3Ib$mnc%gkiI>(y9;pX;+!~>#qA%Vf{rn_WUe7ibG$D( zI&2%26*vg+N)@^fWOWL8sOvZ{==c3oTD9&v@OyM9;A(>N>sZPK;~kSGCKsI7H07|x zB+ijN%#(Ie-_mXwGBNAgV}aE`f;Ey@St=B_1tBmj2a{4<*RehL*m9#HBU0J&g;~Rz z$!tTU3|6N$byTRc0&7S$nzV(6@R_VEd!{pV&Hzc;kdcxfmu>C!=3NQ7T;&-d;pDht za=hPKHar{~ak5>tOf$8+K4^`#dkC`a2`m~UZhZQchP)rO7t6IgN~`4AIF5A_B!V%S`b@fX(h zr>Np1G))}b-_ba^SFwyME(4HKz|Aii`oEjQI-a5%Y@Cq$4G#VWfw9M zhn;%wYmzcXE8k}_$z zKfK)1zP9$}5MAhY@qlF4)lEh28Jp2F>+;~ZRy{bb?H(N1vqN}mFb9q6x*RmFO$Uw1 zjJapj(aun9XIRlwWnlAE8DLM9ur5Y~Wjs{|t9hy%A9sl84F?A(2y_xU*X~X3ePtx$ zu+@c(1M+#&KHksIZu*rR4O_$fJi4PuR*p^c{20=O#PNQ+XZ6@%EIU5xG4>6KxiH*^ zpi;xu{;;&$g(wB0{|*m^&ELE01YCPh_|XL0X?OsRZ^Jfx9u1pa)5}3mZH-OsWR;-= zrzWY6PCHE_l^P(kWKzPnT5RZH90|#pZ z^4UAf+KNxVS1!dG8XzaV78Kxk2oWSt`kkc?|D%Dq!XEeIuJI=98V{+-bbJJs-Ep@? zwP@PC;Nm{)H$kYHL-2_@X%3qr!En%R7N0UF)7vpmYss#JT;}z*!9nS`ecCMv*{;|E z?HqVr^xn_@WntUNT;EPWRv5@zmMSHCWaR!f@Q1-9~UfgBqS~b!$H_Axe{P4o@@fp-}FdW)D|AvZTQl7rKmW+NZPop|GO7KKMSPWm3^?-9yXfTmuqxhTAY5_J-*) zgmLVoHz+;5)wZoyu_0o2%xK7Qvv(rr!!k`+en+h$%{VMIu{*jAnEeLBZ6L7&%7YNP zUyc1sZhMs?9M+31GIWkk_*(bG+|r?>w}I$Zr^|FLvyvdkX|G~yatM65{T!Rw)@~m& zURfhi4+p({YA?f@eb{a-VVRZRRN;%`Hk{le1ved5CH(2Zwj8w>Vb(tCuI*^4g+-#i znzk%*t@#!96fEV!j8Z^(0g7Li*fqiI(?o%viE;5OnRH=wd=`bXm(**%!JOy2Y--`Q z)kRF^s2|ygjk38L<$@#p86xN(b`6mDA51?Wzc^#G8nk7S}>&Z$ix`?vx{)*#|Tt|f21en zOV`)lf^f*!Zx_whptFTi+~MR5$XDy8%L_O+q8nA|asr_LMdUjdP7zf z)^6u17P?UIo<{|&t@FtTlYZX)?&8XK7v=ei^NX%Y3#g^{H42SNs#2*mv0C@D4b;cZ z{~dL{YP9C;h3`;d0K0QXHe<(0+z3)$hl}a>SlOx)J3sM)+EWD^=gd45sfmF|Ph29J zx%tCV$XtpU$o?^*WeF*w_C`?t&J-=441T;(+w$&>f=H%6C_sq&Ve6e_=SqG6%~t#D z#)}ihh7x`N-gM8IQ}O7xlF)I-gmPuJ&D;L};4b21F;Ub1UU&V;PuKAyvS9I5j-b7M zNMqmQH*=}G`^09O%-DF$*xWa}4)5!mZ`CdR#1AIZ(4o-Zgd}tt!xtyNZ0qUM@`}^z z8~qEWgC=B66B15&{&bNT4YKd zfG55(&0Tt4c0#mNtxV`k4ULZ6PS{=2*^6w4?H>^J+i>O z;Ijkk8qzCyxlwd~@^v!uKj2{y-@-D@zSa{b^Ji{+d!xv2c=5p-0XN{wL|r2A!};V- zPUG}Wdvu_dtPyuSBWcp(?c@zlM8vO!ztS zN$L=-zE(SsY?gQ9dja8r&qhS?`CTGau}=t?_%mi&S9TQO8**7fkL)+)$ue7_I~i~$ z|D*0hZ*T8dwu+xSm+mwshUgYw7Hnl6>3mMDyzGtqEHthmwjb160UzAgGTE8ZJ@gRP=MpS=Q?A1)C?yY=^o?lG*BUqXoI>7;-&= zY!O?KW>vl)UXXK`QBIH_*ze#}nx15xz-FL%MCOrkiYwgLfnX~sgpv!_zf#Dk`8=(y zUbb*ZB6l%Ss;>9cs;y?So+MTd6}57QE?;_y=f_0esJZkod+V?83MXv}9yZ$6IvKuE z5|Z_)AMdTOY5vl4lexgnf+R0kvrp9rS%BO*kvqvv>dLh1*=XPT#f`znolISS%z6%J zA{8#RtG@L&QI4Z5cuQ=iuW#;Ln=%$mWAHO-G5eM&&v{$@#T;DI4*zVT?C{Sf6?eK1 zYzNE^(0=x8Qqz7mrL^#X*}-ZD%$nWKfPS9P&nA3!`}DhVDKPonWhor?l70?lCZ4sO ze=LopYsu8TeU_)L>da$oBuNX^!LqXNM|IVzAB0<9ou#)A?&&C9+AbzMJ=S*XvAVQ1 zw6WbL&VZYLf`9aO>7O(Dc}f#wiBV3~AS@i>jLRi@t;2Bu6 zIypxSOJ+0gJ5H0GAboX;I&t4%pfX}lkPaIdt;@Rac)hh+4>cC%(vCKYiHj4#G{{oN z95a+=y?Z4k2$sQpGkEd15%BOE0nin#j-fdA@tAS4Wa`ktqaUe-?f~UKLJFDBtHtLp zQ`OQ$f-}TavD%i1dHWy@){bkg+`RkP4tc>!bg1|q%5k%5l-8UMu;^Yq&-5j?dOXAO zU4mYBm1@7`sH%kbXFBh>;GH0Lv;OHg@&|u$jI*sW9Bk*snl|gIs}rX#e&~g)&Ac^E z<@;?VH9fP<`WQ_Ym$~x(JK%W>alXr``(53LyG%FZW%zMzU0Z!f)D?$zvw2WPM8Cdh zwuI-%Natc;`!VEzXZWU>PqBf|P^vZ}5u3}b?sn--Mq%AQ z+~M7_3o#4KP>Jg{wU2*DapZ~G>QJmR&}#nWvzla@Qz_E2=C+EmbmVAi##mECUxbON zr}oTx*LZzySxK@`g%#7OVMHu_HSP)^!wQ$*=G3a_lL{7p1^yJAyk3DN>pz!0i`8A* zxZ195r)k->?KJVOZCux`ZCqm4mUQ$AySDBmb|Y7ABF?YiH)huKn^-p1^tm zsV$e>-GhykP|wMC=y-S8uLqSct=D~iSWL~V>1JB`)_Tz<8Ly8|2@PX-}MY zr6tc{zoIe-XBT0#?6s6k@ax@hViY~@8EwFx(F-7rjH|IbaboxSkVxGJH@KR(McX=K zkPv_7R^GJ9u2I=nDJ=hfc1^NrUFk51KlQK4$hMUn6E$>AK9dDeg^@pZ$L=@0i}Biv zrlcXxg-6U3g})}i9r#mX8CYE3m)H{EmPb|xEkhRRDCoK05l$|+H1S4Y3}tbtu*d2_ ztV>gq(NPijW0da78psAuhW#5}QMSJGu5FlY*MT&nyCF zwBGT8DCe~Sk6Crc9_Z^pw0#s3UX(`hmO$?$1-0OKFPW)`nl&ebYT*DsUDBR9(X+pi z^_ETPzhH>TIIm_pVfsAX*R;rh|f!yMye5+3({zGtsiy?rV8v5Oe?}J zEgS68La<9PtqFFalorA+tyN%`#3K?NOJw8P^DdKI$mNz;?s@6$cuRue6El+yZn0+B zG_>U=^deiR75Gcza6E!7{9pOdDvO!p!J6a4*o0fsBz7-rJ(KE7Jzgv#6KesaWLNJi z}F#DC^1iTw8 zW-~>COT#Tx^6SN0$QX8~k8sNdz%4%oSKf5&UwIDe=tI!MAKlS)QiQjJL2?5oXH~c* zr$z;DDJuUy;FerkSHW9k!QnjdJyh=7Pp1d)f8g9u`}XU^S$K5dFt~c@&g5cKpcHgL z1B#yBwJ>$bVwF^FNyBv-O9fv*c|>8DRK9%UwMUpK2)aWICuCSrl#i}U6z|qba1K~D zI@pj2@T`$OKmIBp9-iqsjFJ*!a}$N$Rk7SmNNJSB$<*_MB`(OIJ(Chu&^1e7N%``T z1ufN0Q=y1Fuq&d}nA8+HbY`KKI5YCUi6}W29%**q1?zG7vy&3eEy$8XL=IBwlq?G| z*{imJN`wbDfbNv6IUilhXfY8w&kH6Y(R8#Y=59iCb5I&z62%@qn4g%Sz@Zi?Zx?A3 z8BgByCR~j9EUbs4`0RfOR)Cs*3NBzdPV9P;D9>vvrkZPQ&P}pkNg86~)CEE5cGJ=r zlq`r%cZD?OB2YS6_W(hu7Xk+rF9hziZ4gu&Lr`^H2pp8T5V+G`4T8EtKo2o;d(O36 z0fMsS$O54vEgMV+*Wq-WcMEWtyqg9~*`0vA-FZl+Re&>M?-7{d|H=bX;jR;2Ig@EP znRxNkOA;$SwF@b&@YHTbRt2TnC4<<%y7rO`q$-?6Abw*n1Ff>XR}rgt?oAQ}^id%z z^SzE)!R$UJQz9A5o`Nme55s3BH{q&XBTY?kRsG&U39O6EqvumUCM%Ig5bNPVtY5Eg zsS(G|5)%XQ2K0C#gmvjpCYAB4%*qt>D!1tSfUX3YWFi~;Dw(SQS81{C^a__sOlJ4y ztA(qI;Uh8~6Rj3TjbvM8rU}fjK7^g{sl!c{)i9(e(<^B0RDBh&Q5g^iI0dsrBgo@a zK6~o%3R({(8v))Fs3JDwlSMXd7R~87Gcs?i&nL)UHC=hD71!(vWUn_}NUY5b$X+kW zJi7Ma$JsvVXfLAjRt}>PB|a2FBkBhuOtj~QeD)*H0RWH{u$Zyw=YG!8{W|#ogVqUv zp%Vxs4!Vpzy)a`?ZJP|h_`+rYRP>vX%95ghEg_N_RM z^VyxbftgwLHiCI|I3AOVGa@hsG}v|T3`j9c!vPobQ>yV5i30xYPyH-($MW71F_F~e zUq;>(yp$6^C`5R2vsj#x^dw4P!q~lKZH$ekmV|rQps5$`Az$bLRRi#e-Ag4sy^iS0 zy}ft@fi?gHqGKi|OJ^z*ht2{{9Rx)XkeC(%y3JP&3CgHZ!GX$@e;;sACatT0L2036 zIF9^lYM!4RCmtC`#3=rj(IEHp)O9XE@8815#JDydV=g-@!9Q>VLF``pa|c;5x7>`` z%j%i>2`sGrtA>Xtzb3#cBGUsq%Pf2wp!LR$Y%C}PD*Y8q4pcB1sDi0WLrkUVpYU!3|1_fwx!BX+P);lH z>&K(!YT%%G)xber8yeL`Xw(Ly)aL4eZoEI-uW=l>12dyDo&B z>eJwCkRtz9mwub(X+zYp{t&{x^#}A5t{bRSw&e;JF3B1X^ zz+;I8!xOw^T<3f{WfEhepIaGlX-XGVz}xMOb}ag#}ZaEiv=z=ZE) z`hI@;6vWeOpg}u1gW4zde72ej@|iAOfH;jE$qG)S87Ing?<$eieql*=dX5P4R;4$V z^l8*Uo{e=s*Aav2Fkyk7sTV(_)f~tQ+GiFlQFa-l=;ZOnl1%^+^?8Jit!~fBm!Lz( zZblG+&cz?G7UbD>&}cb2=Ccw)4jnm+I3-l6*W7RfgWi8LYlT$rQCdpk zu@;7|-phPy?n}<|xs=T;`#EIGA7WKdc89Bv{{P@|5% z8EiX)*?ieZTf5(vy=!571*R4Q;_DEcduvMt0eSeVJ96eG#TYM8?BtIHdY5Givm7mZ z_*|eE^7$QH4AI|rOH+hDx22*KWUnX_7*|q^B>MWGzdSqS*1?*&Vcl|AYUJkcL)=fN zn%fu|eaZ^%3}jKPSb8r8sc<#rwM;m@Ts|;^QnQX$xH2QVCUreqhU5C?3Sw_xa;}Ym zAdQXH_E<8>FSry#%pC|Y+()xXYVq(}EUd}bdHF)I_+;~mbc#yjlUc8hv=x2Udohx1bL4tuNY z7JY`D>Q85#kLWT7-y>boY7X+9mOmt=@@1SnFO}DN?mQ>wX6@R1yp5>O#bD?KzGvB` zp$E^|uSbt%{;$Nw3HjLWW{QeBmy8^TkK+1Jv0&CKc4YXTb=w>{BE}claasadTn=HYZ;C z-aK+Y`qclV+YUc^L=^;{gXDrdJ9NU)XK&&Ykq!%EI405O+ZiOR>ifI|EoyYf!kX{H zD|)F`tl}|kROmY4eDuLps`%iI1Mh?L+4<;3Nhk>U7Tl>bMf-nUG7&MG!o|&I77*qR z-8cf%BO@rHmUZjSxqxr212PYKPHI%GXHe=ly6v~7*sr|wg4yT0~(ybZ$G zFWsbX2Gb_;GIQA&dLVfz0=id{7tyx+m6xw8s(_(NZyk$GcIeEAkP<6z^!YY$dBYh8 zS_e+J&e#K$2%OMf>vjp5I+4VBUt64licI|Idy!z`xokA^G4TktdnlwI){)LRLe@6}ZHRIhv8F zby+Ns%rFrlqwdfLf-E!60r?X?qJSHK0>1X=fa}58&lcfZNG8m9PNZU7i1qdVa(K>GYEr4|y{QYs^6SZ~~xkODP z#{PR@M)?@3hk-jjh1 z{TU$iC#vh-lc?0aCxcqh9|^h8fOpM~#bB~Jkf$xM|LNehf>uX+IR%R8K zvKN6J+eCtF_coaVbAINIv;;pM4Q;5E55fG&1dxeZ;RIIHit`IBHMr<67qGIX&2wo> zGh|>^iy0rr%Ys&7MAZUX8DwX~^5isQCWYbDqb2fh=$%kG03njETnbnC4jxtS;yN$nbU46kX@4ug^9VdCNOb+HURpkvMsdUv0(G?TIir_!ih1iwi$2=sGcjLM7NOl-m<9pM^ zv^0Rn)`7B`2Xp$8#$9HUVHAqnZt6$!JfB#MB=I5$0{{J|wrkdpS$B?Fq^<*?1C=E5$ zUx=OBa{l;7E%Tqr;{&1eIeUR>#xYqCrwB)L;;Bh%?TJZ^ZBZe6LMrQOxe1#@Zl(4+ z1br?lLZACK=yM-KpNqPn&qW#NbAK7=6UjY80o8e#aGfpOyInXb-RT_e?9dpiFcBB28VY2KDYSRLij(8oaKaeBK?(0mr0(O@QgZF}6fRT;g(4h%YfK zok_jV3^ipR6>)~X50DU_=mn|uFIN!WXi+)TL^+PIbhPQ8ZWnR3iAEgm`(ELO&HC!h z+xQVdnhR?;H-&VmQj~IY*^Q!1ZK*5ul_NEGy8|?AT4*4hTK0Sl9=A|7CTs1-&65pq zl7_BmoggLH#$qXjw#)kZz{!%hLkIopqkcx39WNHRL=203v5`hX3yy9Fi6kc*`jnbDx*ZW=*{2TGjtLwaOQrZ z%_2pv zP!IC%Y#HNuh%&I}J(hHU`n;Jj=vlVjvLeQm3@cZxDYHUIS0ac7mFCT5DvQ&?*Pd90 zEsN4}yRqf>@E*Hq$!_``Y&>&i!*!^sY}meSRb|7Adr)OFG{g#HNJAsrW=VA2D#Ypy zus#*?jWho%@orerT;*MGR%)q#h+!1GC(_3SIvE|jZ#-{HN#RusI@WmL>A^WOK*D>3 zzMmMp!q#^duhO#D=>YPe4C`WBrEApPH<`3fCzQ=$#VJy6n2xqysj~jG$P_CYFYFY| z3kheZv=>cTPNmDuhjOzi-KBUE%LWKbb>=Cadyb8+V1mIb$G9!#*sxY-ADs(I<*b1i zs4?bn{{5sNu)ZL^Cqn0^{VxplBgwKZ6YxP%nVtRho)D}o%2^E&IDJiSO%>_t;r*l@ z>dbCdQfy_Nn2DD5pjv9kRk0gOF}f(K|AX>&{hnX3dNDv;^lX zbuqxfsuu%*`VekSV?OIw!Ba%8v(!r11tusf$Q?E0-F@SVVo zr_hvAP704lBKclE`MH=8nWqt6nfXHE7lGX=2vqsA@)min8EFzBVdO= z3C;HJkcq>&2<->;B5w>_BP%m9nM}jgqIBKl9Uxqhyx+kV4r12K{cs(WXI574)pm5S zGCf}juwF*f6Il=emd<@d-;h*LGSBSqHt%3+V)cupib zQpi&dao7@QkkRfW9J^x}%phpNRS|5Iliq}mc5TTpfV3MdW-}$SQc2_p)*ie3XUzzb z8zk=30v%0#GRhv2qYXfge!B9Bad<_v_YCYh5Vy;>pU(Qx4HdS82BXM@jxPPtq%v+) zqFMzw%B|!+P@_@=uM~NTRX~h37?f(+5YjPl+?#I!C(4w>GumXL4a2CBY+G1h1!Cxw zKK1~KVJ6Q?NKwfv@$yMc>ZA0VfsQ!GV3w)1bL#<;?vJ|72A71AOHGYKh}M1Dixbbe zpgj5DI)GQ-7rvB7P&{2EIyE)JOL^7f<<8oGraS^j5hEgV5Kg@x0QQvNZsCxVPK8!5 zk@g3}oYDy|fe9~d7TEeQ+pz+?DVz4{!VMpQ|Pr}UvWT^rCO zI-6DF_(fW0Nx(^3GQ=od8g7#23MZ%{y}1rh3W@9YMoL@-c}m=h$WzOPJhc$=MD$cW z$P=Zs5P52?f;_!lG>`Yef9&`e+{BKD;DC92#J-=P@AUaWPd;bgk2~y%1cy+%BbvX1 z@|@8;?6a9wu0vn5M+18ioXk^Rc@9uU(@{c(`zXIr)}}T`hw*5K9nd0MDC-gGu%pdy zm5MKZ&28E&;1h8YkGFBpSUsmzK8WGyVyldohAMm!+V^-PlJ$-?7(G-mk#YuT~g zs)D2i{;87H2>+ubJwmcB)K6Z>pDLMkB-sl9;2b+>TxIdw4lP$Gz#e+1D3|WL$c=`h zj#+-$yBNS8trvgJr3=N-;o`^=DI&oy8%1K;H>M@Voc%{Udjs%nq{w=*qnPSBI&jKQ zhlg0GyN0oV1~S)c=(%YXo2H9tb_%39+JgMH7pUk=d0(c9{p!sJiMoPK;J-r ztQb+Khy(nEVd9%qis|h^xlypQ!$@PM7dEjE+N{Z_pZVPM74HSfPGKFuS7OSDZOYe2 z3NIhD7p+lacv~b&~!mSgVVxbHeUJ6 zcZ#HOz4JijxH}y9RCR_Vnhh;c6;`|%_BiLE0-m2qkst0C#M9ANCu@zZV++ccJ=c`N z8ALOekE&A-uCugXM@>8_xA>_P5~m)<+=DmCwdzfBUD2DQZSy8+V{ek{y1YrQ%XpKt zSM(-1Z9$Kn(tu;9?E(Efkx!cJ`2qdxD4X}E%`VE*p`SE0gz(CB@HnM6QJl7pWc_fX z$P#5+ye)Wg8gS{f-Ik5uPnK(h;Q&!*H5=!XaN4Ae=pIOM;N-F=w98rp)&QDvpFTO( zbF~iaehZe&yqdPG20!O1o061vul%J(q7d2%-L@>GxzC>e-n|#3aI#_FI&Pn$(YqWi(*1$<{}B>2T2gbcblKc1qP%$P5s3$Yj5Dtf%Lc zu)6l02K6f0Hhf5QvRF38ht`2p<`$o|`~ft1`th zH!-ZWPPxrD1}coFiv3%;AL}`!z4@)$h%NbCso<*N0L>)IV$rU+E6rP_m#MZgWC?sG zJ3xKbGoD~8hjm%|-j1e!E$rk=N2bFDG7X*|3K&`cl|Ekw=lICabV+AHaH3{GKK*OMo-ddpN zV>B38E}KfSI$_wByjbTc%vsG_LZF^Uau~B#2yo5bIt!?VWU-4m#%;&-T_%)C_Ob#( zpU6dKEiqA%*sc+CvE;5vhbc2cQwl!jde%_L)^>wT4zQq%Q2efr)NL#<8Kf`0V1s=PAtgHQN()~{C zx{2v;kS4K5Owco_aS>u7W5X!x+9RXCa8v{1r5d+@j502!OoX|}W<@F}Os-#yM8+n} zpRL}Re;JW^CYbr`rvvwc1%;O-mCtX9OfV*9n$mV94ngeRGV)`i6(yq(P)bh8=p-YV z*R{en@8j0!!*7lL)qDHtbl^p?|Cv}DT&t4__QIPG+4F*;XzWgix`@W4(hEQG9W)2q*GOMkG~6sG=hJWy zPH4={;Vpbj6z-ebEwY=IK17U6o=g~J&18LThfwo-Zvq?w@h;%h63099`=`!|H)2nt zgr1_NgY^I*m>U;dw@lqsebjZ{FPDh)Bp)ThPiEfKuL(uZtry|cK1)`<=6sOZQmuJz zjnwP~e&9Ka+bn+D%6ljbRhf{41!+6-1-+QKGZqVZ3ZpCVF8ry%+iJk#Yd7HY{>;54 zQ@jeAGqo(PB~)d_*ZNgpax_o+av1tW{jKK71=LM`t&l(+kXdefC^AA0tw; z%iG&VDMcrWx}BEHPjN+FN)5GH&KQZC-;dGvA^Lt&D*?vYqx-0Svj8+HO5Gl6R#!H+ zM}szEO5LiY^yAj@{dI=|z{F^tC%-40Xx z0gY#(TrLWZA+5V+Qc>Okq`c}gj~FT13eO)N(4St_6l=W|wSys*VjQRcpEL-%aO z)}g`?H#Q9eSp|-wVqoM)*zyk zPx5H-%a_1sTL_wm_3!c_T$fpM=Z=SOo9pyvOV-Z^R_`0!X3Do!Ds(fRvyRu_wS_~Y zwu3>N&4tpU`gLu;QNFJ->9Xesj?89TT^<@3mr^Vy;KYQ(21Zf?lT>HvLGcNqRn81; zCdcsTIYQ!pB6(<{2-!RoHq|v*>{PyoyIo$Gl}jAE7ZGIfl$DodPF ztS>q}^Pt?m2loi|;@(BZ#l6^VLbyUO2Zg%sBxqag@3s^Ng#Hk}>(e}g0vC@yjc?bdhwJ)nnrCo8 z>*-W1+v3pCr>FjuV(F0TYn~Iug&WQqs}{X+ju^ZPx>U9F2dAuEb|(v-b~tooyN5&i zod#Y^-^1trz7!kw1iDspkw7KvJCePfmQh@{Yxkv46ZIt1+e7x;^rbK=wNSu1n75QQ z#VAT_oG(|HBS|GctS%fim2Gtbk#flk?N{c(m1L)2_Ok38$)f0K+!c#zuTqv{aceR2 zE23F}yiby6sE8x3`zjP9+-PL>leR$`FL4Prs@^!ZOqP1MF4}F2`7BcfSLZC_QKnDOQbkkM)jl(dmX1NTVwu7=v`JNMEM17o zSJJOq33fKB+7?_WpH7Dv?nhNyP*5~>Na9vY+KYY6Xg-CqvB>J!=bx;ejvNBqnxeHG zon`wWWmH&p%B-6@!%>MV{%p;oj!;ZozkIdQ$4Ocs{3dKMZ}lXzEGJP7N?FrcdK%C` zWhtXa(T8^Ls0{0=cF(7xW+I=bR32D!t)YiSaotBRsLk+#>Qg|7i(+SBj$0vGhsD8s zg_Io0k<+K9a6&;>lh& zSkI*!lM9=yFsRLWlgZP4r0s@i$ygvGtN5=h-*9}Zt(czq0`U}yMz5wOui#p;d>hsH zu)IgPxx}nH)2^$vd4>KVRof;zOQ2>rmHp0IRjjd1wcoF)`8h3mK#vR?b8V~SjO%2j zvXxmn*q~u1POBCkR(7c1jpI;C3u$fE-HP4P!}5Q|NI^{;4hvi-VDGAg>jb1EtExIL zfVHjx%x)F!Sl$z&^vbH%yIe~)FWVrkHt?@8do6&vosg ze=f6!-d|-8{lc4G`EqmkB7D1OH(UEtKfd;zi5Iz(^5Hm(GV7b+LS{=Bpl*0q&OUSJ zDEn>rd2v&ed9!xJCw@ezvjz8@dXpp~WX;3Tb>fni2A}=uW0X(vtYnnW*bQ9g2LAhZ z;+tE4B8ff7CuGVF@;P>I!kK?N^(Pr|K3SJ##Q8K{&fF1s_v6vfe5Hl}9sBOw{Tv3i z?I>EbC4nC1a}tiHZgAxWr1eQu7}YZ~xh06FmO=^P8M*&Q_%U*&MFtqNi_`EEc)_P-am{@A_pr*1TMd5}+3@3(p^_P-Zn*O`ztv#YS# zM2G+F-vY!{{aC4f_%5S!)4a zMa-tiL<8e%8cH3=n1wN+A)A)G;vWjrv(ZA0LK}h?fclw$jYt~lJC>#83IN>8aOTqT z4yKD4sfAd+n-w4wCUHiW6PR3E5+=*GPU-{2h+4G}?6CQ+Jld5_>iV&*8(+b;Zv2Ya z*1(2s4G^|<DXbSPv*9(Qt4t=q)QORnQs^J}Q$ zXb`ZvPEYbOs~A>^teXWvy@iOkEk^Xhxq18Pv>DpZWAJ3dW7iqcRt^u?>qk_I|0{t? z1y{h~Tj$CL4xXIYV@Qfr){v1|StUL-xejTEcF3%iT(i_Zsgl?+Sz#b;otqi>F(a`x z)Z>^@;%A0%#0jjS8AsO(+Ju4c%m`aL&NU1qH$SRkex|&Dh$yE$_+d<6w^oR9Xb!k~ z!7Waq4c-!R@rZD30K!E@p{a_3GXY8Ml95YC)@f(%Oz99C91=U5JeKlvN(M~<{uQw4 z=p;z9HCx9`mU*;H1i)44Rlu_4sJkck*wtIQ3bOW^RCRDG)GOgowaV!@KRHMo*hIQ= zi0N_K8o{JP{*q@*dw;_q-2Zz)TS{4UavWrIkO_rp9I7bX;0&{ZUJ7NtnqFDxRts#>B#@9M2VK(bZ+Fon{)`G>)TJS`J9Gy?xNU1LpQ3ca& zX|VCHnk}_b>x!K1Dl};QkmTp<-Qi0GmHd2tK73gbnB2Dkllusmq=nXmO$w3=;mQ5g z!q@bUdxN)&!Ew8f!?W}{%^vyewvY3})Ue$9?frI%+-4w}gMEmkQkYQ>GLxHa)3D0@ zvx5#HuGQ~ZG0H&?PKFUalHqdDJUV^5=$@YSOX8EH^!@(++eN=Q?6FP+W}FRv?~vt- zS3eP^^iBy=`UAMVwcmsLL=SprT@$&~5?ej%vPw`K>|~TLXM-nMIo33qTOFioLE8Oh3#$SU!cIE_r%b<>&TTr~`U4518>_Rs>22W`OQ#lYZ~g&t~%*1{_lj)`URO`)5O`1RfrAy7gTGup)KnAobw%1QhwOb6VT!=c>fXmEan~+E*p2 ze|k#n(n(xggRR?!>4b^KEIk&~84} zc{G>NE{BsQ^{{TCR?v18P|!~Hy}*C3|Ea@&um4#Q{yVV2e+Mf3_xhjp!GDzGLiq2X z4)_nOFaU5skG~A4^}BFZzdvXm1m1VCKOnhdGi24 zh;g3@2p%-gdJF{2z=9qf7E2tX)!;uG-sgZAPWBVEh4`P7Rfc-PR@A4Z!e?yLL6Zpq zW+hP%)q>G6q<~`cBnt%0N~9mIg~5Be4=VQ{T@NNO#tNvt#(V84a}O7y(?Cf%;-GWZ#Bgj95j!Q%E5GGwDlP(29|lJxdcGB z0*MyLt~5dS1J5pukF#nKXuU?4-G$ z2L>MW_KzV|`($156<4GcLxU&a-%u+wSe3YYfd;D*#a%YK@V&negQFr4s8{%a0SC>t z^FePx1!>#afG$J@Z7^ARRFG3OJR$Y&ANPQsc3Yx?odGvt@2=63n7Bb+dKDwIr`|MBuyuM2F+7Rp zVBWbW4k2`S0S>z#*#mILwq83&_&tVJMW~ck4B2TJGyE6|89ri({9g$y5x5Iy_&e~? zwjX_F{quqSVSKh9gU&Au-H@fGOW>L!K*;$bI&ic|6*d z(0WW7aZHFk`vFZpJ#k!iekElp9lZI6sI!YKK1Q9L*M6!xz{Jfi=y8dqPgs{#04t!G z7B5Ci6D-b*?j)SEgpY{mCLp4phNfURF8t_sKx)`GqH$b4WFSQ=@yX0vbo!dk-iqwI zPDIP742rHorE=!FI!*V2i>}tbm2lBd!)97f^A3eB67cB1oSnZ zFR{dYfWzr#SA4+JAD?1v0Hc5Fl|5Kp0FbRrWJaxD8*GD}Q)b&A~^~nt!N`*Nr|;g%EWd_%3wz~5(p|RM%~Zp z^UwJCg(se0c*^su^!XKjK61tLk*hq9)8{dMK2Fn*mGtAZ-my}zHx&r^Clg`Uflo=b(EOFwJi;%p)5cvZjk`_@yH*OjUZl?# z%JbXw`7M49fE#;Gh7Eq6HriJj4Hzzep5W&nQf7Qmm@!G8Pt@nv>GNyl`7C`tQ=X@t zGf_Hcn$j~>=$TE#^Vvjsp0;bIv@1x3B~XMVNb3!hdc!1b82O6d%+r$QN=fsy=DAYy zJZ-^TX+f0M94R$NX%9zA565Y}u~Kh*lRm$}&t(Ht`jfP05~XL7RN@jv;udK+3#FVz z+5-!v2Nr2L3$>h7tt=F^a+40H8)Z1%ru?~8`1ARC_)@%4!b-50um6c&N~d$GZ_^DP zt`BS4$y%f5ytsvHEtb7UfOVpMm-_RDY@^U#cZv z`s&X}`$?3U^5j~jl5C@?8^`MIbF>&GVbs8|cyjH>d*?HE zZm9?u{!h=H{OHa_@5?OyI6IS)L72+!c-)9b*WS$CarX8|onGQ%N*G83Pdm^N@a0YO zon9@ebT9Ujv?Q7y5eF-AR>mLy=)i7Bcqz(+6?u5^!5bx8@N&x^ZxIRLB`AmyY9XzR zCfW1HI}WQB)h8FXTuLFYv5h_T-1}yGE>6Qg&O} zENSAY4YG3DjhbOJ8o0{d?VXbmy*GCwvK&=gJJlM)Y|o6sLS%>sGN>|>Go z+KnxIGfF_o)Dk$=4Wg(4=%%XpHOaQUcMiNhSCupH4wBkm{(zoeSeliYU{&fE8#mVXU>Dk%o@b#jq;kj3o%@ zO>^?iWFip(fNN9#v-dMCqrr=U#?Yy-n3hrKMI&$gsveS9X@_KOvG8gnl6vK=OdLZZ zsSl34tboYoXp*KB+Xd{Mdl5z?{iQpN>ue3U++LpzGx80lur-Y66*9^Ut4H#57!#-fUd7G zP}+mGrACtnN_)7r%-m6ZO(BInpiZX#?=>oATHXVwJXm{b zHJ|mP4-a8Px9aR8ul0~U^x;q*;fb4gul<=gyDb%W3E)ou$_Jb+m|AUwey| zo7`(_QECm;C2om)S9*>FTksODLu+^ zu7hRukhCU-kqVa6X)1Ai(6EP9bU?itZSkPZS=8R1n0b*cVoX>=FO7(b~kc= zt`<7RORkyG>bTB{WZ5M=UaYTY5($>G2!eV|lxf03^=HxmzPCeA?SJ>;`1Lg*`ir9O zr{wW@a$SNd_MX*7zosY2`OHv>?EgP|@7f*5aU=?U*ROzaeeMBgKvIG<@*e1Vv?K^h z81sP(fRYAU9=gz70LtvHYFAa0fONUPeKR6okI|lXX7D{^z0GA z(eLm-DSJ734&YW*YmcZF2mfdMjG*giX3J)AK6K^ z=)9}D$!CB(0LTpD75Ygp(5qD<&2IoQmu7{2S`jgKrm`b{43Cr}StNsY|yh!kz z^%{Ky{aCRX${q0}tlPRsMpLLWqQudU^klRJd;=j_+$Ya)OAcj$jCN=TM2TAy(vowG zZ5uXV``aD)LmKW4x93`TiMy)N3@(z4|4 zAmy$D{!<0g=}2uplZW?$w$fvV1Ci zMEARC?}iFnQZuEDw(4f!ShOzsa{k6(B*|*piCbjip7OlK4#HhIGjxL%FZFP0s zCs9q2Y|HDxr5NjoCWE4Wy;^9oGn>du#=>{JWv| zbQmm*v=Ne(k)^+trMLD?Ji1KFYjH}5`u3H}`T?e4I|a9RD>=KMfz$Obc&BUi_>Nd;}f0^8t6>pFgll-adE$P6seEVP*h@ za@XXDCw)2s8SNouf~+K`kM5L4;lAGNr7ZFU20DzoeP2&PN8%6GK|kY$N&Bud9Qy0a)t>zW>wwTibiq}H#Y(}CiB}yZa(MkLLGwWrL*N{3)}-BqzMmv!)k z){(3stvhVG+%B48P9hSClt;yUek6h^_`()}t2D8$@?05A0j-Ou3o(fh!MaDQb$87X z3beZlLY$0e*W5cB+mxmEFUFv)a?zEJN4H?W2kNfB=!*sQ&@a*%hQ6w?G|H89VFfTR zxuY`j{b$v`51azrog*nB{W}^h^p)$ZVkniEUAv%)XoD`*kUtRS@rg)KgnNP`BHZRj zpl^f_14rd$y<>Hh96SK_iKxG1Kh^WW7#Y6COM~^mV9d6`9broiFDwszU*}UiFF}BJ z0S8C;fhV>hq7}ii@U}$|JM{H^fkl7D#_Yg2@C2AFZ>p{r0c8xQcj(`b7ee2JvO6s( zaMKA;yWAO}M7O&|S|e!VL*cEDZ#wklr+fy2|3`EJIWMG(&;-swf!`n3*oSP%9dk`M z8U$MyzH^nGciU2u(Ad_!U>7U4MfcaYC_&)i-B{)$o(R17c^md{2vzX~{O1+}kZyxm zn0>&1${Mbb^X<11AuOaeK1}22aGiyMpTmFZ2GLz!;s^X^UUdW^y5rt zuKlMr8M6`Oi;AwqUiHD)ra)X`KAVALOLU>p6#cOY(od>~IF+YmFGf52wL>T;$0n@V z1k}V3xOWF^cbYLMF)$wSZ^m|ddK;sSQP;A4lPpK3 zB;G9bK1tUkm@K$r{Fy(Z%0*{r%&W~@6oxvS!r1?%9I(G~EVc!lrxJv+Jd_y%@faL~+6o>u{{&Zz?aZ#4^zop>F?0xIVY2e+`SfY0jag2H(AA`V)V0q>lA@6)c1OqPe1LU8@ZOYqsa?$wt z^S4|7=l^W+H9OcPq~FY9d~NoV?wL>arG>LBXB*=or}PyJKjA6{k8fAyjoR8UEKc_R z#zEORSjBmbT*1r>oKLkW>^?!>^OT@TwZN4#=`7a!Z1C~uGBS~eIE7?&n&tG#;{r}g zg@U|>vV_AM<+>UU|3WJg54fU$xdn+!2D#b7g^Tnk07&=y;6vkBy0jpk^@~+Cg-dGp$>W5#*l+%)Ni!DE& zYmmjF>O|_7I(61IGWBbHd)m|mb>BRM=*tg<*K!&`0a{t%SUzBDQ+d-HilKPAE845F zR|m0gABhAA)j4mA%l_fs=X;+&{9{GN(BzKc(>J@l#nTS72hFCw_G)=Mgvz3V&pL*ls(-VbS>22>Pm=#6?FSA3f;~Y zWv3DIZ$#df(*C0@*Bxw{5{Q5E7_If9s^uojMh#mdz>|=Klqmqq9n15zhiLkU?osg> zX1%#ogF^N-x;GJ$tYh)LB^GfW&*Mvbk*1#cSqeEyGQNN~q`!FtKW#7e7%r8i%f$m> zkhlN-@81YU60I#%C$sx*69&(gX7uHY%HjV~~YDKugRM^1J@IaJjFn)14DAaFa+`u5R| z;;C6kwx8pEq$Hyz6gH9`Ijjv^@(`kf@I<+S8bd{AlRlEeNuB3hp6G>F3=10Ufe%~V zR??#}upJ!VMzalBmvhDv_a#`jF_Hl(_>BRg);Te_^}6>n?BH;kP{C24HGfb5^dN|f z6s{77a4y^V>(8`9-|la{V*7`=wgKj?vKH$PEEIqIRo3|Fua*>$EYa4KhZfqbFgu-9 z7zw!{?mF!IfpO^lgWwrk&-8sqr|}Jq1n!Uv5>FM>8Dwpli-)L`T}zH7jrtDs$(W}y zP70K_cOc(F#KWH;BB4^lj#kxGy<-g^9n=O&0d}@Sh~T%dLqJHCs#A9bxHgNL^dS#J zjTm^@@?9)fi&8{I@q&oAZn+$VtKWVHwgvby4}o0_EWCv~?~pfUj;uh0`1n$NTY!%g zdSru_Rs}-j5NhQN?FVA%eP_))vV*Zrt}SN$v+}azvzrD!5$ki)#OmO~l);FDjx`6j z-_&AIvRzlSWeZ}Jus+=?wl3CJz|nIyAGXOVUCqxLwL(Xu|F9v!dQGWz-EP72wj@=k zFzu+3BC*GYF`{8t!3W=}$Thh6%^z6n8WE#vdbtR7Zpa=KAR9{RH;6M-Rk20v*?P68 zW(6A&Vy9u`Z~yVvYW``P4V4~+0$cMnN}yo1+Y*dpL<(R1jNu=ft$B5MS>hZQmxQfZ zQP-?*yK6S}S-q@+Vp#(EkJn`_$^-JgVU4;j+ehw#NE+T@!*_L~yo*TjzI=0X1ma(W zBWFc*0P0T5t0iBHpp)D~wLGgswD~_m0Sq{geo-paE#B7M1{mZ?&h0>+ek8|(OnB4| z3?j4S= z`SycP|Kl-kuCjkWJ;qV|R~1)Sb(*XgI~~^+ThmFfXZwF_o26B^9HTK9qxrA@xOYq8|<=;gO{IaZB za9*%j=5k3~CS+mSSY+?6q=*5Dc`IuFM&B-kR0)o;jE zwr&f?I{&`Bg*`(6>voELQ>6dQz~0hEi*#fT?!cFd({iB@H%MG+_>EU$&)a6A9M;z~ zUSD+a=l3+Z%t%?(o*?JlO_5FkV+3kp zw7r51Ec^NEJt30r+ zf)jA<6Ftnb{h!-5{*F$vmkW?S*C%}OX7@gMJ1nu3(IdAh4AyD_!Ni zt0}D1Y^QQoR&kk_6)bJ8)^bty6NTXmr=);v0z5++2ysGTM7v=#Kvw`T3u=;khS}`IR@bS(SCMsvds%=<{vk5m4?f#bWVVi}2(( zJo%I8u0|$*3sh8x^}Nhmw7{{uxPSJ2t7a^ z+yo!-CpxeYrmcQ}byxtTI0u@DeO@t`cXZj3FldGN^#?xgyz7aOU|I4+O!TcP7Pzhs zfWP%0pq;a$EZ0A(A{uMhz4HKrx1jN!pmvVq)+Qn86`K2hHFBVtpv(>q>7z z4I?QA2QloacteoOoyg)6avTQuWPmF&ui$~Y2l$S(Ac1#}wQnB@9R_{EC1cVMf%slJ zj9W)oz+t^K{82qMY+v{Ns@s43m_CU%?bTx}|5%iN%rj6LLbO?eyJ5V#P;IQFsOWzr z*7Virn!ZY{$=Ij4lA+#CsjydG0lo!!O+ZZOzb1&2qj?bjL#3{|&iPTCUD#=HS+Om- zzS=74t-n_DzbX$aQjuD+#if7|DW!|h3ZGzo7tgu!xQD;VAy=P-U$XnfQS`E5wGj6~ zT@V&!{wBw_LnOJHE13-kSs+8mvh_gRhn_7Ns34b*8bnq<|}!U*%OBGYAS2%K7^ z`V8pl2Wp#jeUw~BfGpIe{1cdX&XgbpylefSeRb_!S` zUbRaYt%44sJs~e;Fw$@rVS5K#Hl5=KzSD~FFPh9fT`MO=3e)b^_Wuj|KJx;M_7$lg zxQ&~pT-{@SCh$ZDj&2vm;f!m>&CoCDsVJx)64}7MZszI*P`nfES`U{GsLmW$c1TAl zl_PAN?j9*?0mJRG<%%4{H^|l&IE^96WXsbUaFVfnQAKmVt(|vlw^fS8_F9I2QRbL$Q7oowv8nRKQkG*WvI%t9(I0TEpg&;Wj5O7L)|ftKbw`9^3o zRH|qyP*7!m=PZw0sQJ#Lh9Lx+_&zM;gvylKs7k(~x&^rR90S;54ZthEJir}4BJig$ zgob!(2qQxKy&+88vTx@>43RX)gF~vBqfB|-ENbZM$(07$Zk969bhD%#wVR_Ja`h1; z)M9FlE1LYt+ib&6%rIW=h6YDHBhLeXu4RTQ6+TPc7J^TZVIq{{kq8~0!Q-a|b;KW# zJs`jNDu+n*?90Fg+S zqyhaCxvC&C%fuEMQ%38|G_KvtH|Vp*-kNs@wr-*b+&8EW^iJJrHr5GtR9`LiU{@D7 z)C`b8E5$9XTgtV{|NNg@N^#b)8RNUMt7-eIR?Rk0YHI+GlBCKDsh@mf_M=y@F9r#1 zaHw}^v#Tbz>A!9*s*AR0Z(mE#XX23kNhuVY=5h%fGcgL~Ua6jI(|E7E+*D7SjMRs^ z4Tiop)ymVBL0V%Qru_E1Y7RRYtjWURA-z?|oA{n-HKaJdmor%Rw~EE$*yXozLzUg@ zyNxPp9&xI}FTy{+Q@We-dK&3lsV`!@+KUHTO_8b0LR3pzr5~;cl(&L)TM>otwvy@4 zSYuu>A|4Uc^5-PHV0&kf8`fyvbB43v18%@z+Chf34Xihkw7Yab6KQV)RU}34BdHHV z`e|$HXHwbQeccONrgn?cB9VjOlPO@#T%`TuUXDXCG365DEH8Xke)CyiWs%u@U*+~e zFN@W#upm^`?r!l2fh0i~6Ven6AVv~+SS|y}f_|znStJdFRkQ>MaLIR3-x>%o@DoXa z@IT}eF5Ki(cxIvajTTtWU`P%)1*0wFK7~jMH|wV*#6n8Z%QF#4W0Q~KEh+!-5=y@L zx!7pGSpmJ{(0buKNWS^4#OfEgztJRp;iK&3_cD?quWFPPAex{c?BZe6&ToVU61U^i4k$979EBvDLYd`hNgPk+OJTIU?=9Zy9Gfq8-~HL{P0A(N<@~Xk z|9%9~VayW&Id+ye=somj+);Ufw`O|2jvgEEgWq|6H2@LxZggd~K$2@34zo$MuS^>CKf#xM&KAKD z1Lo5M%FVZ-!6H@~>vS>EN;ABe=%`lgtZ*azcE6NRIz_A*X)6q!N|KFi20-K};&cgGu7bzL8PE9hsIK{Rz(^TGj%HuIV7WA2 z>UKFY|AJ{Q9?}VoS%G%%|i(ei0^b;K_7!tCh+^brIab{%I+ z8nK?zF71rX#JYCgEA^*Xcee@o#wFP$KGL&kIySyhV4cEcw!9ZQ(@)H`8pr<60H$_$ zXJ*=))nc*jZMQ28xYwS0Bdgz}?+oe1y^{X}DEVwM>I^~4m=&dNwAP$LOXW2lq(O$L zF<}aLMxZbxLigGw5W;$sE-{2x^hi9|Ap>qIGzj-b#h}=F0bvQye{{!n8@NQ+P{I`< z7GS8{`kl(jT`hF1wa%((NTrw75K?RPG8QKt_(Ad2mI6ArjfpsmH&C@M5-~i>ldrHc zqJ?>g0)Rg&%{^BsJ!4dQN2ZW(Zv9oQxqrWog(7u;?Pjp47mX6)*@A*0mw5ob>f#H=9JIs z^c8Gc?f~jNW9a=r ziVY$N;?D*^rF~|AwBV*7@d^&TEaz2m#)kuxGxiAEU_s1VMDQTGR40{_1CHGcxQqkn zMv?bYh`YCJD)+aRAWu$M_!B5FMFrM7?&Ojb>sk0-SH%OYn+Mq4WO;O6vhTGO&y_;b zrtNT_-|w{{N+WWkMo@i$dnF$psy7kJmA{cZ5j<^dK)0!b5qg*!^DdQeiF9|UX&eE{wDTiKze8mgs6 zb8mfWaziM&o0-DKkjK8XbyZQ9ott%Wy>^diL0T%C%JD9GsgbAj8BIO;U1MMOFh0zB zUB@;?PJOG&e6nVkY*(>Z{H44_|JcG_h-v`xrZ`R}{=Tl-a&DCaY6P~okJz>kwlH8% zZFHi#B2!jk)3L|gJFn?#&^%TNt-24W>R%I~P4u8dOEtn_x>HOIUPA;&Tkh3?;5{wD zwqyuZh?Hs+cD=+29ez~bVqE-IN9G}xK5&)vJR}tJd8IVA^bq#B+s7*ot;jyfQl1MN zJNKfRSz)NYC^EVz$-T>biV=i5k3kgeo|0c9?9nG4xQ zb;maK!0@keKr!`of1~q>d0G=9EcAj1&aH#0HdNQ1gX7r{=PN&z**kgHCnKyRssSxF z4M^78BTwywLb>X}?>kt;H0%89mF9*Z1b=>OPCIErH;x3!>Rq1(p~bpc=J&*hBND*D2#@(-ap$-OLwBPdL>Z)lnQW6iv9PyG{Jc~uBX!@%PAal=#>L?QSk z2IdaP(*jhoMXtkj<2|F}fULx~O4pil6{=ZcBvSNZ&@|wBfGBb&Ds|&S`Kh$lrK_T8 z0Kdu2l~Zv{FRp%_SEztK1+N7lvEYxa`~A=2<{EES<+aDu9YACcX1UPXPZS>wE3`Yg z=YqcwYdDxbMBG>$LEo>IwQJ5{gScchNU&F!fC}coHT7r2x2w%LxNgU%x8Haf@3HmE z-m{{-zYA{1IViRNEbGK+ht&NyOLp{J1t|%;>w@9}4(HzkQw;7{ZvNx*CLpo3CW(sD zvI+N0BiDa?)-CXvjI{|HD^sl1fSrVG33vA1=xtY!jGXre-p z6SPEKuU1Vv{7UD}2fGn+v{NJGX%{!Su^efqH;T)C=SpYV9hql$66bSwAhUb9SQ^_!7u& z6P=~BWzM*{_qk`f3eiF==?}nm>mjoFp?}|T@*%Q?X4Agw^FsolM)$ts0Yui0Mp65Y zKM+;>VzF=e1`%0GKYiclEJOgo*0XOp4w0zgxpLq3A|f&i2&Zc}6j8OJ)ycl=Uqk?a zP07CHYeZy$j_khWcSLTnTrG3obweVl1s>NP{z}cxcM3(&Q;8@6I&b@y*Am$qT<2}y zbz&liBkGOqJ1$KmYN3#|?{RUWjtweixX0&-09qESebfDk8s+`I=?O)47(7Yr+ip=r zCYN^YJ5EwmpCZYY#}s*PB=0x-0WT`DY4A3)Z@W|xnOyF-?>JZ?1D$($bserq5PcQf z_xoUxLy#YM_Fb1OYVDB_u8S7g(Qs7SxBa!q@)cYhP2Vl5nS6)e_xN(rDtyj z*Bkndaaw%1KO1gga!`Kz>$phe5PWg1w71Lk-&13I+&p}S^i~c{n`(W z;b+G0g2vM<*l-}4y4ooo|J%Q9{oixYl7nc5^Q|YiMr?hk3UpirLDpHHZ~fb20S|%> z+b{VJ6?8~1kJnX)k4`qQeV!jf02jDKtK}e5RAwn6Mr*ZTr>I^9Scugtfu^XiYNAzD z%@mc0SbWi%1dLr>M~dSu(o_dE3rp$w6g0zWEJ`o{cm=@idIn(^sXImf4{qT#*f*f3 z?=u;XUittOf<=gnZVKs5X|0Pvi}k-Ubg4XbX|t|$q<>09`X_=^vT4if43FT`YncBN{7FVY7ilNad{M*yNW&qq0Ng ztA>}X8dZiR5#vNhc*2Ig%>B15!Pu>W_=#s^Ll~K@s>io18oE~OP!PISyY%X1ttZ2DaE-SV~YgjpzlnSaeyU@|s<-5yU=_^viTYn1*2+q8-5y=6j^~$5o zKVppstjSLa}(u^jg z7da6cbIXMOCV-2F`U~KaaR9eW=nyUyAH$E0cqg?>_+Ij;A4}bh)@|5{*rR+~4i@>9 z2B+BHdWR}8>_S!5Cmh+QEgAm%8)uklFwbksgy&Lu8l~sG@&?4B@|oFpB%SymN{*kK zHmzbe_#4?MNRh4C6U})i5_XJC{yYm}(+ah#KFX zJjKZW+R6V~<-a+4X5_MOnzv_X?x|dUdnCD#pmMLv*?S`w5{%psBb-d5)L}jEeysXy zr-aNfpuauX1eoQ?_pUpdsCat(GM>%Cvz+h6P=RD3Lifyq^-DZo(?>ST4Bs z>qkp){|$i=M>CC5ui3c^0`$04sT>1dsDj)&;4;I2KH=V2El^A~;Gp?|QKqxZ66{Re z`{#IKUs8X_R`iS_MX@%2DtTRm1>;1eGfUk0cvY%={pcPOdEXtT6iyzEz%- zl96nlq#&wp)>cb)wqO^-H(ZQJfSp`f?(hq9FM)5Bw=AlKkqHSpxA|LT=CTBp3+C;m zvz?J-4Y^*LAZx`-x4cpEhMm4%D-j)mq8SqUISQLK5PYjVB`qfTB2B`4XYE1Xkv-_> z*xcRVo8*0M<*9w`==8PS?IOv7I73Iu4iqF)$Th#}*pMQbKzi^QxC~J<0VC-W_P>5S zqaf^4=KSTvEC;^mVAn#(>_4oK`tPO*|XuZmYRhkfdt zx-m)RDJq}8(2#6MP`OR*8-*lULES>WGZ%y-?JKA9C5?db zBn2T}J_!J($ow<&8IJ;5S*nD7S|hMBQ9e8`>W zjkO%TA*<0F{f0{bWTJ+$7DQt&eIs9FX+9=Nh#&9~SZBkx%=^hC?k7##Pv%(sNsPh^ z#!rn6zc8H$Z&fZyLl_a4QsnaZ9FQ)fONtEs2|3Ribs}OvAw|E_$PAANzywqeIYT65oUeIKQ?|1bF6xv(Bh`Sj z$TgEGBt5CnGzw#GP-ZHHGZ#2BmBX#|Ou-M8x@RQsiFA4<7oV6jr$o;swd^?G%t<)1G(sbO$#g;=e#vy_Kx`y(s1=#4@F7#brm1|IR$XIEDDh46=pmh^DH!Xx zPtzofjYF0H+egh6_8ZgQca**Oh3N}&RL2jVYKTn4C(kht3i6xhfh=f7?%_Ix=WDXW zlv)rjEd+;_g&xc7w@6!&w3SG^@szdXPC7;AQ|XTU=6RHzOUX+%r=5|yv}H;=1Q!SI0U&X;RjE(xnrL z1D_&?2nzWZrgz0<`OMsPb&>^PGRR6-u!psS?XWhm9eOrCD_y}J8$G5{%zPKsvDtf_ zzR|&No<_%PCx>gdSc3tF&fwoX&k>1|BmrR@pE`YR>O40?BauMC$<%^@Bo1NT8s)dh zV1Kn4;KItol=Z0ZjFxbJBT@)@zS^f=q<}qKN z@;!%q>x@sd6%>R{0tl&@AhYE+<}JX$yEX)4G!0>JfiXdJ5nhc6$^bQ5ua2r0{UAr8-7EY zadJ=x2lw1y9vfC|+4pSwFnDhyawtQHN~EVEsGH0YpOn_t>W`N6guAz!TYF$<_iXI$ zzHV;ofnD9RsXKeRv8DTWbazAVn`ceW)wwu`O5nM!42-5BOk0+A$Ivu@fq0uT4}Md= zvtuO{cZpBbaZ!3Tpop?Jg+`6keX&%zAg&gM%i#y{CZ5DH#6hASXBv{=&5?_URC=L1W(^YO9?dLtJ!1DOQorVUtwJ( zGn;EGMTI_&JjNrAiOOAq;(-APfFl6#-2Vrz@R1w5_X0m~SC3rP2XE@pi*>^NIpJzN za5Embt46Pu(c5F-s^`7$M6Nr7x1EGbK*Alsd&G|%m8~Tf=g-EAtUYx-3+>)y3q;j5 za&=%oEu~DgGLS63D!6J1rdEPqDZ$lA@T(-a8VRmKf~k){CHU}rPbT)Hi2UZ6R-N)2 zGifO-fsB?$f*O%w_aKyNsStL@YOyw#{bXW`Vj@`l7^1WgIwCa4)(7bj06SLSP;4-W z>;_ZPDG??bGKpAS6HOpKw8OK&Hw;gyA#aLCJrZrVMXK&9&!Yb_{BWJ&;v_%Btiy0yb#|!mvv8YrcD&|zKOM%~Z%>>!AptZKtSsVo zBi9!3859B9`RcY$3>MFoz2doLu6RzY70+!W#B*wccENadTgPLLLF5wSm2+jga&DWhoKwq{bHCxrxofv_?wGBd8&)glw$aKtwOKh2nyk1v z65du2I=Adq&MkA5b7HM>ZW^ncYg?6b(^TbLTdJHJhAQXEPUYM*Q#sdGD(4;}m2=BR z<-Bp0YPvdG1}f)3xQV}|&|ERRtKPp3v5%BI6K>EK^` zD&uP-<7=Kl&kQqpV4wyP@cT=dxJOg>I0oZnp{*nArxnBz(mvu(E5TEN-@1VsH^6U1 zV%Rp|he#%;0Bzae7$5Ld-{xQ1J3lp1kQNG-fda8lu*?&PbwYGZQk#S;X_9hXbZSh% zZ%otArR*mMYq}m}lPX<&^US_qz0o68d_oRLYKnSRHu~9FCvgCx4%Lek-Dst;Xy_{{ zZAG88gKg|k)okbPjq@x?LI`3F0l)V|;@2dRk8luy$wc&O3u)RuL6|4JFK=~w@dHz- z%>sTPN@}toEfy@Z1Y(td0bk5Log^s;b4Mge06|O=*v~zlw9-j(;YKmn zCXQ0JDq0ZOnXESw5sI9rq}Ke(I!Ud_F>2+Up;pEL%2KH(8uhlyJk^*t73Q_Rys0j) zwdIMrxX=~{88KVJ3_j5`38S}G{F+ty_Tz#sbH=3t4;N4tzB&@S8LsBN3|NU6V>V)nWWEa?5C;vz_*aa0xpeQjafc} zUA4`6wF?UtByusX3{BYd@Tf1I(XP-Ra^FBam)DnA8l_#}F;ZaX-rCg1cYwM>H{ys3 z!7*T*0?}e)jldST$=J$5MCah|B>r8EM#$kr6jqsv@ei=U5BT#Le;oPdGeQ7FZxS$& z?nbsYI3;;?2@laC2O~LiT755&w~|-}re7(ze*0QHw}5y5U6B)fhOu9JM5NS)jc#y7 zS3kO_>N$F%BhO8KiU7zWC{7go12r>$4kg*n6EAT{rb?#Kw8VoI0x0)(5(D)02ioZ0 zOM5TbUy`>>%M@quHW!J&7 zYf<)1wCsnkf`wVuaPhCh#lKD{{-<#9KMfRb7yhy>vKub>-g4q>KUkKJR9qZpu+>_c z`i}t5vB>2kP~R|Y*m=V`zvfVn9zCL(=Z};I=`j){>H3ThRb!CBJuNWEFiXjEy$u&< zTQ35hx1(iaL!{HlN}KDSVe?JW!U8gEgSu_L6$p-R6FR{Hghl#u)Th>J-4orHPV zOZ-(Qj3H1z&r=uzGzbBb7X!}&4B`zef&s)#5hP-!>!&jRy8cCo6v)|;&o17w>?-Xo z3F+dI!CQ`ABX+ow(=Izcyl%M*KKo?Vk#eZa?~X5eUhl7m3VENA$J-$RqQT5aHc7)TmTy z)?qB`3^YkKqpBH};M z^DO<0W^5=<5H0wn^c~v z-=M7d4YEr=ahRjtj{R->5Ij_V5JyUU+zJ|P`1vvy78_x64SaywDHr9kBqP$~6M~#e zeVQ#B*gWikm|F%|BO5?>T{wZ=AdnoU)8!T)Om@T#m|^R75afYb4Hw1oEZ=^^2n`DcSsW0TO?5LDp4gi#;j_yme6Otoke*Gr>^Siy7v)Gb(Bm}DHcI7;^G2S zz~|PC0{oq-FPEJ<0mJbh1kUf=C5QltKz6^KEg?^b=HRg8DO7n0)hAqaE0LwYRX3G= z6AwKVV=YbzQ6CSB=dM<$4PtTyTPWDU+sXL>P28;4_|wu3ThDpCP82ZmpOkZWdRKW{ z|L6Z~=`Y+fq?FWb3V&8p(TzlFc%9o)t|{u?SAxn1GDlUhFM(vvP*e5=|6ArsMPL|N^K|O^R!JRFWZ9+ov>?` z==WnAYv10m3Cm)YN%~7x!l0X>xXbZ`&lD+y!Mm107%RCwEiK}h$Va4K;DAmw*kHv| z>!Yf}zoNtgwn~a4=4IO~4>_>Nd<0zq4>EuL&#j+7u+Dh<-~n4jd8Rw)L6gC3F3=|0 zE6CWewOVCjMrC6syi7O8Rvml)hy z485~>Rfcl<*!rX%PP{6q`fS!B%cj)=Dm{T(6l*=ySgVWF@1!BdMcNNK7N&JN=J_V^ zqL58H|AZip6f1f7mN73GEITJsARZu6lDf@ih=pR`aLEK0?8Tz_cz~O_(FXpa`^j@~ z5PC;Bt(Pj_X7eScf2{TsRWr(h@G3`C{;jdAG5J|AelzBJPVosP6ws~Bm?sWTC!rZk zS%4|QF@SbMW@T8w-*k;@U-q+3a(kKNDZOBoZ{2VIhzni{7Acd1pMIR ztUPmoxSgd-EYYLgLBjW3SsYJSfdD_(YS2DE2*qrw&gwOS2HhMISxmSw4pct;+NYUwr=;}$-#5n zgKYDx$5OV{a?gtSwj0z{jdNJo0@>ROCMGOp@|SN-5H(06I@R}Zg)uF9BQlFOXHGv0b zu9r+vd!F+Jkbysdk7x%YQt!K$AI2PQTEw?ATc~+Vh~xbOV4{ZUsDN>{5EH(*VDp^n`Q@zu!aoRh`bBZ|=m0FbQB>5KnQ}z1^0$kom?KrZ zNhsTs>0Fj%k@`TN|0EdoT_W?ife{LEKY;t%cfc$q<^xNc6}#AjW;DZzj&yXMn7;-U zG*=2bISm*U8(gNS_Q7re=`ccne*0FyexhedG8Lelsm;<^OAsFj=ut(68O9}chcHec z;}0G`TWXfOO0j_bR8QD2WB6++`^8roUB`o6DUQ{WP(s3kw_J)zl^}GkeNm9%xnVBQ zS3l==AOT|=ym7@Q+dN0C7CmqtU@J`TDl0~6ySL^0DPO#`HmOn#RjQIweNpQI5~V(+ zp{JGYl;)gNgwr~0N}dD+|}lu(iqeK%(QDi=Im;7R$}KXgrd9B zzE=vvc8Meke{&%ZmD%i4smiV+_fYLdVnjWlvsLF+&Z1%UKR7#hi_d0M}0zO4UE02G5_c7 z|F;wI0Jh&!!vMWxo9?v44j2z5AgbO*;Oz&yq`W+xrXk?a+uE<2?PN`I9CM1 z6i6?3R%w326t_x^lXnST@Wdl4;h|+*A?O9kAM2i9r3D0FwkpE`14kS1RF(S_hlN;qT=F8<-kv-acql|SJ`7WVe*?sFe?Z9;bDSZvhibH(P7OAr zTftE9)L}qznS_^R!a>zwMO^mbMIqc(4Wb|(s3IJoeykFy8bV2ZTMctm`HBh-vBN~3 zX@5~cRL>H5XL+z17(s_QJhZ%84WNFO$jh+ZAz9(cZ3S=M>>4q_^Vb$QbR5<6bN=S;lw{Csf-D0PszAwND#m{fIKC%Bnfd>W& zZ^_rE2e2NkgwI2`#2UtR#DnC=s=xNL+Tf(oBVI%^`ChPR$^k5N9E@A$8Ngno81i-} zNSC(^4-iqdJM0HPw|!|NxI*(zP6P)C452^;D9k{f#2ZU^=P%@MH5Hlga;~mvxTb;9 z{wh_#03{I%SMbgN4&aloJ6>ce*D_1}L}e2671fKy1PP;3ua{mdDmRXx>aGXcVj>D) zA`fMe-lSlBl*T3r7gu-@@vLym*crQMue?Qt^n_Q>fZhfwXY(_J!q7Zai2Qi8B%{Ca zBExqkj>LfVqZ99zJ995C{ah^;B0m!Ktn0_3vZF}w%`Mj1^3`y-qd5y03(J0xMI0)y zeu=jiFA|j-9yRh>yu*LsNcC;gvxVHG`KoWMvSzq1T##oA*tG~!W78sAh?go@$YG0O zEw>mAf>cN~TppX7r$B8H1-A7T8#ZYh(D3u;Z!_9db@3$-3DAyfxtigFN8-ggfbvyz zJ+x55suo9BtX6Ea1h$RK+8IaAeKvZ(B%{GNBf3tm!(E6@D!zS0Q2A%7;}^go)euwD zEG(r12`8Z z&=A^13Ql&aE5Td;2nKwyyEQ&-^-1OWZlM4c>K1Q#sBuPj}-T~Rj`}T{H=;M!S6%G!~za^B1pXcdMqx) zF?hZ9xEMZsHGsq8yvKv(>me+z4<8SfKMi4VUHO<;xciw1mY{!{se5M@$KdsI<6_tw zK;iLrW3hD+A0$4XHzo$|<|Kk6=uE|jCq8utT&kD|Z=x;pxa2X5qvM?jf`DTl6AAd= ziQw?M=W#H^=8o6bjx|oup-ya|ggowe@Wf~d`rWbC$1kG8#q03KdiN0l9m80hkdH2c zc;P_7c&)J-b=G_DxPRD|)v zLJDOZGEN$YnToc9#L;yyIJyod99?)QNhND6mSZKQ=Trq zNMj$s4V*2$n2vS-_2XFzQ4B0j69brR7C0*PNi)JJH849I_{mOdsPLb3T0_Wz(;C9u z>$4pu8JdRg?> zpq#K{DKv;};??1IPtJ~hIDB{X>iN;DqqG0sMQw)iMmRHkIb7mFNI$|Pfvty@o`gVn z{QC4LO2TjnKM7TLRO8c`srIqG{os+(Z~(u8+Yi8Ro!mFOQ??L*>DpD&Lg~*R z{f8wH@1A3Sf;v{aE{(iF#S`ZgkbZul@F^#P!81$j;6TsL+!`_I^AwtLYt3Pmr1Qh$brTq%>A|%l3eF}~N6u+0o zED{Y55;PhOP`^TB_P$2V)YF&ElzojtMwZan8cSa@(Rx1V9TOo3UN8~n zewAmj$}xMI@)nTv&>(>aUK=FXz4AbXCm6#9&`VD{c`XKdA0X~o0<##^^H1vAlom6v zc!L?hy|%ZgZ^sRE^m~yu%n@{GkR#AN4{@w>)Bp!pA4ww|00)LRfZXpGhZ@H;`v

      V3PqZ-eiEd*CvCyQ||3#lC$`xXJBEMHFO*kT{F{X zF?3J@$vZ0X0SN*?3Dkw<>C7n16V1YOwFhg=r1c&E2UdLUQ13q1e5f&ZWQfo=!mEh* zN_&QoOwdv~kYQO~=H$Pq^+fFs7QbOeHs&u9B<~p%E8~>6bCg*9$3n6a_q*8!rnE5Oa;b>j7+p6e?$f!n#TSLwo3;7U4 z0tLMI82No7J_H@Yx8gxPym7>5o_3x*=H&_PjhFgKZudBA4r`M!PoLgQ1gSCY> z8+3b^cCqB9l>3HF;pmA7`xRp;hq+gta$n84OcfEp#L6MQ z3o0C1^>-{QR=V>PrB7dFn*ClmWVTn{uPQ@VX6rHh|GAsNvv!g~IR>AL zDwH#bd+lkE7i5e6cym$i$7ARPPHI97!Nc0^5O_u!2>UM|YM zbUXN8eX07AEQi7+f69vZLWX6EEs6r@Ue`qtFDiFwRB?gjTBgoL8Zhb=4`B!V;lY5_ zc%|>d|J?e*9=7)Q+djLlIuSwyW>a6VT9y9y7KV_KEf-Ve(bk);-1@7i>#x|#vY0>G zeqfA!S01DZ{Q2{@?zr|`PaqUU%9sJT_<#Y3dmSwhGIivE362(FWi@f=F@U`1o;VtD z_=%wr4lls5b!Xq>DM8C}#|-(!OJJ-o`~?AO`LDNjUG#Di{v(9DFekpA_WVc*uH5+o zz`Ig&7ehjMcO4lPs+iA@An+8Bh!LpvEZR7A!XG+^;KXs4liT*1e}5h z!&6~*nJW+Ox>g;0(|=b9!a1&Q3=m`~W<0tq`eI=^jolK3fmeN1BbLj8Rb(PjKZI0(bU`;1yD$ZFEhED_(Q9hfk zzLIgzzA?tJD2s2NJlvTG*5miVjnI$!>$2VvMco0oW%7*CB_K^+NMFhv)@W*U3YbVW zq#vJq9FngeN$=$clFK;63%E>wC?Tzkg7zbCyM$)Mg*O+OBFzsi2R&b#E8db3zI zA4<(Lg2&;k3=fyW+T%8bw-V}JnJeQ1+}AADFX%}VS%VMEWes@0(^&_>xF-&Z$b(6; zco`EuDv#$t_bZd0)lFg{}nzYcg<`>2Bt0J&FQq1w~Et$mVLv6b&t@hWNV7O#d} z#=W}VxjN367lL^vE%Mb+3`l^u-^HC(m^*Y(l*5OKk>03VQnT*eIR=4FljaxzMpaT` zT>7KLFsOv0gBy6KU=a8FNWm(cbP!#YJ;c}ZtqdrmNm~{Wbm-WQK=*uV z$2#w6*2%EbNiP~Qd}RDpLqOf{%Z8|Q%*^7B-I6vqE-6iL6L-JINUSou=_>wX&g{PN&;zdSgaesOH+I1eMR7afwGCq9< zq<{AK@z&_j=CfwGD*8u%>pqhs29${K)d8Y|FN@V47x3~}T%tvs!3ebvI%<2LaV~z+ zSgr^bjzI=ii$RT2e1d%kuPOTwa$J9I%MR_E=G{fbdURX-GIF{l8hdQ3-zrxk<4z?A_DkUq zLcrBcuY6>@YcBVJ6-J7JT-TtFc~w`xl=F9>K*3<0G^c)4{wCG0xw^Fl#flOb_T@kb zdo=>o=z5yzI+a|3le!&=3x=E9He}BnBma>-l3RS4n|OBmk-Ko}=>N&F{MJ zSKa>O$F%OIy?Q)vi_8A;-sgLtKm20vG0#vhgJM2!BhW(uw9Q!&s3TOx!_WUDu>X$$ z`ag|D{M7*BuM}df0HHaG?$PW9l2xuPyJqpBJSi_BvM=s2yc(eL4=ot(=>Turj0Q=B zqv8QZQ!Pje|Hw*hRUN7sb?X&8_my*qH_h%(i)O|k7(lnR^FJQ5t>D2{(Ux0my=Xp` z^X&(+DSQa9^$f%tNX4R>l{;TNc+{;HY@^+Ny#3(OWwn4qqu6*J$bkW+%($E;-{3vF zZJPd64JTbA<6Q^3Qh!FM4}7fhUNV`u#n}2sfZpEPhmex!0T8qgw<#GvfBqH=3$&6D zrF@95t_wZHYpUm4dvNyV;D zcKa1x+5B9rWC*d=Fh=#@Et#`a&23{aiIEN1{=irw0*lI>NSt=O2j0$B&Hd$(Fmj}k7JAG)=qgdD_8y2uaLdZ*2}F=sN;utALv0# zTDfL^x0&NN~#7^bFM`RJuSLF|RsOFsV-VQ&#|ERiwjfxjzSWB@&1_ zXzF<-UL1H)wop`;j{);zK*HCHVG`%%s;uX1S3VV3ykse;6Ja-)LZgGaVB4sRDUD88 zEX`$sB^>j0kAUdq0aq_Jdr@grz&>yWy@CQIJ_$u9fJ7y3B@lBbitv|5aOdB#jm&Yu z8X(ELXdP7TY`tIy;nrAZ#C9Z?8o=}^s+}5XDAD!f>@}MUA(YJmlK-3p+<55b2#|bD zqu}fW#K!?#uf$R)mO+WhC?x6aG`+h72>~Otay4L!T-h_KtY>(k#=JYGIq8u3gVY-( z1CxZcmf#jdID(l;UAErc8?YH?T!LtOPOA@AhG*c!8_&-Eei2| z)r{F!WI|bCD=oVW;mjb zs%un$#?-nts3xU~4O)`i3K6|=Y)eG(l&ToN8;a0+WZ#d_PIqG{Wqhq-=rbO z0MR4R^T5(Z1)rIJU2&XpP$)(g59mbej@1lq7HvfOmL9HDdM_MTX>qe-Bl1=%fK~|fq*Gs-nmbbzKQid`X&u^gH<*CwE7;snI`r8_zI1FPpr@hk29v` zt9~bdPE(+#a;#=4Lz%7{G;Qg<-~{X$Q}M#X6uVm@Od&M~m@)}%=_7^4d>Au2br=W- zVRXr$SO%615e$c{4-^qQVex!D_E1_7;3Kh-W6@gI^sSIp%z4tZO0rmh#tc=Y?$PnNHscy8RM;wH@xI6$F|80tL)^Qja+r3`iMI z$C~GalAp!LTYI|rCY=^uy5~vfAPN6yv$$1ta3oNQeTRLu7$bal)+mRK7Qf>2=RfV) zQom5{`x668J(j_sGcvv^|%F1PbIEr0XW{bWycK| zt@-Q4w(G0pi?_y5!f61QD~5FM8}{da`8dwo#IpbW-))x)A(D8ymxjuu;ZuM`9D{F6 zco!mfeRY>t&+9;N|3Q}vw6&BrTFoQrh1+wK&D`sfs?(m*^R`8szJ#j06F@RNaNNUy z4$f&0tX8WVuG2z}bt=(3(N!i~MIlhHieO_W3iCaWWO@#3=o(ehK|uKfAJoLPuMOTp zvc*KADu9N^k{0QVgx6pxFa5!!6oDQ%2OLaRM;ZPAYA$cwMQeBs!$$7tranODuDn=u zkr_ban~Yvb!I5sh=Wb-xqmHvuIHe zIdlKW8jb;gymR)^zsBW1>bR@|3W$0n>5w|X#YooxCk9;SNvGiVjzD7_$FlpuL{7de zQDRp24>LbftszhhS4+E(luz1vB@e~rb$G)STHgC2-%+r8Q)@j|u8i`>U*WG%rz85} zL>I%=>NVB_OQY9dv3U0rk|#?8M1XuN@8(?WtaVkSTF8Y`i_v2-pjQmV_~^YZI(A)J zRI{o-bJTvQ4yvgOM{;b9qi;SlkBRl|>r3~nL31q~BJGKm0`Y~u^Q`jbDUIX6A~KSI zRJ##~1)#w$n+@OEr*aLwOOQif=r7qBr1ec*Mp}=#L#;=kyw+n8-TE6gq^D}TMh$J( zU!JzJlXk48CE*7|S4$w`qElHNOd>B{40X+V_9f-uMB3<8wNC0d;j^;OB)Sokq zUl_7fd5M(8=v~rahI5M?xu|!CuAHsMf2b-l*jlg@}wapKc>q z;J-#k0;0YEI%%mtfKF@zp3U9Br$1x~3xTCQi5{+BmVKc_^db^s)0U7tFZx2r<9^=$ zBZk=A=KuZUtXXnfIQF}!XV(}5X8VsHnptrH`rfzrIlrxoWi>k~FX`tK4v(S`BBKL) z7`DyWmD70#AeG!^^!QTkkb-s&pbTI1kdWCW>@)XbJj=jAjKouZlA?lT>M( z)8S?~bxhh4w?@}$##podaB_I?`ny+0=ZDYU{pIk#Pt^;=nA&Yop(^PU7jj+rtE%hU zTU5uVtF$iZ9rs||jQhdxfaiA5zM|GaNS88BLSWRWt+v%6goa7Ho70f;l#MH)z^rUdnO8*w3toY;vPYTDG+zg47po7tETI!3$}dCZf9&u zc<{~Enr%sF2lp7w{$TXAUVuzK)%Eij2@Y~ z&UIcdNfv!N*U8Ju3%x9EJjsk^ym6?$1K9(uLW!__1X~$WWMWimrLbG(-`Ay;C>{12 zs1Dr3;>JmYp|8Dv@RD4JWt6j%1Y322IsA=V#n#%`6O@%)@CG7DJ zanFY^rn;+5b7MLPJeI*^0U;9%>~aYw7hOr4Y}(0sa!%~&29uQKJvly7Q&@Qi)^n8K zp}5BkX+k!EBblHcy`s0?`-JNsh?j zpO^*qB{Cg;e+7wLIw_O+7eaT!r4G;FUteOwwd)(6XoMY?5t=#C!W++y^2 z3CZLMM(&%F7Y+bRlQ1~eC;%UPH21mie`LY%WC>|56{c4$aK3f)?BoNblqb;KukGBg zW$v4!XEcv}lAJv&Yft9EwUOq*x6I>C!E~N<4W^u?(M(J*a{2n>@Wss(rJj-1QqIlK zsN-~+$x~#$6Bn0)I+>!>;TOiJfKQnNW}P$(zExiHx5~(4-!hLat2B#!${g;BOlQHj z%%f2QC=5*(un>WWfWW89v3)-oaCW9FC6-JIE0P4ncjmbIPLHdjV`Hqsr_TA>%#ow? z==8PK%_7CjhpF$vKq`R~CXW`JNY!vIE{capr6~|emXOk~8U<6n;5f{G{dh)l*_TNF z%c;pk{1$oO+>>O%r_AAY@HCUBi2RpN4oDvRlIg{YrWY%b{;GII(%F|vuN#9ro*;8U za78oWTjps;?-YUrX8%lui=Y7PljOkh&&q`)1woHX`ZPjwoi&Cg3rK!BBrrTd=DN+W z+5ql`NiKZKoYq;MWRivu!Xpz#Bq}KMBWi$PipZBfg$aO6(hv)KrBP`L29zod07wwI zrzLF$`;zI#*;FMMxlS*5)_CFIo&xa{nSZ;yXlO6+1d(fb1SVisj)a#Xgeas;lQ5ua zLi6EU=G_{74xb|D%?o43z^BYHP7?YI@y1*N-slzJP0d60(N0lm3dUTZ=sxzQeqT2q z&0I_o`9CxjMGc=K=O=@tpA6vRL4_y5Ipp%W;>1WdSsm_Nlp5BsDZD|NX!G>04vfp3I z#66n2Ct&GuZ>G+A_63*UddnHvCi&N%&Un(@)-y8~lLQEV&e8e8C%qH}c@R=u}t1Z%iw1R8o1v!J4jz=!Pm?eDln{ zU%k<*kobh0s>WEvYUg_=6L_W!T1T>F5(iMNs`$MV1SNYUjrSw_p?eWOM5=Sht*jGn zg)d9Sm5(GL#7Zx4@Ow`reoYej(uU6~B27QCKn}bR$t?JdX&+VF*iT4#U*2j?;0LC5 zq}T8RD_fBB^Fkb+`CGK&CI7?>^Wd=1rv>y}s=G&gQrgiZ#XLolBn4rfuSgPy_{i4o zLLc(psT9oCW0#*D7i8=%_}E<*s)N|iJ)X4ENh_WrWbUf8N)g!*x0PnXH)fT+n#1T- z923bE3PZK>#M-Vyrig5_4*rc9WezxLQA4+=h)+v}@ zUg5W@Nha`2a<{4F#inj*x0Fs3AdR(3lOzGbpSDaSGL3_X_gexWQZSobn%=?3mok-J zm}+ucg5Q;1#Kb3OlSk-`8I3WZ8#R{g=Fzq_j8Pxkii}N_0@-D36R-Z_qmo_=30XZt!jOXw*s9GUp)OvZ&mN`OC{@7O?=W-t+h7PmTaY6aaley z4s$wX&jc{~)k;>NhqaCCur_cVx`!$&S%DtYL8cPSYzNV?Ip8{d+3omEw{wpnop}uD z=zQ(ORP7dPP|4Bh{2Q~Bdu^Sok~jcZn3?+uO_MP8%g~B9$NXQh2a7&Sz_NKwBFpw6!{-fx{t{x)6KY+7=AF zQz>8ad~%>$%UjRd6bG!eEMN`nFisyT1+(?Rbll<@+oVgM?CV9mideqQFX${ zdn=7^nPyQ8{$VBAm6r7Y08#sTx01nUOm!?UcwOSvi;jVkYM8n8tn_ z6z0TeM5?!aQf$#&sbKAl1gZ(P;yow1y#?sl2w@D}l1lCP8{8%A!a(8FaNTb*RLIzf zw2o-in6{YOF`XRAU>*OnfN;4HNogU4sYTr)*zfO*tqQi*k-&5`ZhNKk55|CCtwn z{%wHpd3DmP`?53BxGID(<75`>3TBFEnVBfc>i+R&pF)@Wb9f=PoS4~%LPOBx2G4sk z7djkX{#r1|2|nY8;Q|mZtNDCUek@uqIWGz}TCdBNOUSLvH!C&>%VO!xJXlmfoGYb24Qrc z_(2qx{MpcOe~y@H)}&yw^I3VZzPc()FKdq5rf+7=!k=pLN~U^-oJQlBk{0t&PJ+57 zJ}|+(5D;ab3j=Ertncoc^^%?0i>s1kNG`fLNP?SerQmxwT*~LCeYtW|Ma44X4Mr_p zm2)}b%rQ-_U;N~29>)DgW9zWZwmo&umg_k~BhSd}s>jd8f8b$7h${?oUM8MdXeKwM zvd+Z3F8_w%I~K&GI_;4)d@QP- zi}A#|*LtuhN1qYaxTlYSL8N?81&KB=d(JTVqtrh0_%Lv-gB`LA$ez=tlQ>?3*XwT- zj6Aru>r$DQ8zz(l2%UwQM(CdmvW|vH_Y4OgMqK+D4L-{br4Fq)D8p}L_V(KcS>xBk zVDH^??Dprqt0wSjEy}@(JHm>O9kd*t%;7KBl33zhK={09K?K*89FFC8j6oibtLgyc z9X=Y3obo27ZjH@)$E{u`LJG&IcW?k^=bv}51cwirQfDBJRWa$^1)5lFN~Oj(IjL3` zzhkR@b;%~fB&_vf_7N?7#|6)lBdY|pyLSUulaZ)5?TEp{xJT}kFwJLJ>RpQ``F+p1 z-gk)LWv*}MEj!}8W5;5)TKZa~ZW3W6%L+si?-bi`4IPOKo@lzVo=-8}1xmhu-g)17 z1cOO;ODOej(KM@zV)h=}zsbre@MVn!QRbp;KC++h`sRH({Y_n~4{A)`-4ely^JpeRAW3v9l0ojQ!Y|BeK5j$Bq}l`LrKitAcFZ56=-_ zJ$RCoPru=$X?WlaZ@(xctu|~WEPVTXSgK}J zX+Bm=Qlq|{%}O?P=4sII0GoFrcV1L}1M11rsSAQEDYe;b^?)_Ctyb}sh)%z1R=)e# zwC~yK7GJ$W#JyV;{dIC#59<>J3qDDY_qox4h(0>{A>H>K8!qs$Xn^^j`%Gbz{pe>R zaK$|yF;wD{fyunE=(%|xJD3Hf&N&qO9~=Ed3n64o9yN?++`9xyNGEs{I&&?^vtEtZ9;lubK_3mqU0^#u~K3J#kojpbF{Q(b$gQEjH zW_iHWQZT)kJFX(YniiJ6L$&o>wQ(-cc<2#NIRitXFD~MbnggW=pAF*(usKt()TdPu z*_A>nSHa`KTdSVL-7loV72HYfdUC|!f~Q{fF!K~(srY1Vsb0mCVXC}pFIJwxBP(y9 zNnTx?(Ak3rjPxCC;(9Y`X2y(B^O z;zaIq>@K$oi$Z<<9&2`3+jR1)ieL42+yIGRzKHkoli;0E)@&RcBN{{!{#8`TMESIe zC|FU|Dq9i7Rkw0fR0eccWI0pfw{OXmd`D9M@o+!k@aSN0j%5y(klBJ4Qw&F-w0)Y} zA3EsCvexTQ^ifEbv0i?n4?=3((RZK7V~~V5-h3htK?=VqR^7MdINlqLlC$m;!HE}A z-o^IgmoxHOKv9||8H!@hu#1c~;~u&nzMR@KLhh&boUqI#0<*#{Jz(_V9nV1=K9dmN znD!tD+KbrZ!7dvzBq2R$7x5UE2x#*{E8%0;+~DQaT#Lh2AqF1j;%H(C8I8zGx%a9l zQN%8id_#(uDPNU!2`VCUw1U1a7pt=Ez-k%HIX+hXH69lGg4lNmpooD-2&uOBAeh0z zqZ4PxYQDSm9-P#|Zrk!ORffj5Y4rRn7T{uQUG&kTN4)f>Z;VphJXQs-Lpx~1r1Zmu zfhu>kpk3teV98ygAr6-vWy=XQ!&!+n8U6Esa`~>XcwdvWtxvlO0jJqO5ijr_mCjTF z!K9>G1&&XunZzJ?{!Qix5oRTFgq&hTgd;`^TkTL3?)lBnoAg(M&Q0Li`5&ru@X3yM&R_iKmc{3fjybB#x<0!6(J@F; z1^wBiv^i>2f`m9NdvwYKBM(RNGd4S}CAdGAl;w*8r<=PyVso00k2ygS10&d87B{LU za9DTN92Bcwok-&_63Qsx_HA<;%Y=m69Y?n&|I&yvyTUhe>MQ?c#dsT8Ul4){pWEGL)PRy)oTUI5D zg2V*_Ye|%zO?C*qQVrSeXzA^U#D{I#P%{duFa#)u<#`JfE{hwShQ8uTk`Iwu3}KlO zZVN_Z$%=M992=Rskt$tH7s6c+7i~^^4le18Mnqx$Dra73Z?Rr1P_V{*X6&jc=DRx1 zB>Y6*)m*9Kis6G_;CLB}qWd-NU}JZS_}oy&&e(ZEhKD&H%i_IAfuAB3rR``i(l$4@ z;s+caB!}jz68v$ozP#krf=?wx#@3SNBm5HcsA>7w!LzH6FBmP;950PH9s0mM(r(d) z7vQK$?t6?ZcA5897#yjwVdEJR_NXyWwj(CKiNHqhIVg{)!-FN(j>(3-e@q&aVPF#I zfi9*44y$f`F;KG_v2wD>q3X`1lqrHv40}FH^bp@@?tmy7E-SpI3pN7F<;CK5$@+nZ zR{mIY%MYrn+BNKV*y^{|G(fL)aF$G;IXUxk?HN3tlHibehr8$V3^xlW4Xl?;^xQKW zu46o8fFl0x6EMqzZSKBs6}nm3IV>UFBgq>3MqBTT_av>x)~!GtCsZX z0pKjT2xA;VD!ocR)EdLv9{U!F>7&0M*hqHob%GQ#?z+^TEWr&dvfrhxud#LdUsE(` zU|M6(9-4Hpr;p3`l!9 zudmyrFn!t>TGI8y$PgqO-&|mo!Go%ModquzuyHLW~0+#E>5z z=XX6%hxRh$mGk7NW>Gp9M~Q1@l7f*^6V(C~z^sZEcIA;P1TQ_@w?z9U`SDRNU%U3} zj;Y-<>S@PB5$?=k^g|~DQvF<4ICNk$>C0!D+a_1(DZOPvO!9ivDG}v3ph@@iHh5SK z-lDmJK|~1UD;Z-^LD=w!o55`33PJRgS;DW%md0ChTd4`UdSmHqWd; z-KS?Wu%mj4q|WS_F%$FFK(lOUcKB~+TwURuTd%ZWA3At9>vmSYIe9Sv z2fBDw*K=wHCC1av(V99N)!rU7SzNl(YsLy#k%so)graEZ;lb_5tIT8zZ!2=vtf=OGO ziLb9uTTt!Dx+<*}FF}JOgExys^YKlM!PMFGc)Dn2@5}kq+k?~Nf5IC;DOP~YrA?G_ zSCW6G^S5LsGB!nZ*$ND&`4jbBMgl48Lj3#6EacHQU`Urxzm-BIz4|J+VnmtJI$Wl$!W7E=4vUOSLxng zVy)`DwB(HdKaQdHPPT>ynvm5?2~8OGaFuZnvDTG zxpf0>$1?WK0pVrRybMy4-Mv9fX|12KW5bQg?bU=vodrC=P0*CyL7mqtZuuD5ll6dy z>@2>=$hLjwO=|6V7e+oNK!%^5s7|xuLZ;@oD(Bx)*%HH@!=X0a$%ooIVKS0LaL zrp0lzYMaZ7;}t&->p34_YheJ-I0H>eqzWw9RBQnHB6YawwxoG}r{jEYSc_9Pw%$24gy2>V%1 zXGLVBMkW{WfiTc6FO8$xXL^dh-^Xyzg7hZAc|{IuRP#nL$8eK9g>rTPe-d$CC*8RZ zWtr01>ndQ|xRL*a>2HLwAyHX;OJepfMvyTToI{6dazk{8JYS#=k!6MJkg=saK|4GJ ztZ-%`B!>}i#Y(h;dB`Y9G^B?GN+NWKoJe>NRW=mlLsCpbeMlnQfFFSz8umkhSiwI; zy4qN10uKa2Na5i?WKZg#AgVj8&>#+^PV$8inW03? zLuVlhID7-<%q8E(W%HDNuWM?5)B89NM#C&ww{ge380S*4=kN#Z~zCQqmm zPmWo}7q-Ng6)8nS0D?e$znBE`t@6=uCUGDKlW#;@Z;*Q3jf6Rg!Z>&mLY|}nJD7*U zpCmwbm8W=|koN*KVz;0c|g7C2u36?-=@!l>ApG?+?Y zr!hjRgm)tvSS0{uhF4KLsptHLc_O@;jI=@y9)6b@5WZ|Bf++eTRkb2uqQ~=y3WOFi zL8rL=(XAwQuSLHHzhO0Op!WsDQrJC~*e-HuU`x?j(X%8%(;(Q3%40cdAr1%LBGm*f zWZg=Ij2E+^2ydWvBaIQ0oR1F)%DqZ)(Wsyz#veW;=62Ntw| zDhtIPkM$<2imL5+>y0W}SOla5j3bmJD4uvp3Tp{i^bCfaBg718O1PAG-py(K!Sk7_ zHK-Hd)JRIS)P2@bnaPpH;mJuk+$%Ex(~KdSnp}ybpe& z=OZ3}&UZR8-<da5^aL-A_8dCJ07dME*nWuoTn9 zUm88@j zfU;d1qF5H~?D}QV&#rfQ9U9w@MYn_lr-%Y^aJ{bI%Q{{#jOzlBBB7_~(;kCRveEaU zoNID1awOY|)@+TExaHh&bHruJJpb-l;bZsAD6o5G7}z}>_w{wHnk=jIWXU?=7}a!L zC7m%K`9@e*H#ErH1|oB7&|l5lCRi!^!1A@9LgtjLiW?! zzMM64N+(UGtx^(0+9s7KA&-l-zPjOuk@LD%`?vu_(j~lDuoa6Xyq&J$@!8twWSU0c z)&|5{=kZx^#3#J2(n{9Q;j_zLJWwsqe!5_(7tM{c(CCW8FoX&TbBsrk+E-j=c}lTU z3oHx1QZkE{ayrCFB#>syqQV(Ff+ z{12tKxX2^r#E@1yB4w?UN6MX`;RZgMkP;-7!1`91Q~xRh$?vPx6KFoGoKj&`eY>BrJu4&pWAC}5V;zQJkMQotdx6*q#r-5#-At3MDYS_*Z(GG?M!addQv7&7b}FgeO@fB@u4Qil-nq z%X_=MZK{&$IkJ@b$DiC}!7#{xMTWb&dmatB~IVc}A1Q$Er$cQeHQO zJeWJL8251ZEdRN@px?i1oZrZwczjg411fjcxfr73HP=E`Oqk!5_nj#FGG};(#73Yve1+B$AOUFBdY0sUOJ@t8)jdJS2{^Yc(#01NW!^ zSMo+*0$1GErMtWH4>g$5lHdQdbg+rJJ>F5I@qJO=ucx@t+04l9c0V&BS_r>Uug`rH zjW~rnI0hP>Jq~&{f0j9+FVJZ{msY*Ld=Zk{I8rVt*MHi~Z#S0I00U6~6YnaY%w|lt z<=;^v-4@q-nYQPmZLI@@WRB7hn&B4bj@7&A@*o@XdVQD;UWKLKZd0PP$dkHqnRvybb#_ABysh&1c4iyS`#F0Y#{_r<4e;dhnCX&&>{9}Trfkd%y z3IWy%&}Fh7%UBdmCz|9GgP-L@h|!yl@{HdYdqlvqJU|2y0H^13r*gFH>w|U$7rA**7+l|mv&R!zSytrk}W4| z5mo;1TDuLJa%DiGvUzO~pLZr_ zGCSWY9c1`)GW!JOKCO8)AOW@8o;SuKZI9S;+?OYOLgsi^_yb7NeBn>>NWF3l`|=+5`kKKhP6LUC`_)blD-CikhXqr{KsQO~W|V`q6UN}I*3Ul)s9Rrw6=Z?d3aldcyi;*Fg4aPE-5L09?65BRyrdid^Rk1p(eY!#R4QoJwZ4fm(1E(uDOo(D`lNSRHfs+53ZQ zkdP!h9{Bye((;D%ez~bw@?WD}uyB}sD8pJk1&;*f{OK*MtvS19GIlxDa0V>V)s+3W=)JZ4?*P8mxEE4%^p#JvGqg3Hw%(mf5FX(v*|CsVHLzNAQf5a_E|t zV?b9v!(6(Q+rPZ+>Ngp{K#V8z^4Puv|Jg!)uwe;A|%{4D z`of3(>cx^?^Kwmp&EZ!v{0g*R!2I<6$u=JB%N0LQ&x^kBHDRMDd*&{7T~W!@7)_4f z`#q^Jbe`@|ITqFA(`E?uu{xcWXju%_Xf%_2vgy5 zL@Mok9hTGyog*m@1<(oRa~Xg)e)7H@TgL?ACHL)sI|7J04&1kb@E9NxjTx9nf&|0! zgaOPJMML#OVH`Z3fExZxm#3i+J~0pz%Ro4v0Vt;}p3px2OqUCGm>*x3S&D}Ip-CPn zH~dc^*DM?u2a?*5-E^tl{Ld7S*b3p4wYmkdLTd8Vd|~m zNzPfy5bYa_ubD(eedY)_MQ*hK+x+wf7EL~DvwuCUkGeZG(%NK(DkaPzJMP{JKS_Q6r!v(>PFLF z@u{hGX4L2lZAPl{XlMm`+4Uo5_jxe*A{_uBH-Vm7gMQ3t#Y3?hW!(dw-~5aa!z> zdg`;RkOTGkXO!<)Z`6@6m!gJ$R%L?$OiA5CmXkvb<@Qv;)*6vdy-lV@YeSV;W;elF z{jpQM)q8E0hUkzsB|!qLu&dshP0Ja7m97PZRb?<@E2%PM=i#sN#E3X&ROSiuN~&>f z75o(hPf-3F60IWb1m!5Y+LicX%Fbw4GO!Y{s8gD3CQjJgP(^rku*fY>uk!uxN zQ_nDf?)AENu#q^o6q(k*3*q{JO1~B|5*F9MrZvbu(My&HT7u#N*(ymwu{yuh0f)bo0f)aN0f&!XCx;qF>NgKE zOq-q&37FMROTtT!5rIpyF#X;9nxh(e71XtQU!oXg5Zf|Q!CXRRrBg3FhS-(ve@fCymPLJ*k%Q6{BLnRUkYm|7-LfFXklfZFtRm!t~R5aLnGRL213|@U4-mDfy%^&||+9{eg z?y@uKY~7aPBF{@5v`yE&ZmX-RKI%YEyPO;O-$BZgar?X^UvC%=9(d#@2`pv z)fM*QVcoa4SfniLSGY+H5@!QsNtqh)TvZ~C)qwLUy&$9DGr z9@q@O`J%@@j+T6Mh%S3ktn1me%4Lk|n_06^2`42^55`eepO|2%jC07=^tuz@&`aHQ z!-zh;F52=8W3IvnV>4bga0Oy>q?}7e4ubeG z;e=zGjT*WUJjODT2FHi?llhzvkF!QU`MhZKf*S;omk=+&tMcQsW`@Hdiip5Td{1G6 zJ!_t~jV?>mB-}xZvVvyEtoB*?p_;+$Wh+t#x8=5)lbc)! z!h?e?LsF&}!Q+84aD7)c(!|M&#gnhfvwgKM<*xB#(=JpWd$MGyXXT>o*&fuquT)Jm zO~KK3&o6h)_fGarpEA{_%KfhF&6N-9F;itt-*FkKwZ3$ukT08*mI#k#L_BAw6L?0$ z(cGlzXioFRxPDU4VC%Z2pjH+srM4FWuF?n`U-ZTJBCtj}f!FKP_Z7@}N{*99#0`;> z{#;V0T$HVM88^pM#$o|Yme71j*8$r37Agz*b7fgUwyHvY+xcgWXcq3@Hnf>5%O0~; ziLGYG&z?(oouWCrXsC#1(NG}|Jlw^X-x$mg9?v4204lLsCzvNQ^{njXs50UOPWGZI zVWn$$Hbvw<$Jd0pF5~8ra!+sJ`gL%6OyE@-8E4Kx6;G&S#Q6aT26C#T6Obkox}rNq zDBmd`*)3u)1P?v#k)kx&g2v;Z1&V2uIx$GBneOHoWj@w0?4Op`Y&tcqQOL|9r6N0> zKbMq!!PfEF?QFrtzMVU;`~U>QS+ky9A1>Dmai+Hsc=J_xcrVwJL=`iWHFUFr*~~_{ zhEz#<_b$3?yperdyoZ#s^Q&sDG4y?TlqO#TXsTWXoB0}6c>i%ekWEgH zp^}~~<17>^=glO2dwP6;*S7-im@gY+V7Zy38}3EIL_)RU`M5iT4!!*dMW z(ey%M=g2ZY78RReu$|3- z|NEMagAla?jS;BD!eQn#tCgK2*IwRGwv}1wY~o(EW!H&h95`LiuK&g2`)WQfYflEd zHh+}qa3br-i40e!c_0&br%5xHXOZZ+)xOaPp>58nQ9T7hqNVS zB1WRx)r{1m*T(0ovj5n$?_=+PLhPCG1c(ijUZSk`KO#FF!f3nvysj3Au5Fs0JC?wT z2*yBVL|Bqo=P|}zJnEich5T9#{^Z0p5E9Y&t5gTu6Hq2~h$1xyXyYQ!3@5gvwedF^ z!WVAdsz@1W{O7i5(D;w?g16LWgCiSH>>*wbu<>6Y&|X|O9rn#p-C-guw9AsF@C$s? zlCE+naGtEAvid}NWl2EJR=mKc5WWkc%bZXdC&DJ#em+QLDu_-vRIw4 z%RO8+a-H&I_R!@kSQclp&bF78bj64AAwGrk@3sE%5CjJL>!Rvwb{5eI*Noo}OK9lo z_92KdN|MQ#*u%)tDG-x$K|e35MXA35_#tB+o8bh_<(l<5yIpp=c~&ax_O5s9bqjrL zK7Rd``1~NAX&zpem2f~!Q$JSoUbbBSUR0}#h8=w#;_Il9^0BS@Qam%S)_n20nqnHP2@e}w6dqP&MVa#_8U|YSocm_V!zJ73m&JnT;AoNqo3nq;Q1->* zA)6=oSXL}L_+4=Ne7RR;&$C)K_8xZNWwr0zl!xq4(pPXQ^W?4C>VvAHgBe6;=vtSh$nt{~@qdCN!DvcT_!urn7Z`QoM$ z)wBYN7i=2Uyz}^H%@2uA!b4bGI|10NF4)1I!Y+#|_N7-|wgIeJVc4_q6S@qh+AS8; zeet0}!y$yJ*ce}3ixc3onpfz3td?tFw<=3miON}XRacTxO~0ZXML%W5?UK72*k&s) z3@OI5hvFx9WQJq!VR6MSOINDbWHS1tXUq2c5@uSrhP^D54>d296SdX)g6&$YI|7r* zpDzXhcQgV$T&!^%Jmhx{o`(wtvbJ5<1PHya;rM*`v3OrTgd-}Zl_2EAU$~_|gp&}s zyKqw22DpHk3EpQQbIER`Y%aDqY8lfR)>gpC`b0rJB)av*!(z1(zuBd!Wp`+#77Q&O z-dy8v+*cOTbMqQ+toWsF`|@cH=x-qB$gvNkq+$NgAhT@NeqVkD`8^cBeR z#V!rs*i!t!`yZPiH6vV(4$adW*1}Z*-2s~)9`ebtC3GwqJiZX+jKm|%_iU%&BpqD} zF$rI)`N8%%TLsIxdUE24@{IUowTcl!dqic*Z~lO0qFA1x8DkhHSdet3i}J;0qF;w7^-8i<3ktg@ovv4q z%hv&Ur-R?@Qd)`a`^UDauXvptik&K}`Dt}ks|otDSitd)!2h5RdiEWRB_Y`~!Gd|- zv~M~-Mc;5gPuN;A^ZY!Ba4L&Q;@tw!{Q!-{Dj2)iZRlKe{S>8I-p&@%ScZKECEAC{#&SB5%B@ETu zv&s)hrYV4&R%~%UTs5<6?uzT|x@tj&-+QByQ*zce^Wv37*dAU6><$>}Ag$w<5k$QB zh-J^<*cj*R3N`IGCCRNt@Z^{j5gfc>>CDp1h_Ef4PpQK%w{4 zEYEYp?kgDtqwQ+RZNwANauL82P{qfGTJLH|2ffirS-@#AV7#NiB6?Yc<@S^z?7CCT zu3<-ilN0^3FvRRhZv$f9S&N?|4^L=1g-1_}adGuP=#XgP2PkH-gvO(mB3twvS%98P znVU1Kr7Bd0Ny^}y=!bcv^y>si5(n3!==zt<9JJquCcSn1a00o)`~K;WwU<%o5-mA1 ztgB`qX2~cL?>@=0Xg9(YI`ej$vhreU-~n@!*Z>Zpws+80ztf&897y2U}cgqXX8{wV|YzXxDJKZaeTmR=Sl?V;iO zgui?2UexAisSn``5gLYV-Io=AQ-$a)T$|;hWK*~l;&(kAbuD)Nw#i%i@L`FnAOp#q?iqm z(TSwH1uYZ@=e`9$yaEh#rpW@EL8et^?(#Ua+B8Y)%pkK<*qqMb4A$a;S@<_N0`p7L zEE6vX!EQ1;!tJKq4!Rkj*(*#S`5zP5cs&UNBP{VVgIa}T1zoS_@VJ{SYq+d#{I@bc zI6ORionQpO**WJlugGlOcHD7TY72_GFS@AQ$dcX^{!UK}JHzi0qLsmw;G#u9qbC)MV&8B?%cE(=V$APMa71P~o>9GoRNKw*8`!6wzv|g_(;k4XhrBVJ z!i5Q6QNQEr9%kaP&}O~v`xVy#I4LjLMedp_1EHcmHDnMkWJ^ZHS#d>Rb+kU#Jbde= zy8h;cO@t^y?7gXh>TUfHkBGB@L`Jcx3=-|L0u?~&@}vI6HTJhr0Q}KDt43s@39W^$Xx1P$*NssX;H2`?rY_8q~;dK$cacZs3|zI-x-45Hxh+wmx(ExOzt#r8O~sib+-<9LvKmp=D0 zLH#35tQU1%i2duwYB8S$&guz@69$cbDK+@<$>9BRICh`8xQR1&SU_z&onDlw&+!A& zU1*lmVC}YQ;@yJ#C>+}J>)Fr>mGY)xt$Af!XDe$u*!R7~=*K_*E)?!F-7{{dHRxV! z(p$sWWkC{S6KQ%r%khaidk^*`7}YgCJ?s#e{1!PdG_68aP7T~VD7%34F)~4f_)C4{ z*kBwA3{F(oJ377P>`q`DlmkuA0R!q}6xPC%ceZb|>zwpL+_cf%MB^I1HV)$iF|x0$ zbBL?Xkwjuj*j5{n6Zm}S$;kt*_U@5XnFj!uBDqtJMlTUKsL6sppxdS)9UKfcFA8rb z*5|S95yhR>fV+?^O~D?FfOFRL;Fe=&Yj|HbzwZ99(aKB`Z?+ebe<2e1+4)%@~NihoIsm9uHai zcZX-fB7+-kb=tWNnu}D+vf-x-Z0n0kX!~fFeJW@XZ$FyUwrr6DD*sX~6l07Gbb`fm zq+^^GVuHO_?hxLHh|!FRmkY2-sIQ(1OL~+K3R_I1>iJ@=u$3*Ulr-)8vK0nCPYgre z(-H;kazr?VKmz|#s4K9%L$tD;JN{i!cfu$LoPRQ()Ap(!IVmAv#=BF{zZC}Geh8El zN)QA6!J?>8f#c|^W>uqqnkV)AkU{XlReUIq>Y4$HVMqG!c-{BNIHWx`h@alRXg+E$ z4q>nZ?h@xk#Z7vIPZ{9^=~>Yit7=s~YuV^y)1iZaavdWK;(@d-{7K2J!i8@PBaaM0 zkpZ!H%6Z5AQm7HB*MtMqAZ1kk24q>aQUoKt}_^HDUQ&_lnJdF_OJ$%t&hb@=bb0YuLGX&^^I}m>H6x6y)VD|zy9M-IDO&uK>CitUeK1a-Qn`0oQodibkKeQ z3ZJYYAl%>A($0`Wk@bdkUNHy7EpRhcmy6dmSv%NH36J)tCCs#XckGV5#39Jrlp4QU^FNuB7?B zYSJlp9l#GWc)SsyuP$fNu6i!Ln*Mz0}#|z<%fmQvQ9q{-< z8*Rih+z<79loMaiT$*~?-!972>ypF%r7Ty)0;Ay}E)F>_Z_4?zr+99_>9JleanJj& z&fbh?B`ZAlOh@_*!B+%0rooUoICynxuN$5`-XJ^U6kJUl2u~9)SlxKg@*2{C|_Kx+1p2_o~@rG$~$!`+~Tt%;#jqsj+! zS}rcpZ9Tfw<%@S2yKJZ1!+tAmSm!LO%ED!f0`QRFyg&nioE?6rFlKJZQ zv|{Ht<)p>a8oe9~+B`7qcvCF6UNuc7!W3UBU!ldS70zXw2>7!+7CW^Ac#2~Q7yC25 zVb0Z=&jD6Bdh@vzCkVY8kSmfW*RyW$De)9`FfpLdfNQn12+;@S<95w146o4vFBpvQ ztH?2Nisix{2(@twR*MS;1pp$D2o>MM4U5iF=$c3gqYpf|lp zB+)X|04p5HWKZIjcw7X3&5$6o$@mJD^)giXQwszoSOeV27!8N%UPg)4{;=6kQm1oq zae~vFL2SypGw11U9yXF57Hkf5LE0l-TE~p*&OA%T1pTUwU9qOo{Xp4DwtkNoQ&q$* zDL3pJpMB*(RHIxCX%!ne|8cblQIZzfFpfiq3mk~jl%t2DY)S{7I4l#?F)V0PA|!6a z0w)AYM%NE^I-~m|#7fG0&Z+9zVm&X3@Dr{O=}(C4#B#JmCy0Hyh`aMiSpdD9C2ZSt zoDx*&ef4`CwUjR#4qh)`+}LLuL=48dF9^nruB65MdsA18{$e3sR5m`2xJ}O)9d79;S97;H6^lSPxEo~fp;I8Q=^3Lc)^swsO2+F>HBJb!^~#_lgS}?K zP{VQ;_k@=KjA=ejG;h12LTUfdwaKz#Kp#;9J5I!>l;a{r@Gp+gR2on2&Gg|J>CJG& z`AsL$l^=QDAoO7vq(588>Z@cbpAL~{pb&?$I(CplvfGcqgle*`HL&LOsZlgcYHlyC zxH$rponYBC+n3cN;r6jfc$9h1h_3}lIY)O{#3d=0)diwSUR5Dz({c&=;q$4sw44FEqY;W)O`WJ1EMM-9tTBW0n%eCN;MU7N(!fA>&>O zj9#!z|BXX$V-#2^BZXbf8)mLEUZU$>Y(_G}@WX~wcTy=nmGIcGHOEBO&<&3XZ8h_K z1=={7dqRX<2Xo#qc8bTz&K=Ie!5pf=C#f1jc-nx|#NjitWmy(KAG?gp>gx#OSg||n z@z#qwqtE>ahKQd=8W$iwo$o`$vmq;OCB%ww=c4zqg3~L9)Vzsn6^`*Bd(sM&ad`?D z@_hZ(VLfZ+1DXsuJjj}ZDLk0;m`0I~>n`VDLo@F5yk-P5N$HaOqnp2x+#pEXTyleq z+=KD{%Ch!<<{9XP~nrLWL*7aJP{ z_OP|Wau$DE5@9$J9Xf z@w4Z-J+oldcC*62-UQS?g<~}CU;KH~^y!{|acg6=YLoPgl7q1i?3bz)*rN{x2yx3K z1PQU;uv&;T8V_#dEAq7I`{Y;`s?>|}GMl)QycVt4pgRH24jImBuW>k>mCF?Gx0q0eJt_NjTR-WZ;uV3Lwel2hT<++9%Q$6c z#nn|gXVWo*CRtWm2E1PPp%_J3+rUb#4H>JYF63KerdG_|MVIHm&;bh$1mXwI+_tAL zw!XHXV6cPS#kE3LOWesw&NAmUc1kyj9e-vCGLi>-$P&*i3=1vJz^TM9i#!W5mzZVq zp`6A_@D9w6+6Z}BT@Xf-#*3-CE7F{tPTZt98yExLV-JtBy-UEB#h|wXDtjUsPaPO~!x zVWipplezQ~!8KvCw|cI^I`WO6^AM2Lp>FYb>n2(gd}QZz$N-2?_S(l($0fDkMfi?a;n>TJpPsyjC_j#bX6G(=9TXbttlg$S zcqc|e;?Md49%a2_CGdzxWjO;Mb(!i&Qw|79Mcy!=C4&vi?ec~q9o6xq_INiNEzjy) zf6LioG=bG|Lcm(3=`tL)R)O*;?CJ5{m(4}xm-y1R(oC^1Kd2@Kj`kHzjUjD`D@9z% zggDs#f(c=`%1#<__Hz-FfP z$<3jmm-F3+jEe@1k321x-HZ>+V#SS4bMe=iEzTPtMwsdl6DJ!62Ax?wAEgtcQjh8B z(@?BRtD6ySum=z-pZ%N&Z<{7%JSQ)k>n?dx7^bAJ6rHDNZoHF5B5`$*G+yL35}hsvjVNi>aT=WoHgs& z_2F{85Oy(l)?-LV{UKGPTo2=vgO~~r^ zp(a4EA^qBUr!GAwa^<-!ZbpfgSh;a>rIM|0x3BtZ9(f_BaCmr{Y|j~$X31brPBaEB zIx~h|n9gP;Vkb^xY}09kS$tHbytGZlKTTT>?>w|&K*ovu^8uDvBhTOoWOy)UVFtr)*p*onR`+~1@i0l z3QTPVjtFjB^3Diu`2ki}X2PW%0 zAMshe7bX5XX|0BSN`a{Ct`k9k`A5EkgytPUO>70hEHl67#4bpiE9zq!zu(S~0&EwpAq)M2JdRBVR zf0-5n5z_OPxiFqYPEEGxMOu`#_9eFHxGh_7ya`Lu6L_4>e^#hEQE>EAkcWu8?(-lR zYUN}d<|96$@ zHsq={C-}t5Ze^C*a=ew#nx#m?m%!&$E8OR2gvYJesiZHKLlMHRc2-U2T@>CKUjl}0ror2**BW!Phy9(3q2E#78DbW%H&%a+mWd{R3j zdlaody=&M$UHy_taFlHVVa8a8hj_gp)K_;sy@#dlx$aX~k=htq(X|5|k>E0e+KOnd z$!g}(Q%uJo=j7*)j1$LAhv%zn?)~c&))ndXKqo(|E-&FA-P63zf}J}+Lo1lmM>zxR z?`zhId)tPh>oCh7zWrHv2pekM$^GHZFJOAfHy!?%n%bc`7JkMgOHpCG^^F`qXCqV#I2R`D$H7eQhPJ5gmva zVgAA;upWq77}?gXwr6qdxNWZ37Sd%hETR29yTC7=-Uh7VjVV7Xs}JQo1$IcMr>bRx zgrH#sp$%~_<-%0%Y3>)X?2NZs>a#m!CLmv6QW9tkjZJpH**qiszthx{f=xI_etm2S4{feFy1Jj*sM^k?A3CYr%YUOvpt{ahMliOx(0X z6`>i01S0;q&YJgSZL)ym1~cBkp&fSpwwh6%+L%M>u;vGm8-2mn4W0$hJJmwLW8WDc z(zB*F5so8922HTNBg=F%l8sEYLf{c3zP&(Z>-&ise^$hEPx`SHpy#lV3s=i_$Wrd5s&Gn8Q z$aH8=*x%!xWgV!&y?xkODS>qTfCe(XC5cl>Uyj=XpI5|izNfs;KVJmE!7zA^iMcc* zFfq?zgJ2G}h*PT}C<~X*Q&J$)E@^qZ@nqO%IpyocNU~3l%KOQ_;R?k7kjEwJpoFwM z;3*^q;kGW!7T19UxqgQIHVgncx1KnbphdlL!j9vJ*ohNfg$%NzAP$zG#cv$OUR(X9 zr{R3Fyw?UYkmjpYX*G4I-+-%nB)j77x`t?>#JSmO$C=Xisj&7cApilM9&NbA$ zWM)8d$(OA)iDYg>wTG=+s~c3LX4GL7-XH zkX%vMIv`n$5a5e15FjFaVet_XjPIAtQX|Hwg&4GPbLBg_LHkK`E!MFeK-+ z>zWg(rcsGU5UQ}dqEH7d7jK#vO}VJXW{5&JylHko#n!b}bR%Dy=RoUiH*#2vY3|eKJ^DlSc~c=iAZT!?7c0)R{tBA1X^0>tOW@ zbBzkT;#^N%N_cBmV#|9ec1z;xL2Jl%ZPY%oFh%bX4120@#I|-dA=xjjDj@r{t82Y- zVxz*SxLH*h6F7U?XbG0>7W(DVw0&O5bfhBRNbpFneN}|V!?jmNZB!E#b*tK9!fv}# zscdIdV@bjlVpA3#LS@Rky@iR!V@vptS0!lK&lGH!*#3EF;lH-?Dq$X-j4X{u5W?ho7PGfeXpQvUNo4gTl;G> zgr!lZ=T(E&MV#w8W}6`d~z>j)rM*YxjrFuquzeFVVVVfkN!6ts6w}WGT^QNxfu*lt9hYoOr4&cPzlrWGdEh0}Kj`rP7bA7H`9Ts}gzFqn9OtIy2_^70NDe6hm#tPsw#!di zi~j{tRpEDD>T)mQWYS{d;Hx9$<)E8QmlB^7MT>;+6D6%X>?+bDH}ZM&vt>u&2TenM z6!vcTiN30!t%~PO#p|eVfA}3V`kUxEc3;(v!N^gnB>r(jGS=-cNdo_gmRIGN))6*SvK<`4!(W@Z1kQ>gB|VaK(_MnwCBkfim8{I^*fF5)nifrx#BV$Aq{PL8`;)a2fBNrpE9HNKB(trtIwND3o&VXY0B_*j zC`^B&F{S#{_5awk?_EY6&DF2^ve}i7mvb~Z;|)0|YR+|adetfXq_I2rh`tvC5f{JR zf#>H4fWm;UHZUGfXT_p?&d%{#LgLGl^rH-Dw(dfg{!l(C|76`a&x-av9N=wHNg$h) zJ~)1JcHK68zkusF;k7T1lzYZ~!@xQQ@giz=Nn13nr~Wt~!Dvn>4<$+F=cfTyvp;43z9m@g@aL(zW6JXwpoCVBIN<;C97 z1rbO9g2CKo!jweeeE49S^2{l3zNh>%wx>mk(`-`uXuj}ON|TM*>w|YP2!3$@i9mM0 zu+to+ymm8byZn2Wn`5pD?6`b*Q_j}Hp4}NAeh7jiBI@1?1JJeFIWUp>ojg)AIEV1| zhM7TWWoUkBYF`;Ui8CT7dn=QcWCQNBV72@92|JIJ`<~rA z*zE%(H?wuy!Yby$5P>4N)PdB4!O62uE=%tdk2jN!z-6&eP91n4Zs|>V=If>;c!~eJ zvezfmj;x&|Rl;)h*;4O}DnUZLS+QeqX#&wS38%CP2pml_)}m@zw6`X#oi5?YRCv0c zU$H&tW~DEV?zM%@g7?O~4BX57$F9JxBk5K?p@g}cR<*; zop_(x-gzK|gNTe}?+DK}_YbuG-cQH63V^Lba&_}v8WID)6c`m|loK_=5WC4XPt5y4 zIzt+QGR&6`;J%0LxacO26=BkVK&!c2EDdT zHaH-@Q&q3o)dlLiY!>sNUt~fkCB>$bN|n;dOmJWd`fb^cu{F_@E}LfOxHd$%;9fER z0KTMgN)_z(r+yq=iVfj;+0U-oX{xMIp#IjR$*I>S%qxLQ=jsKN8e%I)I-ap!8iNgy za=FY#jP$+grR{;W)?cpK*^Fnss5KTUv zE)c2P&1UWoJ!!yPR0CcqVGFPNn!oZSHvMDs@$0XmSS|jt_Ve4~D9@0|Te&luo!wl? z!&6t1i>_I$`|@F9ZimGTT-CSDvSj5jVR-=n4;OfaOkW&zaafi+6K$nL~Yk?i?SfS;awFv&r`q3?y$1v+0Ct&10fu&3oQhH*A2_SquG%= zdj$fUi>6FBaRr~P*7mw-;tAFQ65qs1>V~a?{K|4!R4tFo*;eBCK5Hv}qY2T0Dx?82 z?qLy+cZp4iO{n>fd#56lF~X2>QjL7!M4X8xll(%4qxlf?$jQ#Wt{=?I3jELiadA*Ix60FW(MgSQ!fL@S32f%s+4 zjA1jwBiS;aR8p@AAF4~h^|u?`13s1)D|@kbP}_CeYAqW?gwnOn6wxu*i1!(3h`_ZQjZ;3*kRkP;X_z0ZCA%}iu0s;qBn?^axJ|kJlG>)Q`onZB z^3*Y^k9-zvgRPmoe|)VO(>u}DgjL%nX-MlqpW7uq9PtL^t!w!W$n1r91L8`8>5Frz ztPaPn&Ru|#+zt!j8E*509T#j&X6Gd}Cak47ZT}_TR60LRBYM(@X0Ywk_M^8Y`Q13! zl7O~s#`!1^H8o8N)p;lw(P0jbcpInfDz^do{Su54?V)g#Xf1TwjJP0e{ADcSc#%7U(r-Cm-R|6B3k`4w%~u~7Mz3c6homl z<1w>ybf0qNZYI7DLbr4PjZ{Ikn__An4Fz?kz&0jBHD~}4g?0JEtvd!{oi=O&GGexO zRkY~sw?nK34O2DiCp*keB7X_t8D4>=yxRv`GiJX`YmL`nDSbIzjTmr=J!(-lx<@TM z!#tS!B;;$%*bWUgX2=F@YT4k1y%WZi(xeG{DAJ_y;?C%hi`nO8#JSE7#2em95~ie| z>M@hjk12&m6Hm-QlSWLb!=(Y5av4PCh zreVxY(LxbzdLo)L@VaC@Rg z-_uITk?{Jmx>~nGW-8*6ju)KnJ?O){&AOKaS~X%w1TdxWaN0o;YEu5FNNbW~$DckJ zmQW~N;eE5?6g6?l&}Q$fHjWw^qZx~XwuUo613S=7dr z^3hKaIHGI887F9f%@`Y&1)Kj}Rq)kd&9D}Av*O>Yw(0d38(s2i$eODQw|9e)V53Un z@7;_Kr&Z&JN>ZyF*Bcp%*cr0cT8JjErfNo)5_3L?t zuzbFWe~ zRYUDaaoDr@M(3DpfH;4kAFra6<@RSBTPi>D)lh}g&(mVL0wsYY+p~@Mk~uz7`EnX{ z#x(h@C~qLa8>X}tNhu^vOR^RfZ}Z1UKzw+H89lKq#M_t=0+Gzdm@c^PYGJ{nb8rI+ z*^lK80oj&~$ACnXz_+^`1*$!p4g+s{5*(>bzKW=5L$NVn5|*)+*oJCZt4Wj{BSusd zUwTJOJHFzL%pYbW8tJ;(%eaM&8$MkhP_Fcq0@#evLYuS6D4}?U8Fxpc!f4C}qhYWy zuCv77;UHjznvXTgda4U_S9sX<)p9^lcg&hY*|EVOqG$%$em6tNXvz2y6l{s>|1v{k zvqSeFGw`Z0Y_`Z1yWZ3gd~VanA4>Iz{-wo(+?cjM4T|&o(NA%}gXwfnz?<;dK@g#P z>Zj{XxE-PUH0=L1LxXEE?B!^10=Q(1mG7B|L4&pBMve*vOg=T%28{Y8emj zO`BQXxfo&%op>|a%;s)@^r(~L3494pO0$+HW{A(zQqzXvm0h;15PQ$g+v0?Eco|4}sy<1YCvZ=r^Nx$RXu^s}^)i zgFctDe5DaQXGQlOB1e6|rX4ivI@>S7e27sJa^{hNxHM8ri@#%12#MpFw zaz=YH_hsM%VQw{h-#sn5%?vW#Hs_Dvc$<9=>oXojo6wuKM+IiEwI(eiy4OSyY3H;X zjzxEV7e(myhX=@zv5WFYQCG3Un}bEhn0>)Q5pCwQ9pq3yVjqZ6??hwxEo}u878OP9 zs3laJ#07XTZRb&P$E<#SazjBeGDJbD#E%>v35L($1g{Y=kctS#bMxx zvFPB4chR)t&TT;cXp1)>6cg&6y_u9SB@!`#4y25 zkVN4aS!xR2d|pi~XH9DS2&rpc<9!j;CTZf8fp~;&Dk&WzH&?>c5tO5D9lGwJ>xR|* zd=*r0^R1Y6|7>2RKbkJOQ$No;{I(X8b>kh2|ec~_>|wa5(96^}}#ezasFb+aJT zoELPN;f)LFWJ+nCB2(EknJIoaBPN$O>!<%d_onO6S>9}!XsWq8si4MgC)$*n=N+>< zj^@@k+ZIW`n6Ef8!wzHOrt|5q(g#9u><TxI&;-=SV-QY@d`i5*Y?mKi71IcSgTc{% z^ym5ZX0H-n6vV~iSN4iQI5-A%j?!QqyaBD27=-tf?9*C^g1ECN{V_ealv$VWJ=ULR zma|?4on#Z*ebDgbm}Okys4vH}jytlvP_9`vDryP}Eo^}g!hPam5Fz{Os4Rrqaq1|Q z`yfk^_e}dXz17OAqaBO$)2;_=IL4w;%is-LS34MGGDwHd@0CMEa-pFNE^^vPQtvwR0El{}|j?1b!boHmz zhQf{o>Kq6JWf71hH=xuc1<4AK76@WwkrWj+P*S1+oPyjLS_*~)5GFG+mw_%IN$^wP z7bCa?_@h4zEQc`)21OaZ)i9lkE*uiT=0j9mVQ?bqWIxP{1UeD~Cl)`lY3V$k-0f-M zm$MiX!tbp<)CGRW<8}|kgfm75#GI}NNCQ_$kq6An1urLLdgTMd@aR+J^B`Lx)N>GYpxgoj? zS6(4{JOVc_9Ud2E1N9q@paRu5SE?ps z!-!g(v_+>T4{f9B@Lj;Rhjp(3ep#z^1Mu7ahN^W8Iqg~lvRR|jfWc~@&X_@=Rr|11 zm(nq8U>TsuH9E8C2uXoy?IGj3h)iY~Jp=~D#k3a@Qk;6rKX^-`=JiMK-RQET?gFNwOUDYtYa z<3wKRsNDt+TvX%IIcd34bn}SiYLb4UvTxJ~3`xF&I+y!tQutI|#r+(4{in}Beetu$ zkGKBTJ?`4sV{mxhJ!X@_>`Ru+N!^O)OVkKDB7)qvh6E&2W0?9^WCkN z)eVmo#4w|V+?FiBHS;LEl>@T9{`Ra|!S}i&38;g&B{vtV6#ZnZS`;kTS!~#Ry{q1W*iSw+zWxRW5cuSJCrh*0 z^6p*PEq7qfY^M#w?VSf=iXkeNyCbx4@%y@5tje}C(q5H47|6&pV+;=|EIT%IiWCD4 z2EKxT0iq6jVhmLy!g5`JRy2$>z$ew07q<_Mbd25g)}Y0%&L+p`u0&ea_4~T{h(W>X za^1JZVjF#`@o5IX^{)!dPDt*@>R%iF`7 z84lTW$nV-_?KJ@Nn;Olk)phChPD;=(i&+Ln&7KU?T8RtYgRhZOuL{2#JVIF2b?ZUu zKNO2<{=99x9w)*+^<>GjAu}bn9ASZ&(YR)f;^Fs2_hVVSKdr9nA{4&e2$^XVJ-sfz zNG`f;<}CB{^u?g9!$rqF*zoTb$C05NDDs#1unv?u2oBUhfwX4(>@9o?XLLodP6(+> zXfZ!2S8HK20#<@e^PY{k_x74;p%2y$$B_){C=2U=(TWL;)08E>X;aM_ql`A1V7Je= z$7eLt=(wSXHw4z2Os5%mLgU5`>t?h%k^g88Y2l%D9Kn)!G|zEspw`}KANjf=x_gsD z?>%)_U-fY>nz*?v;eIp#H7`39IR>n`=-y}_XyP>6=bveI%(jG6Y+28d+oSqEd8!7w z*d7YrTTVuBxT2=48d~?~{F%F)=MTvVcKhR^dLlLntvgiQuc6{UvO)k5M8z=NzRj+aNnHB8dwXil!KX#i2^J2Y$$*QVX zgr`rl47N*YBTe&$KP6#YPBdWs8z#&UHB3PlcLSEmFJ8!|YC>)as`8j+Q#B-b$#9U0 zXvUvnyC5Z*j1MD9X||9>PS8J*2IcixN`qp;uMB^8AX)NzB5>q3#Vo;y+`q)d2g0?t zDVc-7k7S5n({+BJ5qTXy)QDlJWqQ{)`ZZ_#1P)S@KZS#+(waZ%G!8c_dm<+^%PT{^ zn>kzp{?K)R+#W;>pnsAco}TIk6f%*TSI~9Bz?#8-11JxV@O5 zof}x!oXea!2==zH_z$uhI!BSiMQ(1 z3uZUAli@jsylR>cfFjX(22=(}^zqKc;LW!m2JK|(qQm=0=&PJQ6^eZSgP}_#eKr)i z#vNzheoHigPQ)X!^}r~A=-GeYdUP~EBpUM}QX6{3pCbq1P7Kqq=+k5r#>A8GOql>_ z;`BdRM#h8jI_Vo5L*{IB_`BCQsz_izD!1OgCkhJoJ%=K*UZ7jw0PvxT9KUT%&-fEI zRr-uxK0HJOj)Ihc`1`l4JbLi;w?2GkvD!cQgibgxbaL}3gZRgdbFkQt59ze+dOvyS z4{QnhDRU!9bws?;NzD<)CsfkrY9cS1VqUhOLUO{-YVZ@?GlKhjw$#G6=<1>ag$?sP zaChrvQ#XB6S2M`i-TJ-+grM-z)OCrgHLrw)FZPh>{RX);oiU*2aO>4CT zS5)d-mpUnHR^3y0mS+%8%j@C;%i7%n6DiObJgocnRyA&S3!cr`7O6WLsP6h=xzf56 z&)8Y1T9`U3XKhh;Y{-JT-$AonEh>=A?QT8g?$ac54%k3MZjql#ucmClcniE>l`wHu z?BFBaX>Fag>#je8w|Y6|b;|1%^rm9ulLa0@`cghlzUhjq(#GGc8I;8C$>PdAl8oK0 zAIpnVXiBeGMN%A~=Zr?^!-93xT=ohK90>H*^X6ms7L0>H`d>=b#i$X(e>&U?CLZ3D z%N4it;K>3?p#qt+%;Ug;%qLyf%qo~2k{m^9v1Hk6c3!?N7K^e5rW&7`5p;&I{=F*I z5IZh<=pH%J8hBOYQd0m{a^vQbC%lKlR4LwKbo^VHZ_5BPv%e9RP1n`Kbf;h!PZDV zIS<;V>t46jRRwd1t%Fh&x{hiOl#m#($K%8eq3q+=vDgI2gQt;HH zuHo8-GUKF#ONaTz*KYX5*!E;q@!w|JVLe|#EYMxy&G0Fh6Q45H%bDpW!;}#Vi<`-3 z%t6Z*Tj(km;7z+YSueb0kLuZC4L<;&^FjF14!Lx~m-W2tXV+4Z&Xdj7a#&5os&>$p z+{6J8s+InvyksNs+DtqvTQ(Fu&}u<2lVL9v172-Z#g+7X;mcOj2Xw44;0&A7V)|13 zK_^e?4T5=&lWQwW$DtIiqDH`{ZS%1!TU^@}22Wn79FC1HRFdbCvcj^_S*r+w5QxDA zFWEtwBLqjN6)$sY^;hFc6%In^0SXE{R-Hzof~1$2|FAS;+4m6RhPW2We|ifua|jEE zlDOnp5@5JmOANj|MMG^gk>08P1G#xwU4cQ}x`hm}w{(Qt-h7GuJ2rC`3yarAB7r1_ zJpxKnDXfFi#U~F7Pn-EI0i?+WwAdT@vDGMG`8ap zvsH7cPNr$#5B$qTw(l2i(N3sO1b zEKJL|xuh(v9<~XeolfEPnX)4Z4n*gGP>K(4`nLG~?Ce@?w3( zCL0|0^hRQ3ky7&h=NU!*Tv9e*xwPlc6lR4iQ;rkd48@U1RqD$mqd#y+A|pQlVXi&& zn55P`C&w(~9x^(!s0YAY|6KrcD{%8=c|7g#`|;&^0as~R(#?sSJY*qHmNQ0y_ieLq zhpNm_ZNv3xR#qRB5d!|Wb=NA@9)flTOx+SSp>a~0nLk#G z#nbW>u17Lm3@k2KkrD-IR$*MPERy9?WF@Q1@xh|$JgIQ-bd&KWO>I8RoKPK@Nt&ZF zKu*_PlNCCI0XV`C%t-;{l!oIn4>kuJ(shm!@*H+O8~L=q3^>XX>uzaccP^e~9m;!h z!7vB0#%jD?*Y64QeAyP;tb6Z&HKHo4IlV>aC-bhC5{?=T**2X7)uIko*%q~AFq2b_dvZ)*?p8Xwlb#_(+{zX=w3*) zvZ#$x$@@p(RApVYX!>$60<($0Mo%6h5(f`IR{$QdPU4tgqjdgyjXlCelh4Y!;(2;U z<7=mxb^=}*?WD`K14k;;iJBI${d(2FX|`E>;7L3r7W!70@e+b;E+c(Yv;Bb$IbnJz zE;vtbxs=pMl54Cvx(MrRu9`18sfL&Yw~4?p!K4pFBd{CgZRFziGlUi_2-u`BNhv`+_rmH^y^FG>nr@aSggywX?kRF2`fm=N8`up zvf_W2#SNOQy3316quT=dI+xgjQ}D)!1iawYzET#kx>kzUU#mQOC)WC+`6$=?^%8!4 z&sJAotrBmbt>mRKvF10mnEkAsr^@D5{PH!MRN*ea^l3B0a)d9vI2R(Sdb? z6ZJkNkw*1_qj)-1>$qL=Eqb8PS9_c&o$2nFkg!!P+XN(OctD$qUq^$To>JO zq>wK{EU5=rT=_d~Sf|+Nrw2BFHZ+E{!r-E^%tFn+I5K;(@`dTLY+I>!;6tEXh=4Kn zLl`!@;J4(VEcx)`by+{0vvclM%R0=;#gimTK=dzOVg||&4|QJ04tVqv4~C%x4~njzVSzi*iPdQ}orJ1;GCwKNLvL!S_(p*Xf@6OkR9?$a z^bab+lQ}MWB@VP`uAU{^kuzYwZ3%(tWoriZW41h8KUrMCG`RNKG*f$csdtrKU}(vT z^mtuQn-- z3}FoLqv?bku4}7@Oa3JPP;Gh-msPhc;6=n3Ovc!7#c4v(J@q}O>eywj`3SOV2=K#i zh`8J-(KSo@v0BV$MLXwDaIYHB+JZuO!)0qPyxBnt&;MTaKR&ju7A467?RksWKf0*bLf1I2h@ z6Y67%f(dZPi^F1*m*hh+ID$wh08M|1chpXmp+knkNsTEV9LGV&p%;v!7zC4jc)~>hfF?~GGt3e;44yYY2N(3%g^od2x#OWp@F~j@M~f*MoV&RW zjAjbsz}7C|fSgNw0K;2X*~gDgu}#+^+C5SS?QBv#@POd+VaGNru{&J%{pum6Zeueb z^v~=)TWH0VS@h~#^Jowx!+C(SZloFB7o?Iz@}1W(CK5sfP<ALHBT0+`ui`vl~}nld5tGIFusuo z0)svNcE=|vF;+``Jk<-So|o{n@=zMmZ?^>=5fKiLLp+~b#I{}tjw&*Z384us%JW#+ zt{3bE`x3U+_$!a^RAPPGQfkPnAIvn;&D47{RGi#C3t@^aDhR)Xv4lp^!6WX$n@ z!a+f`Xlh}(C@_TDmP;>#okNJ3UBe5^5Xs_!`TH!&O?pfed2N{y#TwMB8TN80;N!k) zkgR3Xm&)ugohDxJxEXi?^-Rmlwpp?RPM4_ce&W#XnrSTPVS#f3-7R-JcF5SaAXgL z^N1-=a{cf@l`31))p)oVf>}f4qM6@{ux+ChgG^S~j8a}T(s>l(fVe%aP!$KIz)Dem zCEne4eJbuNuM#`aGVQ>caA?g17|_MH**DOmCh(%F%U8(LbbU0o->jE)ZmCvjxepBr z0hc=YRfh)jVTsd}j4p3hFWB985z<_sOK;Jk_X+^zzBBxCyrd^Emu7#f(pypwzubO6 z0d*W^-heP<0BBYCkCOzX#6V!t-47dVhJT9|jnEfAk{76>Ty%SQ}I2YYV3Ut)kol*OK1 zS1ri(``cr1UfFQd8l5T{bW}gDT6C7d&h1>2{`9u)iyQSe!TbDG)1R(a&^#_}2E*}> zZ6*9v(x;whe2(h`Agn_2-|#nc3pH3qyS%ZpBnRyD2)E$Yh0kWkMb)yc6P~7D7B_e* zVA=W=>EOCxTcCL5hIbxmNnP4c`2O+WUtKpJGK}f3>*InOmvFw)m%e|P5%v4(cUZIx zHX>@8@}zF++hw!va17koY8`g91Rh)LxXqU#mDbJOxF#QEP{SJwF`R04!$#v#n=>Syz@F}c_GYsc~2*HcbZWd8j@4=Q{o7;`4zl570Y|SXk=Yq zhi@hJ0W^L=@kmf}1pZ045j(Ei=68w6ohnuCJ?=VUHD#lli4WJ9N21B@D@oV%V(F|! z)W>OtP&oJ=qRy9~vCB2Qnwwj;Et~C5vNGs`onyRN7K^B2e{^Y~&5!aXUvM51D@t`p zuE~iCg&6G%suWE70FJJSIvE~p)*axkn|K-}4;RX- z8TS)o9_bwXu6h9V#hWEs7G-i?7`jyL2t(*>8-v+RilcH^kZD>Zn`w(6{7#G0Ik+e; z%0WeoSm;_B{#a>=4;4 ztO+9fZ<0lUYr&7}PM->-L_14adQ{fx>4b0c!>H3WGakUggolD?B+kfc z_2DZ($^L$APQVaiKLK{Ejtnta^Q>GHgAda0%X0N(!ER$g=&&=Or|Zj0Fy0+_BeyPA zc=sDqbWXVypRXY%r;cks^Zi|9hfT>jGJ^&(C@$ZJ*75?(%knD2B4g^BxT}7f@wSu> zeqS`r>LQ>C6b?DM**~9C?YeHptQN? z3^c%z^cgXnk{vjTNwO;}S&^vq#ezHh5)b&6$j_+Aa~9U2qbB#I7#FLPnjNy-5LW5L zRZ>ats5{m1QT@utbeq=YOqLDE6AfUsqDMwT9N)k=iu2TEnpJy_^XU9na^Q{Yf|NLC*ew>#~0IU%E;rE{PVB@V6wPm#lSTbD4Db+t{?^Ni={ z$zxG*gwz3R9jH22xYXjy^mnX6^JK}T{@Ye*M9UV#1*_j%%$q`9xy;tzz=>P)di zq=|{_$aQ8AeB`J1`UqM4umMHjDgB4Zu(8o6V-nZKHt{#rOLjN1D zeYn%e$Q&spyJF73c>}*supdJn8LRHFzHAshg9g!IwG2~A8EWv*aW~X@SDW1%eJe}R z&Fh44cp2q2IW|CL20Gt}v=Me*d@1U5K_;fZ5BRz3DndZ*X`C0c1SQSf*Hl?c!T-ym zeUAZgPS~CL1HZAIuDM>W<&0TZ=qF}mz!6^5kCKM>$+%z*+ja3ujaya1`#(GXh_JB( zkRdC*RG+9(KalfsmGV}wD?A96pw!;?pq!bekpMQ2KEO>wZG>%&ovsmcCa&&c50Kap zlDpfK#;8}|Om)a6KeY*J`?Y0nzOc?2SK?utLH}$?q2Ei}a065T>WpS+^aGM)A4y!d zE}#&g4x{~1eL8Da!Uzd}3TId>@4w6bRmqO2b8oKU#;+-G-`BavZ11T=cpp1kOiW(( z8TZZ&ueEt>R~#K?z7gPiQibZNtTNNgBa@9SH`Qs*>j{Is!@VJ*spq+p3O%TZk$iYF zTdbw?P5u)%^6N$`2M%|VFt?j*We_bLW{DX^K0}WsMd!HU3>owRzl-ZXQZVi$7-YbM zOum`y7-nBO!`_cyOoeB`;S*D3QlDF$*?4}UA@ggpzA@*M zcb+bPl%8XexyqHmD6P=EK{hS^wsF1q+HyxMxa4(2PUF zG4|yg(WBKGywYc~v^%#~HSh$0i-j*!VE?``%o%8%r`&3LrY0>N<3^_B66d&+t^EuH z0AvG#wOieQ07vAUVG(C#sj&vv2sMSkAvK>4F&H`}Vlydex_w`CGEH}=chVW?ybuhR zF|rcRe4_Y#lk+)n@~9Wry3?^KTkJeJ{H~c^Uppm=NxWP7uWxR@cnox2rFshu>Z6Rf|;GSlbVf_K)r@(?gpSI0M*w>#4hd9>N z(7g}pI0b?`=D1{>XV(R^=#Iuc@UzWXFy)zh9B*gDo;yC3$;J6qV_Y89=S#Wm9~AJ! z*^_$@pLnwrkw@K;L6{1iRj`?sH@P8115j{>(O_nDbao!#>fq2$)Jh#@Y^rNq1Ey zdeD`HYqYew>vAK)l(OJPx(TxSxQMXx(93}3$~SA4OE#L+Quyl@4=}tR$FR++4D%yz z2Imsrs=+6SSEDhTc-%Lfd~jvhvYSj^w?>*Vi&m4@8*yBzO`EKT2AY=DSIJE)YQ5o? zEv^;Q^_2&CW)FEV#EH+{@!H@SAZfAlHZiZKvYNd8@4sNXb2~Ai-FLSnZnz#sR*KD5!YrEex1t1^ zr(W7NUe}^?ebW^!lk)K#cPM8k-l|@g%A=N&f8-v$sSmF~OR*yZ7?la&KA7Z5^H4+D z(%a%=%t?#?R+;6$k~23Qe${mSPz;fYE}N`u;dM_pV4>wJlX{7r1xHWjXg zIl@dP@GDAOoMRTlgbfP$frcjxIlS z{&|;|v3qyA)2^T?Z|SpW;>v~V*5+C6GWUBJf&*d*Z#%Pv5MC_9{G3t%;crN;_+g+S z-<4pFIkk-Siek;-=n?LE-0?z2xLgVucmts!-1 zcONMmYENzl_Aq!sMQHN#rq$Nmt_!wxoHTFU`t@rjifVAB2+QwO-vIsn&c?A*(br5V z3I`?d+z!nTojlMmN=$Yq(!#+e=5}Yu{{{6qU3BHwU!k_ifZv{+*5~$Zr1iohBR|ys z4*J-jXGAv}`OlVaBinW z2-bm}r`4bPSLpM9g+BkM2z}nkNs_-zaJyx9y4{5xaat3y7miR9vQJnO$gi==L7UQ1 zvii;=#6BGn3OPgj0`?=~^n9bhAfHg(D_aVXF2n<(W^ z`kw8+7}V#K{d%8olD+Y1$0i})%GyE@ZQ!If);8tYCe|^^r9fc=8TM+UTca`+68FY| ze)Q0r-IX33Lp+(XLw!xi?bD$qyy?pJ$yHhRrn&rHhB!cC7&yQdXcGRSsIS%op}?(! z%cAJPy{@k(AkEJ`@9u&VJHDwY73S^bVTe)V%JEH}$)+55z{v?c_@aUJiEga}JfEiV`3% z`&Ba(0w#eK`HxHqF*yQtjb%sf%jFwoGp}*U z9-)&PBir>uH^S}F1YP5yV@wZu&?K~Y;{NirWkk0{+rsTbU69<)8yjO_*c#R?H^wm5 z;|hO}2NRpidKxmqayHfwbZW`Pdzb442rlne`}WeQKd-CY^0BsM?|=s4>6)0;iLoYn zz3JW4foJ$3fI&2?pqZf&H#+1jFUr}4TP$z%co0N+JK}{tB`#ysCt@}SvIbX_14@z# z=k2yxjNG5kuB#Thp}$pPbPN?-`CXpmiN+;qBjv`jc%;$OOOX}LMvVsJ_a&EQ*GgQgCbFP{^pLKl_5SnQhB zb*+2GR*OX5mTjJJvsWI)ZIkv!R1W9X2kWme*|MA7uB5w@~JCqGwX# z{1fkC*9BY5=ThnKK4xKEemqW7NK_&XsggK)*2Ed;WknJjAzlzW?A*+-?0sI^s=zd) z4{Qc;FmL065pP>kM-xuq`((g~#r!^RU2W#l$5)-?74}XZn_H_JlluP0@`Af3I#@K_ z@A;AxYxzgB5t$8#$Z7Y}@?o)g{vMw=I6hj<&EpY{L_G5Ueg}w@l?VyaSXtCZx6LDX z^$#HcOkCv5mSr$++(Lv!@9R$SyX9T-QBc(Y_TJq!F~0t%9D{1dO=4w`CwZ)e(>d#q zIYEbQ|6Ox-^gT1}DolEW--(ktB*e+o{y1xkx&vCq?b^L8KJ~smx|i;9!?&50&t&Bk z^{@lyWMky$BUyeYhs1cp^4T-y$o%`{NBX&$yEHvJINs#+Tw$2S%gXP{I>dvvTsD3A zWIm5Z$5w#HO^StLvaX8NaH*&AyPW)UZzqlE-`A_M{s-^g(cQCXX2oKN9#evdMbao6 z*Ok0K#`NTq3r55}b!F;B>`oT8xwqY;7Pm1A{5X!?IU6=u;;+~B`wZdaUbZ=MMR|J77%VSBk=^wq5B`tMkct9#+z(J?IX0dxHniP3zx zA!8WwqP*51QckD#dvf|g zbzE0w9|u**|DPQP?RJk^g#Pi5gH~Hcap7K%gUj%!@h!$;klhapN1PJP!uNVg{JnEB zQ)R(cK$B1J_aT#Kt!ic!?4bvncu9I zg56E$w}&@X$6G9+Ua&1oz`Uu!?4fC^U-&&aoDuqWpHXL|Sz8&0iAZ1`&Rb zA%s&-``hgsCer#mdb!@sfX;EB)M_QrKV^&de7n>ESHmO~e&5#B^8UkimF@5eAhd-* z6DJf7TqjrIf3qcHLNLvi*!^1?;C2;zr~t!kB2`lu{ZMpGmDj6gwQc#Fse-~^w`yo) zQW;Ni!7(_N0Egmnll#>r^o_Z5qPl`&*ViUH|>g1g+;wwyWr} z2^YYl6FkwUobdZdf{|mDO}LD`8gy*rki1Rd1|)X{Ym8npax47l189^YO+3Hn4YOlz zGk{+BE!^uwWydzHxyWAOtz0hXYmqr@z}h5xal>kuq{{zjS3faT{lDVJcqNFNAIIvO zzCCel>L^n~f3WZ3>aXB#r~YI|3F@zw!$*HqR<8bOKde1|g*nshulfp)Qx_y8KXz#r z{tWl43kScbrAzhWX|I~0yLT9-f66O4;5E!E?HMyQlzT$ygCPMl5iwUq#~(;PZ8zJx z;urUIMeCaV$N+U?-uoc$*p8js?@Y*RxPli(j>a&PSyKG(mL02$Piip`2F6n+@MT*I zpAOz{yJL0jUXcoXV+RB#P}RTP&{E_((LjVw8!qwdtShYzqsptpGe_yb9@;J$iBNl6 zLPn7yxkVP2$YCMv4l$#V-dh{-IF3Y*v|?kb!du|zN0+&9j$rz>E}g-lk|En;MBhW> zzY2Z}6EBu?1zsi;{B>26RWfl0!1?pXqHXoAnUzij&d;!jz@;em$+ z+NJJEu~(`b?&I9eHm3^96Y-pYdF7FBWsGzzPnI+3+VdjfKs5@mx?FbEmaPo>WMM2h zVbfC&=EM`WlW*Bl1gEXjuI+nic#0FrP9pgme^Vq<$DYDKrB`g<$?UoaD7%&eOp0Dp ztg2YE0ba$KRnbhN<0#;!0rm~9yY9{gE77*R(F`mLB3)=)?Q|8DMyg{A->4RTwGUl= zv8w}c&YESt6KM}wwVtj=mnaLEt{`&w$*fp`O2V<^tP+@gI>Oezk zgkivkNy2qJIIlK4HW*897WaTr6%nolNQ=-FB`Qi0n}(`pSAwh}W_7gyk@ei6!t;Nk zxL8F_EBWA*tiP~-{@_%SEf@ArQz=b6X|kbey}0MIPZ~s7*M_V0TvZn9p$!eI;o#Ol zhQVJy*i|&U;IAKmRBx&^Gm>8JI$o?S0auBLS~f<%uoRU6WvFvVE}nRhQF&hm3Tc?%Z5ee z{ie&KR;&$x%%1FxDLc6^S?ut_&3J2g$$!vESRs0Lu28oGri&aWSu{hUQ;a2dbE-HQ z)5cOdpOaw>ova9e@o)a?LM+pZUk2jry+S7o2wooU+fMG_6^C;ec-4dV@rYVG7tfz>-ZrSz?vkZ9_TtTNa6GNaRCdQM$?u216)z{ zpYoJU|M~*3++Ozm#{t?L6YWfEa{b7?c9g+>Ww3ozF2Q zCvZ52y`*Q#?ltD<8at1;x)2;z(6wcCi}}M$Pl!hh11`6jHdxz3HbS(VVhFG@MH5ri zFk1(y-ldl;2?xvh7R3a*-w=FS#Ls475pdO+zG-J2#(~C@rR}^MNovB9ToPV6SL;I# zKB)5n7a!958oKnXE-^o#=?C!y;=qC9&xP*$3n6&VV@SZqF{jZ^z#00pT)>Do3_|x^ zVN@5Er_t{Pb5z=znq=-dboCrQcn&Z+!EYCw~FwF9iBB*xSFKQv< zI#Eq`jvEyL*dzW@$5+XIB_exva9sB`#v^(tWZ>LAviw!%a-#JJ7_1}bcdL{kZuv7BoYot%~p<=7kfUA4# zH1Kvax;{`3;W}$W*gX!{h43T7lr3dF`0CqLh%4PQv0P_5*%$Uosoy2-eRq1MUuUJZ z7|6q#{%(Wx*E<^z@-b1rcjQG#*e~hZH$9RsWBPqz4+O%_=z{>$8~u=CU~)B&+@W)< zb7tUAwa(*x|Af9E5kQT5f~+^+7W64Y%9CY_)UycUZL3A#kb->YX%RfX2)$mjh@Ec4 z9*kL}oPPu!yjVmIN1{(XERxPoVlO2uQchUtWc!Qo=?j^wei1yFq4T#d!iP4&eCCVj znNBRDw+kVW<}tOk3xJk-LNez??g>&xV&X;SaZ@k>?;?5{m65J?k$H3#%KW;B9c;x? zi!M@*z9LC2Js8L-Pb|x$2Ln3?isVT2Y02P+NebgbK@XGC66)c=!n&Q3mu``LvX_zP z%>y1e28`t^^WY`un42lfgAvy;FLjg$BSFX9#7jOcQ5{1P5BX41bd1Qmg9D2#gJd=n zY*|MSHWM;HAd71zs4Z&55pnV@OAKDRyXE&hK}7%knqOw&9Q*zs?dtoN z=WqWw^nbW3x}$gPsytgAAH68pXlhpa=jCu;mzTF?IXH#KNALS`w`#@JqNB^(V%2`S zXxl;l=9dMThFw=RvuxkW>bLiO#j_-SF4fm%HnsE6wgOR7b^nu{zuPt9ER`f9bN9WxwpI>yneB zYrt>1p5y@A)U>}<<)^cocj6AUZh@DYKH$OLkH_|bp8UNmx|Q_i%CBZiij`@&@Q~@p zW9x8<{e0anM~{s7q1*i;oNkOl#&c7{`Uq-j0fKt^6R4$JOI+pKvM%o1-5{okqPqvx-6GHm)eZN%uKz0=VZT=E+nW8~FwOcn)>I#$`dc5pntafD zHTg$f^KH?6{Lrjgu8h{%s#joIw0Gq=KIJc6_P*?H+HNE1)K#pHrsl4{#XZ+EN3Xpy-R`1X8OiX!$L|{^Co^M=Rjki;ZK!19m$8np?@n*4 zTC89FSk)x5eM8(+%+fy&gUQYBY&=RlU%xIv3GoyhLIR6TCZdy3)s!wn(R~Ep_c4J8m zDFPIoHT{+;cDaILalbnp;LE#1^E=@zvTC`)Gv7cxZ?3*X=4w7w>2m%z-t99nO(pyd@B?B=w#JywOuD{)ZVQy&J=t;(4U!U&$N*V zguBk2CT1QGNye=0#aPDlsO*sMb~ntpQr*jm#RjHL3;XL?Q!~yAid4orP$(^K#Z0i5 zIC7_D8>TcL`Iu#P&Dt(IS&1o`Gm-t*DZ9B5gN0i#h1eenym}vsg_z9*e%N8AR{hQF z7MP&7W7YBVZgdFp+%eCOO>8XtQyz^x|6gL?!t>DomF;7W{`b*e|62B&Z~1Y_H_<)M zH{X7z4psyJR`9J#RU>}imNnZY^wu}EQ?tJDo72{Z3#K&H#(b08s92IFFJmXiQ8xWX zr}k3-t?k()xE2H#JlyWZpo6SW94>4cz&br)Rl{mu5m^mA${ICYN77SWTf~QxCRvO^ zGbB0ebg3RU$T6Z-rplYD>xV~t0^p$3uaal?_(mjtDwiKO%*y3Iu1jX3ifYA;Drdmh z0C`j`Wy;EJ#SrVv&x#+IG27)4n~w(hiNlgjIa^k2V=TI9>)l3__rf|<88Br;(W8MU zk>zw2-MSpiPqwVq4Da=$QYWrlvnic*Fn+kz);yq%QTnKAZp%)m%k0He^=QP*`tWG2 zpX5-VM_S~E>!P!MJQ{A9qS&91Hjjpm2bcJt9&M{~S=t55wreDAjGfg#@Rw(j03`(cP#%= z;&9oqMfg#%R+zP0$%&=(S({F6&~C?`qbjlQ|JqgEM{aHih$`W${qbE3ej9YW4!v0e z_{kEH`IYCFj98uKO}0UHs=w&E_2yU6$CUi71y{`!1$q4ztF!COnwNMG1v)7JR>iV7tBKg!{MG zCkN6E-}Oi5gV(Z_mv3LJ+IpXvFe#B_Ow5*x4LhcfTfX5OgHAKC+QPl&jEGg6tvDE; z&aaiT-=BsXnA|-S`^(>c2`1KcHNdqsVox|Y_1!76m*HrabsJ+3q{1V@_#-lCDF|mo z4hYX(G)+Qqr|YdMAmLzyMKCvEEElhK2)O19azL8%x_2p@)G3-SwmZV>r_7E$Mjq!H zMI=IyOEW+J%}D;9WD}up5qY()lWL*Qo0?j2Idl44n)wlDjAnxQx@QfZgYx_{>c};n zt;?k8oA)IR-FBT6nV>FXtQXC_)HNxX%Sp{CUbr-SQv;(goe!Tw;$@K0 z7mq-BRGX6Yh@1u(mY%nQ2xiIH(Z)A)QA3-;n8MEYxx@l*4zok2@LmS+`J=qmAswUQ z1meB^@PCgs<#5}s7I7$JBK&wjQN|o>fK1uJPU42V!UDK)p+8LI#uz$vFt3bsRVO)C z#zvJm;d>#x>^V&nCiJBsI!Cd1eV1vu$}-PD5twHvfsMHz4R;v)=kl!Ca3n4XPh|0T zl+RUVcZ*nVQw$Ji$6J*hzMH@{I+XBMfcfdl2V3ESoT7*+JB}nel2s9>BNTS|KTS1x zG<~%Fa!66N9%XB~(&6o6V#`y+Jk*o*EQY!rth*<&D$P&EXjXZFTy#`a?@Z{V4@v|b zB2+o&fiID@BIxrb=N6>@Ebe-(!?ew!vMACyG6*1T#eio#`pw^5Se3uuRzulSPu!{_ zy+*yYSk(L+FJX3(_v+KdqVgv>G|i*(3YTPVySRWT`u|bu4JF$f&X07_is}wGXBkrx zk7Thrcpx_*9@bD_Lj=;jK8_+ zvk{OY+)=QTD9OXqC^l^3jbB4>7kz`R z5uT$8VZuY#MGxlkUczITiCm*jbH1BZ=WzC9DIN|YK?u`a=m!dXpm~v_i;2AOZXeHd zXll;HgGZ;PmU0uA#Dy{xj**fP)KjgSwkzMaB5+aM80z22d>3=5CSX*yPJ*@}0px1o zUV*}S@r1{dE!GUS=BhWvR_E5`|0tt;981|lC?F}r(Ja+Bt#Ik&s(Wj|P4MShMC2$M zP6VD@;lW)yE*e?laT^B-{1S)E7=byW3leznlLaxywwtqNRi>?!Lz`GPz^{qt6>dwK zQ(v2=B4P&0K6a=7TUVT-&pcr?uRVd0GB@hIjttd_qGT;;^1rGf?GZdp*cQQLI?p|~8*3kKmgC879K`smk`hLF zjt448Igv#5VB@n>-2~!uRW8OWu}R}3o~cY?n`$E2J zpT->J2+%mD%H4D5b_`HD<9TfxiCNqg0*PeKxJV$$fe$uBVmD?fUFd8qb2x4_B z4mOqJ&9aW|gO465DpCKW+5^@P~(!T%e#hd7NugI0nZd86QmplGj#4vx3 zE7vQpLE5l4jLp$C(+Cw&cF>9VD`W5^k&~fu2sy+P0$vt{Sw|MNJy@IffDi%Zh(FE_y)&px%sZmDm}G|cA?vPa$kHBT?ml@MmoBY&9GW)1CoyOa z18C{sokZ+Q=lRKLqd?xP=QmGyO0}F&;rU;`q}bzjl{08`lEx|Aq0q5GCZQo8&lc;} zS;I_&YWj?IAgioGF-#)vJ$$0|WVM<&@N#A)*yBF)%+^CaiDLIs*NoaV;GmPx8edv{ zT^H*ISr(I@cO{Q0Fq{)jUU6%Rn}h7X4?^t$pL;DZYSQ>XJeB)kIxy+2UXl-SYVs$g zee8j$)6(AAA`k-7W`Po1FF7>H&GfZDyy*9kiZr^-`{nQ3?KWH5w{4$8IL}1BcZ7h0 zaW0v={`Mir+-HI99c+_G{71Wb&M5l7;>VG~=2-o*j_UMB=srLy>Q8b~xVqn(FC#bM zSMOzX0|1;->2KiB$v_p0+Id$ovP7)oF(5_%jf7O)2Xak& zCTv3sk=T2rHTFDfN=@mq8*7daecIpbdj1QMSc%;x^oU=$j?*`Mnr-2{)aF!@Ef>!F zX`mAEj9I9LjSYNxYhk~`WmnOtSkGGND&T!7>yzCV@?H^I>9)y4%mh0N&?2W*FdJK}77i6N}E6h4+4>BB~-(PF{a~yU)(xKq6(rAYv~UFH!Z>V9nA|s7Nf1P z?wsq|V}W!187Xj9Y5e*sSxmRKu1f|gco4A5cx18Hnv+CbxQbRoR|4-s5MA!CZPpzW zq`+T4(OVLM3LXcLKz*td<=z-$jufCRa7A%Kfk6qeKKjwBx?~I$gZtVeqo*c8YAkRL>8q|5ASHn77 z^GdPqLkBUY4sr~k%K~QuW{Ji7f@vp0owFu-`1WM?&qu5_ZK$o!W}U_r*v5JhrjmTVba^uww?0 z$33$H!+PN!LPGY`2A;pGcAygPnM3%&{kQ2U_-4C9iFy{?BEsH{j|A8cn0tWyx2+wh z)J7flK)u^-_hv%AM)>x&-GH=TpthmNr-UI8xQ90&;8VvofVK6;Ed+#Z^9?{`qwfPY z5289?9X|jB>OB1FfwW%4big9c0tgy;9n=GF-sE#YJ1zkT)_I}O1L?o_=fI}?4zLsI zJw&fJ+_T_z8FW*?enXB5ymR>87SgNl&TzZ)-#YX9IS2QetR7s04#IXXAbC)|mw+7L zgl7cyK|F}$bwy7xg#QF~5}#V^S63i-%*A40W3R@zfZ=l_HelZi0|5KasStoKWFjR5 zFmTlPfWbQ>Hemm;3J9F?=a>$t$2Xi#`(RGD` zA5%c;jGq8-^;#JsMY*mI>FtA zZf8N?BkVNfeZnB)dA?|dJnYu@>Ze|(EsXKir}W!s5q*~fN58sDyWGm5zOJ?`za z?0h^4izgyGafTxq%qI#3f+Yb#l|bF2^~4UGrmmnt9t#vCIu2d8stYtY`fxiPalAsP zVLM%1SclMnOV&UEm+5`wG7eZzy?6T1!)o+bo=vjpQ*@4S3iv(wP;F`%I!4pp0zgR?Ee-P$$?;IwpO4LX7W-4KaXsJt#52RSij#F>(csg!Iqe6W4>v9js+`&Thum|8UPO><}`g{ z0Gr_vgRNdUQr8d!ppLCF+_A|1R-ey1W`UMBY#9(;RjaPNF@L;a)y0oyDA&x0(YGDd zzq(l72IYTAa@6&96^E<84DH9VF@NZ`t9D~tHzEeRE_IKbm<#n=TrnRp{R_r0!x(~R z<7AP@Ib+NSjF|dX%W9Bh-b=KW@|;El?Qd(gQM_&Im1IRHXCG~0(io3u5qP^(T_X1K z)O4#kdsD5Kh55x6&ayUtFl*KP{i!Q-e16S@-iW`t-SvIZH0@vnHSj4903518vZNhu z%Pv5!OHEK%>9PI-MC6*1%kN7b?DX9Ryyu=()h3iMk@3r6Yxk;T=rzUl30MFBU zb)^&lIGvVC+MF4Ls1_Gx(c?*#6I09t2BNQzz>dhy$i~(UHIHW|Ws?(evS!7eK*;0= zAlc`KwwW?6*%9d>EDeFCSnkM7p-IChCY(b|HPK0?XzpD}b|dR2UN*DD_nkX`2qm8k z84Q%~CJi!Low(dn7v?4JSFF0%yIx3CMb^kmSF1`aPh#2Q(InOnS?9K5JJx3Wi<{8j zfH{f%`LVq3Z&|m?om}AAp38vcc8asW)@(-nMojYUrdlc!pu8)@{V#dBjF;|)cBxEZ z(Rim z+59bL3~s{QmTc;geEYm*mbd(S)2<4E%eG@el;0#q@^3DJJHZ0!bko)lV~k*yj@epW zOYtyqR4hS~qDwNeS<|dhC$zi5TFrY_wrzir#XJU$Wg* zyBuiqJmZeV0kjssK|?{v=;PF1Ubo7G zX8U@^XC)=}^S6o(6DeoTZY}81{M~l#HPeLq_g1OwS`vC%uz|+}bX8od;32`grczIu zaw8ly%HZ(x2WQ@**Q6|UdS@e6xpfoGGC5Y0%l_oKOH=AjiDJ(&#eP|`$!=3#Ol_XD zDq;=c#51M+benf8Sy)Y9Kqw(>({5uM<#8oZ)vL+*LJUy+xu9t_oDC{3<8bD}ikWG) z3u})=9d>7GnN3UFhc>mc`T)P#>?q396oBG|{*aEM<>;FYLm5sxg@-B-*THXY4l4X6 zFwn&hcZL4zJt(=yQ(t`Wmje%YtHq`{oGK)1PSGeA1}!^v3YjIly(VNlVMc@n z6O=Z{0@pL2^ODVk2Zj&0POKp@6IEpdKrrcRRT4n?Gz}prcaLKZ^#(z%q({6aN_qr9 z&^txaNyc3^fzt#^5J;Vx{f}C+k|f}BYND$7fFct4S|=HVBhz#esL4zC{v@C3GVcu+$`dr{6y@)u6sBl5XpTzu ztJG>p^8}4XY4(Cg(rHe}=$34A)Bp|P5RPSb^CDcnGFde+05OFi9-jl^O-;y_`8@`1 z*`Gj^mR;ZlabfMok1(Lid~|cX>EJG}f(Y@la0gip$n!Mcgz_S=nHI^ z-OCGJup_*@;JOk5U4Si|d;i&sk_26Nd)Po1h$Zgc6(GYb;e`Qe4-@FxvhCap8c2jD zyqw`%zf?zX$@T7n;!^UB5aeb;V60dx>4F}Uq4jDJ8nJ0%$W65o=cpzGS${Y_;(0vI zI~ieqRc%Us(0)8tcqPKUkB|Ob-isYlf3d5}@u!IWc7lkXJ3++H?I7akb`bG%8E?Dm z_?Z|-07l`CUqQ(3`?|R27Wf6Y818)5wb?3Kvi03iV-(0M7+Z)NlBQs6V1L*3FU#_y z58nPd)@2h556T#;sSmIQLfs`!9sA5!!>n~sPkzuf3=XF}UwLi9kH_y_38IqCXA#=( zfA(USAOC3#V&;F#@$mRhFpOC@P7h%Q+B!q{vKy@o@Y&0c0K%CQ-i_J{Imch9JQl&V z_hdx~5~xJT_s*kPxIFnViqu<<11?gN3Jg2tWpt}-^x5J7Ji*4mrt7EV+}_>@p(N)wH+>m? z2gz#0faNyncLMXh@hv`Av4>;5gxwJVVRG;Sg=`hfIV58PHZrVu2u4D+YT)ywo~TnR zqujz}wAyt##Y717s_M!mRS!&6H2v5tlCwoH$~8pH5z3T4t<}dSpe2 z?p)+@W$FP45S}O3OuRG26~r6!u1t_uc$*g!jEzLTT;r1|vtOI!41Q!i7Fq|_?q|C;aft1e z!lP`r&^pj|3uCcR)+j>!o@5}@b0QGxISf&8y@FH_)N?!t3Ww!5u-uRuKiUFD)OfBt zqKEgkJ!wZ+Az=(Kz{S3dvuJ{h(v*G?S3`Y-&UVFH6lld7^6GI>S2eJj`=lVi4E~Z-SQMN{QZP}%f?};>GKNg zcE6Uz-91ml>LOtZBpCJ6Zmcl5ESI~k8t&h>b+x?zt!ia1L5Z>qAV1})3e__`L^~Vw zC?EqWxGJsXr+h270W1$P&*k$tf;JvIw#6Z#Azv9_(*yoG0w=zY} zWwmY?SGrP_d}zvM$tYrN)=dA@S4LGMqYh5$y8TpFriAR@VEA9Vs{6=uIy>TdSKL+W zVraV$ec7F?J+Zr}JEcAab_ItJPr5EWc76Mi;zUzXdhl=62Jx81Sf z!881S^td8N8feP*H*8KRoN6_XqxrQ`%+V_Qx?IT_a1qEy17e`C znr6PSksSfBf6R==8?)(yM|*R!8DrQmzW#9WhAyyx>5R}Yc-O*$tT5`1Nj1)cgSBXM zdzo9=Egh#rb>D;U#;kT;!KjKoPqJRE7*^Fy1vEt}6_B|2!c zpY(5J(mT_uTW>?qK12M)KRLXFG%CEktX1%O+$~@E5>vl&3i3Et@`(?Ys@b z^V6>Fd;U!rsWR6ftm-nI0K=FstS0uUxbZ4VA+S0x+fU89D^@@(em#NGgqlhLU^VtB z1)5h4fU;lGV&W;wRsXj5d|Ca&(COG<@vXqahw)+jA7J&Z=- zRaX_YwhaBgq=x)j?s($$YKf?rr9HTUnf+m+a`Cqy%)HD1>si|G+(33a2K&&&PJgL} zUw7Af$H?LR!XM6JMorZU*SujuZy^GD!l{S*-&u3?f}X|Y4Q{c#YKHFqLwFU5-E4pi zhR6rVQ#M;hIG~hhMX`&)LIli**uaB!<^`lMA|{V%K!M28j|OsCJnXaswuc2ZB%r8t(;u zKG_W|cgQY_y1xIg70aquNlgNld_(BPNXdLC19-?TJCV4X;~+9pzbK2PzN`0My3hCz zZXxhn%)*xB`_S>}fY-%crJB5MWfEq-!4>~%Uf=^w#PbS`0IT%mO;6eRO}0;BVVL}S2S_Ph6YZM$*x3*^R&d#qgsQ7Tz$coXQC?- zql{6kT&Y*>P}Fa#jeK$Ibi4CDyf2H7@;8bZrnAUNV&2LkiH*paU{120SR_oFmIEq< z@W9`i#?Dp~W%*IQFlw6ejy}G+D{A`-TiomqY^t(9Ty?vi&v@L8e_1sj=~4$-QT}_; zZ|q)eUr3Bvmp{I3o{^Y9SY=VC@TIDj=ixr)&(JjGJNY1AH21XFmDamWliDDlRz6RX zv})Q=RI_%(C~`Afv?6`nOL;&4E_Q}e_0r%!=P&C-(vvLXDiqs)#{iglK&Oz}W3`%j zGisR2ShruUf}o=zqCMUqC8IbJCohq#MYj`c4nGpnN3zxwLid%1RrUawLxMub_2M2; z@C1J<&4b{y5#onGgV@nEIS$jV7hxhvTewrZb{3~5+q3mdLy;dfS3GP-ZCEnAjZ&-5 z-k+>i>_>mOEuzVX?8>goQ^cF-Axq|Of}HnTB+n1FZg@wyp*XC>8DR|3kkijg@aWu! zX5dx`GhK(x$Vk-4$!RF1xW@%ARfVtdf2#I#cgy z35SiS0=}I0UZwNiujU}3Taj2A7-J2Q$ZB=o1N`2#?Bh9yw%cl_m)dd*iEvob$NoDL zM7tYgsx1DjJ&!))3$`&T6aqXRY3%b|s}XYX9ZNh!$0DChSmrlGQUB0XY&c&o+iiJL z^H=%AAvIhmf?9~L6;5nmqN*~kiR$8XQ)=P6_EaREG+sJgXY7FoRPkUib-t`CyyZRu zhUr-GUCZUNf|Wir3 z^53;o*YB7WA|K@@0Jq|WZPENCgNs+WbY~>HRICzbE26C|ZA=&XMQ@~5fQl>r7&upc zq*(Ff&)W)*Q+nrDc?uxfduG;oZOW^&1$y`i7aKH9*etrt40%_lUY}j0LQm zJ*D=t7p+syXT=am28JHuE36Up$5%eTzHySgo!^QP3p>TD=C?od90X4zbaYcu&sj?E+0;}G9F zTq(wOS4{Ywk&FxYz3|+Zs}WFaW4%(rAQQNk))gCeG2O;myiwIc?8n*ZGCh1D zC!P5TPUHi}sDvqr?Sm$|%uxF-#i!-8nLZyx{a`qa2}bBNmXs+hAXZ!%3a7rjDEg>7 zU9amWeb1keo}M0Qe%^=q8L=%6$9l|4I0yp*6eUR>8e8XRC71XRm*nmuRiloZobL(QDftqjUsUw(V!wrX_Bzb!gedik;1ZbhmJp-@B1vwJi4zAc(vQC~4dkRD_1YvHM7 z%9Zj>_1udI8xi$%wJ1Pck<-o%idwmMjIpTpeOJ{`b64`qQl3axI%v^urfV}pOmBk& zRU*K=y{2kPK}PGrT?IM_LnC$CG?lP}KrzWTD-X3}uppV?_kfY;fr%H9k1Imr26smC zDeD5=mpwT@rjJt-ZYmP2@S^j`tL+(=XjE$+KsaAAU=`R#;^$i&2^aA*G(nyxOs46W zUmh9GcfBkXSm9N% z7M2wEEGg&EcpR!Ku-RT*S^V|t?Hk))gmvy>7|XJdaZ@*(jUhIBhg*jv6C)v+NTAGys6g0KWS=O%^1=zs`XgaMN|WTn8x@5IgM|xh7xqlm|V*r~&QoF!GT^_uyjB6UE7QGO${fwgD zD)B$l~qG6xar1e}M^i`~qbh)ZB7g2TE%h{8p=t&1h!HHhz}aBzz6^}Wp7 zHQdX|@Qkev#ouLs8ONXXsE^ylu|vhwhzFhUcW=RfH6cm@|J`=WV{qg#`Ff*Yc6!fj zK7N*A&8(3bBsk#&($GwtYw2_~Idd)zC3)@*ke1Doym)u_dI_KLZuDKT;Jov$J=s=c zP!g@MtfCz2+|9`K&uTLcA~pk_ch+R9kAu`y0mmkv0@#j|2gPwFyzbhKnA%EHo7TI4 z*uz%Hmx`2JqV`BiFq_jRXr`gGdg|w9Yns#ZerXT3?6i!a8wM94mUnPl^rHYrZ*=|(7!meT z=V^g-bBT)ihWqQqZEpS4pPIeoRA$Gp1iC{}qjKFn_#)VcFpmHXG}Y^lJ>^HtKevA3 z(h_8-H*e#q1oI+rF7KH&{u$U(XCgqq76%U2=i9QY2X%@;+>#bECwkddyOYfiG8mW_I-#m^ z&A?p&AX>(a^prF6chXUkgt8$I6nt(D|oe4Z1Jz`osK|f(5Q2 zIkMY{=@kAYYJ)0T5z&ZpJ@o_il-SYOHPME$UTiA?P8O=fN+Ty%-h=_-ruTG)MR?#$ z%!Fx;%;Zdms(~{dZ>U^V>1n?L(656DeKPY01^T%~vb-c^oe981vs`4cKGNQ`@PoMl zreq_a=yI-($Fl(j)tDm@6VAD-4$i4L9jm0>n zEDjME?kpAbC?51Dfc~^7-y^!Y^X+6b`63VTsrNN<-U zBhp;fn#6dQL)1%9hkUVz&%?Y=!mFpeBA?1@5xDfXZ7ICjTb+OO@4JG}yTMe2_Q0tA zQAShvr7?5uu`BUyc&hpME;aS?Rz^z1c7@VN_$)=VSy79JQ&RFos#PMbejX3g-mj1I z(0-#Vm2)(z$}gKGWBvTGiMDZ< zC#Y11pa1u0%io?_=r0Cq@w_2;mf3l8*!iko9(F#<_lMO-{1sxW(0+^9DjHuTR-fU! z#8ypdji}d&{Sy5cr7A&RDkjRDromT>i8|)(Vx%1FgL=o9D#lvEgO( zm19*CdFwa?1M4jC?s2e&hqLnrvR2gKOUPCa?t93(ka`tam7{MXk6gfCNRDCWP(i$w ztV$zqCKE)Wbt3O4<0KP06nslrRl{FYMhcyF)a%N6)X;A%Tk}QirDa_ieQ#M6Mqgcy z)eC?Ny}+DW-%Q}hmblHNa{#Y9j%DKgXR=(q%d7`H+-EJ^r=jgi zvgN{kFIsC?0|D7@NLy7j82epmJ&y3#rHN9T7RO!`U;inMvhlHLV3`H>p$l%`DN^Vs zwmU@$x#9okvD1~_y+QcybKD)uW*?T?^u~+#g@QUH{?x?~j5{fXk#Se;j)8jQA;AmaE~k=vK!^DzCZ7B5VKZ%}?{k zhqL3O*9;K9*2|+C%k{ndP_7gJl|owcLjBY)o?n)Of;6%Vena13fBYxsA$I-&%5(fZ zmTN*7`z3zhiS;MoiS;MuiS;Me6YG*;8IPq zT{qs>QfN56VaTX?KAn@d!=|RUo^kgM(wu+8bz<~smZX9kzA_DB%`6;oE)iBA7 zBoFEpkeDk>Yn{#<$@y0+_sI^n?V{Oa~af;^?hlOUIOmH+Et9T9^GY|jl zR>bk&yqM)NE_enw4`O-8fL0^?AaGW+^4R5~h3}ejmIt%oOq>D0lJy;!!9P@KbNGj| z@YGSb1STI`Jpo&Euz%KWb-0U0zV*&W=O^1&Yk#P-y9S^29$S5~ciQ$x+xvs;x{;D} z?-$!&C%C`HTD1Smt%Eth#yYrmqRy-*wnN2P>Yx|Laad^QjlDQS#}GC}Lx7l%LqkOt z8U%FI6~-MLs4t97B?!ETI}Ac|<|WKmg|pTlSc|Bs`yF`O_`6a3 z0f!gmZE;t%O3k03WwIG7lX>KHvF^qGs{1&tTkZ9Is(#5L{;MncThpWXHTJ=O{j%M? z?^=H5Vmh%u8%~wOZ)FD=I(`9lY>~aGni5p^3qeaG(jK%JKVmhpilClUMyZ9MD*Wu# zW+UZ_->V+H2Brka7VF^>?}2?*$KyQ@Z3DI8XG?FEAFrw!*3_SLtyiDRE0M1$*4QYItsMez0_YS9V>sGW{l0C83_SZMUi#eoX!6@?NHWBjI9|jW=59{O@cM zdr_{dM$BVR#sZxSK!4}y+Qs$eggf4%is;yBGx% z?4=V&WMm#GI_VBwRqbi99aI)n?i}0{L$!Q8%AVipDwZGD9q(Ku&$B;W-Zx9J+bT9} zsJ<^6HboBqZ`*FX`NHF|c#Eym6M2^#?(HQgPz8^}V37^XAlkN7b>4&1OjfB`& zwhA?a5|A7{Z;OU?%9&zMJhr0K!$6s}i6ddnZB04jF$PxhFUHx;mh4`2Kw~gk(X*b# z^+K1@Q>5_QRVw=cmq2L0an8+%W0gE#J&vp}Ep2^r`}6P-o2`t+wEdKH!{e5%Ye^MF zZr^E_Kn#t72A49kTbOrr>`+yiN)}(_1ojjCc#?G7k+0cf7~xGN?yfpD_gp2idYv?@ zlbx8}FU#((Qtw?~$rN48x(9ix%m{INbWuWf_37dpZ(b%}vm6Jiy!I%k+|<@;iXN{( zrC*sUnHKOkqw~ym*S7f|JtA~=3#n6?<>^Rs!lO;C!ynf*vxh$($1}+*AHfs%7EMvY zi9^~pK)#!zTo0rqYll^Ndg8XGMKGJTcnD`H42>}EG0eDa`7rY895nOf<+i5DpG{sK z!ddd75vD!188TB11J{n3r7xm;gpq3gP|qaFt-wve(f`ZLgO-CfZsl-Lp|dIp_nADM zKoQ6_iF=>Z*{g{QASg%W`JQKK@lelQU})4a=YP8Lt#{E#t_PY^mKGg(vbEb%yqRq_ zaZt^YC5b9Hmze`a4la|4yorO5IvSb{p*&VO2!Ye7IS}IDGC9PXI0(%*O-O|DID{bN zp3%*P*$8(6)5gXmw)2fn2its(V%WMTnsXSD24tqaYuaJxl2U*?k`48=Nalar>SG>d33^uo~<4}hzS0g;}9rt+8 z_WWv?{#>C&=y!t$(&_&DuEf(q6DhRIdMM_we%BD`Y;_o$5^Ts7|Lq8Hl4rv7990HD zb*>V`sLqvrf=~A#@}4ekobJiOjwR|fLQSS@vPdn;{J5HQ;^YxtbW@{48DgYCRI=p; z86`%y3;gR$Zn}8AdEp{3Sp?M2RL=M6A?u!k3@BLlN(`0CdV42NC5Vn zba(hExH9QZIQqJ#xyESymX{fIQ+cIP{c23mT?u=kuF&gVh=@_Y7c7R(VHbJ#zKbppNQX|Kmz9VVy|1r(L4(#1 z_#!&W0&89E?~v6510zC+EHG9UfDTzwC@>&y#slc54zM75aX^SRj=>mCPFp9{fYCrV zCI*Fx#0ogz$;AxzM8;I0o&E|B(5=q=#0H=f@5DX~oP-?$9fE8*{vF_0b^`z(Imiff zF&++~y?A*SypG(XHFQEC$sv+8fO#N^9M@s)bb)1f09_yl0K~MW9KGIjW~YR(W--fA z?SsX=kyb*QP&NtORmkh=cbeiFgD7OArO*hayABi3L){-i1Vb4vNE8EZA}rkxY9{!; zh^WCr@1o;YOH!gBb$YDw1nC2Mp1MRV<@`_ekv}8AGinWG_o^AXdtD$u@q9X)b{O9m zfm?C5f}QXr_v}x5#<0I$=$s_OP%Lk+TBok{)vc@egg3DYb<0zE2Yl1@_?rOB+t*#Y zvFp0uP5r9pB;rJ%g@B4ta{vM3N3Uk@RRg(rnw5I;#8nKWXlym`Tw78P#`@r+(IfDs z=A*;tkXry?Gy0e9omMQEPRJ<%ZR}wJ+c+hFJ6gfKG)H!UZgIXX8>5q|GW=$bopPnQ zrjor&Rp4(%X=P9a7s?ZyAqsCBHy3kgc^)vgnZhNI+6*>#Ke_*Gblq#dxM zO~FArV!H2fVvZx4bTS@86xmH2bjiD6X5vsLr#%XZ%|bm-Y*tf>8@VCRy|N}^>@ZeG z26b7oj!=i}24~Ps4EQ9WSP&xEe-$FKNuDApf@E(K{zaz8<%mU=JV85@q-@#kmP_K{ z4Ks5jl93}Ll#Gz$$HCs=aq3|ve^y5S$H@9V1IR{w#PQN9}f-DWeLBzN`*J?@- zkfR$h0%#vsx{|D<8|l1}o`;-_e_i|e{*phI8GJzvY4qZr^XyF(wpE?YpNP2Zd49qV zO~v}`-PE2F?%}4X;u2wV-c*GE2um?{^4fQ&m`i=u3>T!H^0)3k0M{PmETQ?$LrCu{ zu&FrXfx)z&S-SQ&&#hf8r)W^Rr*d-^swB`VHz#LxR|gGc{a0mQuSr_0g$Tv z^~I$MKWjVWR?e9!GC7kb`jtafmiXPqG_&Tifjx9{nuoIc7lQ%dD@Xe zl{^^9m0z}vubN@RO&8llYaWO*k=RMXv@#YDksaw&Z)Ee>owBcTIqiM&v-AgPALQ*^ zQ#6Kmjw(d(_TqLjuGX5Cu>&!;I6%RC)Hu_R)(4(gSjs452%eBp8+?-uxawLpXg$98i(nonb&AFg#FeZLrhE0u>C>)~Gl7irI@ejkRgE(;^ zElDg0-vBr;C(?HLhv8R85uU_0SruN4_+pN@0iu$DynTb?i%fijjYt;f$BQNhUAlPw z9sGO^XlU7WZFkz@;pWL9&;z6_gBR`vn=h=10G;H-K+nMCO3nQ-e}=xdXjkC37u6Sd zhtaB}ZZewmH`aYd^%WdjFYGIhI++D_(Ge|k@@8O{9?>$q9d-dSRK=vQ; zz;GR>XZn(4poR_O7wW8FaGE~K*dQ@(Y;IW8k<@3mL z5sU+hx_C)fa3T1YFtH*>uZatpRI%45emRpY_uAtZHOX?1%jl&|s@QIgT;N1XuzA3} z%xS5kf2Gq*b-|0B)+A|N@3cysOP)?EaMjbBnc;c_FVl~AKH+tGZNuC5J*+GL=w)+r zw;#K?GG-dEwg_f}V1Y;PryKCt4GR*y9T$)Fg5GR*JHxIFczwb+Z!cvH4&M)E_n;CH z!giX9&?WjYPemXW+9w7J>9iBx(6{dmd34;X*Wua^6Qokq*q8P}S`<8Dlb{Wg6mrYo zrX?&ZFP;Sgr&0sx4u}XHzY{d{!s;oMRKRo>2r$8fGfpS2T)b5hio{(f1F$`T+e?cN zl@u^`_-QAOA+sImPUxduq&Iks<|L@`^COHs_=kc1Jm#IuSaTSaRl&?(#Ca1&gL`1$ zX4=7%F#u}tqY$hs*T3y_MdWY*UE!X4Otl=RtD|9f<_Dl?s3Y3z$8!C_F0fP)8am?d z#8Ta$YqRTLTZHYCfLm%2GhX5@nnj|4gZoGp0mFxKO)P>Y5x#|A1WYA*&%B75QAufl z_#K*RS^nO3AInZ>1G*^J6~kYsu*?YrD#1dhNauUoHBHs5FNIG8uM#SAzP{pK6D2>M zqon2+aNh6wTlH;BWaE~AR5m;kTvmMi*nE)X>ch4embaJp%~EjD0CfvsdK_NxzU-=Y zRV~SuUIh(7zRo-%C4Y}NvB~6h+bzov+ZB`6dBZb}ya5RdsdAHY=3}+}T{_N9lktj5f8#Ph+iids5f(m10QDDL=R?y8EgI{LUrZfA7t}UW*DKL&fW};u z+&yKI$@sb}q1fe01MMR2dHMn5q4~k&q4@#ip|Nx}IUS8V{3c|jk<-Ap#!(N4ZbsS| z8xtFhpO%K057K>#9qb_HX|=Ht{?;X1**;vniFjPAp3Ms75J?V$`6_L8kOT)ggH4Bt zX(@U(WVX^X+VkPa+Vj6V2}*uuHTd6uiJ*&Nk%D#>zD@b*8*v+#VO!Sle93EZX#hJqF6#LPp4Bx-^%6NqyCiy2X%3ErCo8IA}{ z65H4uC2DTr0Bono1I5;L-afbpMg%5_U~G;OHMa-=wo^oaW9xgyXG9nRpT=PbfkJzB zK3ix{Vl|ESG<{FB#DH=a~oI33o zaH3nEJe$Ms?_%^LbYyS=IW*2*m*${d;gL?Zjd=1cj2}SUj}s|kf~2W<5v&3lH4>;8 zuYs0XaU>=@nusPL%e{F1(Mz!K0!{2%7h`;*73l#2|FIYps@T6-5Q;~MRdeomG>|MO zQpKvHiE^S>#%TFa3`?Yz6PfSDv-ky03oo|CFK}BRaV}_?-wyA{iF{Gtz4#aJyHlTv zg(1uB_GDa)RZd37ShbMp4h`Lh(?tA~#EwU%V!XzPWa2bv41mNB5u9LTI|8f22WSYW z<8yXnoza*w80U=n)nncHPD`v?GBC~Uo^sq$Xec+I73SaIjC5R-6hzY3F!{I;- zZphb0;sE?BR=0i>o$1N*6_LP!=fDE)2j3aso)?4$ZtazA_*mH9*ahMP2=#(e;0F6a z=t=m4%?^a@hX`uO-lmO&>|5wo4`hI$>51BjVBye#`3|$P7tu*M*;HL5&fh6U;38#~ zPl_ylVG<#$Zgq6A`pMsUI6e}Pxsl9+5RQ+$Mk)qV42SdUo__@Ktkzc;fQnQFA5Bdj zIKLF{yN(sXH(l?vE{jfJVg?cTq-&XG;$E=*mLX1;j!p-Grayu}(;rQs>5m}L)B}|q zY>G)_Lcpnd`M~;SY1X&q*uw}qF^q6bp8dLHOB3IcjGy=d#lLLLs;`0xn|7#fDt%=` zB$B!3Zwmj)xLC{g&9-WhdtpNp@rFKI0OD>$kEO5a+q{qEedOHuuBdmxC@gGO=c8`n z=OT}5VMZc=YE!bcY=b7EhoN$;-euJ=_}g}QJHDV1&C^M28>hrsN?2*G6E5iQ^!7LQ z{)`T6W#mQU*-A?qleYMlK);iboNdR9nm>nCDotH*jqqX(k=ZvV=S!|A(s1uBtkS%Y zF(}S4l(S;&;em{zpX7neLEl>hzXpi`q^1iD03irIh`1o`lcj~@?%5$3vbt?|^-4C6 zC9*u2Tmk-*#R_2HoH>M0A>vbIiX!frj9-5AEk~553JHKfNj-pwAl4Hlgknuw>*U{G%-iQ%{xjDe z7#&5irP=jy1^V&Lj$k)%weYeFIKBuguYkP@hWdc>ot^H*b7SZp{5c$RaYclM&qa#_ z?a3eCi#&}>^H{MR_|Ue)?W@hMmT>{fWp&Dcbww@kKR){9`16*#S4mhxI$+c^bqi)MGjn(ex>dnp`am&>A&e3XC7EOrj~_g%~2 z3{}}X*UO(c*UO&>Ki6d?=qy)|Jm3dI%kfL~PuxrOya(0%J=cq-VJk(s;)e~}TSlu% z0u-)gJawwp$?A?1*q0k{qJb8=EiIwxdx$Osw2}*n5Ge&SQr(4)=mZ5hP*p=cS?STC z8;@T`zvZUAE1hcAM*z)HxDlvbV8g~6VP&AFkvh=J_|fjcuk3!u^g-l>5jqE)|6~OX z;g@0<0K+X8E-7rQ7AiQ;75o!$1^;AR!9PJ)us30)`+~8#F3%YZXN5%nZoyVc>0a8l zpUSRWJ!)@mte=hY$@=KQ?pz0zHzOzFGYXeO)bByulQ?+&xQGzzKq5Myc>PD}303y* zmd%MeG)Ic00ef_LG0%8g!x9v4y1FKmpGbP}4Z=iPU^D(iV- z>~(Dhrr2(oeM{Z748FSi`8}VSa+_^j&Q0?DyZnzn8ji?tlo2L9VMb=Wm{W3dfUUzF z@#s0c2-){llCt(Ah7s?GshC5&ATd0_jdpX^6Q0FtS>Vse6VHK(StPx>m~4KRQ@b|o za+_z=7gH`ezYqCNWc;9!HNo>J$$Vu~-v|n@1*Lm$6+)pV zGX0P$g;Tq)Y9&&ebV87>Y)cDVH0Urv>jHkWbp1>4Gv)8S`ZN~qt+x^Q*)lz(F2{JW zuU2RCB6>!Z<5AL}=Fn@x0sEEcbbxJp>vI5hmi!K>$07Rn)!`)i-P6#y*ZY3l7R=y% zFATPmwPOTb&!zN`6NQY)GX$ycX-0=Ge| z3li#^e@#MHCN4{$#V7>o;)E*pu21MIQR5{F@I_vwKsyH)D)fagIy2gngv@A9!0oKi z^@~U?`*v0^3*8f^mPX6HuAzHOxwMf~*SV(_xWEyrfcj3eP?%wS4FMnV~UN7jK4yqXIGXx-THDv65`lwHzgt`2{k)N0>cQsYUd(?g@`2ekDsJtcmyx*x%hPQp5L`h{VfaLLfcHhyLp#1tIXSntGp_Y-x$-Z51WynWOFdq8hD>Q1nO zlo%O~gVLb}zv>8xLY=Y+v<12iU9z+(&F|cH#W}?Kw=Mypp4TdYNTMt1j;BprUWc?Z zgPMfU+oIS6gt>OG>-4b&7iWO+ZOo!+eSY7GmzGb~>#kf2wx71m zO|^Ea$rPkjvnIfN=xTlyi71t*nk&@u$FMcU^H^)zxtClsG@nnwys2+ZM*$ z@8xx04Qy)W7p|F+XN1ZG_?q=%rgF6KLSNN}g=h<1QzXFPz5)i~TqG;h)%_Bzjo%Gk z3NSlu+mBVLnDzvIl9gnV2DjFwUrY34)w92WKE)U~X;%NWYli|b#QLu5pEKL8t5&7> z=#SLopUc(D7dSG0G1;0x1Fxc?eBk?& z2vmFh zDz{`F!knz2A+UcP1Yhh{>(Xp-sd9>TM1W{HY!8<`tUXrla1d5;ms8TjkiKWt?>&1-S4}05I&2O-Kr{CM}IzP+U9=4OanlDpq9}BFr_hT zW?+VwmGIoE@P?VQcBz?y(6*)&Yv|d7L>Vv%&zH+x*9GgTl-d{N-*>F!v@1cMh@FL( z@w~}Q{>Hj~^|@T`gymT^Rew7+g8HHQI`3>ktvXVzU}~D@AT`Z%lbYr^NKK;vB=BGlt*`c44)kd`6?;_A`?Y>%8|qW!K^c2z8}mCe#<-iZ{%0dg+h_%?XL z5WoS2yED7%!~yZQwh~#J*m{2_Bp{#rkYj+Uyy)(_l4*Nn)nc`(vdDVBJE8RIfTn!g0fesnvb_1F9< zs1IfY^|B_{E2%&mt~mEY*?;Kq zv^4Px%P9A#_e+xeni+wHu&KyUTMTW&3T#KgE%_ee^AHXJvzssjj(gdg_1Wre@%hC) zk^jh(%%=FvcPw3XE$sS)Mv=%cl=~E8gVONa#~BF|%z6|_D5ksk(ABdHQV-`Kg^mL} zoxWWdT}at}PsN0ZBi@C@7~_zdusUU5;Sxtdm+g+f)EDNDJ#;uexg)gIJL1^WK18#e zq5ZKew~l!pK{8G)dkh_P#Q_qTDmEsuVATaFI^yv%WvA{ z$8>UmF_@$KqS+-=uEVTLaHb*rDc*@=a(dUg_$+r*oV2BDo)XZ5SY$gehzGsw=RrKr zQc6awRBl7`gS7FZ+Kg105@3>VM#2|kF8a9I=WS)4^~|$||IW`WBZe*aGV)hOBg37q zNuxq!&T`HXMu4Fuyd%9%U%CjlD`%5YVXDp8y-y-&XyR2k7&*@Nsm3EfGjHtluN@$ew~0;;B9>7kk@YQKGm4S7P(Lpw`wsc26hlVN>5 zpcJPLS{z1j9L|!m*Ln| zuqN%PWv5{a2+)~3;d*p>A&C!4r|45yj1QzD{X`Y%gRIL`ku?0WM2q3)$B}+@BX$W; zoG{@ANuGCdog@_;Njz?MPV*)*d04$?PnA|{nyOqAH5$EQ+5(&Hc7pd@2vl=jPJ@It$>{^Sjrx2b z*|{Dclx+N_^!#^|qORM?0(D!{wB-tQRjuR&$1760!Piwu`tm)$l*-b#)-zVTPfgoX974Cvj#kRq!|y$e(ivi*AOSug8-w!9-RVpAXsV3Uc!{%;`DT5Cs3+l_P|I zIA78iP?nH5R|K+o5~ZNTnKGMPNkXzj8z&@^&FVqdge8T`gpGQ5_KT$Gnkxcp|9L!t zmT)$)2NhsPppqv)3QC;h*`!Ajk|n%2A>mAJ54p`k(b#VtL^oD}#B>K(4JU7<5(v=} z^)u)l;L^Yh0><#o7cd4T&X-vQj1rP9;4mR%io=86IZd!^VEsu(4FnLRcWzV0!hDJq zgJT{~D>=t{5a=XxaSK37BP!p=EOI9vPXxk`Tt7sJA1N7GGcDLXkCs@K+oHdnf2j09QnMH00IXE@&bcUuNXuQC zlSqr?-#yID+qj)37ybCV@ErSCE}-C6nIxa{IsQm!AUW~Z%(_&T0Gg8c5lYAWHS^7VV{b70#?YM*q8LU4;;o$O(8@2a{@Nqz{w{UZ-SZOn45K$R#T@ zX|_-fxhibih7o=#atUNO*5e zNlcDb#04GfEn&>UO!BA2*rFN;iECxv`yX+^au(` zxQkb9zUpfyU#TlYvU(%afV_>itQ& zT#kISf_#e-E72ivXd(G7C05ygof50%zEMe&qn?|x1?s<7iIt-t#oLvtz<+ndpPad?ytB)!H7>yocdhATxN1K&dD6 z_*dVSBJp6ppjZ(SoTYs;YuF8dSw*Uq9dhZwNUQ+K{JLf5u~+sxaVvcAn%;atv=Kqhw5)c3{*cKEWslTF0whX`C(@@MY&*Shje&>ZDSxq zu;iV7FGQ|F*jI4dV|oncW%TVeqw+H-tLFI2J!hn&DJ8PXNVyMZo=c)|l` zfeh`d;c6L5@(}Ocy^|k80^g96xZpVoaMKOFBko#pfi1jc&;{<*$9vb8*+QM$yJE6$ z`vM;-3*;W8BLQ+}5BW~s`t&;`?_a`xBTfa=b>z+|F}kDtj`<<%@t(!=j=BH``;T}o zO!r~mMS{esVHfgskaABM`>0F9>pkEdv3jTdBededHki&Kt`t|@d}j(K=+NyAOW1J- z%qZ~qB^Y#uK`tCP^9$*(fwK#FQ3I8AC}`c0c-+qeQ}NZjQj!C#dTlIMbpIkzSRnc-c;Jz|mYq(y?uY-;q% zVjpK)V(`c!!z&jKU?Y<7Iw69^IqtZ#DV-{J#V*nYs*r zg-m91;$Qz-_M30{%=k^ZWWM?KJ2jaKkgUeHDrQIgzAbD1Qmge%HU1Xfw>ewIqL4t$ znuUUD{>`!dYN)RxiH{9m7k#yq7qU8W=WJEp6zYyv*>!FAjfk%+7~3^;_+?dfrGB8; z$J0W{McJrudO((n1O9OFCKBeSD!wHn3;nus{7j4%mW{uY;1tP`@JCSfawvu!+Oroc zX*aoI4WiTm34|l`e33x_v+xItmb28xCxd7W2I=)Ih$~cCz`)2im5~@JjrFmaki`MEK-5V%$vyE74}eS z8pU%pVv=@?m}>22g8;U|9+!kkT)UKO!Kt`T%1D+yU#L}MFSS~Y_)ZoVnv86o{9`1p zQ^n=rN?4OQ*$-0ZY)UUuq1*^?{Ewsm-~ayKM|W+tI{MRhf2_-9J=`AsZ}#c26j;yCPMO4B zeJ++meSg$84AC9ieqixsTRjYFKM=oYphdNi_6SUrg5zwc+ z5uhf4sV~Cvwh0D~&x8EYl*j{TzjgS@Fxf7D7+bQ#c(JF-jYdG2<+-Y-t?VoleJTs~ z(>R(16VpZJ+v*>y?PS%+t*@dOvBxsuJpxX0?RbMfZTFjwF*Qy&SXKW}4mlKx9i_$63QrmXy?AVk#1{6w)_z7PN8I%t*=mL)E_*p0MsyOFcmy41wC;<~N`lMak80szG#7_7M(Hf_ zF!JZC49^Q|IL#f+FzG?Z87zg(a4Kf-c)94M^Or!6p6nlr+ZYBpY{%M12%Jd}DCQXw zNxg%gpjFxZBMRm!k{IvO?VOVt026Ly8?6$_0xqr560q zuGVxEFcz>LtyRP84ciG@Jt6C$*ULC<+VH)7^9b3U@DYCmqAu3Fx1iM#nRpf<9ZmCh zv`ydEV`!oLsbMT$w z)~x{hspuNjgNXrLmDfA*rQ*5X1hgR@ezr^YO>pe0Ci`e++19%a>Y5>2p{u=87F+mU z0FpmW_A&QVpGyce(H_N`I&YfULw9yO(`?f)p3ZDC1CDu~8oLqYteF$9EUtNY*>md* zXl42RtTu$}Z$_lDSmh$+tui?;`;z+wcpPm_6u~)V18_;+L_CHElJ;_~zaon^R^*%? zhBgn+k~R;|5;io?5;ioZjwdYC0)K3oROrOw-DPxb8g0a36C^MVo$*H-=Fcd@{22l+ zwqbZiY#5%Q7ADFLOVt)3#-^E#UD4mlY?tEZ)n{{P=9j43D8H2MS>E^sT-SK=1lW5| zjJ@{++IwCX>82ls_k^n(@8P`-oZ|F(WuAABZ@Qcm#OSo-Gl!tfHGf>$?laf>NUY1u zaF`GX>z%EM!7$}MF)##63CCEF8)*w+8aKqygG&oBj#aTYn!WFIyoS|J1V86eE`85G z8VMkK&6wgYFHIo8a9@{~w`Do#kk|Kpxm&fb>T<(CzbytH9?CYxmzO6^wGkUE(dPK* ztYLevia)K#f2*m`e3Z3`LcEWQ9b51DkK?1?_^fbzbh#~;)lIeJnShTj%bF=^+wr@s z0-+Iia}V(Hk^?b+$a{nQuMcw5e<}8>7eym}+%m!3GO_7Pg_oD7?Pj~vSikRhj`iW5 zP1V--SD%NjcwLqCsvq$Xf9V$D$J=sM6@2f{{`s$6$$J?8e)XB3X7dwv)o(KtY$w>M ziX7^0D+ZYO@vgX2SHESM$Q8~1dQ;ph!iD#T&6p!LqKwCDF`?GQaMO01*Q_7K3jXJB zMOO)^C!eccetKOjW$UZ%-th8$+gCEZ#`x{e<-M4f`>~dy{-Rtn5p^TFCxc%{e|WuX z#1&nk_vN67(O(%~R-)&3?aHq2eee*I9|SvImdm#{ng-5y+@r(o`aVh=axRie2vSNxX#}U65XGn3s>mJ2- zOGm60R*7!I=AIYD^5dFK+Rcj5-geNyaf?7JYq&7@Tv(tbR;*jIf7|-56cYfr0Si8Y ze%`drnh#*5Rki`<7lM{&4R^c<1bQDqq!hHZrZ%KCS`OOF36E@!6@%8Vn!BoN8$NT2 z;mfqbHaq=d*ted6Y+k|7pf;Q~5KOUR(0WvRerFT3vkRa+`HY2hWPP{fFI|2-o0M7| zECujNbz7Og4XUAZG`oGr>P6v20T~Fz$1(_jC^zwJO!PN5jL7QFEL>u|I26U|0eEn( z)_=bP$uk3002DnPgQQ^gS5Q}|AygLl4b-!jOQ(Tf2wLh@)oBAigWBV=>(sXkAbh?u zyTJ7~P>(arRaxgVgo=(NufT1=zx8fy@zIK|H1?63eg`jwah8FmNTIFkcO`fAzbxx9 zv6fc=DB`2J7Bh`p3Ri$IuWVfP*f%?*bF{%^rPEt(4eHX7q42O~{7TinC^rmm{T&&o z@Z9Gq@B=(Get@UY4{&*zzVR2<{DhtU%k#J7&fnb^BxY8qn!kx;J$&P~>&xyD11bD| ztfb!xwU*~O>m4)5R0;)#zuTR=3&%DL8G)msbwW0P_okw_0V95$tyq_A6Ow!n=9s^m zG)%u$XSPAazL~KLV~2NczNe&C_V`-9LLxW44Fi!e!CcrA(`fV)Q)@aN^^Kgd@Rd?@|IeNQwa3 z$eQaqB{L{9Eu%*rm!N9?0m-qB+lk*@m-XHj+elS=c+gLjqclj9PspSi@F~fC!j$h+ zBk;LFZP8zbIA!YE;HzFbkYeDg{_Sp1=cAE|{IGNA zcFQ4-w1^^n6A3HQ^-iOqL?VKUr_YE~V!Tf1v=rXLgf81+#U%c^sA6JDm{pNsiHuyn z`W$|=ItvM$Od?P~)$c?QoruSrvK;HtG}o}r+5wo3uDY@mt`Rvz_ZZF_zNMdR!wQFh z%Znv+B27OKbx(HOZhGZ+nhah$u3W&i@R&{pD;%yKvRqhupekO;c3^hulx{j$ea`1$ z3r{rmz#4*a`)G_CaC!%$EAhL;xr|dx%wHKvFooJ{P+E=jZ=<#PgHQ-ln@iIC5GO|F z2RuenA4dwsm%liqV0ki)>+nI$C!s3mH#a?=<;q^ZlIrdH$f_0E0)4>3aKUCIhbIZ9 zfHCtE4FXd?Va11aQz4Uv_s9W{Io3)3!{&A5=GlgSD)3w{IfjZ&2QtR-_=K+@k)<5Y zD0&_lL@Y(l6}OY^wk+5lep$XK@B~uPkw&3G?dcxcG+g%mcyc{?bz^28o0|JeGMdC(8E#^)j;&7TA2T{g+Aq&0VX^&l zV>f0P0clD^PFrfHFsmCfdVgvItu(1l`d3{wAKCQ9Cl7hRCeAp-&%Y%5c;*z^JoBEQ znA#7=B|aYSrV3oNaHTzh$%vgbF?|!Y6$=j(^J^i(H6|@{BTSmavA1+$$>|ST!3{o* z!O-rq7o+sF>y`Vey(nvZtZi-D+-^X%Q zajT&1hf9$dBB65CpYHmh6$r&vu62FCy`7eTnFrXpq`SQFZqH;)6U910XM!$ms^+%@ z3w%?2PN}Bezlv6+*yV8pV;8?!l%YYQ1=ph34uVxAqsyFn0!LgUoSMIv)%rH2;^okl zJYp$c^JUd<>mo)D+cPbB7(O+7!ug~_19RZ$0&1MhOd!aqZWm7yU=QH1B#mB$Iew$u`bvHqj(YqGHb z??KWrmo8ZW_c^@RnUl47ycQH&-y0@?q9&Iik57*0T*k|y9J2zX?%9U>^TZ=Aj2T$y z{g9_4193S)xq%7Iirc=JQ{a-PxDoj%=WZ{!`J5xZ9#> z+QE?3c6`2Qi(BnBboV5O%jJ(9wD#1AUPxx%7cVg z=6ZsU_qd#c(CG5P%Kh>%4A{wQ_Yw1=R{1LOSk6EzgBdGNZzImiI*`E61{_Pvlpg37KTpxX9qC)-rY{DTcFJi1jR??)-~sYu>r^ z#-S!%NN!7-L;I&+#}G{xU<6Sl3*Lc+Iq68^#=|vJRCbg@fCux5%SJa(U3w*+SfrrcTGg<2Oa6HZvwv3;mCm1{!=aV%n#(6qZ<%6pi zhDw%-VF04UW*hhr#$;a;eveIfol0;OE3)e&Zg6EYIY*nqOh&SoW`@*H8oS5Y>r(2e ztP{gMA(0veAv>oUCD9J@JAJTN%?RmbyD3EdSxq&Yx@0XSs0-xF&DiPb%YO;S`IB#w zt}#rrrb54Ygb%sWKF9^NJbvWNS`mJb*^nQ65kxS_5s4y%kTofBb4M z16cj+7!!2B0CG z${@!*7PkSThE0S_+1?cQ?QTelKtVIaG4x=R$^Nl79;&$$e9m$fo#5#=LH2a&u5s8| z%M%75ihcgOWk@H8kh^l(b}M=>e(X2dH6NSyQxn*yQ(VfCagYUKYKB_PwM?X{0FC|eJBQ0dgPfFLY2mkoKY z>;N0m-gP_7fKS*A3=#Cw^&ti+oh7pbe?$pOmhcROZ)ma!fsELl&o2n#<%`nBF+O4YQ07Ey#}DG&uDiN(3oQ}*5PDb(j^ zSrYZ$8?|4nP6e(NCa4o2GfRU&JBn?&dXjTLGLfPjt)M7!9w7c&)nKYur3VydX@F^k zb8C{PH#Jp35-~Z#$BCidl>Rr=0iVFv7?~eqY-PmFO-7MNd5-2pDEA*1|2I?~ zNMx4Uz=kB-vTq*dry5D6Ek`j(+OQYo{|%MGCNoPd?4|+cW$%=yC6P&|GDkrIREp#p z|JK@JD9oELbSs=&*)xSm@*JNg#4B}4#AHnnC^39f@&yhvCP-hOe@xT>NNAQ4z=kC2 zvQ=T?tDC6=<|qb9;FmdG-gBT&Jc0I_1~`!|?EEK;(<#iF0wNUhui0l8Y%4Q0o&w92 zW3G}tL`In&5}vOtq8Y))NeL|Wc_j2clw;K8V++hkl%Rxwwg3b^P z+CGN*Jg#XR^>k)OQE#^Zz(7C0hhjPcIfv&+^9bHkQZUIh_>%+fBN1CT6EdV1WP&_= zyDK|Z`m(HtV#Z@b05$i#5Ht>TOvN zkHH{Di|FN7(IPN6Tj*qxFomb{hsX9VKABWplp8i3eLYkte3Ga@;xTdwnIrIZiJ*~$ z|3BK*lcx;V|0{kSdHGh4)pzWAnl3waFVE@%g=s)YJB_YL(2ajdC-TyD!{ zb;Do$HBh0`0TAF0SWv{faDMXS8xRArsGA-}?~eIoJ?jjBp+Rj6I^4}PCDOCF6oKCw z2KXeVX#IPful+Bt%uAdW?(o0{_N*NC;M3@$h4r}K4*VAJ$rc45X_Z@#he;ddbZ;-{ z0`ILHSio0409D;kgdDT)E`k#4`Xs_*c$*K7l7XskfA*44BV|@piZd^EN9PK(9keyv| z)Hf{6AysPAL*><@%kB1LlD9ww4+5RbD^kgZgye8Si@g4+>^i|J9uzVcOSp~)Cy=Nk zR?CA$XG@4w@*vSSRU?&roV@#xM4{J`zO)yq}MA(Ty9caPu?^rDxR$2gZYHbg8I9N5Iq6g87PQ=T+c1|!GR^qjxqM(9RJScu3 z3{mK{#Ns8$V!vPeC><;D+W2R%M4{hXVDuBmR&Fsk^FfQ8Rsqj{xQ+{l^koODU}MsA zs*=SX2M9M_sD^8GIG!heSK#|~EECdkviN1;me4DJZhIhdqWqt7ORF4iy|u3uyJY?H zz=H3Gl}%?`v`3vXsBAQc|3N3=bX2D&{@hM zVAohS5Z#RGHYkjqHeR`0TiVij8egM)! zrlRyZ#4__aJ<@vz*d?6<(d!dWq~`P*+G)UkL#gz3Srd?v?%z1~hB~z!v&TAhL*MQ*dIuWzp16rKcqHBjPsAt0w0PXmgN>Y(ya*k=uVB3h?@r)2qK( zg&p}f#yr^L?HmWPyPbt_-J3`rROIG{1D@RZ!hXoREnbJ#jR2=BWP1!dLGD9%;GKAK zrvr2s4ZA=i>wOwb(6UQ_v(L7$cLKCMs8+Y@3t;Rj6ldr5iA7G?UDDnH&?6mYhRx52R-}m*Cm^ZdG+uA(XPIKS>9F4@?^Oz z`~HtZ|A)JxV_Uhuvpw8!wt8}WB+JiM$46|9+iVB<``C5^{CI3{|JiTb;V^y}YsfiC zLe*LXzbUuX(P_~v%i697zv+4sGljb>()<+B5YLWB4-)%ZDd4mJB}lHCYWOSU1=GvF z{fzpR%bv6j>mk+Wl%&q5DFf8v{Q9E~#yCt;-rapK^Mj;tQwK0#WrInEGeE6gM{ z3*CIt;pqAc(qZHm6~+=EGC>%yIZoZY!m!ZI7Y2?lz3Lx$P)$w93zjDQW`{j_VB{qS zfIb7(wV`1F?K@RytUUGGvh~!rK*-dO2_aLaPB4tit))S^)}uM@^lV6^#6AE;>`A1= zZbNGsdO!*Jj;^QVf!dG6f!dE?uZFHJ^kE+W>8_0gOl#V+H-Ns$K5qQHNt^(04P@)| z6S4Ho$)`UpVf#s%^Y}Fv~MT^5~Jdd{}vU8OyoY^N2jCTV`c zw@5=AR;ZGJ#Ak>fz^3R2vnl$)+Y|vfnL8t!A$i-QB+l)tF2?M+dE zhom=Sm7YRxf-Yyg7gn>CFm&aPQE^=ku`26=5t@5*&u2j&AZ@A|g#VgQ0ROyAb`qFKXBD<9Zk!nv=vLT%{{m|_;n!yw- zvYHL;zkj`;AXr7Z6_c^}c-}w;j~;5Q6tqQ|=Y9wEBW$B<02mR5JqcHWrX|WO_q*K>i2~$WfWoO-E}0!B;l zN1JxVU*Z-!aq~u_^_5@#eAKCfp1+8d6VT-K?|P}-v7Lw?6EIVg6^HbwubPjK?lch5 z0Vv(Jb+x<)<6UYVV22APqz$w*@cX#pMVaRq8Zgy%EvauH=x z=aZ4IGYF6%qxL^8h)|F%=mZLa_E$!B91bSoeT<>#)@8I}#@x__sF*5q0$d{R4xk4V zeG@ezk-mssJ+pSCNt(oIs;o(X$=o=AylE;YN<5iLWCxTk=UrFtFJTLVsZzCo1Zg~g z^lSMA{%ZoIT|sK1DtR;=+9oPWb#ICVdF%9yIA_FYCBTeWVVZ zsA45!nbXATWGFKo8h|v<}#V9!mEyK0B!redf%~YSr?z(Y*b;?zN$kj+ zn2EpH-}>o7PYSpfrvse3;?P4%M2If+M_(j^`9cjUF4QBLnuXsGe$jqDK6+E!x4Yr0D@$2y-IP2&;(G&` zOZezgSdVATs$|VhxWDK8Mt2SLB`J^U4YS z3102D*z@Vf@~x?8J^MJiYS<8%(&qHGTz-r^`ryPIh#&GcKvu))F$R1ybX(Q(Cm+pO z9$i~p4pJt#XQGeT%r-9IEzEsBGt#w~SqwLFV;5Fx@=AaEOGvLTvl{UCYWZ@>X3QP& z@Cx2gqxY&=wkw%;A+hClcU@OYT)FTT{XJXEH#sdtrk1GwzLvFcmgvP}lJKNnQBxDV zh-NCfG~X7h_R~e%4hc{$t;+5U(w{PZe^mFAQs;rv-S_MtQsS_A*L8et7U}%6bXLYw zWi{!SU0c`ZH#gj{3JQ~K_WvX{Bb;DnHC2n88(C$UPw6Y*HP2qi2xg6oUVO9@Dw8YBw44?eP@$$yr_H=Sg0}HLV=G ziG#^vm^+w6R+DKnRlz=DxqZ+pKy_j6Mkw{mKEzEVf zp9vAe-@?#E-@wUv4LWMH-o=c{7|sSQ7hkYDi(%}IF4zHp<91>1`C`4Kybfx*`p!ke z?#so*-fd=FU8hD~n%x)@U?#aSIolLs^n=~?gE1flYk(JqHt+#_&2pPSIH1fUT>CmE z4jPS(*R6)@r89CoDmhDYa63cjGw;3{aKn{u64(XNjS_Z3bmLO(f++t2-7>TrqFaS_ zM0BgPU6IqMp-dJhatFH5Mnfsm(D%M+*9tRoqTM=vx(7D&N1ge-T1DFtMx6) zpeefwXJC3}ha;g3!>Q;(yWlCFk&xSN3cRenvb_Q#m{DUmb0zixlb*l5AV(c`ap<-m zZ)V?{ZE?BKgI?5BsfGQjSx^F=RtFBSN3wmd$)HkwQ4T<0GE8+$1z9DboUIs2{HkU2 zN?VZaVfR!zs}lT4sW=5aOi4hZ`z>carad6}Gj8?}ZCfgEekr&$H2XnCfNSVYLD`f107s*g@|sJ`K1#fYkpW2C4K><96p>XQ>Ss;_L=v7_KC zj35P{VH~Ns_MxLmHFa)GsYcU{EcGaLOWY_^-9acZ^G`{MnN6)gvS_Ccnk?GX@uOG$ z0yn)gGPy3O09U+`$?J%YRP-jtPtHva&myH0H2*{;X#UBL(RM90GKut0L=tHV9$ci{ z_XeHNVQ|63F*0z_?%1`{J>xOQU6A`|H2F{Y(d0wRUqjNtX7?0F6X%%7V8^XE>0xdf3FUv6Zd z7haAkNzVH^W7ilcKLAE4U%F|~m&;vO4fp55jhqpsI3f`_qQzL?`PIb>V5&mU9;0jr z%_YqNFJ_S`%*4n8Xaj?;I7BbtYaHwuA}~0|4!c#o7!yR6-E{L4wsJCy&v7%^#wyvC z!?AMa%y}@&_HEhiDA(4^*yVCA?AV$Kxm>@N)r@d!&5K$t+YqM~y2gIN@xAs?$`*hR zB1CbnSBR~;-Q?(1-Xpz7q*;(F=nxBNBk7Q0XQ+R~*V9;NtRksH(9Tv33`m$WbFLC7 z3Av&TlR#LqUskgF1V$^WdzY?k(R&aAOq)~aKIXX+4`5DhL%z7YoAOiif@MVHE1$Nc zr@rV7*jGKjtuVAF5Da&fUtA5^dX;jAcXn;jF9YYZ&)Rr@K|5%LVwL>X-E-i8!*;0) z!pCELyV}#Ey~o_&quqnR>jOX8p2wj7^m&s1^m&5+^m&5+^f_>o;yxv^oXE%IyNUue zu)IPf0LtTJ+}?!W2`$H-(GK{a&>Gf&K%KqMU1zVgz4hL`ah<1dGj6+0oy{KYGk#9_ zjGyBWV=m+8gv*!!hgjQ=gJd^pcH=RivuZeV~jf5{D`dJd?=R(cQmcLIj*KC5PsX;Qq&Kx!;Wm(RAsx{@( zKM1DNcb!Tvs_H)uE?PqjP0ELw~ zrRJsidzzEx?+u|}1_claGJe!G zKQtBNb5Ym2miYi+VY@NsvmI1|HSkMJ0zq!HV@R?9l ziC{jn<5To zqM<{y9?b`2=Gn*Cp|DLecB0t&Q({h*fJ7BLW9qSN*K8cO`^1O?YHEOXw%}l6oD;d{ z^kHSqp(R(WI4#HmHjfUjA>eGrTdfIfvqL0CfYb67!Wj$?mmulS6&69iV?;cV+U<0& z*&;M?J6=l8)tgO?9w2>GDVVWVyCUpE7L80H=MTn^ru# z6+(GeF57Muis$u;cFo78{nQY5VgkIFFoZ*qPXAsi7U5;*k({ksK8O%U=bT&+E{8j%hl;d9|gQ=*Hv>lutFZOQPl04 zXSREyf4tZYL)#o5oh+B_t{FabwRksC|90+z{_NZZ{n-f%dGaSGEQEiMS^gBj(RmI& zj;{G?`4QqZy5^k%-Qs*(HVkK7PyGZpT{l(V%Z9p+^>I8%V1hht+j_-T^zjSmo& zc9*y8lfE4)zMR%=5ATFNeGJY39-A|O$KVV=$SK+Vuceyj`5(of==i^^)@Klzi*TO8Skn_W_uSM|I!X;gZcHg?aG%7TvhizMzUWoiMut%60y1}yG?(7 zb6IwG)lwkyzN_wv<^B7X4T^i%w+)}@J>3j1WP|XL0e4z&7!&qCr&(8Qgd{vZwXK%? zvi*nfJG;kx8?hB4T_;r)GLP4+#~~0&+iWVz+<8!nk#3wsqEOuFEwMd`r6%4HT{9&# z=IEQ1p6~ew*7?h_F3`INspl3F%bXjYumy3sbDszr3!$Wq5RQ+angorbm z5vL3`c{m{kLykJ~2{<}w>B%kaJs4U|dx&d}B&>!6?R#(NF&r}_L*Pi5X|u~{1=rH> zYzwgoNNee0o+B}@aeyN;NzTVNLwW&xEwlLxkFBwRHeAA@wym6iuvR}ksU^=fQLFkvR)*f{2`Ul@+amU3?#I|ws}k5)qh z$C>zO-_UU8bSq82z6D_SJxUigIRJ5i3HE2ZjtU?aOi5S>J(Xqh}RRqwI|x zc}MkU;*RRiz=v$_eaO&p?m$ID$Jt)Z1!kM;wkH~K!H#}tf6L*5_H9YqrB3*5N0&No zAG_UXYX<^%T)Y~jZJ8l_1#7ayUEe1RIPBRKE@*q1vd=LPC-QiN;V-qAuOCr2IAbqJ zZN_HJMM%dJ&k}~^tv*Y*DF41I`{8UQu9u3x+4Qxz^C~q$49@G#j5OHHA8oQ zd~~v7%f)R`^A`&E(S!Ay@nYLHed%5?ee&2nOL%ObM)08lhZq0-x~OV{ixdF(q<#3W zclAwGdljv(=1fAlft||EXSeq6Y=Pudy4Ce}AG&0M4_n>A7qVLN77l; z>0w4Q>1BCSs159C(JafF_o;YxSFOrZHVN`4-U@vT$R^4zrYr9A;(gENr{FFrN$XK| z_y?ob8oSqapLd#h2mzW)YqW+*de@bJ0VWk?Cf4l%_KEiFCmpSCM>n)c2obOX6cPaN7{iT7UctD2&_zlisO zFCf>5^ff}Td z<6YFIPY|poZHi=dTbf}r%hn(}LAW%swioH^T1IDBgue2XIA!jUaHmZ^YWR>+pMCmK z$WEGnTx4;_aATJld8J>44`2%A8M2O3?w<@Ce!Y=KO;Q`);D*UH zp7#5-thJA48!Sw(CV2wzMUICq?D~C{R|$c?qWJYJv5h>9Nf*9{->T}EBJs<3*=m%u zTz62llOj*NBeDO{W5F`}bIkpanO^`FCr1N40f*^^feUz!Z5PVZZ2Oz?#V))vZdDDQ zbnECKNYuhT{>CclxpqOFji&?%Jx&S`dK?d08iR=Fprx^nf9CEN*a11{`8!(X1Sg?q z@pvKL(m9tWN~vD0GkT)bZi|||3+fmjZ=|_Tobjthk(2&NEjP@{JM{-jYfW@$$kY=% zh6SFl(1A{msX(X4RtOI8_fzp#FlNd*n{XjPpELxA#F1!-zCYaqYI_VVxM<{w0gZV+ zUFfcl#|p&4gH=oz7V58}Ixv0)tOqy1#qGlJo6tlUrw~Sk9Tek}VQqZfKHU9^bGIFh zqv?WU&Fg|RldaSRkr*7^XJjvd1&bjA%{E>Zfw7D&tc%bHPYW2U>hkiw=Z|Trs4@OU z1b1<(t>y7xFLuk198cewm${&Mo&$=(Nh?2WI9L>I)d0w zh&;kVjnpN7{Y|iA*0__p=!duMs=BFgw*WA=uBuIWSvAY@)wW&UiU5x4AHnT~4j;&k z-WVCl|Ma5}ltgD`M8g!lTxr;OFG0fBb|oB+_r&dwkTISY2r$Ml!Q~DyKC+*@n)XVv za5V`GVz;r~I2MLmyJ7QJnRhE9m_QBii(re(J%19(@WK&YgtSfWF=6s6LCnkQd=$QNx#E{ySvLJ`Ys|$L<+^Hw zE5QGvS76(Af8vH}KXF2}A3LGikL4Qv46NbL%o_d-tl=2u$*Va*c4qE$hd=29>Za{B z1?rryWApQXj>(V*kpI}QdHr?UU2e(umU;8!=m`p{I_>U!Lb*Gi#9+s~pN|Re z=VR28e3orVZr^w94Ks5)Z9(#Hmrb$ds&y{3{%m!8bXjb+HJjH#i+Am+L<__xyy*Do zWVJeL`mH$f;{~z{Eg`&Ao2jR5%`dn9QgqjBsTyzB!LPVU`_wgQpE@S(6UU^Lx9~<3 z&P*av=dbYyz9UrK=LSGJw`8~KJ`2*PR{9yJwKiK;nGrn^6IdD);@LOK&8n$0B zK1ysvXWWgn@WEiYn+0O7NVi6pMP2LpJYUzR5E$f@hxcd`NNA6t`Sl(9ksw>g3 zkGRK>-~jFuv-nH2OklB`bu+w*ab7j7XFSTl<5%0QswTW!n?k!JDuMcptqxm-W4k;; zd|b-}LK7XyB!SZu!@EEkSX#6AW0t1~pRmawPDz2HnQYm|0D(B3fHAS3y&oke)$UIx z2D5$UB4TO5o*)Su0EP6toOh7U=QxG5V>!-+Z?2EPYf1SAX2&p}m0@4Np3aN0n@k^o z+mP7%&y8L_`&{(Uok#i%-lomoJPrR)rqA1J8>su7Z0r|o=XjF2ZuV{DG2`xVXi7OhjnMA16K z(CdWbT05&VW?LSJJp59(*F~+mKIt#oHa-6k=RmRL54XJAZOX1%{zfHBBUR22Rg3O$^e5AHV!Z8~4!0!C~nHHFQDH@|suiJk;|wjz*n4 zxyv{r;%#!n*j&6AFe_%S8p z$OiQ`Bp)1kU8j&6Irhznv~HWU#A8D{M7CtQ=1tX9{q5dyo+F1klGsFExhLRr%`+W@ zoO~1b2M`m4xw1@Zd?IRvE>^KCbOm#FG8D%WtmEECMPgdevW&Q`r%7>JPZQ#{o+QL= z!K<#m?~*9AsR>8Vge!TF@JJf6+-{FW)nG+PD?0QgQp<(qMcW`Hew&2uL-9AN5)p+% zl-h0Sh#WXp-MAc8hDYb9!dQ%sspig8Xh3 z1N{ch9_apEN3i>5Hy#xTdc}R^M2EIB(0Wt^izd|FVD8OO57nso{X!T2PvPl$x z)5Y%Ak7FFW^88N$@Noizk&v*{Z1TK)m3uuMnZB)S>Bz1TizN=ulK$3d5ug6Udz3|R zd5Bp2i}3o9Yz;3`mzt0ny9h2sNs-y&xy5qz@`Vn|=GSd_$~c~iL6XSt_?G;c^zoPV zLx4Cw`g3_N{&P_@{B0KwN2IrTBEG&ahFkt3ds%d#sR^xizMJ6cvMz^GqoixwU+ua8 z2=Bcrd%Klijt6o-a|5}bIf2|yoj~sKaT|`9?i73iA=rE?vjVliCtV9Pgrqy4iQ4=I zc26`BWx5^TD$* zJyHM5vT)Z_e~AW0phc8xa)1nZy6m zPDCMX`80~EmJwmlNqa0Y0R`nD#i2{YCg~?nk`Z&JjgsJ5IDF=d#WllM+J3@W=b&ZN zxZ7?gv=V*s_w{0mD!@l8M!6$c;bn+1R!2IMK1TDMSTR_~{2aL26y1G1QHtA;eCsJE z;LBbN(AS^TBeRgi0uEqZe|9rwUu0bZc1)~xnEgwK&uPbzbbAozkM0xpI3oxkopcbHf;6^? z`H#}Y)o5k$Emw)`)|516R3Hc4O!Wz)OYLg^qel62m$bm8^$@jjM71P6^+hyIV|_Sr zWtd%y5n?9kbC4L@-!c#OId`ADX4J)}d2!2SWbn$-!FDZDdz*&X|j)%H|9EFTX?*)o!1SL;pX+(|rn_t1^%k~<_oQ&jzO1CD`w z^j9c5%3E(*J-&i%XSS?txr_u=+VWv-2KM8uKT-XsN?5A`N6U2csi02@q2~;_Z zDeynZ$O849#}|x$$|wWSi!f~#FzjHgEP@YotScUZK$JSMuvj<(T86bFLlYvkGU9Qc zCB@^KT7h_6CuSFo$93O90)Y>HffqgN1VQ)(b_+Zp0xt}w< zD~ZS#6IzLTw#U#c(p6{$SfcSVCdv|XebPN3&KtikI^M?am2_I6{YPU*pHZ=+&rpD| zz|p5f;OJ8n8r;1=kVyQGhU)JDF~HEobmBAJkRcG5=~&bkEsyPAnk z0D0ZD8y`2ihK9kYJzF=zmSCb6MPr^&qztyx&&hMVtVULWX>s2Sw#F2 zSio_Brd!aTBff;-lL)N5D^}I6|L^pGAlcym$!O3HB7?IfLG6;fB014PmqQlrif%yjqL)t_Kn))#)Wv3e@xv}RLrWp zDb&_!;K2DG8$JWcxER^32i)x)tTT!IHvA$ekGLvtMCY4owUSvn*ErtM*g>Th$G_qGpmg zCHe}9pkcG$UAZ3&epTY4+?M$3UsOiBp7plHQ;m~NiTH(s zTaVx=6Pa#H&kHk8V+Pp?vzU*p>l4VBz9NH{W_xA&%whQ03d4RTCIi$m*o&fuJ5uK3 z@3DALf>ma)#VzEd*ca2}Rg;$grYpB~u@rZ(5_@qrtz-M7E|Ugs?X^4C^B#o^)ry#w&KN4%B28D3?B>pn%ZCT?2vI7Pq9SC)}aYv zW@`kXJi#6bq3oUw%r>V9kDFY}wEvB-O!{v=nVBDO+dddK;6yjd=tunSOHXcbT^!jz zMHk1`A;He9ivZ;bx`?5SojL7|?$QF9!(F>2h2~6LbN7xJtIqR56aJ7hp}6?VeIkmXSfXVJZ)4@z>Saf zS1nr7ka>VXI(;z-f%J3(qcYK7X#EkWu=Y}+>Ft^ z2K;YWf3_FK?F_w61AD?eOI|nl=G*EkcoD~R7;-Yuz1qe;-Yt5E$L|;0*w7sVgAec3 zzx(5N=^3=xojPn1cC5NZWJ*uGj3?eLX*-j8-n!!XgPVc<2PXsjGbaN(Pub3F+~uvg z%5+t9Yc{`iMX$d-(H}3$x-C}a>g0yeAZn;Kzqfp!%w$t-hc}`MxEJ*t+>3f{?nOPf z?nNo0GVVr=Y{;T_iHtXW`%g;bve$%rGooG;|0Tp{XJC6kN5A@ChoLt*z{V6yaw;9CAapj_=A!X z4*SN7^edA`X7|VUGJLu=rnz4NF8%}A|L7WOKRSlm500V6esk`)Pe;LTx~I3r$I`6_ zzv+7VRZXX=^I6wcK}2qC=kr*5TNn3!W%$)x#n*3A$pQMNHQPtOM7I%Q5kfJxrcr^H z)#~(?2lxUb^k-m%{%nlUpMeo-nkO5fQ0FE**z@xIt^Tc)HMW|7`wwH^s;ztVb5#3D zP{-yTU^9ktY?@^(McIXV?I9B1#x#fvy+3ax9vr*TZSgCUZ!K@2il8>@<6lt236N|E z^GGJ9ikyd~IfNJO=ZkbsEZb&ay)fClsN3bojFwGVu!Ut1q+Q-tH+(j_)EGoyD0Omg z>LCzMZT#}#M#Mod-4za)tsm};a4S2_wbDoG0M;%+qEgP&-g5k>v7h74MA-~)vYNTK z{FfigX2oA?jzV|=>pF1So14B2-=#3Mg5jCR{6gvqe;x|dxh+Mihj1mPWlew6cAJby zcir5*o7yaI+b$yzRW`_oM3oKx-;96|K7`VfORu`(Q_lx_neqmsWS0q=@Xau%bTTu{TLhDF(tDn5&+oklrmEfHMxZOvh=V?bNz%M zfQtZx;hjz^0)4{m>th7a*|dw?+3ZYmSf#Pk*{$s1=NS9Ta+7+^C^zZ6xMi|1>?YmE zgFE(-<0f@m5pL315zAzmit+LyI{nG&<< zUd7s`ZmE+^zpc%^T$OX0lTyi5yrE(&T2GxQfq@yDDP8(ARg$D1^*w&cf!Emx|iz2^r^lpmuJeg?cLsDorztlVQcQ)2r42AnI^!qKv@!{uxbln6qxs|<>MUfF;~0Jhhuiw( zR!2&Y=ePRHc#5mPP-nTS9G>XHUQ9VW-PJMl)EO^X?#1`h;TS(Ag=74f5RUOfLO6!0 zgPb5EB{m(%X);n`x4}=A@j|;Le#(p&x-F3tXSB?T)u&FM$#T2Be-aG~{IQFMq(J=- zd+4l~YcdSM#9dQf(J@}dcV^K6Fh5cOFh8OIV*xNf5CJehpwKK=1B8jiMQFH)rv-y; zZH6IiES5sUMtlJnY3Qcg& z&~E95ewl732t8R@q2$m0G)D38zoi(T{Ru|#wCnWv9l_ZNkvs3ofrqkL-!66yPhMmq zdX%U#wkzVEW+3$C^F~Cw{H?evdJ!%6jR?#TsC;v59t7ln7TfKThXQ^h?!q^#lAH3P zj(VVw|Gg@=%=VXVGk$^_~m0i~=KnWRO8Rq4>?a)XK)g9Z|^mZb`rk@r z+}L&1l<$OVAluV06w8lSU4iR?bxN%(dVxAZAJmIb(H)Md=ce}-%78b=i7vXS4#tae z)9Sa*;=2ttX7$)|kGtJTF@5YcM1}{YM|In*ulN%UT)6CSHnF!m`D6%>d{R>s_{}D` zUOj|R^-DIe*|=Ptyg&OOb^mq@Q|tJEtGHJiajnHyr=-MQtabe zWL=5Z`x1R1x;i+r2aD7!h@|-zd_YXs>GR)>&w4EnrB?@=ocx+;}PKx%(!dQbI9KKm2&N$Q=K`t9w% zv{P_gTNn103|7!iI%}7f;x_y#$!+*kg4^)N1h=876WaZSsyL1|dM6mDVZ(5g2=k>` zas#Wq_pq?pEO&@Fpmzc+iL`6%C(1SUlLIQ|6#J2Iiv8%o!6!D$TN2u|8;40?;&wYk zhPT}xz11JPBd0FJL*vU5jN=8Z4M~obx8+#*Ovn8&~$Bbc1*k3c|WyZxP*|Bcu z?wCfE$avjRf;3INfN&^=jPtyRhei5OY`=47T%T$E|)FJ9z=O;8tb5 z5w|{??YQ;T3e=#t=6(hHQ-UY$rvy)$>$k(bd(V@+d(Tnw-R-~64Cn;FxN5lqe7;x? z0jn6QA?lEWQn&30(h2qx;RJ)uG<&I~J#)_~&)jp=<%D2MEp3Y=8IY^NA|js9oVkb# zkDg){F~OpPd=Zp)qRVa5cK62T*2$+g-*BJC@zEt4@cf+$74*i-+b+Ze9ML;;xW6uq2N(j9?`bV^t2Cm+xBsNW7fg`peyR+li;(OvF{Rrh!?>9h#W$+1bn?5ma(26Z>q*sp5xRSfH4cgJTSNt9gBTXR}Dg_;< zgay>gq~wqBj0m~vA3@KJxZpJu!RK)%_;rH$7!=V6T@lhV$mR{FTIL91`UTeAWT0{m z&S8kl3<+UY@9=I{1;f>NbQUvA*)q!&G*UCBY5~e6X)eLzYBDR)%e4E_0dz;iT$Hg@ zbuVX%=x=R7O?C7jO~;)Dw$NwXe{7e#4dn~)oWczoKxsAq)(Z>iP1O&4u1;takdni- zL|0S>*KiwVZgIQ4>>+*^R4QTlcPbU*Ce4&1BEi`*!lmirrnwZfUH6y!76+dtZ~{h@ zhP^|fA~fWPBT7TUE?|F3ZbF@8$s`CVk*c}m6Q(LhN{LjZ?z1v%JJT|lG%ql9^iiC$ zQ2bLqy zOkR!+aU5slB)~C`kr<8U?)wzk1dR~@X z-+>=LJ4>kP-k$M{)dhaIhBeTk1n9XNxP9Yy;Gf7L)kpCDS>32V!4tb!HBWPcr+2Yx z9yAopB5=k>Hr2c!r#>`B;)xw~fO&3Vgadx!-Hl!Q4sjSbk>V+&yQ9v#@$L!loQDqO zDYMh%1P|Ob0%5Df?jyn;8Z`sHxXW0_vGpVeO+PFM6yuIsjA_VMQU$ZL4o z)@{comrXH9jJO4f_KOzC?1?;27LD{+$1D1kvA)zley^HU`$-_(*1h82h^GSoU%Rrq zN63K1G%ja7zb#s>UezT(rX|YRbnzCWRy{uWRs@r&9|qQmcs)l~wW9`qb}wB1>|EJ= z?p)b?F2a5c0y3Ws6Vp}Mn_IAC1rSqY>6on4`(OgKV0_Z3!coMcbv4{yE5K(nLanbR z+R1!*&8nFR#Qr+MRbRQ<0=VF-5BI-z#mWQAKYCDkzEB@3|LQ{pyzqd7G85y*-(fd; z24d~NS5Wuzw*7Q6O0NeE+#=BGJ-;=!I%{6?TbyeX`3WQY@ET6fqVz?}@ppTMMNX^N z?=O`>=d>9M0Kz~$znm6aL)DDn_5+LDe%Q1{w1P!Wt8u;}+WHk72=;75K*1|Hknl;y zfrM9bAc>rV;%zLa^;qDvkcp|p1AQ0ex&jG7$qFbZU$nzev$avaI*2pVspG);wHo-G zf$N!F=(PO3y#B2kirQ^tzB~1QtIAK@9dud!qdey}Bm38BidFIOZPsox@y(U4y&Abl zy2UPS*m~*GiPh0?l-|g>P^4}%_wlX8-YsMzE6YYE-?U2<#P>y0*1UV7+>j*EWB3eh z=T_qL+-cD)%i78k@Dzl*J~iR4PeHh=qB1$&b+pv>%M>7fzh`q~D3zmU2WI###Z!yt zyMbSw7Is@KAKx!8PDEVaZB?&w+hIOW%_)xvFWS#HZ8Oe7)ujH4RcU%Qt#IQu`8@Mj z0+8vu@5(nOePS+zcjda+55h@T7Vnr%lG{%7IH4U+;rNkHOF0eKjMH-NOjZr&?VFNM z-+KV)B*jy^Z|mKr*#p4HfS2+i@>I@^gl9HX1m|{V2+i;A7rsB6Dx6=7VR^fkbf$MN z+wX$`n>35P)KlmO8(3>L4>qeQKtfX~GE=&fX~-pzl^0M#kj#jsK-2yNBpdA|_lFik zlnoS&YA84R!q_lU*p7PWs_PwF$1k_>EVtS(;%Zpe_WeAdT0+@>6nNQ!BT`xE;kL_ zoFPAH!rK-DuOG+@wPFj9yr{im`!@F1Us8!RRJi1631;OOswYnAw^P@X5NVnMFGI5H zg-yI0R}>=oy836kEab&F-JJ*4?RPKx`;2G#%CkNN@wq1J#jc)US1*@k->We>0n^DF zi=}+Ke4^HEi`A-X))QM_?_4# zNgPP(nh;sjfyN{*3f=lza@>luUT^mN7MLaXeNnZNuFpn;)%a73vIx6j2 zYzKuw3cQN_5y-aKlsAy*AU=p1hhEqFsIjVkhzp|I^FM zph3(>Nm+|CocDDx+^|I^l2u^1EjKhPLYZnc-2vjT%@!FZGQnB)0H(x@!zW06m{nhk zgK<^%Oa2~Mv&V{(&Z5+rI2<;V&Z8<2UKF7;6qz)q4uwg@8G~b$Gcof+^vUN(vbB8k zYVroT|2X$_9pa70$MMWNaVOB1MYp_VM!rrDWIlX2xx6jdg!%IPt+<3zZ25D=+`bwQ z?!OTl)0FnU0boHOh(^0*B%#SrQrDFW(lE!o!8s|L9okU>z5F|NaNi!6rgZOFsfwLO zRI=hZ@k+YWMB-(KI?jMrPV#HJ4UztOMx?S>!z5An)9}sJ9vlM*r*y{Ns$u8U<;LipDbMj*f|G znAE6=F(!a+wi*RsrLt(ULZMtbq(+4pm#bE(j7yAdKg|3a;YSp=Y;}r4%;U|!%v=@c zWUhW?a1y)eFoV@`3&G}Tg4L8jbpPBUIHFmMCK2`TgJk&gd86nMeJyM4?-Nw5bHi{G zEtXr06}f5v+fwY^J1rA|YNjGYPzASrCd@}kj+i}tF9+Dxa*wkhCgFwl@pW_$hV<)( z-L$#t$dR3>jl!>iOL)#n2_ia87YRhi%Vg=A_;=POB0>(^s@h=4;Fj1K2@s$jSKf`-jQHqMGrhg!m3H zuLwk^=^25jcbzojfX};Ic9c1bD*h@Yrw076)f^G|OO`DxmRB9GloPFKGT z@mMB25-Tt#>-~tFz zH>Wf_%yUH{OQKV#g*-)BxADg;j1A|v3W&_AaDDROeXffb$e-1aS6~edL8FBO$O8k9vsM;;^H+ z_o3+$tlcHWav*t!S+T<$ zhdmAOvHwZZ8=D6xn_Ef%=P8m2;QWTj{PxgN@$r}>9Un{r#dAvwp=FBH5@-oz-Fw(w zEsDq<=92>{jqt-5Q7%!_?Wh=0Snk7z6{C&8B>CAOA~en|F$e!CqKe?}WSM+e@tDph zNyfCMiJDs;Bf?WeK_g7(?tEB*V0cWD4F)KQ>bWI`QZz+)Nfd$XsW~xRhb9$XNhL2|MR(*GxFRppnFL)aG7!r0x?=+{K44DJE^>UAm_2+8iKJ?#;ea zbE%lLM~hJr$TXa;2%iGCxWgkhaQ{1V1f!6qt(zF6G{()oo}xreT3f?Jk@=!?Qu<8| z0SZaCLJ;GWi_BGm;_YqGmka&HP!vdW{qR>k8Wfo%I;f1?=|tSAl{rF&UckeH&BrE* zig5PuuSCgw>~d%eWj_B(2qaL)H=9wP#+skgI3kZPl;T}K%_DT=HFi@QEl#f@Fr~se!QJ+GO`v4Bm zPyC>jVwgsr`>|>fkN)U7;OQUx6aD~@s$*peSa`1j*|jdzyHxH|L8=zKMZa*L53=fL zK+cmwT1_Gk3&pCb=Oe~y@kfS|>UwZf9~{bPVfTSt$y?wr5@8KAm(jM+YSr#3Iy7~!wWu`ly9$DI}uUr zzLyO52VNE<_^7D&s$++nY~Zz04NhhHfzaF+AT=;2Gm#IA&X?l6fEqNL;5(?n#11F| zq0AZ%7733~0#xETOi+B{nHb#HVN;*81h}Q9!tgP)Qy4&0@E0&UV=5uZ7%=eG#dsS& zVuAwr$R+;({CDyW7XsdTXww4^uWbjw|ChV~jev)5b9&Ih9pM0QaiJ0gZawGeL5EjE z1K{C}IkXq#AyBU`|5l*iV{hN&a-Q%;9uL*MV74y~-?ehxP6#s@_JkYCcz4w88TWPa z@T;Yu^YG0fl4R?O2tqRU+^It{as`I$4%~r2I`dyib-MEIc90!e0r^N**z>ARXUK&E znl2b2j!}lZ%j(kRN5GTaApyxqr}VR~PS<20Hi-Zc?}{K1+;+H#1mk{5WQd4M1ex&T zvJNuA$Wsy-5M+oT;J-=hbm|39k{uy&aY%>cUdZj3j0cP;p&QLb>LKwcE~<)nL>q~T z6Rd=wfWN2f^o<5(k)4iVIY@urE4)ruZm1F23mQLybQpTZ*XcVDKNH|^<1bF`uFvOZ z6JLP5qj+rC60Zik0~QZGpe2YN{$kP$y*unmHgEv`Pq-J;@AzUnG4yzM5#N`_PF5Ew zJJ;Z;<|4YWO*lSWB<_Aw59$^<`{dyH+9F{a{m(z}leRy6|NT+miRJfY$6pHI5dJvy z;;H7h<e^iRk3R+@jXw#h#q+uP%x#Z%W;)uw#e@<$=H9$FujKZEb!WVdF_ zj9+ve^%J}}{S3S~{mi^L{S3S~4aiG=b=qc0-pkVx$BYOCxhD+dRQ%?ysCQ@`oe>B- zIfgVyocNI}nJN3}pY}KhhJ9sa%SIX!8M9}{FDV8mh@Y+d=@K7|?qf1lDdc&jt7`dC zaFEeb7AyHP`kW)gIVTsl-;T(~y-)6P1i5TMxX2-M%)<#ICV?IzmoEsbIYIK?F>5rw z*|H(UV<@A9`<>ROt@T~Nq zXNMq38j;jUqi4W=RTfS{BnY!|5+XsyT7gIqCt3uJ1Tl3m%Lyy;A~S3&%KL8Dhbn*` zzd)v;%OQCL!_7nV2!<`?<3P0i=EjY z*7xHh4NMv5P;lc$Vca-a)lXI{z4Z|z^#@?p|6r{8A8@N)Lz-gU0}kX_`QqEl^S9RT zcjfS@?LJ!H-WTgqf57>hb8)v>l^w@95?9KrTvm*}SKD@Z%jeCyt%uv@4Rtj5XPHb$aEb81Afhg)j}kh2!p-@S%_{!fjXHRqd`<$6etRnd-U2UB?7J zWVCoFhGDD-Ff1eBJ+|TH=_mQA;*#rKv)zSnvvd6~dRcMWAP@(C6HOkRPf=?R9Y(gDIoR z5~(Y1dr?gnxO^p^FNGN@tR`b1}g(;jy^%;o-Zk)esU1XQR$e0(;$+-d&Yl)S`N$s*NV)6{{Yxn&wK(pS9)c z&B~C?1z(_-))UidJGw+@lEFCfMPNBv&-!=m@PGQYk#VUU_F2O=JJpJV?Jqx8+pS!k z;pcLA!v=AE#mM>#f}ughMb(?Q6LHmZ)Hkv(IVV{^J~TsBUoN|9JJ=|BT?TL(SB^xy zUerbNkpsLe>l?D)5v?HEMe?ykAKw8qU}%W>P0!vF_w?iJKl)oHg0koAJf=#95qur( zstGHp2LtKEv(ysDF<0}uLS4>($(E0MdS>g-ul z7Q8F&s&%1foAH-goL{FbGUCDJ{8MI-Rm0$xyeL+`4#QS*j~AWR6@SIB z?Ck6e9!<)K5>vluC*prj>iXBVH#ahvOa-FV>UB}oZxpVVLo3*D+1I?E>ZV#USr|xf z+I7{O?1ozlfe*#$Z6QMB{=Q>E=r2l5`p8{@I{$RCTUG7(ZrJVyDM|~}+v;<hAtc#n|@h^Rg_}=a?*<4}IDF!Yb~%(kl6# zO)yLrPVxJ$+7#XW+oEdJT^VXTM{17ad&FGc%@K2j9LihvnR^7r`H~GawQH1vqF`ga zyLT1U@bBf0Pq+pLTO1?E4^6+@@~M+Ej(0|T z-!qw>H)>G(MJG3mwW?H$R4qk73NP;2)N{owAi*qP%J7w2?b$7naJ@R&eXi+Ed@3Gtz%hGrckuu2Dx`y4uoG>crSd3*M8a7p^)r|i`^qBBtMN|lf{~K8dGg=?4Zpu)76}6)rV&~xysAux zR~2`)(e;?pyemHm^@aOq@%OJ~z2cr6_zf~==duo!{JC-Lf9|%k4x1%&0=Dz4}}UqmnI^pYMq}d>C;rNAsbnn9)bn zddH1`n_^cF%o^?FEy1Az3!vKoSzB~1Ws5lY;EwBF=eGVEcX;v1tCRN>*S6N-{RWVab~4&+otDywHm3p@Mc%P*bS-+q*n&} zx>Q!ZJ2!&4kKE~cXA2n_a7BZ6@iX#D8tA`K0T8&yvoI@pPQ!?+fgsvtkA1wd&nd0y zI_ntOYC{|y&xlmoaWR3EbI>#cR(W?V>_*f*i#hSiVwZ;(a_p87E2rG|N#_s2q0m`q zaAKlI=g8UML5`jh&<5s86z$0AWjYBfvkMbbE1OA{=%fTAw8l2Z97%5im$dX&zqZmS zGxNW_O++2KQAp|tHwRQmj9XGBsUjuLn;*i>z8&4iNdQK7^SBmri}Q7Ez}i-k{ULge z(#thJl|IQw*u`Zc08n|_32Q`4d@-jg2o-ej^=rsJ!h=-DA$Yrd#{yd!uO~lVFg}rV z6K><#S(8qaXuIvZRMT&ZYDCTg5)4u~=!xr=KwvU6F=*jKItqmxK8i3N5GOVUYS|y0 zpJULLz9{5{ZutcufJ+r(W0fpZ!CZDR2*??c8+J|`x$a_9qiL`;!$pD-|vybk=C-l-OC7Ac!m$y~DV)IRg zt!9IBP4bfcyeNwv50Asm@GY1trdo~8bdz9sD;)u%^qtV6DDUB$$!4!X<2$v>>d1R@ z@E&MGUNHr=dOl%gp%#>~$lt+7^E?n!U6y4iKEfNUW~`87eRNr zV1jE=F~+6c<&A9xWvGM<42f;rRs6^*G2mGtJCThpt<)x7vBoCdWsGAE?sa0KI?O!E zv0G7RIkRGxc$h=6h-LibNm7Q#JGOkv!|ZSySHa&Wo4 zU6c9FlH4T{Hk=n*DN z5wrs$%;ntalW&e#FPm+4^3Wie6SOBlruHh$quuQ`TMF&gMkklcTeU5W9U_WaF?KWj zbJ^?Szt_-=VYjc!dk})S&pGe;xaTvP#GQ0!&Vl>j1JC3;0wIX|m$cK4=a{!JmgR{% z$g+SRdS53j*z&SnKAHQ-Isli|1dDA|phe z5D_9MFx>Ux$h2YAYFU;>W;1;w>& ze4zN*ywwM8G@@O$Tc?XLmS6;Fwq68?Fw$fc0_-3eWz778{RQF|bbqv6jRhs)qmHnu z7Adns%>HnJVDm@PLcBJ+E2c>aN_$a#?PNWB5r1;%w{U{;df4VdM9_ zKiP_e8ZfwK{HOy-&KfohYBLu(khI1CYOTd-;na+MhM7 zYrEF?UDrR~md&Y5^UE(hTWzp16AmLT(6JBvrXib3c&xn1IgS?UmfS9S4#HiYn{b!s zFx=($lk`XzA+!lWE;0aBfAR#L^Dx1xDyXDm@FcO~cUgzB=`)WL!x>Q-{T}k(X*1B> zbi(L7Qh=&LbU5{N)J6O|71YkhR_uT~fg8vHsvfn8SIybrYgR?wHp1?|mRFqBHBQzS z0O(p(PiT{vrg39i7cIv>teMo6XUYf7*Vp@U!|VVBgW=X znumtwkTt8%Eo5;cNx=Wm)#u%d9j7gF!6@b+V5BIR>Dr+hcvSE2D+SmjOTxp(T{|CY ztnHd?PMRhN_G+Eqlbs_{$qYr1f~Lj+v^qUAD8>6)Aehd0S>Giv`*cef4$&|pXH6Krl?I7|_<-{}qyEQzG0Sh-}N?u~*rz-^7Ji^>r zR0794StlZRi)}A(wD|4?zhGf|97Zp_@jHxua?ksK71?fH+Y@1bv}-z+)xvjExD~bQ z-}7Fmik1(<`eye`_%n!7yKTU?5vbv~!UKMeP!$OUb#gzq+-=^L!f_q@UM1i%_BLg} zod_&s2-0ysX<)V`Z-W`_LI}wBRCR>R9dOEsfv{|kmWE^5W*7{x9{SLHAD9i-vlHwd z&?z4F67rnso&w94-5Wl6!0v($H{D-oa>P8pLKV}!qavAEp&g|1l|td=lz+nKv(*>q z^!ph&{eCu1zn_8APr^_3`x$idTz?X^d7sH<;3IxAY_(Jbs8=F==aI$MJyti>&)Pst zTaCSDmP5#ra7Kb21!|IsE&Id`Y@f)ar8_{RP+BlqD}^5yR$J}8?}0S{f<;hp)&OUC zfd#-80ye~d&K%;Kq8m<&ZuM%TvNV_{dqf|n;%8PPcHCJ8H^wQIhfx+w8aNgJE!CJd9D6m^7Rl(X=MRqHhF4b=`ez)sO`mq+U z#BL*UnK&xJKj~V&eyAMt`gtZt@^+~uR=dcPmt8D#8GBzfv+U1I|Ce})kmRQFzH@xL z)`QQGlCP?{1(#%j;;jAE*CM<8RkI3|vZ?8ZKaKVS|69&)Kl};W58mXJZcAYEUY=bs zPLQbwOJgGCPG;?Rv@B$*+>XD!V}9+LZTpE|BLH7InUS=*E5S#Tv>gEAs`hBt6fmu6 z&*pDtl{~tu+S=qnZ`$F}phO^J1e^9z&-tQ(ZTWQlXan-{_xDUl8`c|F&04n_9(6id zv{k}Zs@=^^wdBt=Ji2Co%Hz38reS_`D>l0Di&z8sTLAE*e4y{$0J2X1$YzgBW&4Oner!ip$gkR-cvR}V&*E+rlkfP2S7lru z+Ln>o-%Avj^h?dz{&qL47>*F#QHKC1 zB(h;s{hMB}qg7=JBqG2jN}#`}(wpBUw;<&&3NwI!f5qIgOcL=cu6y-X$d)4~|Li}3 zS0>cJ6e?1#+o3W##DvXXI3baBFme%gEvIw~n~n8POhOs1z-ryJSq+vdeR6sWt<*U! z#xa@Rif8vhGXfIzwOliLFheDS!OgDEslV9`In~Yju+RN6bf&R&(A803%V(Uj{3(O7 z;c-UguJ|-F0|0>(?TIr9qgs-q@T6u14K^?xoMref)Djr>UZ`i@wfix&0e3Y5G(T&4 z{-_g=NS~ZIBdmjG-mGqK6K7_NFfgYwMKn$idMSn=Hu=0d--Vy>e!7o4$?rKQAp+T) zNR4n9RMVV8aa0}8!@Rg=rRJd9Q%O1wgzZ$;`f1psKAW5&AIN$PCqvl@UT@M2)&;1T zEZGpyGzRW{W|~XtRJF(q$D~+hb8lClk$enYlYw>?5QL;&@}EHPE80>_tTR!QoYl#FKK)LWcHLZfE1wk za1w=->?g(mCCIttmmAy1>VdV=xP_wGHAJ-uuCC6feou9=U#N6TFemxl)36QJ?HS!2ANa zxu@nqP$8imPWvok_S3%*F(4l05UOVmlVeV9T`|+|#j)Sl%_Yv&F}57gi6!vf(`RMl z9S$7&GB#pK;q=XM%4?H>P^W(l*DQ*E676Il*S`YcHG+H+)xj9GFG~5`4w$pXBn0Gf zMLAE3Bnn|o@G?mdSTx|jg61u4ywhmKA{oC9Ws4bXCRQr)Ac3x@Vp49(PChIz%&qt< zktR$bSqu(KljJ}Jm449;@(Kif#qTkynyGAB`4lH{3JSJ|Rud8ssCtYp1>jviv?x$nyIX&_!n+c57)+?(IE;sqm_V?(ikl zRQI^7nt}U#(Rvs>>TX}S5(X)B&o5pPgBZN?mrxUf>EHjOim}$%T|l}52En@*NR(o2 zkvoE9Io2ND7xWA47LmJyrg`87p-z24-Xk3EAqQ>~>L~`hQ)o{=cp-VeP?Zz63`fw& zUBeM^^kSi&IU~i`?L$=-xr1nCHF~+jE^}KmeIR6*%s2g%$T$5IB#8)w%hGAFpHgYD zBanj;m$18(OVt{Kgjm!Bq|lH+AEnU!Y#X6KkYoZnegK+}3wh7mMuZB(OTYq;Uh**s z-Wj*C3B`0JU_`{p_$Y-hpxZbFBZv}^f>9qnCdd_byL&&zC819{Xu$6ky#{ahi-k%g z^bC%){cinx^md=#;eA4f))}VXC3Y3x?i4w-O_`>|AsaF)!E5}^Bm|BQk(?Rv37tGN zTO_XVIfqe;BzqwFlxGn)9kLE97HO77%2~i7Xpbbhu@_;pCDq5fh#EL)-pxhC5K40L zEyDIvqC0F6GprK*LW`IMmf~|+1nsmu7sevduFKivFA}Z5w46F3NdkY-N9WS{<^6}3 zB~K=Bd~{j;gZ=lnYE`x`%VoPNc{aeBw{E-BVq08Sbv4|p8n2o_jmzD2uO9Sx-FBOT zzcsKa)+NtNf6TiSZwhgr0M9xhe=wEce}KeY{HNNp@Sm?`wgmTC1Na%#2CzY8@Kx94 z4wA6!jXtjQK&CriHe(f92 z3^0{=3~wPZz8t7zp)lZ3V4YUAtM1C~Hvv1b>a>JuqjZh5yd)TGK&4CYQ?(jylbnsW zWwpMYdarrJo1^EV92@hf z&#!sH8a^Gp+ifI@Ny-IVzAT%TaXYPT3YP<1^9GN*h9sspxZmA9dm>UCh`*lbzn(o) znGV1JaJz7EFpE}V-+$YdYYyX6dA;@X=Zqa2xNe7PY0SuBC?=kXAx38665&O~?z6O| zc0|ll$A(C^qAwR7`%M%BzWvUb`)|fYdw1x*nAYWh#P&@s>c6Cl8tB!DkITK{5>N4=~6%1VY|Dk@Zj{&lemB` zK!7*;pb5H9B=6YUT7pcBI`-OGp%bIkn$G$4b{APOl$^!X&y=N3i2WD!66~gt+Ba2` z{dy9@#k3gcFcL{cXY;gI50tGCxFy}8n)+& zPz9quVnhqRbPRnH<7pspC)gkDvsK(%ffsr$ea{72CflK>fR8Pwu|FL;Ih~=8M0=<0 z=XT!=V`vmx)o){n06X1g~Jtw=MAg*~HsFA3Q$*S!pIweLtIg`@n zUb_v5k27rEV_k3%N}38OgrFWgEHih_6n4s1F8(vJRH2p0R2MC42+hq`8CR`B-tup^ zjaU~7%j8(SCt&UdGYj})FBsM=V|}yhS?oer4cN1*%y8O;^PQe-!Jr#waZh&kn=RJ} z981@*$(lgYuz5idnl`t0#S+ZyZ$(Pym%GjOv~6yxwa8e$EcK7ep(~4xKH!kQPTLL7 zL2FGL#d4?Q!?bn5tGC{EkD7Rjo|r16}0oY8eTlwbvY3RcjkW(9o;S5VnD zef>20FyTq(vvd8^)uY&KwU_gYPd^H6w_n%a0kk=kHE^phbRz1%C&0pMXyc~6@Fns%P*8KT8 z{p3kT!Ck6-L2#doHe}W*?>@WXNw?l@m{Pv3>H)v6M<#7v*1J`?8b|&V2PTp{dS;mY zeZywtp<2Ey>*9U}fE!nX!@ew6;bYgr^gsav!8?WklYHtaKrfTNi#u%6_pdvG(D0tX z0+QHWqn-m_|D)Psy#a`Bm&5{<*zq-6Qr5zs&f(VLOi~=yav0^x#)aq#o07(rF*P^- zZVpg^bSIOejjU+H4F8^)KN+T7ZLNl>=8d(6 zrdm0jOJlAEIL!mx%O1fCHP|sB5o=njk$kZW{18`qE*V>~Aw-rYI$Y^jq zZmVU?IjeKV--)^_P=&+yOd_C|!HI1AR8+gzdULK`l*6uTPI_sIdfT`j+QX5^CQucH z0`1%sP@q1xxlGz{fQ^Iunorr?l*7={U~p*-wv`(1eyp525A#u7rl6#G=U0(c0Go2Ys(COZjlt$^^5Mo) z;Jx>p>*_mnv73vuz|n4fgYI?@uI+RO;DPIXyl875p}ca>PcUaZR^+t`IOfBZ+zZ~c zlRi|%g@QZmsbae|Fme{QCm&Y0P-i)ob6=ldxh{V79dY#A^0J08dVKZNIvE1)4EwUP zcjWX6JGnx);ZE#MX`4?KSa3LM=yI^Bd0c0h-L9kt&zz8SJFE(Xqo#w(2UrVs1X zwVv$`iKC>kGklNXcO-2C2;4q(>JSA*4;xXHg6r>sRA^%1S_CwmoLv`@L6CH``FnYN zvRhT-y|1p=-kyu~?rbHWTxLs!yr89isE52q%Im25 zqeYwz%qqe`8eSkR`R70@K_1dfe8<~yh`qYVYJVKBrCQ%*A5;O-h#Lmaz|rk9b9DO* z9NlXDO+LE?3ZHrT4vvhN#R!}erb7#Wd(Hp`TH@(OrxcMxYHx089!mWet3v>j=q~4_ z;eOX|*}5ss>~7aI{EU?E%Idb)k7u)%-A)8tpqQY~2ySKr6w=(pEJB7KX zu?y9nyHgM29(79iALU;*IW|l}UE$oD;Z2jTzsBx|h^Pam-y&LgS>bOqgUZXIuK7`? z_L;q9d%nyjzZG4@(+T8WTXDw~0Tv`Rg-mlF4_9&;14$x+WwXQiZrJVyI4Q*LQu8>I@`4~WN&K#C{ecRshIGN# zs>Ni~$~s$Z=3 zGF?5F?(!BHR8DmO!daq{;Mi>vG~^w!0*^LqhToT0pC;x9)T*snnj?9zbv-df#%EP~ z6_zO$ZVI-?`7P$9J{I@yld2V;qt)W_7L@tHI&fRJ#|eb#E9cd4rxEd1_?&1Z9gUD^ zIlJIF@XC4(+-*g@0X{2cc`WlVL;V7WHmQQ6VQpiS$$F&CvOwQXp%wzq3hRrP8&(?i$)D2VN zSV0)-BMil`KUr_@n6M08#|_S~zdIoss&EX{&}jnfa1FbED`-PUbh)7$1`rJ3fFIuh zRHoIXau*i=a0i{^TiCgReK!XV3;Pf1-b1%>DOxt#DpEV>DV4I;ijED{dqi{rRjgw#FiBU+@42+}*V2o08qFJuuP zO^MEfMf$J{Y~mN;F`2OQU8D`%(AIMi8P+KquSMeEC-(u1(7X^bL>G}+BWOx3Vv|bD z6j&rpJLzGY!)>F(Hu(<*rCRcIcRX;@`d}W}J31YT?Gu%v)2Srh65y5(&*a|?yP~#= z&*l9x2BIrh{OkX}yszzUE4LB;KEL8dJEtp6G;(4mnO51XpTzNWvW;JkUuJra$5mwM zI#we~s;(4I>eYXL2!Jmj3Eq2UyVL1*dUj*+k{}3zAP53re;hbkJ`Wr%pNEc?&qGH` zRq%Q^lzKBFDe>8+jR8reke(Fz!RLHF9}V+2qlI<6PJDK0YObfB^Rn*KHEhPV;m{F; zVeJZe+McMUS18sj#HzsF*Kd^*eL3+7ax_-w~%zp2S^Znw7dZ4MsOarxeYaa-2a%=s_V)LO?ppkx4ozC&kzR=zI51DMAjX5aRKlqmjn1mComfH^&jXit6G&& z#P%5CRU)F-N+Vn6HFa^0T85k@37`2bFRLnr5aSrvK*JISAgEKdTK6MZs(;Ewzs*FH zy=v&h*dXbjly3dLKmVA&8BfJ5Q|V?PSJrQ}H<}!dChzmfNBKdJbj!o}<$4W%xb6>* zbMQgFYrDO5vK{o(+rc{NunN8>ta<)4jeH`hxC+-L$>A)&APTG_}7?dpY zNJ!efY7MKMZBzN^^~f$U*HKmU>wH!YHVBQMk3K89B~~y)WvOQQhvXaFGVo&baZ(+b zZIXPB%a(N_ox(ks=VE=X(PXH~${)9YSG>plFKaX`Wl+WpWzKld>+>X8RZibM$og5^ zf6p~a`0v#oNe#5>doD?61&6DLz-xW~J=QAazxSY+tw*v5v(n>ceI6}Iw&K0Dk`&(M zT-%qiTyt6yP%4SBuCHG|I5@1K#g$#&ml0w;E~q3#sTtwdA_VTSZ>ArY#j)C}Fbn=# zy3d>b@bt&ETO2-!m@Q-iuF0?oD3$Yc?|fpF<5-X1D#uY}c=}DOy?GMJHK#QVs18LQ zZgNWowBG#I8IWKX{1pYspj1WY$8uY-QV_eU>+eHMOOz?}aI@@Vy7opPVJcW||0#31 zexgS^vX6WSYtEn7HbIrOv#UNdgZcwpZ`$h&@K;s_>W_8ZP1bLm8tvWZ^Nw#$vUy%> z@b{SMXhZ&2U*z*(6nEOErIjFGCOzDqeCL&$Mp?e+`b{j~L4ewt(-byOkNM%IDMER@ zX-cCkUN8QtC$8Ei&Tf9k7c2QdOUASQ zESCVQOT-7|fwIA^%@TD7m%i2i4Q{xyeuGP`=E(IZ)*L(c>-oRI0eVDh(!uj%`oBR4Go;#~7SEa2a)4@E zDz@&E#{Zr>QA!P*E2aKg=1^&XI=9N|kca0rLLO|L(vXL+mK^e6Yn8iemRAar2A8^S zmRAas7gxA(R@U?3NiLnzr#KOGqLt+2DSZ<1M@J5s-dIu{CY(PFr^zm$iLcSD3GSfs z$EaoH(V$-42yTg+XnCc8E|SY=^v!b|jlO#BqcL1Ae8oT$E}Ej7|74)a^F*M@^Dr=k z--)LKO`fL$O+HZ^qsnC^O8K5`-t1D&!u;ZLf<8~Kz;)2DkpQ7 z$-3eWOeVhPj^&X&_6lc&j;whCbl)%@<~dJ7mu?2CpvP&{V;^-9e&q}$Mv!ux_h+Nd zI3nv7?||aKY*ikQOJ4enw*@nj+(+3dKIpPqo^uSUZ5lE{;t4Onq%2T? zp-^(Bm7?2ZVH}>px}_UO*$Jjwv8|M8{oRU9r&LkyR_{r5qmcG?4s8t5WHL3G-rr3= zPsyJeY#&QC4JT8GKcZDNq#xcM_9BQLdJ#qsy$GX+UQjoma)4%L+m+Zz5Xi7Qb_m&s zm!RC#hqeU|8o>gMI4h!_cnR$vLoZ0=1q%{+VS_|o_(39yi0g!i5Y6xK^z_?dPq^&R#QVgUTLMk=Wa@7}h1CNtq;&pp2(JIL|i zD!&#}`Q7Vrr(ibi1XQ_Jx~U34T&l%golW9ErF1Bs{zy4yC%*Yzd`c^SeJz z>-u)HHYv~U2gGU}QbkyWYC!!Zv9`Eas7|V4CydN|aA{ex-bR)LYfZ3gCQ)-;FQAd# z#O`G255}<$OGx986~A9~G=l(zwdN*loF3Uj+{=mRt}_K`bOVjL{tUokyQ4oD^jW%K z78a>m_Xg1+;8z(1+eNDfqbt`Q4nM%GH<}s(aBaa_ceRxX*BUEw;RartQ2x2@;ROh3 zkD&CIQ!6|pK*K5KFcZ0J@+Eqo7LFY!xttJL4jIgU8RW@BLcpnuoN|`c)N2=2CHLluhozkneu$Fw)_JR+^vu#A>!S#h~=SY0@ z+lDp|UhG*u*ay%4!OH#BBHnVm2n=gX|4rU;yhz+}yztG2Tt7_TaJ)#}a0t+tYQX`< zrY8e2(w`!b(N^hMj1%@MYcZBLf60I;(V6Xg-PF8`+e$ah4w7)~CYeND|J_pNsbh{b zc1ZQ7kx(#x)xM{HH`%8)Qf4rmbu*G+>QBJXFsUszO#2;tCBm9-n#}kG5i%d}2bBID zG$bkm;q@I3LnEo$ap(@3ZVnhRJE3Z^S=UM!n+LC_Lj}$=_Prhq;E81NY4g8KMwIN) zFI^5tiy|mmOfN^{u~!IIl8;K-Plm_&{PSqwn;74Wm${nx#nrB{{`;Tj)0+Zf@mbkU ze{hu_FQ)U*T)ERP7Jk8WQcTA|rFp-&I?7?vbuKvn^YO87Bh4?CA3p{dyv<=8L@?pQ z!F;5qE*?y1Z&kl#@CSRxlm4u@nl7SpVc0U|aK*ft=lxH!>1Yy6)UMjPC*ZH*7k{4* zcdmny#o)>>8IAMfFU2DFEB=u8hhs&K-Ct(;d~^-tABPoYhjU<$V6>QUH6Olx6O<}F zCMYRpN}HGltq;7P@B3f!`N=%@DfE8&(fhrZ4@do=1l|kwiuUux&2;|BD}$@xao?{O zS?b4Yu=wc{o}Ls0Jrq9WS#UwzQL%fyJQR5J-D+~N$fFA1 z*$O1|sC3JzY)Leh2dFFp& zGLXJI&$5F(Ecrbv@H=_Iz8FDBU%umC7%4U_FrTK*F)omX)XEaj$wU0GWyy#Vk;NFSsxMqpA6OCK#V zsq}>_WyE}D5mI84N-Sx#;KWkv8-{|DDq7kY(TT+`Tq%>Cv?MKNvGgQ{w8ZsRvc#0L-3q{8Py;qRr2(#SWZ zk#9=PrEWGQYHUf=*pjHRB@J>*qQ;gq@+}FaEoqcn(kQp2QHq^QqkJZf@|iTsXVNGo zgq}&AO9Ou<7E083CQ;*=*ttXvsh&g(aZO41JQo+Q$Zq0_mInS@qVIEwme0lJBA%X@ zGRJ3MNKq*#2bFjNN*6tii#Fq;7je;danV*>6eF=2Be5AHu^A(=8G{!pJ&TK;M@7Gn zE5#$+j7PW`H;jRA#$(=!$GjDfc`F{yRy^jdc!XOq5?k?jw&L+@#p4k=jK}jV9?!FQ zJkR3s#3($AJB$bTOel)S{45^xGoizH%yFG~$ifPUF?cR4Fo9)+H5U)?c}%_MF|D2p z4F$YBp@FtDkQijCqcfz@dxkUoVyto2Fc=%{x=#AY=1O(CQ`+%{I+O0aJv_!AV6L== zJvhV$cDl>uWPq-Bqe-F85M$o9`EfkG=#P&F(-}N{PQOmBMg`gY2I^e1$o3B2ss_E| z-J>6Ok9z9=j^7>ZtJ<3{ZI!pX-@iV6f6}9R`)_+E@Ah^NPEUG!$ExDf{8?P}{lUTE zo7X#k>h1n{cjxp(f$Z%Z?4RuZ`J_hUpN^sO{_f66Z};fv;7E0Pa`JxHZ@KyWN!;>i z7Y4A~dvo;e?H_m5PXp(j>ig)&*Y9=Pd@F9d|N7+JkGAO#2ggvfx2vkdwRVR{-np2M zh9C1rRr7UwKE8Lu@N#jK1u+RiurTa$7o1E6(PTpDm<4Q>nDzI|ihpB}T%PVS`c zRfY1Fe5Bg9NT~l<=RY(%A;@5F8-Ld>b8+*mT|PG0u{KEfBwju?QRo%M48!$%Ws@BV zBq(PZ84VV)E*Itto|W*C$Cn>J+l}KyDVQDG=hB+**7qK#=so1x#U@(s#9q0(qWZU!mhM96L+6^-1TsuQ8Cux zE^|eKCrQ?|BmDjNMXB&R^XVQUe2^Km>p7Ax(SN|8xf3Hcg35Z_GgpJbzQa;#d{h63 z^2zS!XTIU!D^oFt%N!jpne$@=w}oag^sUrcg9pL($=>)DDrUCS-eK{YCy>argqPgX zLW8FwlTmjo07pl?ShPrO3&GS+hxmbFryc+))q(2IEqmVVN&551dUy^0f?>XCKFV^& z?}p{jND?{5dPFN2+|@ICzy{~|OorW}vmVHeL+2b8NZfmVXVxwlW1aCibpwmWt-QSg^Dw8Q5}zqPd^zykJ5cK3uN&wiVu6$wik>{W?7)FdZ#Dp$o5i?y zh&9-W)=v(~Rk`87zKM#Aob_bPa7-lqBZc{gIf|9FJr-#x1MZ4R;}w`@P1stKa&_6J zA+PfAl!AL+s1%fR@{99b=k6C9WQM_JrcAU*9!qNqa%5TpA)0nnQe`TSBFE24V*WGh1J7+292&FMeAC5PZ;wen`)nzSd&p?KabZ_%>A=72crIua(!je)cG*x$edA%CTde4amr>3^1|zotX=~Hr&o!2+n?RO-+k8{{Gzz_g{p!q`5xF94VjC%eZaT!ySTt# zWY3Nr=fyvKgOv3Ges}Wi1YfB&vZn@zriHl&@R$FjeEkSioZz2JQl`KcfbB4$m;w3n zUsF{yz?|i)Mt^lDx6VaMYZGW;n-f0KL5DO~VMg$yr3|yL@9Z3eiVk_zKG>HsS}>#u zKQB#99n#M^PUJg$y?9htz+K^=b_$dY2Uo}zrSSXOgTh*;!_HkO<@Gw#rl}c0s|V~{ zu1wK{;ls#_Dl#^`UlhN$YK$g>Dzq~P?xXtzT;^sY1eA8#ivr9W(kHdb@70ri>>QqV zEsHZeC1gb8i7vJDdS_;Y$ePsG%aU75H;gy&feQhQjF^uC2p4O&6q6{~E1lh|Se56} zt^@^EcyNM(5om_7&OkM?_wbohHCK;@*zMO}6i~5Q1xe9t<`>E5<1)hP^X-ZVMRl_~ z@dv(x0(NxoeO=|B$6OyYm9rlL!j#j7-|Hp&bKw>mv1X;FX~@i2JZuNWTmU{SpY zW`hvPb0TNP04v10mIrT%99EUP_(~W!ErY?P_vs0eqP=Vk7z`&f5Q(y-h2_CboRMEc zTs&3}2l~Kr1nL`)XFK^ui?aQIq_;YQ04?dSbFfw^z!TA2RUnDp7f_FojF8DezrAzN z=Wma-e-g_Whkdo44NCahE8LBu08!a|9G3iQ?%=cg=&WZrD+7kM+GmB(*=xO@9oDNs zi_~Z@X88i+e(O6aZEAL#8V|oNmUv{3K;*~{T zU2ZvguDH)f%`~=c#5USx1m~PlS9?O*MKWUGrDw9p~E@G zeOa-t-+YK)5a{II&;Pb}bWDTYjrLevMwhW^5+qkbH2aw%X%w?Ttfb9eL16aPb&et& zWn1sP`Y&dq_BJT8ngl&P9=a`oqWKlOP7@0F;&@5hb4(l4tHgmJU+drdCm@)arO{u&?f3qog=gA~_ zZ{RO40vpG>-`<`=(k;~Rs~{yS?a+GA0Iw!ef(;F*#o`MIS|!yR-e&In?SpWe)4>tW zoqNrT0ouXT_W+YJ;){pv#7zj?v7#jb*gk>ooTi z6~~WFY|V7;3On&^nkq#h6DVcT+Aj8EijBoj1&hSJT0vEUgbi@Gw`((Nl;;CTE6xAK z>G;ZkT`&>PLBOk4t-KVtsSUG>$l-7_{KQj$na-_naw##1#t&15HQo}t8Ln2N58S|sQG90Zrgu8LSIouf&)*RELX!(Jvk=F3Mme0=Wqr%;AlU9~Tfk(b1W zs#3&N_JwwD z$c1X;;_JQ4WVgCHzuiU1TBrcQbjppcdN~m%xRZBE9TeSwy{PIab3+5aq$N$9zl4=u zB3J}M`N}$o_0X)vYwwqDrV*KHrI=nBw**42E*jh?Or}KBa=y{izof3Akh#2d`8|sm zfaM}@%A9+obyOm(SZ0gtv^e!JaW;+s+mFj$0NPBa!94Uxx~jd;lF}Ua<|0K?{ufns z{HvlAm-lv-We9LVT`WdXM26F0yhgkr36P~gA-uRLN}L7ePd>wx*7#6|FQ6AWphL0)dGEc!)Bz43wUfYg((u--zn_|jFXoH32z_M3vipUwAgN`Ds-GoL$sihZ$%h( z=&ou>_1cJgL-i}`G<|0ONhE32#G$HZWtrwV#TEBdb#mDe1?`F(ibUZ;3*A)Ei9bS5 zlQL9&1POhKfh49B!PsFMI&0C){6US;U@(>gJS{bMx9(#bHdp7krWUmB;R<@TUq@*m z1qL*Kwk>m`?RauwU*s|oJ64s3NlP@~U&6#}U}}!$&%HVdd2S|)gJOQ~M8%PP^WXNH zhglk_3JC6hlpOId8?$;${VL03@0D$CZ4mR44Td5G8e615RP<`icPaplTYLV-OgOWsAvrZJ9b2Ol(hFhDMcg!t#D-x|tw$nKIH_ zUU$fWG!K*+lMwXz(BJ4v?>WGASr2^AVn*4Bxslu)oQGe(;-mRg&Am27h$~vm?4#Rr zXd*7^T^Fk@>95e=D1|%Evf_m@G8LHezq~k87$!mCrTtXENu>gIuqqW7QgN1vL_oTp zd;&RnVhlKEi2(>r4ilrX?`oIQAmp@A`{N4B23mH4{hXiQQEG(u%e_Ss*D3EibnLde zs9ssv)%BHMVp^=%pUexxwh1&%Tse>`;b}1M3`%zq+%XtX@iy@!Ig40cBOu%6ofmRo z6b|9ohPKmoQa?A+I^}Xf(jY$wajkb2k`RAiF6r(WJ9#|dU29jfD`pwyNYvQ3v?=ux zWT`A!D!VGzpGV7?l`WA_zLL+|h9h?d_P!9{3B9&XCUlSQiaB4indKt2JcsgNOo~Nj z#k_b(qF8~168D;fnip-)+BR!e<{sGaIm@{{scOj+N0Lg%db286Rgsyqvnvxt)<*ek4@9$QIx$6fKEGLL*$a+d9AB&c-i zccMzvquFF&*N#gt*Qt*>a+zGNAKoZ0*xJ1_R9 zHKA*2V9i4!vz6^<>y;l4O;HR_n;D&Z%qN#MKoR$M;j?zaBsgD{jyMf2@276~q?XU& zp>>E+Xl?e;1B%bp19Wqr(6V~uh#<>T%y$}#=EmW&o4ly|kTtg^Gn)@Bo*g~8_$3U> z8<&1tY%05qwX5h>GiSxw`o-z*1xY;;LxQF&Q1QF8xdTX+@K)W%k(HLpSWTAQe0OYF z@S8p0g+6sU88PJZA;3yoWF|y?L|O2W(n*4bTg{pztc)ogm+zOH)~?68`+)f$JvXR` zohHyo8u$~HfW{%0hj#%_Tw}u3b{pdV^b;_GClyCh6p_y#S8DKHP)&e0>u-b#uW7Qp zFP$k^vbA`q?w7x@%tI@c>+~P7F2uu+SRyk%yR}o>nH_=InFfBTxz$-fDL`Z-8PWqW z31D2<$5si}M(?B;arpFts3m8ze>54y)~=;4;Zg>=Q_~fKNNC@oEkkg;gMP)YF*E$y z20dhbRsCD&ayhpjOm}T#$-1x=5~hZ{13&BNNGchX%InTnmTnUt9TA1;?_f2P;^qP) z4~4k}Y{t>bINuoK1*mcQ*J(X*`COkPSBSA`Clc|1J66Piu8x$}X&_}SfF-%xbpegX zn)Nc9qrSQ;K&*6At(Hjn_aL%BfKW8T@gF9g7{V}%cmc6BUE^L8=b8qpW&P5Hwmd$w z9C`yb)|E`LomoBm&N(v&q8aZLs(LW3^61j+>XR&o+~U_!=72vGUxv!U*)YT71~tOB zRw9E`veZL?pA2Uwto25~`w!+_!{@D6{l`*V&_?H>TUd*cspxN-DiOKM=v`}*KTjic zj)Hv=`(&3a-=3Y5FJq?Pe8`e7k^>L56L8$GdJDSu3lAUmq=ioFYxbHy8}}=$-2$ds z*%E_f>_jm^nXw2fHV{<^_kCG4Cw=s_g1CHZ zGIwgAs;kF8Kb&|g@$)tznq#K*WcK>ZIM2P*W=nJ~tDBNX|5=O-0 zE3y*G6I~c`7d{EQXGZ}t@btlc^~$ILSMuu{3;NA0Gr(@Nw%kxq4i))A^DaHB3y>$h zIeB7R3ja?dy4>k`c|0J#H@#z4U1D+lB@d&i<9GGanaRx59#YdhrfMNtQtJjO=rU&N z`caOBM?~2`o)%;bpmz+2U{w)^oRA1$Yr&CG`FI%?y);%oMVW9>!~O#6N9 zvA6DBfVlbZwM=b;s7+%$ZCUM_3l#&r4r7bwUz;9g?KURB^c zeaTPKcT&9Sv^Wd6;uxjZ(%cNW>QNp-dBgG4ONU66r*cWU8f?A(aAm`CXBZSA3V(*>ils_^{#+eV zyw!4=mI7Yqy52#yA2;8MBV7w}B5)A(q<)#mzZC$Si{jTg+)3+s7+-|@=QWxiRfMAD zOBtzH?R=gv;(K96Q838XN1DT8UzQEoi2l-Q>1&k~u12^GCDKK@4$Uj=feUNiDkQ!d zE4~CGYI+Zw$c>al_g)-WxaO2W(^6OH(qH*(Bf{4!Ugei{S5F z1$1b_)L`X`XIWL1)Fr8JCK<>JZ$8LB<-dv684!}#u1#G9t=g7Tr*grPrR<M&pJ#+dy!u zfp^S3Ua(;LJ8m(GaIZ*bEqJ3fIs+bZJ=TuOk@eTM++;HOgiGL;`^Q%LMG*9p>oET9 zjt8zJnQtj{A~;lP`1?F{6{zB^vkeOOTkmf%|@qRC;)5Xs$KY~(f;pjFS7qHsRUUK!jlq*ESVg;3m_ciSnQVfN zzdmQe%Db^Kz_Pr|GeINd;7Lv_FQIt66%U~E?-WT_qztC%fF{$nYg&~$(AYIs)MciX zKSm-+ufuvYe1_pegB(>_HkwBsPak2vAe;@=V!a5G@g9m)9PU!zB8&IJlY?i#<|3D6T#oPgjJnIv1$oJ)fJ{v6)@vPp+Ps$Od78T@k>Mf(P?EjqT{V~rG)^999`>5b%$7u?ZI}RmZ4PaS_6f#9YD%| z3M~y|7l)t}cPW9F=&lkoBf~)vjhHBEMxwtNwb|&IEnjm!5mw$A2!7SIv2nQXc^m&4 z=kn_6c?<6%>+13L7h517dsRpfmneWhyY2~ z>l09Pc1t^YnB(ZVgrJHjbKqPp{r4mK;@ja!rS+c^W@^Gdcm=KkqsrMVkC0cdYHI%cWQ_A1e8+n8QPm4kU{6b9WQiQ#KWK> zo#Fw185+2c>?P93Yq#VsFJnA8SZND3lq%T7b>r_{)J0+^%P&QwnTFkqSVaB7RC%wj z)xm2rj&C7F_o|4qi<{n<8)^6T?iE-hpmC{6MT5U3gED2A4OozFYl`>v_SOtT=?P2Z zgH4wNT712q{73{Sj@Z@A9DgUO9G37NM5b0ks6oa3T7yL95>Qal>w1aYVpe}B4b%mpwJ*$ zC8oV>Nd)#|4L+l)K@H1;Uf^x<3U7b6@xGa&31)n(Mr>f0z2|h=>CLY$92v&iL9#kr z-Mx&u50?gBpM4n#+8y>FUAECb%4dkXb^uKmyvekURm?szNTb6Q@i|F&)|QoEa5k8{ z#yH5A3dKJkF41=FsfK9`S&JkOgsTCGauF-;(g`&i_9Q1dJPs||!gl*7E%3C>uiG{D z_o(L@FI7lNqneGukClFHLU%QK!lMZqX*yYZXy}wmJQ-j1BJ{!N^|&uve@6X-%su{D zEO@~90hl%j2>vVt{kSw^`<*9igL!Xw7`AY!a&ftESggAv0~=y5A1_#vf;28M?c=W| zo7kN32g6iGToF=VBf!2d@VlP^gZGZZ??D-JT6M@dY6`hM(_eEOz8_BD->;ffo9c4z zs3-=R#82i4v(UF>FoH6tE+f-w`CVKr6-lcD!GIjka=hYn@8Mc_V8c|^k<2`DfE4sm zpuq-Eb2|abPCyPal+@9oMXM(s+Xl+d{X%)F2?xK5gHhh2s7;osNNU@s)K+DBMo%yg za5~X!MJwD|Us?UqWrWy1{ds3DK^sU4fz1@8jMa7=Y}gJcv$gjydRV*KFD{v5JE-*C zT`*zTU{4dlVJBxrxoJQI|Nbd>_UZzCk<(Qs(F|k>4z?3Lao?FNrH_J=ysxN!kDGUc zWb%oKapm}yb+c_&TsYqE502YPy)W?lb<$T*ECc>_zLs{aNsh){S|ioVdkyAO+nrl5HURbv zoOI1Fz5XnGFCeo)5n{F*iS}vhh9o&E4$6Kv$eppuAH{APwD(`I8jS!TLF^7 zs#89>(AjFFO7aIgw%dh=+;6{{agn-B33zA?+-H!MQ8L$HhQ(nsDX}Hu-0A$$B7O*- zZS4U@K`W&FeCR3RvoOf9_Q{l;fj|YknTC%fUy6)ok#X$~s~()AIS-QFaNc_WG*NV> zjk`1zwZ`Dsw#xk00(0ZdiLX8J+Y?YarGZc9g@kwZmU}FjruRphD>JL|Dlkmf4=$l! z#}7G;3Q`51S#}4IDxxjrbLRH>)2YZMQYR@`QLryJ&7|899RU zqCsXYrY#ioQVQ+@atFO;zav!c5R%ttFtS%`*&o5ErF#1P>}Bp&4*Nh}W*$c1jGl#b zMtoNXY@82RPAWON7%ry3aP>QJV121cXu%m_Fubgccf^#nwJ6eyS^Um={LZ-myDt-X za%y_Gl|d>*cb$0s^MOLbXa-o@b+IpJw1~^z2za30ZU0~PsTuFx_uAw$ES$0}5}Ep5 zc8YK!IcA=UOoi#^JWE`xa+r1@OvjUey zj~m#*lM9*vYHE304_zp(}!ci%Uj9NehfP;eBmIhs}`Zf|g-oBq zRwCa)DKa?{z-_$`Et_rib_wQPdkaGcM3cY4f>7dN*%39($6HM>Jx3X}uvpLU;@C6^ z%O3A@JDOR;nFc}}(;K_wj`0e*f^QrsLOyVYop(iC6eXr<4(xd$g5=!BPZ$7o)O|@` zqsW{L9k<=dfis`A$?aJ|KQ25tLWHJ*4yi<4YoF#{%l!SOWbqw+9+WM6fOerg zPv5$_-%oasi>^mOyke%PFkPzZ9Zh(|MAU5-VVP1IP;}vpr0}a8AiePIKH%sSC+G|( zWi%E<4qK;UcwQ9G59wz+-1k7sDiZaZuj`CzmW2p)aJi?IMBJeA*yTX8f41co%PH}{ ziXJjfqh%QOK(iC2Z^3Kw_OKIY#T(tT)X~wnj|`Q4&zWsXl@D6X$Xd*!%FKtD74VsM z^RaN)Njz@C&xSbjg+2KX2D*Z0VH&E3V|#9v0}tvq4+(SZsc9E$pGji#I_4g_J(5L6 z#nxz!maYG4*Gbm9bXMUhpSxX2E!w@i;q}%73`$ag>2|(h(|DhJ|Y=a8eK!Q zlzweL7*C|<@l4!~zqn8-iPvp(4FmPne+a+EAh+vl1k2`32lEcu1>vOJMGCFIUFUs!;ubx0?BK9SP-(cQnY?~%ib{WmM5_a%zZgYz* zQ}ksQ$81$#FJX-8Ku@gV*V1HJ`Sdz?=^BtQTY|2Qtajn~qHOrH7L}5sE~iCvPdo6e z?re*V661~nZmK}6i8$uzAYv7MLX9(kir>dD)lVrwj&{!XoVOFBAkE7!9^Q4+3}Z9z z`azcR^SCPoi^HlhcO#WB-FR#&AWixV?phE@&JrLYL6g(L&0|Y7t%JqQ#vfgQAxTs!YnEcho~H{_7WPdVBvl5TMS@hvP<5>~7wwKvI_N>SFh zK_^!~&F*I*41q9&J}uQt>siGu$*T*k43VL zU$^BpduyRkGX!ebLv_ocnV~H=_SeQ9^DrnUy`UhSB-GxUt=VY9m<0gKL0<*uImB~q zymjnex1=v?hY)W*$%ePZhO9TC^pdMBZ$wvG-YUnf{Y`sG4;sN5FQvHwe*Ro?4NWoR zrku{1kUYOXsHv;D_IGobs|W0X>?CeyEsl!Bv%;XQKntci_vC;NSxgAKSaD1-TQ*`N`R9%HpMDr&yjh zptQ~ZWpKx#Gh3g@h7FcI&@Gbgy(nv_nC;`*XMgC`nSnInoDI+Wb^u<D_xk6ELEm{0#@L;Byrp>1N!}4+Q_-lhona47fS$EAD4*+US4I6u^zg}Sie0N|w z5@Bl7N zciz{scoSkG3gxfN*OYDH@PAg=U#yIVQWS+s#>Eh%Ki}|H_KLN2Q zQ5W+ff48^HAeUauWlhUtmx1f%Q&)CjBA*TzL*R3H+eO#NiL76Q4bu-QAQZdU7GxxI z!h-Fii}ACnoy@<&{u7U4MmeZ=w!*hsN5P?QufmBZgIULd>-`gX62n~N%_qX(h|EW1 ze!OdYB+$ZM%JvWa2lJP>76(ZheGp{!!A6YLy!NakW4$zrq5&W!hijut&!SDqb@bxRetl+CF zYkyl&(c!~NyrGi4EPY-U@+{mK5diBwos0+Z$e$xu>q(wr&w{`HLsFlAHV&ty36Lxm zyuyl)ms=$2-(GId0@Kmq%Btr3&;Mkfjy#QtaIZR7=aR%H0dWavvZm)I))<%JUaM^t zwXs!fNbfRi&(|6rPI9`2s( zZm2AT{ZK@KNgATC612tYB~SPCi{;t1bTv(yd^=;~46fvFA9V9hswN5`}L#NXd{ zj?4gGm@!8joD5=^oC#5Co2hJxgJW54IR5>=^or%%NDMeVOk$wwhLr5q*B*dN$i|&$ zlgq8T(^6QQA?SUeoXc_)t@!atgo|!KZ~QXHa+@2O%$HSBr~2IDe1aBl8qd*~8|g5Q zAK~q7XVwXE3H5=Q5mO&(GbKJG&NNaFe=RVrn|Pvwmerd{+t*>`5TJAvzXPGaemEd9 z-Rg8}KM?j+mFq|R`pnGM!DV@Usm~_IPLQAzD9OM+9a_sQcm$XMrsCv8yrk0k&XhuB zn61Sz7rrcL@~mB+dN<4{GlCQcZ!{~&1B!^hF0Wiv7%8dzxgU7XS1%D+V&z_9)+t6i zrXIVOKE~tA;xyIq6u$tAD2E-i1@r=#21wl*v~-YyRuz5~{yMJ9ZcgjHHPqc~8==~| z;xEgyuzqr@m8=U4m2VPZe&9hL%&S+v6V^s(1Pj$mz@juU=!nW%j zKZCSvHbp{s@FUn@EM<()J5}AIP;8!TtXOder#qd`*DiV((TO^Jy9qR&^J#j>z)X(3 zHoFRJ5>oi_E(xqQbXGuhy#~no;`mRbhC6@}=(-+c3l6AX01oe2+i~!3Zye1Khbz`m zWc`Ohy{QR>e$HQi=t?DLuEfNzx3?^)2;P5JY;yZMnKyXx{GS1R_X zWHZEO!lk`NlBpge4LNvo`;*4_ko6BQ7ROAvF*lYMRI_sF@XWY- z9~t{NIXFoVd>?VUNE{pM7co`I_$$Ho`E)O+66BlOEbDCB)pYmUx4aZE2nqlI00aPl zUoN=>c??Mz&`%2l008}`*Tmh~#Ma5e&X&%`z}CXl#L1b~(#g)&L`lmolODtSx|W}t zRs}-hZ*c}0qBx|5xuBCx36ukaet=DcjG*RY&vcyiBrBo6_tYy~?&W?gwg5tWqyfY) zCpd!AIQ?7QlMPi6SHvCUSt9?E>0kr6K!`AwM^aQRnYLBVLcly9I3`yEQBvU61W1$v z@Dt!&@jIST&{|g{!31b@yPmu#f8i&PRLMey$mmxF7S2|N+2`340*aA*yTsP4>i`#n z!LSukHKmwJ+1%55W41YTXjvZ8==AQiIMR-LPxa_#eW5pVGnnT~|1Ny3TXvoF9d@}7 zkhB*Po@p@Hj!?!|$oa%|*kX3Yysn(I- z3aH(tk)|J?6=b1s>|X+jaXO0nI7;&qh>>0d$UbG5ku^PUpj^j#MbwJ;4|dEhuijFt zbh3aE+C|22z%)EiH*0|uLlZecKPbmG%9eCnO(*2v-bYA)SNvBDYDP$@>3Z=iVGbbX zEc=p__|A3V^#2C8bQ&xdF0ujWB8qs$dr9}l>A?fov-H^(Hv{}!O*xQsFXb@oF5l?w zU)yGIisa1Us~AkEyV6Ne+;09!klL=1Z`-tLej(1CCH~aYFj{V3&YaHF`|r-Z)LPmJ z1qc98_47viZ_aIJ@BHKAPPFFEHr71y0=9wl2%Yy4G+k&2HnI!5a}}jTDyPsm*1hGo znx=>XD&M-;iCM0$rf%H2PXu+vi;@`T3oiZQ@hL8WdzYV)sP$4S!d7JfW++r29su-? z%T!8z_kFs0Y$ZZMiy;7G=$fAPTS#2 zG?vb&+$koQVLb>YWP**Mr_7EOz2!c6>wYedYN-P86RaJSGpl>8(ZkT3@!8o2e5lr> z(9(bOhraBZdx{4cTpFAlvF6@T0I3R2N<;2^*x`}UfPzr7D60A5p-tYnr!{ti?H86P zq!4O+rNvMhQz)cs9-&iEGAMeaEiQ$uom}qV<)r|D@PMIyEcLVf1c!g_{PXj_dVd-S z0G9&)==)cw_tJ`-j}GpWT1S*_oO;89ADm*wX!z@UO5mJAx{x`g7D)e?k-G zf64ze0gC)J|1X69pQUGIVq$M#ZQ*M26S@AA%L?xXKJY`p{ecnvH}1<%&;O>`zi9vP zmH*@!grdsa{&0+cr2o%I|EcHukLLfz`!9d{KN|h-Hb(p}js9t4yq}Q#FM^Gov5~R; z|1eZzbq;4j4G4gHDlq`re;bg@|0eEa;^=B&WTNM0=V)c(_+ubi8w30Q9MrCa{clkO zV1PRy^#3ptaU;n8ROx>(|C9HhbId=~{HKx12f+WG_wO^#e?tEAT>cj%Wcc49|9)o6 XOM!y@<9kp)ubH3YF*pML)B67ajsUrK delta 43115 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 J`0BsT{~x7ZP ExtensionInjectionResult | None: ) if waited: return {**waited, "source": "discovered"} - woke = self._wakeConfiguredExtension() - if woke: - waited = self._waitForReadyServiceWorker( - _timeout(self.options.get("injector_service_worker_probe_timeout_ms"), DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS), - matched_only=bool(self.options.get("injector_trust_service_worker_target")), - ) - if waited: - return {**waited, "source": "discovered"} if not self.options.get("injector_require_service_worker_target"): return None waited = self._waitForReadyServiceWorker( diff --git a/python/modcdp/injector/ExtensionInjector.py b/python/modcdp/injector/ExtensionInjector.py index 48b0ba7..510abb3 100644 --- a/python/modcdp/injector/ExtensionInjector.py +++ b/python/modcdp/injector/ExtensionInjector.py @@ -1,8 +1,14 @@ from __future__ import annotations +import base64 +import hashlib +import json import re +import shutil +import tempfile import threading import time +import zipfile from collections.abc import Callable, Mapping from pathlib import Path from queue import Empty, Queue @@ -16,7 +22,6 @@ EXT_ID_FROM_URL_RE = re.compile(r"^chrome-extension://([a-z]+)/") DEFAULT_MODCDP_EXTENSION_ID = "mdedooklbnfejodmnhmkdpkaedafkehf" DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = ["/modcdp/service_worker.js"] -DEFAULT_MODCDP_WAKE_PATH = "/modcdp/wake.html" MODCDP_READY_EXPRESSION = ( "Boolean(globalThis.ModCDP?.__ModCDPServerVersion >= 1 && globalThis.ModCDP?.handleCommand && globalThis.ModCDP?.addCustomEvent)" ) @@ -40,8 +45,6 @@ class ExtensionInjectorConfig(TypedDict, total=False): waitForExecutionContext: WaitForExecutionContext | None injector_extension_path: str | None injector_extension_id: str | None - injector_wake_path: str | None - injector_wake_url: str | None injector_service_worker_url_includes: list[str] injector_service_worker_url_suffixes: list[str] injector_trust_service_worker_target: bool @@ -55,7 +58,6 @@ class ExtensionInjectorConfig(TypedDict, total=False): injector_target_session_poll_interval_ms: int injector_browserbase_api_key: str | None injector_browserbase_base_url: str | None - upstream_reversews_url: str | None upstream_nativemessaging_host_name: str | None upstream_nats_url: str | None upstream_nats_subject_prefix: str | None @@ -66,6 +68,51 @@ def defaultModCDPExtensionPath() -> str | None: return str(bundled_extension) if bundled_extension.exists() else None +def prepareUnpackedExtension(extension_path: str) -> tuple[str, tempfile.TemporaryDirectory[str]]: + cleanup_dir = tempfile.TemporaryDirectory(prefix="modcdp-extension-") + try: + if extension_path.endswith(".zip"): + with zipfile.ZipFile(extension_path) as archive: + _extract_zip(archive, cleanup_dir.name) + else: + shutil.copytree(extension_path, cleanup_dir.name, dirs_exist_ok=True) + return _extension_root(cleanup_dir.name), cleanup_dir + except BaseException: + cleanup_dir.cleanup() + raise + + +def extensionIdFromManifestKey(extension_path: str) -> str | None: + manifest_path = Path(extension_path) / "manifest.json" + if not manifest_path.exists(): + return None + manifest = json.loads(manifest_path.read_text()) + key = manifest.get("key") if isinstance(manifest, dict) else None + if not isinstance(key, str) or not key.strip(): + return None + digest = hashlib.sha256(base64.b64decode(key)).digest()[:16] + alphabet = "abcdefghijklmnop" + return "".join(alphabet[byte >> 4] + alphabet[byte & 0x0F] for byte in digest) + + +def _extension_root(unpacked_path: str) -> str: + if (Path(unpacked_path) / "manifest.json").exists(): + return unpacked_path + nested = Path(unpacked_path) / "extension" + if (nested / "manifest.json").exists(): + return str(nested) + return unpacked_path + + +def _extract_zip(archive: zipfile.ZipFile, destination: str) -> None: + root = Path(destination).resolve() + for member in archive.infolist(): + target = (root / member.filename).resolve() + if target != root and root not in target.parents: + raise RuntimeError(f'zip entry "{member.filename}" escapes extension extraction directory') + archive.extractall(destination) + + def _defaulted(value: Any, fallback: int) -> int: return fallback if value is None else int(value) @@ -89,8 +136,6 @@ def __init__(self, options: ExtensionInjectorConfig | None = None) -> None: "waitForExecutionContext": None, "injector_extension_path": None, "injector_extension_id": None, - "injector_wake_path": DEFAULT_MODCDP_WAKE_PATH, - "injector_wake_url": None, "injector_service_worker_url_includes": [], "injector_service_worker_url_suffixes": [], "injector_trust_service_worker_target": False, @@ -104,7 +149,6 @@ def __init__(self, options: ExtensionInjectorConfig | None = None) -> None: "injector_target_session_poll_interval_ms": DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, "injector_browserbase_api_key": None, "injector_browserbase_base_url": None, - "upstream_reversews_url": None, "upstream_nativemessaging_host_name": None, "upstream_nats_url": None, "upstream_nats_subject_prefix": None, @@ -233,35 +277,6 @@ def _targetInfos(self) -> list[TargetInfo]: targets.append({"targetId": target_id, "type": target_type, "url": target_url}) return targets - def _configuredWakeUrl(self) -> str | None: - wake_url = self.options.get("injector_wake_url") - if wake_url: - return wake_url - extension_id = self.options.get("injector_extension_id") - if not extension_id: - return None - wake_path = self.options.get("injector_wake_path") - wake_path = DEFAULT_MODCDP_WAKE_PATH if wake_path is None else wake_path - return f"chrome-extension://{extension_id}{wake_path if wake_path.startswith('/') else f'/{wake_path}'}" - - def _wakeConfiguredExtension(self) -> bool: - wake_url = self._configuredWakeUrl() - if not wake_url or self.options.get("send") is None: - return False - try: - self._sendWithTimeout( - "Target.createTarget", - { - "url": wake_url, - "background": True, - "hidden": True, - "focus": False, - }, - ) - return True - except Exception: - return False - def _probeTarget( self, target: TargetInfo, diff --git a/python/modcdp/injector/ExtensionsLoadUnpackedInjector.py b/python/modcdp/injector/ExtensionsLoadUnpackedInjector.py index 4e72da6..9e4d7d3 100644 --- a/python/modcdp/injector/ExtensionsLoadUnpackedInjector.py +++ b/python/modcdp/injector/ExtensionsLoadUnpackedInjector.py @@ -2,11 +2,8 @@ import tempfile import time -import zipfile -import shutil -from pathlib import Path -from ..injector.ExtensionInjector import DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, ExtensionInjector, ExtensionInjectionResult, defaultModCDPExtensionPath +from ..injector.ExtensionInjector import DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, ExtensionInjector, ExtensionInjectionResult, defaultModCDPExtensionPath, prepareUnpackedExtension class ExtensionsLoadUnpackedInjector(ExtensionInjector): @@ -21,16 +18,7 @@ def prepare(self) -> None: super().prepare() return self.options["injector_extension_path"] = extension_path - if not extension_path.endswith(".zip"): - self.cleanup_dir = tempfile.TemporaryDirectory(prefix="modcdp-extension-") - shutil.copytree(extension_path, self.cleanup_dir.name, dirs_exist_ok=True) - self.unpacked_extension_path = _extension_root(self.cleanup_dir.name) - super().prepare() - return - self.cleanup_dir = tempfile.TemporaryDirectory(prefix="modcdp-extension-") - with zipfile.ZipFile(extension_path) as archive: - archive.extractall(self.cleanup_dir.name) - self.unpacked_extension_path = _extension_root(self.cleanup_dir.name) + self.unpacked_extension_path, self.cleanup_dir = prepareUnpackedExtension(extension_path) super().prepare() def inject(self) -> ExtensionInjectionResult | None: @@ -51,7 +39,6 @@ def inject(self) -> ExtensionInjectionResult | None: if not isinstance(extension_id, str) or not extension_id: raise RuntimeError(f"Extensions.loadUnpacked returned no extension id (got {load_result})") self.options["injector_extension_id"] = extension_id - self._wakeConfiguredExtension() sw_url_prefix = f"chrome-extension://{extension_id}/" deadline = time.monotonic() + (self.options.get("injector_service_worker_ready_timeout_ms") or DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS) / 1000 @@ -74,12 +61,3 @@ def close(self) -> None: if self.cleanup_dir: self.cleanup_dir.cleanup() self.cleanup_dir = None - - -def _extension_root(unpacked_path: str) -> str: - if (Path(unpacked_path) / "manifest.json").exists(): - return unpacked_path - nested = Path(unpacked_path) / "extension" - if (nested / "manifest.json").exists(): - return str(nested) - return unpacked_path diff --git a/python/modcdp/injector/LocalBrowserLaunchExtensionInjector.py b/python/modcdp/injector/LocalBrowserLaunchExtensionInjector.py index c3a47f0..c95f9bd 100644 --- a/python/modcdp/injector/LocalBrowserLaunchExtensionInjector.py +++ b/python/modcdp/injector/LocalBrowserLaunchExtensionInjector.py @@ -1,15 +1,9 @@ from __future__ import annotations -import base64 -import hashlib -import json -import shutil import tempfile -import zipfile -from pathlib import Path from ..launcher.BrowserLauncher import BrowserLaunchOptions -from ..injector.ExtensionInjector import DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, ExtensionInjector, ExtensionInjectionResult, defaultModCDPExtensionPath +from ..injector.ExtensionInjector import ExtensionInjector, ExtensionInjectionResult, defaultModCDPExtensionPath, extensionIdFromManifestKey, prepareUnpackedExtension class LocalBrowserLaunchExtensionInjector(ExtensionInjector): @@ -25,17 +19,7 @@ def prepare(self) -> None: super().prepare() return self.options["injector_extension_path"] = extension_path - if not extension_path.endswith(".zip"): - self.cleanup_dir = tempfile.TemporaryDirectory(prefix="modcdp-extension-") - shutil.copytree(extension_path, self.cleanup_dir.name, dirs_exist_ok=True) - self.unpacked_extension_path = _extension_root(self.cleanup_dir.name) - self._resolveExtensionId() - super().prepare() - return - self.cleanup_dir = tempfile.TemporaryDirectory(prefix="modcdp-extension-") - with zipfile.ZipFile(extension_path) as archive: - archive.extractall(self.cleanup_dir.name) - self.unpacked_extension_path = _extension_root(self.cleanup_dir.name) + self.unpacked_extension_path, self.cleanup_dir = prepareUnpackedExtension(extension_path) self._resolveExtensionId() super().prepare() @@ -45,9 +29,7 @@ def getLauncherConfig(self) -> BrowserLaunchOptions: return {"extra_args": [f"--load-extension={self.unpacked_extension_path}"]} def inject(self) -> ExtensionInjectionResult | None: - timeout_ms = self.options.get("injector_service_worker_probe_timeout_ms") or DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS - discovered = self._waitForReadyServiceWorker( - timeout_ms, + discovered = self._discoverReadyServiceWorker( matched_only=bool(self.options.get("injector_trust_service_worker_target")), ) return {**discovered, "source": "local_launch"} if discovered else None @@ -69,25 +51,3 @@ def _resolveExtensionId(self) -> str | None: if self.extension_id: self.options["injector_extension_id"] = self.extension_id return self.extension_id - - -def extensionIdFromManifestKey(extension_path: str) -> str | None: - manifest_path = Path(extension_path) / "manifest.json" - if not manifest_path.exists(): - return None - manifest = json.loads(manifest_path.read_text()) - key = manifest.get("key") if isinstance(manifest, dict) else None - if not isinstance(key, str) or not key.strip(): - return None - digest = hashlib.sha256(base64.b64decode(key)).digest()[:16] - alphabet = "abcdefghijklmnop" - return "".join(alphabet[byte >> 4] + alphabet[byte & 0x0F] for byte in digest) - - -def _extension_root(unpacked_path: str) -> str: - if (Path(unpacked_path) / "manifest.json").exists(): - return unpacked_path - nested = Path(unpacked_path) / "extension" - if (nested / "manifest.json").exists(): - return str(nested) - return unpacked_path diff --git a/python/modcdp/launcher/LocalBrowserLauncher.py b/python/modcdp/launcher/LocalBrowserLauncher.py index cce641d..2ad7a0d 100644 --- a/python/modcdp/launcher/LocalBrowserLauncher.py +++ b/python/modcdp/launcher/LocalBrowserLauncher.py @@ -205,9 +205,11 @@ def _candidate_paths() -> list[str]: str(local_app_data / "Google/Chrome/Application/chrome.exe"), ] else: + chromium = ["/usr/bin/chromium", "/usr/bin/chromium-browser"] canary = ["/usr/bin/google-chrome-canary", "/usr/bin/google-chrome-unstable", "/opt/google/chrome-unstable/chrome"] stock = ["/usr/bin/google-chrome-stable", "/usr/bin/google-chrome", "/opt/google/chrome/chrome"] - return [*_chrome_for_testing_candidates(), *canary, *stock] + return [*chromium, *canary, *_chrome_for_testing_candidates(), *stock] + return [*canary, *_chrome_for_testing_candidates(), *stock] def _move_fd_if_needed(fd: int, reserved: set[int]) -> int: diff --git a/python/modcdp/transport/ReverseWebSocketUpstreamTransport.py b/python/modcdp/transport/ReverseWebSocketUpstreamTransport.py index 0dffdd6..0fb940b 100644 --- a/python/modcdp/transport/ReverseWebSocketUpstreamTransport.py +++ b/python/modcdp/transport/ReverseWebSocketUpstreamTransport.py @@ -49,7 +49,7 @@ def update(self, config: dict[str, Any] | None = None) -> "ReverseWebSocketUpstr return self def getInjectorConfig(self) -> dict[str, Any]: - return {"upstream_reversews_url": self.url} + return {} def _setBind(self, bind: str) -> None: parsed = urlparse(bind if "://" in bind else f"ws://{bind}") diff --git a/python/pyproject.toml b/python/pyproject.toml index b467f44..f710d4c 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "modcdp" -version = "0.0.13" +version = "0.0.15" description = "Python client for ModCDP." readme = "README.md" requires-python = ">=3.11" diff --git a/python/tests/test_AutoSessionRouter.py b/python/tests/test_AutoSessionRouter.py index 177a2fd..d6c2cdc 100644 --- a/python/tests/test_AutoSessionRouter.py +++ b/python/tests/test_AutoSessionRouter.py @@ -62,7 +62,7 @@ def test_bounds_detached_session_guards_and_clears_them_when_session_reattaches( self.assertEqual(router.execution_contexts[recent_session_id], 43) def test_tracks_real_target_sessions_and_execution_contexts(self) -> None: - chrome = LocalBrowserLauncher({"headless": True, "sandbox": False}).launch() + chrome = LocalBrowserLauncher({"headless": True}).launch() ws = create_connection(str(chrome["cdp_url"]), timeout=10) lock = threading.Lock() next_id = 0 diff --git a/python/tests/test_BorrowedExtensionInjector.py b/python/tests/test_BorrowedExtensionInjector.py index 90b03f8..25ace8e 100644 --- a/python/tests/test_BorrowedExtensionInjector.py +++ b/python/tests/test_BorrowedExtensionInjector.py @@ -4,7 +4,6 @@ from pathlib import Path from modcdp import ModCDPClient -from modcdp.launcher.LocalBrowserLauncher import LocalBrowserLauncher ROOT = Path(__file__).resolve().parents[2] @@ -13,16 +12,19 @@ class BorrowedExtensionInjectorTests(unittest.TestCase): def test_bootstraps_modcdp_inside_live_extension_service_worker(self) -> None: - chrome = LocalBrowserLauncher( - { - "headless": True, - "sandbox": False, - "extra_args": [f"--load-extension={EXTENSION_PATH}"], - } - ).launch() + owner = ModCDPClient( + launcher={"launcher_mode": "local", "launcher_options": {"headless": True}}, + upstream={"upstream_mode": "ws"}, + injector={ + "injector_mode": "auto", + "injector_extension_path": str(EXTENSION_PATH), + "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], + "injector_trust_service_worker_target": True, + }, + ) cdp = ModCDPClient( launcher={"launcher_mode": "remote"}, - upstream={"upstream_mode": "ws", "upstream_cdp_url": chrome["cdp_url"]}, + upstream={"upstream_mode": "ws"}, injector={ "injector_mode": "borrow", "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], @@ -31,14 +33,18 @@ def test_bootstraps_modcdp_inside_live_extension_service_worker(self) -> None: ) try: + owner.connect() + cdp.upstream["upstream_cdp_url"] = owner.cdp_url cdp.connect() self.assertEqual(cdp.connect_timing.get("injector_source") if cdp.connect_timing else None, "borrowed") self.assertEqual(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf") - target_infos = cdp.send("Target.getTargets")["targetInfos"] - self.assertGreater(len(target_infos), 0) + self.assertEqual( + cdp.Mod.evaluate(expression="chrome.runtime.getURL('modcdp/service_worker.js')"), + "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js", + ) finally: cdp.close() - chrome["close"]() + owner.close() if __name__ == "__main__": diff --git a/python/tests/test_DiscoveredExtensionInjector.py b/python/tests/test_DiscoveredExtensionInjector.py index e62c709..b3946ae 100644 --- a/python/tests/test_DiscoveredExtensionInjector.py +++ b/python/tests/test_DiscoveredExtensionInjector.py @@ -1,89 +1,30 @@ from __future__ import annotations -import json -import shutil -import tempfile import unittest from pathlib import Path -from typing import Any, cast from modcdp import ModCDPClient -from modcdp.injector.DiscoveredExtensionInjector import DiscoveredExtensionInjector -from modcdp.launcher.LocalBrowserLauncher import LocalBrowserLauncher ROOT = Path(__file__).resolve().parents[2] EXTENSION_PATH = ROOT / "dist" / "extension" -CUSTOM_EXTENSION_ID = "hhklgmbgnbeghnjidampacgmgnhelifg" -CUSTOM_EXTENSION_PUBLIC_KEY = ( - "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzG1LUbtH0aHMKjTAUeT0saY8xfnRNENctFJme3C1qnsqT7PAXMxJC4nT7tBZy2gEGRirBb3zIZ3OyAu9a0QR8lTLupDp4qHWOhQ7dl9ZjxjQdYa4Gby0xuXLdQrJIxDbmuv+UVJvYa8vRTwQB8koygbzDDDP5/YiB6mc0hbh8XBb82Ossy7T280k8280o/rS0CXdioUraCHj58PDhfxbs18TBcYfOjuRqua9J2oddxobtGehSD0gDtbvn2IWDtRajOlgZZyuS1vLoSR7C1ulFzpRSYPEMhI2x+wphut7E3QImyJ577YeULVGpt988FcixOou7udjx3/IUWjpq8046wIDAQAB" -) class DiscoveredExtensionInjectorTests(unittest.TestCase): - def test_preserves_explicit_zero_probe_timeout(self) -> None: - class ProbeTimeoutInjector(DiscoveredExtensionInjector): - def __init__(self) -> None: - super().__init__( - { - "injector_trust_service_worker_target": True, - "injector_service_worker_probe_timeout_ms": 0, - "injector_require_service_worker_target": False, - } - ) - self.waits: list[tuple[int, bool]] = [] - - def _discoverReadyServiceWorker(self, *, matched_only: bool = False): # type: ignore[override] - return None - - def _wakeConfiguredExtension(self): # type: ignore[override] - return None - - def _waitForReadyServiceWorker(self, timeout_ms: int, matched_only: bool = False): # type: ignore[override] - self.waits.append((timeout_ms, matched_only)) - return None - - injector = ProbeTimeoutInjector() - self.assertIsNone(injector.inject()) - self.assertEqual(injector.waits, [(0, True)]) - - def test_preserves_explicit_zero_ready_timeout(self) -> None: - class ReadyTimeoutInjector(DiscoveredExtensionInjector): - def __init__(self) -> None: - super().__init__( - { - "injector_service_worker_ready_timeout_ms": 0, - "injector_require_service_worker_target": True, - } - ) - self.waits: list[tuple[int, bool]] = [] - - def _discoverReadyServiceWorker(self, *, matched_only: bool = False): # type: ignore[override] - return None - - def _wakeConfiguredExtension(self): # type: ignore[override] - return None - - def _waitForReadyServiceWorker(self, timeout_ms: int, matched_only: bool = False): # type: ignore[override] - self.waits.append((timeout_ms, matched_only)) - return None - - injector = ReadyTimeoutInjector() - with self.assertRaisesRegex(RuntimeError, "Required ModCDP service worker target was not visible"): - injector.inject() - self.assertEqual(injector.waits, [(0, False)]) - def test_attaches_to_already_loaded_real_modcdp_extension(self) -> None: - chrome = LocalBrowserLauncher( - { - "headless": True, - "sandbox": False, - "extra_args": [f"--load-extension={EXTENSION_PATH}"], - } - ).launch() + owner = ModCDPClient( + launcher={"launcher_mode": "local", "launcher_options": {"headless": True}}, + upstream={"upstream_mode": "ws"}, + injector={ + "injector_mode": "auto", + "injector_extension_path": str(EXTENSION_PATH), + "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], + "injector_trust_service_worker_target": True, + }, + ) cdp = ModCDPClient( launcher={"launcher_mode": "remote"}, - upstream={"upstream_mode": "ws", "upstream_cdp_url": chrome["cdp_url"]}, + upstream={"upstream_mode": "ws"}, injector={ "injector_mode": "discover", "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], @@ -92,6 +33,8 @@ def test_attaches_to_already_loaded_real_modcdp_extension(self) -> None: ) try: + owner.connect() + cdp.upstream["upstream_cdp_url"] = owner.cdp_url cdp.connect() self.assertEqual(cdp.connect_timing.get("injector_source") if cdp.connect_timing else None, "discovered") self.assertEqual(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf") @@ -101,69 +44,7 @@ def test_attaches_to_already_loaded_real_modcdp_extension(self) -> None: ) finally: cdp.close() - chrome["close"]() - - def test_selects_configured_extension_when_multiple_modcdp_workers_exist(self) -> None: - with tempfile.TemporaryDirectory(prefix="modcdp-custom-extension-") as custom_extension_dir: - custom_extension_path = Path(custom_extension_dir) - shutil.copytree(EXTENSION_PATH, custom_extension_path, dirs_exist_ok=True) - manifest_path = custom_extension_path / "manifest.json" - manifest = json.loads(manifest_path.read_text()) - manifest["key"] = CUSTOM_EXTENSION_PUBLIC_KEY - manifest["name"] = "ModCDP Bridge Custom Test" - manifest_path.write_text(json.dumps(manifest, indent=2) + "\n") - - chrome = LocalBrowserLauncher( - { - "headless": True, - "sandbox": False, - "extra_args": [f"--load-extension={EXTENSION_PATH},{custom_extension_path}"], - } - ).launch() - cdp = ModCDPClient( - launcher={"launcher_mode": "remote"}, - upstream={"upstream_mode": "ws", "upstream_cdp_url": chrome["cdp_url"]}, - injector={ - "injector_mode": "discover", - "injector_extension_id": CUSTOM_EXTENSION_ID, - "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], - "injector_trust_service_worker_target": True, - "injector_require_service_worker_target": True, - }, - ) - - try: - cdp.connect() - self.assertEqual(cdp.connect_timing.get("injector_source") if cdp.connect_timing else None, "discovered") - self.assertEqual(cdp.extension_id, CUSTOM_EXTENSION_ID) - self.assertEqual(cdp.Mod.evaluate(expression="chrome.runtime.id"), CUSTOM_EXTENSION_ID) - targets = cast(dict[str, Any], cdp.sendRaw("Target.getTargets")) - target_infos = targets.get("targetInfos") - self.assertIsInstance(target_infos, list) - target_infos = cast(list[Any], target_infos) - modcdp_workers = [ - target - for target in target_infos - if isinstance(target, dict) - and target.get("type") == "service_worker" - and str(target.get("url", "")).endswith("/modcdp/service_worker.js") - ] - self.assertTrue( - any( - target.get("url") == f"chrome-extension://{CUSTOM_EXTENSION_ID}/modcdp/service_worker.js" - for target in modcdp_workers - ) - ) - self.assertTrue( - any( - target.get("url") - == "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js" - for target in modcdp_workers - ) - ) - finally: - cdp.close() - chrome["close"]() + owner.close() if __name__ == "__main__": diff --git a/python/tests/test_ExtensionInjector.py b/python/tests/test_ExtensionInjector.py index 7d50e9a..f1ea3ec 100644 --- a/python/tests/test_ExtensionInjector.py +++ b/python/tests/test_ExtensionInjector.py @@ -1,202 +1,12 @@ from __future__ import annotations -import json -import time import unittest -from pathlib import Path -from typing import Any, cast -import modcdp -from modcdp.injector.ExtensionInjector import ExtensionInjector, ExtensionInjectorConfig -from modcdp.launcher.LocalBrowserLauncher import LocalBrowserLauncher -from modcdp.types import ProtocolParams, ProtocolResult -from websocket import create_connection - - -ROOT = Path(__file__).resolve().parents[2] -EXTENSION_PATH = ROOT / "dist" / "extension" - - -class ProbeExtensionInjector(ExtensionInjector): - def inject(self): - return self._waitForReadyServiceWorker( - self.options.get("injector_service_worker_ready_timeout_ms") or 60_000, - matched_only=True, - ) - - def sendTimed( - self, - method: str, - params: ProtocolParams | None, - session_id: str | None, - timeout_ms: int, - ) -> ProtocolResult: - return self._sendWithTimeout(method, params or {}, session_id, timeout_ms) +from modcdp.injector.ExtensionInjector import ExtensionInjector class ExtensionInjectorTests(unittest.TestCase): - def test_probes_real_extension_service_worker_with_shared_base_config(self) -> None: - chrome = LocalBrowserLauncher( - { - "headless": True, - "sandbox": False, - "extra_args": [f"--load-extension={EXTENSION_PATH}"], - } - ).launch() - ws = create_connection(cast(str, chrome["cdp_url"]), timeout=10) - next_id = 0 - - def send(method: str, params: ProtocolParams | None = None, session_id: str | None = None) -> ProtocolResult: - nonlocal next_id - next_id += 1 - message: dict[str, Any] = {"id": next_id, "method": method, "params": params or {}} - if session_id: - message["sessionId"] = session_id - ws.send(json.dumps(message)) - while True: - response = json.loads(ws.recv()) - if response.get("id") != next_id: - continue - error = response.get("error") - if isinstance(error, dict): - raise RuntimeError(str(error.get("message") or error)) - return cast(ProtocolResult, response.get("result") or {}) - - def attach_to_target(target_id: str) -> str | None: - result = send("Target.attachToTarget", {"targetId": target_id, "flatten": True}) - session_id = result.get("sessionId") - return session_id if isinstance(session_id, str) else None - - injector = ProbeExtensionInjector( - cast(ExtensionInjectorConfig, { - "send": send, - "attachToTarget": attach_to_target, - "injector_extension_id": "mdedooklbnfejodmnhmkdpkaedafkehf", - "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], - "injector_trust_service_worker_target": True, - }) - ) - - try: - self.assertEqual(injector.getLauncherConfig(), {}) - self.assertEqual(injector.getTransportConfig(), {"injector_extension_id": "mdedooklbnfejodmnhmkdpkaedafkehf"}) - result = injector.inject() - self.assertEqual(result["extension_id"] if result else None, "mdedooklbnfejodmnhmkdpkaedafkehf") - self.assertTrue(str(result["url"] if result else "").endswith("/modcdp/service_worker.js")) - finally: - injector.close() - ws.close() - chrome["close"]() - - def test_keeps_modcdp_service_worker_alive_through_offscreen_keepalive(self) -> None: - chrome = LocalBrowserLauncher( - { - "headless": True, - "sandbox": False, - "extra_args": [f"--load-extension={EXTENSION_PATH}"], - } - ).launch() - ws = create_connection(cast(str, chrome["cdp_url"]), timeout=10) - next_id = 0 - - def send(method: str, params: ProtocolParams | None = None, session_id: str | None = None) -> ProtocolResult: - nonlocal next_id - next_id += 1 - message: dict[str, Any] = {"id": next_id, "method": method, "params": params or {}} - if session_id: - message["sessionId"] = session_id - ws.send(json.dumps(message)) - while True: - response = json.loads(ws.recv()) - if response.get("id") != next_id: - continue - error = response.get("error") - if isinstance(error, dict): - raise RuntimeError(str(error.get("message") or error)) - return cast(ProtocolResult, response.get("result") or {}) - - def attach_to_target(target_id: str) -> str | None: - result = send("Target.attachToTarget", {"targetId": target_id, "flatten": True}) - session_id = result.get("sessionId") - return session_id if isinstance(session_id, str) else None - - injector = ProbeExtensionInjector( - cast(ExtensionInjectorConfig, { - "send": send, - "attachToTarget": attach_to_target, - "injector_extension_id": "mdedooklbnfejodmnhmkdpkaedafkehf", - "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], - "injector_trust_service_worker_target": True, - }) - ) - - try: - result = injector.inject() - self.assertEqual(result["extension_id"] if result else None, "mdedooklbnfejodmnhmkdpkaedafkehf") - session_id = result["session_id"] if result else None - self.assertIsInstance(session_id, str) - - value: list[Any] = [] - for _ in range(50): - contexts = send( - "Runtime.evaluate", - { - "expression": ( - "chrome.runtime.getContexts({}).then((contexts) => contexts.map((context) => " - "({ type: context.contextType, url: context.documentUrl || context.origin || '' })))" - ), - "awaitPromise": True, - "returnByValue": True, - }, - cast(str, session_id), - ) - raw_value = cast(dict[str, Any], contexts.get("result") or {}).get("value") - value = raw_value if isinstance(raw_value, list) else [] - if any( - isinstance(context, dict) - and context.get("type") == "OFFSCREEN_DOCUMENT" - and context.get("url") - == "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/offscreen/keepalive.html" - for context in value - ): - break - time.sleep(0.1) - self.assertTrue( - any( - isinstance(context, dict) - and context.get("type") == "OFFSCREEN_DOCUMENT" - and context.get("url") - == "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/offscreen/keepalive.html" - for context in value - ) - ) - - time.sleep(3) - targets = cast(dict[str, Any], send("Target.getTargets")) - target_infos = targets.get("targetInfos") - self.assertIsInstance(target_infos, list) - target_infos = cast(list[Any], target_infos) - self.assertTrue( - any( - isinstance(target, dict) - and target.get("type") == "service_worker" - and target.get("url") - == "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js" - for target in target_infos - ) - ) - version = send( - "Runtime.evaluate", - {"expression": "globalThis.ModCDP?.__ModCDPServerVersion", "returnByValue": True}, - cast(str, session_id), - ) - self.assertEqual(cast(dict[str, Any], version.get("result") or {}).get("value"), 2) - finally: - injector.close() - ws.close() - chrome["close"]() - - def test_owns_shared_injector_config_and_runtime_transport_config(self) -> None: + def test_owns_shared_injector_config(self) -> None: injector = ExtensionInjector( { "injector_extension_id": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", @@ -215,114 +25,19 @@ def test_owns_shared_injector_config_and_runtime_transport_config(self) -> None: } ) ) - - with self.assertRaisesRegex(NotImplementedError, "ExtensionInjector.inject is not implemented"): - injector.inject() - - def test_send_with_timeout_enforces_cdp_send_timeout(self) -> None: - chrome = LocalBrowserLauncher({"headless": True, "sandbox": False}).launch() - ws = create_connection(cast(str, chrome["cdp_url"]), timeout=10) - next_id = 0 - - def send(method: str, params: ProtocolParams | None = None, session_id: str | None = None) -> ProtocolResult: - nonlocal next_id - next_id += 1 - message: dict[str, Any] = {"id": next_id, "method": method, "params": params or {}} - if session_id: - message["sessionId"] = session_id - ws.send(json.dumps(message)) - while True: - response = json.loads(ws.recv()) - if response.get("id") != next_id: - continue - error = response.get("error") - if isinstance(error, dict): - raise RuntimeError(str(error.get("message") or error)) - return cast(ProtocolResult, response.get("result") or {}) - - injector = ProbeExtensionInjector(cast(ExtensionInjectorConfig, {"send": send})) - target_id: str | None = None - - try: - created = send("Target.createTarget", {"url": "about:blank#modcdp-timeout"}) - target_id = cast(str, created["targetId"]) - attached = send("Target.attachToTarget", {"targetId": target_id, "flatten": True}) - session_id = cast(str, attached["sessionId"]) - send("Runtime.enable", {}, session_id) - with self.assertRaisesRegex(TimeoutError, r"Runtime\.evaluate timed out after 5ms"): - injector.sendTimed( - "Runtime.evaluate", - {"expression": "new Promise(() => {})", "awaitPromise": True}, - session_id, - 5, - ) - finally: - if target_id: - try: - send("Target.closeTarget", {"targetId": target_id}) - except Exception: - pass - injector.close() - ws.close() - chrome["close"]() - - def test_wakes_configured_extension_with_hidden_background_target(self) -> None: - chrome = LocalBrowserLauncher( - { - "headless": True, - "sandbox": False, - "extra_args": [f"--load-extension={EXTENSION_PATH}"], - } - ).launch() - ws = create_connection(cast(str, chrome["cdp_url"]), timeout=10) - next_id = 0 - - def send(method: str, params: ProtocolParams | None = None, _session_id: str | None = None) -> ProtocolResult: - nonlocal next_id - next_id += 1 - message: dict[str, Any] = {"id": next_id, "method": method, "params": params or {}} - ws.send(json.dumps(message)) - while True: - response = json.loads(ws.recv()) - if response.get("id") != next_id: - continue - error = response.get("error") - if isinstance(error, dict): - raise RuntimeError(str(error.get("message") or error)) - return cast(ProtocolResult, response.get("result") or {}) - - injector = ProbeExtensionInjector( - cast(ExtensionInjectorConfig, { - "injector_extension_id": "mdedooklbnfejodmnhmkdpkaedafkehf", - "send": send, - }) - ) - - try: - self.assertTrue(injector._wakeConfiguredExtension()) - targets = cast(dict[str, Any], send("Target.getTargets")) - target_infos = targets.get("targetInfos") - self.assertIsInstance(target_infos, list) - target_infos = cast(list[Any], target_infos) - self.assertTrue( - any( - isinstance(target, dict) - and target.get("url") == "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/wake.html" - for target in target_infos - ) + self.assertFalse( + injector._serviceWorkerTargetMatches( + { + "targetId": "target-1", + "type": "service_worker", + "url": "chrome-extension://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/background.js", + } ) - finally: - injector.close() - ws.close() - chrome["close"]() + ) - def test_package_exports_all_injector_classes(self) -> None: - self.assertIs(modcdp.ExtensionInjector, ExtensionInjector) - self.assertEqual(modcdp.DiscoveredExtensionInjector.__name__, "DiscoveredExtensionInjector") - self.assertEqual(modcdp.LocalBrowserLaunchExtensionInjector.__name__, "LocalBrowserLaunchExtensionInjector") - self.assertEqual(modcdp.BBBrowserExtensionInjector.__name__, "BBBrowserExtensionInjector") - self.assertEqual(modcdp.ExtensionsLoadUnpackedInjector.__name__, "ExtensionsLoadUnpackedInjector") - self.assertEqual(modcdp.BorrowedExtensionInjector.__name__, "BorrowedExtensionInjector") + def test_base_inject_reports_the_class_name(self) -> None: + with self.assertRaisesRegex(NotImplementedError, "ExtensionInjector.inject is not implemented"): + ExtensionInjector().inject() if __name__ == "__main__": diff --git a/python/tests/test_ExtensionsLoadUnpackedInjector.py b/python/tests/test_ExtensionsLoadUnpackedInjector.py index 5fd9d55..4a101d8 100644 --- a/python/tests/test_ExtensionsLoadUnpackedInjector.py +++ b/python/tests/test_ExtensionsLoadUnpackedInjector.py @@ -1,73 +1,25 @@ from __future__ import annotations -import json -import re import unittest from pathlib import Path -from typing import Any, cast +from typing import cast from modcdp.injector.ExtensionsLoadUnpackedInjector import ExtensionsLoadUnpackedInjector -from modcdp.launcher.LocalBrowserLauncher import LocalBrowserLauncher -from websocket import create_connection - - -ROOT = Path(__file__).resolve().parents[2] -EXTENSION_PATH = ROOT / "dist" / "extension" class ExtensionsLoadUnpackedInjectorTests(unittest.TestCase): - def test_prepares_default_packaged_extension_zip_when_path_is_omitted(self) -> None: + def test_prepares_default_packaged_extension_zip(self) -> None: injector = ExtensionsLoadUnpackedInjector() try: injector.prepare() unpacked_extension_path = injector.unpacked_extension_path self.assertIsInstance(unpacked_extension_path, str) unpacked_extension_path = cast(str, unpacked_extension_path) + self.assertIn("modcdp-extension-", unpacked_extension_path) self.assertTrue((Path(unpacked_extension_path) / "manifest.json").exists()) - self.assertTrue(str(injector.options.get("injector_extension_path", "")).endswith("extension.zip")) finally: injector.close() - def test_exercises_real_cdp_load_unpacked_path(self) -> None: - chrome = LocalBrowserLauncher({"headless": True, "sandbox": False}).launch() - ws = create_connection(cast(str, chrome["cdp_url"]), timeout=10) - next_id = 0 - - def send(method: str, params: dict[str, Any] | None = None, session_id: str | None = None) -> dict[str, Any]: - nonlocal next_id - next_id += 1 - message: dict[str, Any] = {"id": next_id, "method": method, "params": params or {}} - if session_id: - message["sessionId"] = session_id - ws.send(json.dumps(message)) - while True: - response = json.loads(ws.recv()) - if response.get("id") != next_id: - continue - error = response.get("error") - if isinstance(error, dict): - raise RuntimeError(str(error.get("message") or error)) - return cast(dict[str, Any], response.get("result") or {}) - - injector = ExtensionsLoadUnpackedInjector( - cast(Any, { - "send": send, - "injector_extension_path": str(EXTENSION_PATH), - }) - ) - try: - injector.prepare() - result = injector.inject() - self.assertIsNone(result) - self.assertIsNotNone(injector.last_error) - self.assertRegex( - str(injector.last_error), - re.compile(r"Method not available|Method.*not.*found|wasn't found", re.I), - ) - finally: - injector.close() - ws.close() - chrome["close"]() if __name__ == "__main__": unittest.main() diff --git a/python/tests/test_LocalBrowserLaunchExtensionInjector.py b/python/tests/test_LocalBrowserLaunchExtensionInjector.py index 4f33892..3252463 100644 --- a/python/tests/test_LocalBrowserLaunchExtensionInjector.py +++ b/python/tests/test_LocalBrowserLaunchExtensionInjector.py @@ -1,12 +1,14 @@ from __future__ import annotations import unittest +import time +import tempfile +import zipfile from pathlib import Path -from typing import cast +from typing import Any, cast from modcdp.injector.ExtensionInjector import DEFAULT_MODCDP_EXTENSION_ID from modcdp.injector.LocalBrowserLaunchExtensionInjector import LocalBrowserLaunchExtensionInjector -from modcdp.client.ModCDPClient import ModCDPClient ROOT = Path(__file__).resolve().parents[2] @@ -14,46 +16,35 @@ class LocalBrowserLaunchExtensionInjectorTests(unittest.TestCase): - def test_loads_real_extension_during_local_launch(self) -> None: - cdp = ModCDPClient( - launcher={"launcher_mode": "local", "launcher_options": {"headless": True, "sandbox": False}}, - upstream={"upstream_mode": "ws"}, - injector={ - "injector_mode": "inject", - "injector_extension_path": str(EXTENSION_PATH), - "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], - "injector_trust_service_worker_target": True, - "injector_service_worker_probe_timeout_ms": 30_000, - }, - client={ - "client_cdp_send_timeout_ms": 30_000, - }, - ) + def test_rejects_zip_entries_outside_extraction_directory(self) -> None: + with tempfile.TemporaryDirectory(prefix="modcdp-bad-zip-") as temp_dir: + zip_path = Path(temp_dir) / "extension.zip" + with zipfile.ZipFile(zip_path, "w") as archive: + archive.writestr("../evil.txt", "evil") - try: - cdp.connect() - self.assertEqual(cdp.connect_timing.get("injector_source") if cdp.connect_timing else None, "local_launch") - self.assertEqual(cdp.extension_id, DEFAULT_MODCDP_EXTENSION_ID) - self.assertRegex(cdp.ext_session_id or "", r"^.+$") - self.assertEqual( - cdp.Mod.evaluate(expression="chrome.runtime.getURL('modcdp/service_worker.js')"), - f"chrome-extension://{DEFAULT_MODCDP_EXTENSION_ID}/modcdp/service_worker.js", - ) - finally: - cdp.close() + injector = LocalBrowserLaunchExtensionInjector({"injector_extension_path": str(zip_path)}) + try: + with self.assertRaisesRegex(RuntimeError, "escapes extension extraction directory"): + injector.prepare() + self.assertFalse((Path(temp_dir) / "evil.txt").exists()) + finally: + injector.close() - def test_prepares_launcher_config(self) -> None: + def test_prepares_unpacked_extension_directory_for_load_extension(self) -> None: injector = LocalBrowserLaunchExtensionInjector({"injector_extension_path": str(EXTENSION_PATH)}) try: injector.prepare() - extra_args = injector.getLauncherConfig().get("extra_args") or [] - self.assertEqual(len(extra_args), 1) - self.assertTrue(extra_args[0].startswith("--load-extension=")) + unpacked_extension_path = injector.unpacked_extension_path + self.assertIsInstance(unpacked_extension_path, str) + unpacked_extension_path = cast(str, unpacked_extension_path) + self.assertNotEqual(unpacked_extension_path, str(EXTENSION_PATH)) + self.assertTrue((Path(unpacked_extension_path) / "manifest.json").exists()) + self.assertEqual(injector.getLauncherConfig(), {"extra_args": [f"--load-extension={unpacked_extension_path}"]}) self.assertEqual(injector.options.get("injector_extension_id"), DEFAULT_MODCDP_EXTENSION_ID) finally: injector.close() - def test_prepares_default_packaged_extension_zip_when_path_is_omitted(self) -> None: + def test_prepares_default_extension_zip_for_load_extension(self) -> None: injector = LocalBrowserLaunchExtensionInjector() try: injector.prepare() @@ -61,13 +52,39 @@ def test_prepares_default_packaged_extension_zip_when_path_is_omitted(self) -> N self.assertIsInstance(unpacked_extension_path, str) unpacked_extension_path = cast(str, unpacked_extension_path) self.assertTrue((Path(unpacked_extension_path) / "manifest.json").exists()) - self.assertTrue(str(injector.options.get("injector_extension_path", "")).endswith("extension.zip")) - extra_args = injector.getLauncherConfig().get("extra_args") or [] - self.assertEqual(extra_args, [f"--load-extension={unpacked_extension_path}"]) + self.assertIn("modcdp-extension-", unpacked_extension_path) + self.assertEqual(injector.getLauncherConfig(), {"extra_args": [f"--load-extension={unpacked_extension_path}"]}) self.assertEqual(injector.options.get("injector_extension_id"), DEFAULT_MODCDP_EXTENSION_ID) finally: injector.close() + def test_returns_immediately_when_launched_extension_target_is_absent(self) -> None: + methods: list[str] = [] + + def send(method: str, params: dict[str, Any] | None = None, session_id: str | None = None) -> dict[str, Any]: + methods.append(method) + if method == "Target.getTargets": + return {"targetInfos": []} + raise RuntimeError(f"unexpected {method}") + + injector = LocalBrowserLaunchExtensionInjector( + cast(Any, { + "injector_extension_path": str(EXTENSION_PATH), + "injector_trust_service_worker_target": True, + "send": send, + }) + ) + try: + injector.prepare() + started_at = time.perf_counter() + result = injector.inject() + elapsed_ms = (time.perf_counter() - started_at) * 1000 + self.assertIsNone(result) + self.assertEqual(methods, ["Target.getTargets"]) + self.assertLess(elapsed_ms, 200) + finally: + injector.close() + if __name__ == "__main__": unittest.main() diff --git a/python/tests/test_LocalBrowserLauncher.py b/python/tests/test_LocalBrowserLauncher.py index 678c9ee..9aea873 100644 --- a/python/tests/test_LocalBrowserLauncher.py +++ b/python/tests/test_LocalBrowserLauncher.py @@ -20,7 +20,6 @@ def test_launches_real_browser_and_speaks_cdp(self) -> None: chrome = LocalBrowserLauncher( { "headless": True, - "sandbox": False, "chrome_ready_timeout_ms": 45_000, "chrome_ready_poll_interval_ms": 50, } @@ -48,7 +47,6 @@ def test_cleanup_user_data_dir_removes_explicit_profile(self) -> None: chrome = LocalBrowserLauncher( { "headless": True, - "sandbox": False, "chrome_ready_timeout_ms": 45_000, } ).launch({"user_data_dir": user_data_dir, "cleanup_user_data_dir": True}) @@ -63,7 +61,6 @@ def test_launches_real_browser_over_remote_debugging_pipe(self) -> None: chrome = LocalBrowserLauncher( { "headless": True, - "sandbox": False, "remote_debugging": "pipe", "chrome_ready_timeout_ms": 45_000, } @@ -88,7 +85,6 @@ def test_launches_pipe_browser_with_auxiliary_loopback_only_when_requested(self) chrome = LocalBrowserLauncher( { "headless": True, - "sandbox": False, "remote_debugging": "pipe", "loopback_cdp": True, "chrome_ready_timeout_ms": 45_000, diff --git a/python/tests/test_ModCDPClient.py b/python/tests/test_ModCDPClient.py index fcbc54f..21fd222 100644 --- a/python/tests/test_ModCDPClient.py +++ b/python/tests/test_ModCDPClient.py @@ -6,8 +6,6 @@ import time import unittest from collections.abc import Mapping -from contextlib import redirect_stderr -from io import StringIO from pathlib import Path from queue import Empty, Queue from typing import Any, cast @@ -190,9 +188,9 @@ def test_rejects_unknown_component_modes_at_their_owning_factory_boundary(self) with self.assertRaisesRegex(RuntimeError, r"unknown injector\.injector_mode=bogus"): ModCDPClient(injector={"injector_mode": "bogus"})._extension_injectors_for_config() - def test_connects_with_local_launch_and_injector_chain(self) -> None: + def test_connects_with_local_launch_injector_chain(self) -> None: cdp = ModCDPClient( - launcher={"launcher_mode": "local", "launcher_options": {"headless": True, "sandbox": False}}, + launcher={"launcher_mode": "local", "launcher_options": {"headless": True}}, upstream={"upstream_mode": "ws"}, injector={ "injector_mode": "inject", @@ -208,12 +206,29 @@ def test_connects_with_local_launch_and_injector_chain(self) -> None: try: cdp.connect() - self.assertEqual(cdp.connect_timing.get("injector_source") if cdp.connect_timing else None, "local_launch") + self.assertIn( + cdp.connect_timing.get("injector_source") if cdp.connect_timing else None, + ("local_launch", "extensions_load_unpacked"), + ) self.assertEqual(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf") self.assertEqual( cdp.Mod.evaluate(expression="chrome.runtime.getURL('modcdp/service_worker.js')"), "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js", ) + contexts = cdp.Mod.evaluate( + expression=( + "chrome.runtime.getContexts({}).then((contexts) => contexts.map((context) => " + "({ type: context.contextType, url: context.documentUrl || context.origin || '' })))" + ) + ) + self.assertTrue( + any( + isinstance(context, Mapping) + and context.get("type") == "OFFSCREEN_DOCUMENT" + and context.get("url") == "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/offscreen/keepalive.html" + for context in cast(list[Any], contexts) + ) + ) sent_at = int(time.time() * 1000) pong: Queue[Mapping[str, Any]] = Queue() @@ -251,8 +266,6 @@ def test_close_does_not_close_a_remote_browser_it_did_not_launch(self) -> None: chrome = LocalBrowserLauncher( { "headless": True, - "sandbox": False, - "extra_args": [f"--load-extension={EXTENSION_PATH}"], } ).launch() raw_ws = create_connection(cast(str, chrome["cdp_url"]), timeout=5) @@ -260,10 +273,14 @@ def test_close_does_not_close_a_remote_browser_it_did_not_launch(self) -> None: launcher={"launcher_mode": "remote"}, upstream={"upstream_mode": "ws", "upstream_cdp_url": chrome["cdp_url"]}, injector={ - "injector_mode": "discover", + "injector_mode": "inject", + "injector_extension_path": str(EXTENSION_PATH), "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], "injector_trust_service_worker_target": True, + "injector_service_worker_ready_timeout_ms": 5_000, + "injector_service_worker_probe_timeout_ms": 5_000, }, + client={"client_routes": {"*.*": "direct_cdp"}}, ) try: @@ -281,7 +298,7 @@ def test_close_does_not_close_a_remote_browser_it_did_not_launch(self) -> None: def test_close_keeps_injector_files_until_after_launched_browser_shutdown(self) -> None: cdp = ModCDPClient( - launcher={"launcher_mode": "local", "launcher_options": {"headless": True, "sandbox": False}}, + launcher={"launcher_mode": "local", "launcher_options": {"headless": True}}, upstream={ "upstream_mode": "reversews", "upstream_reversews_wait_timeout_ms": 30_000, @@ -300,7 +317,7 @@ def test_close_keeps_injector_files_until_after_launched_browser_shutdown(self) injector = next( candidate for candidate in cdp._extension_injectors - if type(candidate).__name__ == "LocalBrowserLaunchExtensionInjector" + if type(candidate).__name__ == "ExtensionsLoadUnpackedInjector" ) unpacked_extension_path = getattr(injector, "unpacked_extension_path") self.assertIsInstance(unpacked_extension_path, str) @@ -332,7 +349,7 @@ def close_browser() -> None: def test_close_clears_top_level_connection_state(self) -> None: cdp = ModCDPClient( - launcher={"launcher_mode": "local", "launcher_options": {"headless": True, "sandbox": False}}, + launcher={"launcher_mode": "local", "launcher_options": {"headless": True}}, upstream={"upstream_mode": "ws"}, injector={ "injector_mode": "auto", @@ -351,7 +368,7 @@ def test_close_clears_top_level_connection_state(self) -> None: def test_generated_cdp_surface_exposes_direct_domain_commands(self) -> None: client = ModCDPClient( - launcher={"launcher_mode": "local", "launcher_options": {"headless": True, "sandbox": False}}, + launcher={"launcher_mode": "local", "launcher_options": {"headless": True}}, upstream={"upstream_mode": "ws"}, injector={ "injector_mode": "auto", @@ -404,7 +421,7 @@ async def run_awaited_calls() -> None: self.assertRegex(str(awaited_raw_result["targetId"]), r"^[A-F0-9]+$") client = ModCDPClient( - launcher={"launcher_mode": "local", "launcher_options": {"headless": True, "sandbox": False}}, + launcher={"launcher_mode": "local", "launcher_options": {"headless": True}}, upstream={"upstream_mode": "ws"}, injector={ "injector_mode": "auto", @@ -599,18 +616,17 @@ def test_custom_event_schema_validates_payload_before_handlers(self) -> None: payload: dict[str, JsonValue] = {"url": "https://example.com", "ready": True} self.assertEqual(client._validate_event_payload("Custom.ready", payload), payload) - with redirect_stderr(StringIO()): - self.assertIsNone(client._validate_event_payload("Custom.ready", {"url": "http://example.com", "ready": True})) - self.assertIsNone( - client._validate_event_payload("Custom.ready", {"url": "https://example.com", "ready": True, "x": 1}) - ) + with self.assertRaises(ValueError): + client._validate_event_payload("Custom.ready", {"url": "http://example.com", "ready": True}) + with self.assertRaises(ValueError): + client._validate_event_payload("Custom.ready", {"url": "https://example.com", "ready": True, "x": 1}) def test_scalar_event_schema_validates_value_payloads(self) -> None: client = ModCDPClient(custom_events=[{"name": "Custom.count", "event_schema": {"type": "integer", "minimum": 1}}]) self.assertEqual(client._validate_event_payload("Custom.count", {"value": 3}), {"value": 3}) - with redirect_stderr(StringIO()): - self.assertIsNone(client._validate_event_payload("Custom.count", {"value": 0})) + with self.assertRaises(ValueError): + client._validate_event_payload("Custom.count", {"value": 0}) if __name__ == "__main__": diff --git a/python/tests/test_ModCDPClientCustomFlatNamespace.py b/python/tests/test_ModCDPClientCustomFlatNamespace.py index 8bb8128..1872550 100644 --- a/python/tests/test_ModCDPClientCustomFlatNamespace.py +++ b/python/tests/test_ModCDPClientCustomFlatNamespace.py @@ -1,8 +1,6 @@ from __future__ import annotations import asyncio -from contextlib import redirect_stderr -from io import StringIO from queue import Queue import unittest from pathlib import Path @@ -27,7 +25,7 @@ class ResultSchema(BaseModel): client = ModCDPClient( launcher={ "launcher_mode": "local", - "launcher_options": {"headless": True, "sandbox": False}, + "launcher_options": {"headless": True}, }, upstream={"upstream_mode": "ws"}, injector={ @@ -68,7 +66,7 @@ class EventSchema(BaseModel): client = ModCDPClient( launcher={ "launcher_mode": "local", - "launcher_options": {"headless": True, "sandbox": False}, + "launcher_options": {"headless": True}, }, upstream={"upstream_mode": "ws"}, injector={ @@ -117,8 +115,8 @@ def test_schema_only_custom_event_registers_without_websocket(self) -> None: self.assertEqual(result, {"name": "Custom.schemaOnly", "registered": True}) self.assertEqual(client._validate_event_payload("Custom.schemaOnly", {"ok": True}), {"ok": True}) - with redirect_stderr(StringIO()): - self.assertIsNone(client._validate_event_payload("Custom.schemaOnly", {"ok": True, "extra": True})) + with self.assertRaises(ValueError): + client._validate_event_payload("Custom.schemaOnly", {"ok": True, "extra": True}) if __name__ == "__main__": diff --git a/python/tests/test_ModCDPClientRoutedDefaultOverrides.py b/python/tests/test_ModCDPClientRoutedDefaultOverrides.py index 68182b1..24db6c3 100644 --- a/python/tests/test_ModCDPClientRoutedDefaultOverrides.py +++ b/python/tests/test_ModCDPClientRoutedDefaultOverrides.py @@ -5,7 +5,7 @@ from typing import Any, cast import unittest -from modcdp import LocalBrowserLauncher, ModCDPClient +from modcdp import ModCDPClient HERE = Path(__file__).resolve().parent @@ -71,22 +71,28 @@ def target_infos_from_result(result: Any) -> list[dict[str, Any]]: class ModCDPClientRoutedDefaultOverridesTests(unittest.TestCase): def test_service_worker_routed_standard_cdp_commands_and_events_can_be_transformed(self) -> None: - chrome = LocalBrowserLauncher( - { - "headless": True, - "sandbox": False, - "extra_args": [f"--load-extension={EXTENSION_PATH}"], - } - ).launch() - cdp = ModCDPClient( - launcher={"launcher_mode": "remote"}, - upstream={"upstream_mode": "ws", "upstream_cdp_url": chrome["cdp_url"]}, + owner = ModCDPClient( + launcher={ + "launcher_mode": "local", + "launcher_options": {"headless": True}, + }, + upstream={"upstream_mode": "ws"}, injector={ "injector_mode": "auto", "injector_extension_path": str(EXTENSION_PATH), "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], "injector_trust_service_worker_target": True, }, + ) + owner.connect() + cdp = ModCDPClient( + launcher={"launcher_mode": "remote"}, + upstream={"upstream_mode": "ws", "upstream_cdp_url": owner.cdp_url}, + injector={ + "injector_mode": "discover", + "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], + "injector_trust_service_worker_target": True, + }, client={ "client_routes": { "Target.getTargets": "service_worker", @@ -94,17 +100,17 @@ def test_service_worker_routed_standard_cdp_commands_and_events_can_be_transform "Target.setDiscoverTargets": "service_worker", } }, - server={"server_loopback_cdp_url": chrome["cdp_url"], "server_routes": {"*.*": "loopback_cdp"}}, + server={"server_loopback_cdp_url": owner.cdp_url, "server_routes": {"*.*": "loopback_cdp"}}, ) try: cdp.connect() - self.assertEqual(cdp.cdp_url, chrome["cdp_url"]) + self.assertEqual(cdp.cdp_url, owner.cdp_url) self.assertIsNotNone(cdp.server) server = cast(dict[str, Any], cdp.server) - self.assertEqual(server["server_loopback_cdp_url"], chrome["cdp_url"]) + self.assertEqual(server["server_loopback_cdp_url"], owner.cdp_url) - raw_targets = cdp._send_message("Target.getTargets", {}) + raw_targets = cdp.send("Target.getTargets") raw_target_infos = target_infos_from_result(raw_targets) self.assertTrue(raw_target_infos) self.assertFalse(any("tabId" in target_info for target_info in raw_target_infos)) @@ -160,7 +166,7 @@ def on_target_created(params): except Exception: pass cdp.close() - chrome["close"]() + owner.close() if __name__ == "__main__": diff --git a/python/tests/test_ModCDPClient_protocol_validation.py b/python/tests/test_ModCDPClient_protocol_validation.py new file mode 100644 index 0000000..b672ea4 --- /dev/null +++ b/python/tests/test_ModCDPClient_protocol_validation.py @@ -0,0 +1,126 @@ +from __future__ import annotations + +import unittest +from typing import TYPE_CHECKING, assert_type + +from pydantic import BaseModel + +from modcdp import ModCDPClient +from modcdp.client.ModCDPClient import AwaitableValue +from modcdp.types.generated.cdp import RuntimeDomain, TargetDomain +from modcdp.types.generated.cdp import AwaitableDict +from modcdp.types.modcdp import JsonValue, ProtocolPayload + + +class CustomEchoParams(BaseModel): + text: str + + +class CustomEchoResult(BaseModel): + ok: bool + + +class CustomReadyEvent(BaseModel): + ok: bool + + +class ModCDPClientProtocolValidationTests(unittest.TestCase): + def test_protocol_validation_covers_native_methods_native_events_custom_methods_custom_events_and_native_overrides(self) -> None: + client = ModCDPClient() + + if TYPE_CHECKING: + runtime_result = client.Runtime.evaluate(expression="1 + 1", returnByValue=True) + assert_type(runtime_result, RuntimeDomain._EvaluateResult) + + def on_target_created(event: TargetDomain._TargetCreatedEvent) -> None: + assert_type(event.targetId, str | None) + + assert_type(client.on(client.Target.targetCreated, on_target_created), ModCDPClient) + assert_type( + client.Mod.addCustomCommand("Custom.echo", params_schema=CustomEchoParams, result_schema=CustomEchoResult), + AwaitableDict | AwaitableValue, + ) + assert_type(client.Mod.addCustomEvent("Custom.ready", event_schema=CustomReadyEvent), AwaitableDict | AwaitableValue) + assert_type( + client.Mod.addMiddleware( + name="Target.getTargets", + phase="response", + expression="async (value, next) => next(value)", + ), + AwaitableDict | AwaitableValue, + ) + + runtime_params = {"expression": "1 + 1", "returnByValue": True} + runtime_result_payload = {"result": {"type": "number", "value": 2, "description": "2"}} + native_target_info: dict[str, JsonValue] = { + "targetId": "target-1", + "type": "page", + "title": "Example", + "url": "https://example.com", + "attached": False, + "canAccessOpener": False, + } + native_event_payload: ProtocolPayload = {"targetInfo": native_target_info} + + self.assertEqual(client._validate_command_params("Runtime.evaluate", runtime_params), runtime_params) + self.assertEqual(client._validate_command_result("Runtime.evaluate", runtime_result_payload), runtime_result_payload) + self.assertEqual(client._validate_event_payload("Target.targetCreated", native_event_payload), native_event_payload) + with self.assertRaises(ValueError): + client._validate_command_params("Runtime.evaluate", {}) + with self.assertRaises(ValueError): + client._validate_command_result("Runtime.evaluate", {}) + with self.assertRaises(ValueError): + client._validate_event_payload("Target.targetCreated", {}) + + client.Mod.addCustomCommand("Custom.echo", params_schema=CustomEchoParams, result_schema=CustomEchoResult) + client.Mod.addCustomEvent("Custom.ready", event_schema=CustomReadyEvent) + + self.assertEqual(client._validate_command_params("Custom.echo", {"text": "ok"}), {"text": "ok"}) + self.assertEqual(client._validate_command_result("Custom.echo", {"ok": True}), True) + self.assertEqual(client._validate_event_payload("Custom.ready", {"ok": True}), CustomReadyEvent(ok=True)) + with self.assertRaises(ValueError): + client._validate_command_params("Custom.echo", {"text": 1}) + with self.assertRaises(ValueError): + client._validate_command_result("Custom.echo", {"ok": "yes"}) + with self.assertRaises(ValueError): + client._validate_event_payload("Custom.ready", {"ok": "yes"}) + + client.Mod.addCustomCommand( + "Target.getTargets", + result_schema={ + "type": "object", + "properties": { + "targetInfos": { + "type": "array", + "items": { + "type": "object", + "properties": { + "targetId": {"type": "string"}, + "type": {"type": "string"}, + "title": {"type": "string"}, + "url": {"type": "string"}, + "attached": {"type": "boolean"}, + "canAccessOpener": {"type": "boolean"}, + "tabId": {"type": "integer"}, + }, + "required": ["targetId", "type", "title", "url", "attached", "canAccessOpener"], + "additionalProperties": True, + }, + } + }, + "required": ["targetInfos"], + "additionalProperties": True, + }, + ) + client.Mod.addCustomEvent("Target.targetCreated") + + extended_target_info = {**native_target_info, "tabId": 7} + self.assertEqual(client._validate_command_result("Target.getTargets", {"targetInfos": [extended_target_info]}), {"targetInfos": [extended_target_info]}) + self.assertEqual( + client._validate_event_payload("Target.targetCreated", {"targetInfo": extended_target_info}), + {"targetInfo": extended_target_info}, + ) + + +if __name__ == "__main__": + unittest.main() diff --git a/python/tests/test_NativeMessagingUpstreamTransport.py b/python/tests/test_NativeMessagingUpstreamTransport.py index 4c5f3e4..f11bdc9 100644 --- a/python/tests/test_NativeMessagingUpstreamTransport.py +++ b/python/tests/test_NativeMessagingUpstreamTransport.py @@ -3,14 +3,22 @@ import threading import time import unittest +import glob import os +import re import socket +import sys +import tempfile from pathlib import Path from queue import Queue from modcdp import ModCDPClient from modcdp.transport.NativeMessagingUpstreamTransport import NativeMessagingUpstreamTransport +ROOT = Path(__file__).resolve().parents[2] +EXTENSION_PATH = ROOT / "dist" / "extension" +NATIVE_MESSAGING_TEST_BROWSER_PATH: str | None = None + class NativeMessagingUpstreamTransportTests(unittest.TestCase): def test_config_owns_manifest_host_wait_timeout_loopback_and_injector_config(self) -> None: @@ -157,11 +165,24 @@ def wait_for_peer() -> None: def test_installs_launch_profile_native_host_manifest_and_connects_to_real_extension(self) -> None: upstream_nativemessaging_host_name = "com.modcdp.bridge" + temp_profile_dir = tempfile.TemporaryDirectory(prefix="modcdp.native.") cdp = ModCDPClient( - launcher={"launcher_mode": "local", "launcher_options": {"headless": True, "sandbox": False}}, + launcher={ + "launcher_mode": "local", + "launcher_options": { + "headless": True, + "user_data_dir": temp_profile_dir.name, + "cleanup_user_data_dir": True, + # Native messaging is browser -> client only. After explicit CHROME_PATH + # and CI /usr/bin/chromium, this test uses Chrome for Testing because + # Canary rejects --load-extension in this local test path. + "executable_path": extension_launch_flag_test_browser_path(), + }, + }, upstream={"upstream_mode": "nativemessaging", "upstream_nativemessaging_host_name": upstream_nativemessaging_host_name}, injector={ "injector_mode": "auto", + "injector_extension_path": str(EXTENSION_PATH), "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], "injector_trust_service_worker_target": True, }, @@ -174,8 +195,8 @@ def test_installs_launch_profile_native_host_manifest_and_connects_to_real_exten self.assertEqual(cdp.upstream_endpoint_kind, "modcdp_server") transport_url = cdp.transport.url if cdp.transport and cdp.transport.url else "" self.assertRegex(transport_url, rf"^native://{upstream_nativemessaging_host_name}@127\.0\.0\.1:\d+$") - profile_dir = cdp._launched_browser.get("profile_dir") if cdp._launched_browser else "" - self.assertTrue((Path(profile_dir) / "NativeMessagingHosts" / f"{upstream_nativemessaging_host_name}.json").exists()) + launched_profile_dir = cdp._launched_browser.get("profile_dir") if cdp._launched_browser else "" + self.assertTrue((Path(launched_profile_dir) / "NativeMessagingHosts" / f"{upstream_nativemessaging_host_name}.json").exists()) version = cdp.send("Browser.getVersion") self.assertIsInstance(version["product"], str) time.sleep(1.5) @@ -183,6 +204,7 @@ def test_installs_launch_profile_native_host_manifest_and_connects_to_real_exten self.assertIsInstance(second_version["product"], str) finally: cdp.close() + temp_profile_dir.cleanup() def _wait_until(predicate, timeout_s: float = 2.0) -> None: @@ -194,5 +216,53 @@ def _wait_until(predicate, timeout_s: float = 2.0) -> None: raise AssertionError("timed out waiting for condition") +def extension_launch_flag_test_browser_path() -> str: + global NATIVE_MESSAGING_TEST_BROWSER_PATH + if NATIVE_MESSAGING_TEST_BROWSER_PATH is not None: + return NATIVE_MESSAGING_TEST_BROWSER_PATH + explicit_candidates = [ + os.environ.get("CHROME_PATH"), + "/usr/bin/chromium" if sys.platform.startswith("linux") else None, + ] + for candidate in explicit_candidates: + if candidate and Path(candidate).exists(): + NATIVE_MESSAGING_TEST_BROWSER_PATH = candidate + return candidate + + home = Path.home() + if sys.platform == "darwin": + patterns = [ + str(home / "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing"), + str(home / "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium"), + str(home / "Library/Caches/puppeteer/chrome/mac*-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing"), + ] + elif sys.platform.startswith("win"): + local_app_data = Path(os.environ.get("LOCALAPPDATA") or home / "AppData/Local") + patterns = [ + str(local_app_data / "ms-playwright/chromium-*/chrome-win*/chrome.exe"), + str(home / ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe"), + ] + else: + patterns = [ + str(home / ".cache/ms-playwright/chromium-*/chrome-linux*/chrome"), + "/opt/pw-browsers/chromium-*/chrome-linux*/chrome", + str(home / ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome"), + ] + candidates = sorted( + {candidate for pattern in patterns for candidate in glob.glob(pattern)}, + key=lambda candidate: (_path_version(candidate), Path(candidate).stat().st_mtime), + reverse=True, + ) + if candidates: + NATIVE_MESSAGING_TEST_BROWSER_PATH = candidates[0] + return candidates[0] + raise RuntimeError("Native messaging tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing.") + + +def _path_version(candidate: str) -> int: + numbers = [int(value) for value in re.findall(r"\d+", candidate)] + return max(numbers) if numbers else 0 + + if __name__ == "__main__": unittest.main() diff --git a/python/tests/test_PipeUpstreamTransport.py b/python/tests/test_PipeUpstreamTransport.py index 25f9553..6221984 100644 --- a/python/tests/test_PipeUpstreamTransport.py +++ b/python/tests/test_PipeUpstreamTransport.py @@ -2,10 +2,14 @@ import os import unittest +from pathlib import Path from modcdp import ModCDPClient from modcdp.transport.PipeUpstreamTransport import PipeUpstreamTransport +ROOT = Path(__file__).resolve().parents[2] +EXTENSION_PATH = ROOT / "dist" / "extension" + class PipeUpstreamTransportTests(unittest.TestCase): def test_constructor_update_launcher_config_and_unconnected_errors_match_transport_surface(self) -> None: @@ -19,7 +23,7 @@ def test_constructor_update_launcher_config_and_unconnected_errors_match_transpo with self.assertRaisesRegex(RuntimeError, r"upstream\.upstream_mode=pipe requires"): transport.connect() with self.assertRaisesRegex(RuntimeError, "CDP pipe is not connected"): - transport.send({"id": 1, "method": "Browser.getVersion"}) + transport.send({"id": 1, "method": "Runtime.evaluate"}) def test_resets_connection_state_after_pipe_closes(self) -> None: read_fd, read_writer_fd = os.pipe() @@ -34,24 +38,26 @@ def test_resets_connection_state_after_pipe_closes(self) -> None: try: transport.connect() - transport.send({"id": 1, "method": "Browser.getVersion", "params": {}}) + transport.send({"id": 1, "method": "Runtime.evaluate", "params": {"expression": "1"}}) pipe_read_writer.close() self.assertTrue(_wait_for(lambda: len(closed) == 1)) with self.assertRaisesRegex(RuntimeError, "CDP pipe is not connected"): - transport.send({"id": 2, "method": "Browser.getVersion", "params": {}}) + transport.send({"id": 2, "method": "Runtime.evaluate", "params": {"expression": "1"}}) finally: transport.close() pipe_write_reader.close() def test_launches_real_browser_and_uses_pid_scoped_pipe_url(self) -> None: cdp = ModCDPClient( - launcher={"launcher_mode": "local", "launcher_options": {"headless": True, "sandbox": False}}, + launcher={"launcher_mode": "local", "launcher_options": {"headless": True}}, upstream={"upstream_mode": "pipe"}, injector={ - "injector_mode": "auto", + "injector_mode": "inject", + "injector_extension_path": str(EXTENSION_PATH), "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], "injector_trust_service_worker_target": True, }, + server={"server_routes": {"*.*": "chrome_debugger"}}, ) try: @@ -60,8 +66,12 @@ def test_launches_real_browser_and_uses_pid_scoped_pipe_url(self) -> None: self.assertEqual(cdp.upstream_endpoint_kind, "raw_cdp") self.assertRegex(cdp.cdp_url or "", r"^pipe://\d+$") self.assertEqual(cdp.transport.url if cdp.transport else None, cdp.cdp_url) - version = cdp.sendRaw("Browser.getVersion") - self.assertIsInstance(version["product"], str) + cdp.Mod.addCustomCommand( + "Custom.runtimeReadyState", + expression="async () => await cdp.send('Runtime.evaluate', { expression: 'document.readyState', returnByValue: true })", + ) + runtime = cdp.send("Custom.runtimeReadyState") + self.assertEqual(runtime["result"]["value"], "complete") finally: cdp.close() diff --git a/python/tests/test_RemoteBrowserLauncher.py b/python/tests/test_RemoteBrowserLauncher.py index 9962416..e4d60a5 100644 --- a/python/tests/test_RemoteBrowserLauncher.py +++ b/python/tests/test_RemoteBrowserLauncher.py @@ -17,7 +17,7 @@ def test_requires_upstream_cdp_url(self) -> None: def test_connects_to_real_browser_from_http_and_websocket_cdp_endpoints(self) -> None: port = LocalBrowserLauncher.freePort() local = LocalBrowserLauncher().launch( - {"port": port, "headless": True, "sandbox": False, "chrome_ready_timeout_ms": 45_000} + {"port": port, "headless": True, "chrome_ready_timeout_ms": 45_000} ) ws = None try: diff --git a/python/tests/test_ReverseWebSocketUpstreamTransport.py b/python/tests/test_ReverseWebSocketUpstreamTransport.py index 85a5f0e..524bc5a 100644 --- a/python/tests/test_ReverseWebSocketUpstreamTransport.py +++ b/python/tests/test_ReverseWebSocketUpstreamTransport.py @@ -1,12 +1,15 @@ from __future__ import annotations import json +import glob import os +import re import socket import sys import threading import time import unittest +from pathlib import Path from queue import Queue from typing import cast @@ -15,15 +18,19 @@ from modcdp import ModCDPClient from modcdp.transport.ReverseWebSocketUpstreamTransport import ReverseWebSocketUpstreamTransport +ROOT = Path(__file__).resolve().parents[2] +EXTENSION_PATH = ROOT / "dist" / "extension" +REVERSEWS_TEST_BROWSER_PATH = None + class ReverseWebSocketUpstreamTransportTests(unittest.TestCase): - def test_config_owns_bind_updates_wait_timeout_and_injector_config(self) -> None: + def test_config_owns_bind_updates_and_wait_timeout(self) -> None: transport = ReverseWebSocketUpstreamTransport({ "upstream_reversews_bind": "127.0.0.1:29292", "upstream_reversews_wait_timeout_ms": 10, }) self.assertEqual(transport.url, "ws://127.0.0.1:29292") - self.assertEqual(transport.getInjectorConfig(), {"upstream_reversews_url": "ws://127.0.0.1:29292"}) + self.assertEqual(transport.getInjectorConfig(), {}) self.assertIs( transport.update({ "upstream_reversews_bind": "127.0.0.1:29293", @@ -32,7 +39,7 @@ def test_config_owns_bind_updates_wait_timeout_and_injector_config(self) -> None transport, ) self.assertEqual(transport.url, "ws://127.0.0.1:29293") - self.assertEqual(transport.getInjectorConfig(), {"upstream_reversews_url": "ws://127.0.0.1:29293"}) + self.assertEqual(transport.getInjectorConfig(), {}) with self.assertRaisesRegex(RuntimeError, "Timed out waiting 5ms"): transport.waitForPeer() @@ -134,19 +141,27 @@ def test_accepts_replacement_peer_after_disconnect(self) -> None: first_peer.close() transport.close() - def test_accepts_real_extension_reverse_connection_and_routes_cdp_through_loopback(self) -> None: + def test_accepts_real_extension_reverse_connection_and_routes_cdp_through_chrome_debugger(self) -> None: cdp = ModCDPClient( launcher={ "launcher_mode": "local", - "launcher_options": {"headless": sys.platform.startswith("linux") and not os.environ.get("DISPLAY"), "sandbox": False}, + "launcher_options": { + "headless": sys.platform.startswith("linux") and not os.environ.get("DISPLAY"), + "sandbox": not sys.platform.startswith("linux"), + # Reversews is browser -> client only. After explicit CHROME_PATH and + # CI /usr/bin/chromium, these tests use Chrome for Testing because + # Canary rejects --load-extension in this local test path. + "executable_path": reversews_test_browser_path(), + }, }, upstream={"upstream_mode": "reversews"}, injector={ "injector_mode": "auto", + "injector_extension_path": str(EXTENSION_PATH), "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], "injector_trust_service_worker_target": True, + "injector_service_worker_probe_timeout_ms": 1_000, }, - server={"server_routes": {"*.*": "loopback_cdp"}}, ) try: @@ -155,15 +170,16 @@ def test_accepts_real_extension_reverse_connection_and_routes_cdp_through_loopba self.assertEqual(cdp.upstream_endpoint_kind, "modcdp_server") self.assertIsInstance(cdp.transport, ReverseWebSocketUpstreamTransport) transport = cast(ReverseWebSocketUpstreamTransport, cdp.transport) + self.assertEqual(transport.url, "ws://127.0.0.1:29292") self.assertEqual( transport.peer_info.get("extension_id") if transport.peer_info else None, "mdedooklbnfejodmnhmkdpkaedafkehf", ) - version = cdp.send("Browser.getVersion") - self.assertIsInstance(version["product"], str) + evaluated = cdp.send("Runtime.evaluate", {"expression": "location.href", "returnByValue": True}) + self.assertEqual(evaluated["result"]["value"], "about:blank") time.sleep(1.5) - second_version = cdp.send("Browser.getVersion") - self.assertIsInstance(second_version["product"], str) + second_evaluated = cdp.send("Runtime.evaluate", {"expression": "document.readyState", "returnByValue": True}) + self.assertEqual(second_evaluated["result"]["value"], "complete") finally: cdp.close() @@ -186,5 +202,57 @@ def _wait_until(predicate, timeout_s: float = 2.0) -> None: raise AssertionError("timed out waiting for condition") +def reversews_test_browser_path() -> str: + global REVERSEWS_TEST_BROWSER_PATH + if REVERSEWS_TEST_BROWSER_PATH is not None: + return REVERSEWS_TEST_BROWSER_PATH + explicit_candidates = [ + os.environ.get("CHROME_PATH"), + "/usr/bin/chromium" if sys.platform.startswith("linux") else None, + ] + for candidate in explicit_candidates: + if candidate and Path(candidate).exists(): + REVERSEWS_TEST_BROWSER_PATH = candidate + return candidate + home = Path.home() + if sys.platform == "darwin": + patterns = [ + str(home / "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing"), + str(home / "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium"), + str(home / "Library/Caches/puppeteer/chrome/mac*-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing"), + ] + elif sys.platform.startswith("win"): + local_app_data = Path(os.environ.get("LOCALAPPDATA") or home / "AppData/Local") + patterns = [ + str(local_app_data / "ms-playwright/chromium-*/chrome-win*/chrome.exe"), + str(home / ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe"), + ] + else: + patterns = [ + str(home / ".cache/ms-playwright/chromium-*/chrome-linux*/chrome"), + "/opt/pw-browsers/chromium-*/chrome-linux*/chrome", + str(home / ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome"), + ] + candidates = newest_first([match for pattern in patterns for match in glob.glob(pattern)]) + if candidates: + REVERSEWS_TEST_BROWSER_PATH = candidates[0] + return candidates[0] + raise RuntimeError("Reversews tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing.") + + +def newest_first(candidates: list[str]) -> list[str]: + return sorted(dict.fromkeys(candidates), key=path_score) + + +def path_score(candidate: str) -> tuple[int, float, str]: + numbers = [int(part) for part in re.findall(r"\d+", candidate)] + version = max(numbers) if numbers else 0 + try: + mtime = Path(candidate).stat().st_mtime + except OSError: + mtime = 0.0 + return (-version, -mtime, candidate) + + if __name__ == "__main__": unittest.main() diff --git a/python/tests/test_WebSocketUpstreamTransport.py b/python/tests/test_WebSocketUpstreamTransport.py index a1d524e..f576956 100644 --- a/python/tests/test_WebSocketUpstreamTransport.py +++ b/python/tests/test_WebSocketUpstreamTransport.py @@ -68,7 +68,7 @@ def test_constructor_update_and_server_config_match_ts_shape(self) -> None: def test_launches_real_browser_and_speaks_raw_cdp(self) -> None: cdp = ModCDPClient( - launcher={"launcher_mode": "local", "launcher_options": {"headless": True, "sandbox": False}}, + launcher={"launcher_mode": "local", "launcher_options": {"headless": True}}, upstream={"upstream_mode": "ws"}, injector={ "injector_mode": "auto", @@ -113,7 +113,7 @@ def test_launches_real_browser_and_speaks_raw_cdp(self) -> None: cdp.close() def test_resolves_real_http_cdp_endpoint_to_browser_websocket(self) -> None: - chrome = LocalBrowserLauncher({"headless": True, "sandbox": False}).launch() + chrome = LocalBrowserLauncher({"headless": True}).launch() transport = WebSocketUpstreamTransport({"cdp_url": chrome["cdp_url"]}) received: Queue[dict] = Queue() transport.onRecv(lambda message: received.put(message)) @@ -130,7 +130,7 @@ def test_resolves_real_http_cdp_endpoint_to_browser_websocket(self) -> None: def test_resolves_real_host_port_cdp_endpoint_to_browser_websocket(self) -> None: port = LocalBrowserLauncher.freePort() - chrome = LocalBrowserLauncher({"port": port, "headless": True, "sandbox": False}).launch() + chrome = LocalBrowserLauncher({"port": port, "headless": True}).launch() transport = WebSocketUpstreamTransport({"cdp_url": f"127.0.0.1:{port}"}) received: Queue[dict] = Queue() transport.onRecv(lambda message: received.put(message)) @@ -146,7 +146,7 @@ def test_resolves_real_host_port_cdp_endpoint_to_browser_websocket(self) -> None chrome["close"]() def test_close_clears_connection_state(self) -> None: - chrome = LocalBrowserLauncher({"headless": True, "sandbox": False}).launch() + chrome = LocalBrowserLauncher({"headless": True}).launch() transport = WebSocketUpstreamTransport({"cdp_url": chrome["cdp_url"]}) try: diff --git a/python/uv.lock b/python/uv.lock index 1097ad8..8079fb2 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -13,7 +13,7 @@ wheels = [ [[package]] name = "modcdp" -version = "0.0.13" +version = "0.0.15" source = { editable = "." } dependencies = [ { name = "pydantic" }, diff --git a/tsconfig.json b/tsconfig.json index 6d66b2b..fa02b7e 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -20,6 +20,6 @@ "useUnknownInCatchVariables": false, "verbatimModuleSyntax": true }, - "include": ["js/src/**/*.ts", "js/examples/**/*.ts", "extension/src/**/*.ts"], + "include": ["js/src/**/*.ts", "js/examples/**/*.ts", "js/test/**/*.ts", "extension/src/**/*.ts"], "exclude": ["dist", "node_modules"] } From 44c7a66911395923ae1e63ad7218b393d786ef8a Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 16:33:03 -0700 Subject: [PATCH 02/33] Fix ModCDP CI checks --- go/modcdp/injector/ExtensionInjector_test.go | 3 +- js/src/injector/ExtensionInjector.ts | 188 +++++------------- .../ExtensionsLoadUnpackedInjector.ts | 45 +---- .../LocalBrowserLaunchExtensionInjector.ts | 13 +- .../ModCDPClient_protocol_validation.test.ts | 28 ++- .../test.ExtensionsLoadUnpackedInjector.ts | 10 +- ...est.LocalBrowserLaunchExtensionInjector.ts | 38 +--- js/test/test.ModCDPClient.ts | 62 ++---- .../tests/test_BorrowedExtensionInjector.py | 36 ++-- .../tests/test_DiscoveredExtensionInjector.py | 36 ++-- 10 files changed, 150 insertions(+), 309 deletions(-) diff --git a/go/modcdp/injector/ExtensionInjector_test.go b/go/modcdp/injector/ExtensionInjector_test.go index 59ac172..bf8c96c 100644 --- a/go/modcdp/injector/ExtensionInjector_test.go +++ b/go/modcdp/injector/ExtensionInjector_test.go @@ -37,7 +37,8 @@ func TestExtensionInjectorOwnsSharedInjectorConfig(t *testing.T) { } func TestExtensionInjectorBaseInjectReportsTheClassName(t *testing.T) { - if _, err := NewExtensionInjector(ExtensionInjectorConfig{}).Inject(); err == nil || !strings.Contains(err.Error(), "ExtensionInjector.inject is not implemented") { + injector := NewExtensionInjector(ExtensionInjectorConfig{}) + if _, err := injector.Inject(); err == nil || !strings.Contains(err.Error(), "ExtensionInjector.inject is not implemented") { t.Fatalf("Inject error = %v", err) } } diff --git a/js/src/injector/ExtensionInjector.ts b/js/src/injector/ExtensionInjector.ts index 40943a8..5acf392 100644 --- a/js/src/injector/ExtensionInjector.ts +++ b/js/src/injector/ExtensionInjector.ts @@ -9,9 +9,7 @@ import { commands as TargetCommands } from "../types/generated/zod/Target.js"; const EXT_ID_FROM_URL = /^chrome-extension:\/\/([a-z]+)\//; export const DEFAULT_MODCDP_EXTENSION_ID = "mdedooklbnfejodmnhmkdpkaedafkehf"; -export const DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = [ - "/modcdp/service_worker.js", -]; +export const DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = ["/modcdp/service_worker.js"]; const MODCDP_READY_EXPRESSION = "Boolean(globalThis.ModCDP?.__ModCDPServerVersion >= 1 && globalThis.ModCDP?.handleCommand && globalThis.ModCDP?.addCustomEvent)"; export const DEFAULT_CDP_SEND_TIMEOUT_MS = 10_000; @@ -21,24 +19,14 @@ export const DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS = 60_000; export const DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS = 100; export const DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS = 20; -export type SendCDP = ( - method: string, - params?: ProtocolParams, - session_id?: string | null, -) => Promise; +export type SendCDP = (method: string, params?: ProtocolParams, session_id?: string | null) => Promise; export type TargetInfo = { targetId: string; type?: string; url?: string }; export type ExtensionInjectorConfig = { send?: SendCDP | null; - sessionIdForTarget?: - | ((target_id: string) => string | null | undefined) - | null; - attachToTarget?: - | ((target_id: string) => Promise) - | null; - waitForExecutionContext?: - | ((session_id: string, timeout_ms: number) => Promise) - | null; + sessionIdForTarget?: ((target_id: string) => string | null | undefined) | null; + attachToTarget?: ((target_id: string) => Promise) | null; + waitForExecutionContext?: ((session_id: string, timeout_ms: number) => Promise) | null; injector_extension_path?: string | null; injector_extension_id?: string | null; injector_service_worker_url_includes?: string[]; @@ -79,17 +67,11 @@ function delay(ms: number) { } export function defaultModCDPExtensionPath() { - if ( - typeof process === "object" && - process?.versions?.node && - import.meta.url.startsWith("file:") - ) { + if (typeof process === "object" && process?.versions?.node && import.meta.url.startsWith("file:")) { const relative_path = import.meta.url.includes("/dist/js/src/") ? "../../../../dist/extension.zip" : "../../../dist/extension.zip"; - return decodeURIComponent( - new URL(/* @vite-ignore */ relative_path, import.meta.url).pathname, - ); + return decodeURIComponent(new URL(/* @vite-ignore */ relative_path, import.meta.url).pathname); } return "../../../dist/extension.zip"; } @@ -101,14 +83,9 @@ function firstString(...values: unknown[]) { return null; } -export async function prepareUnpackedExtension( - extension_path: string, -): Promise { - const unpacked_path = fs.mkdtempSync( - path.join(os.tmpdir(), "modcdp-extension-"), - ); - const cleanup = async () => - fs.rmSync(unpacked_path, { recursive: true, force: true }); +export async function prepareUnpackedExtension(extension_path: string): Promise { + const unpacked_path = fs.mkdtempSync(path.join(os.tmpdir(), "modcdp-extension-")); + const cleanup = async () => fs.rmSync(unpacked_path, { recursive: true, force: true }); try { if (extension_path.endsWith(".zip")) { await extractZip(extension_path, unpacked_path); @@ -123,36 +100,21 @@ export async function prepareUnpackedExtension( } export async function extensionIdFromManifestKey(extension_path: string) { - const [crypto, fs, path] = await Promise.all([ - import("node:crypto"), - import("node:fs"), - import("node:path"), - ]); + const [crypto, fs, path] = await Promise.all([import("node:crypto"), import("node:fs"), import("node:path")]); const manifest_path = path.join(extension_path, "manifest.json"); if (!fs.existsSync(manifest_path)) return null; - const manifest = JSON.parse(fs.readFileSync(manifest_path, "utf8")) as Record< - string, - unknown - >; + const manifest = JSON.parse(fs.readFileSync(manifest_path, "utf8")) as Record; const key = firstString(manifest.key); if (!key) return null; - const digest = crypto - .createHash("sha256") - .update(Buffer.from(key, "base64")) - .digest() - .subarray(0, 16); + const digest = crypto.createHash("sha256").update(Buffer.from(key, "base64")).digest().subarray(0, 16); const alphabet = "abcdefghijklmnop"; - return [...digest] - .map((byte) => alphabet[byte >> 4] + alphabet[byte & 0x0f]) - .join(""); + return [...digest].map((byte) => alphabet[byte >> 4] + alphabet[byte & 0x0f]).join(""); } function extensionRoot(unpacked_path: string) { - if (fs.existsSync(path.join(unpacked_path, "manifest.json"))) - return unpacked_path; + if (fs.existsSync(path.join(unpacked_path, "manifest.json"))) return unpacked_path; const nested_path = path.join(unpacked_path, "extension"); - if (fs.existsSync(path.join(nested_path, "manifest.json"))) - return nested_path; + if (fs.existsSync(path.join(nested_path, "manifest.json"))) return nested_path; return unpacked_path; } @@ -171,9 +133,7 @@ async function extractZip(zip_path: string, destination: string) { normalized === ".." || normalized.startsWith("../") ) { - throw new Error( - `zip entry ${JSON.stringify(raw_name)} escapes extension extraction directory`, - ); + throw new Error(`zip entry ${JSON.stringify(raw_name)} escapes extension extraction directory`); } } execFileSync("unzip", ["-q", zip_path, "-d", destination]); @@ -198,16 +158,11 @@ export class ExtensionInjector { injector_require_service_worker_target: false, injector_service_worker_ready_expression: null, injector_cdp_send_timeout_ms: DEFAULT_CDP_SEND_TIMEOUT_MS, - injector_execution_context_timeout_ms: - DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, - injector_service_worker_probe_timeout_ms: - DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, - injector_service_worker_ready_timeout_ms: - DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, - injector_service_worker_poll_interval_ms: - DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, - injector_target_session_poll_interval_ms: - DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, + injector_execution_context_timeout_ms: DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, + injector_service_worker_probe_timeout_ms: DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, + injector_service_worker_ready_timeout_ms: DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, + injector_service_worker_poll_interval_ms: DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, + injector_target_session_poll_interval_ms: DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, injector_browserbase_api_key: null, injector_browserbase_base_url: null, upstream_nativemessaging_host_name: null, @@ -222,13 +177,9 @@ export class ExtensionInjector { ...this.options, ...config, injector_service_worker_url_includes: - config.injector_service_worker_url_includes ?? - this.options.injector_service_worker_url_includes ?? - [], + config.injector_service_worker_url_includes ?? this.options.injector_service_worker_url_includes ?? [], injector_service_worker_url_suffixes: - config.injector_service_worker_url_suffixes ?? - this.options.injector_service_worker_url_suffixes ?? - [], + config.injector_service_worker_url_suffixes ?? this.options.injector_service_worker_url_suffixes ?? [], }; return this; } @@ -242,9 +193,7 @@ export class ExtensionInjector { } getTransportConfig(): UpstreamTransportConfig { - return this.options.injector_extension_id - ? { injector_extension_id: this.options.injector_extension_id } - : {}; + return this.options.injector_extension_id ? { injector_extension_id: this.options.injector_extension_id } : {}; } async prepare() {} @@ -272,17 +221,13 @@ export class ExtensionInjector { method: string, params: ProtocolParams = {}, session_id: string | null = null, - timeout_ms = this.options.injector_cdp_send_timeout_ms ?? - DEFAULT_CDP_SEND_TIMEOUT_MS, + timeout_ms = this.options.injector_cdp_send_timeout_ms ?? DEFAULT_CDP_SEND_TIMEOUT_MS, ) { let timeout: ReturnType | null = null; return Promise.race([ this.send(method, params, session_id), new Promise((_, reject) => { - timeout = setTimeout( - () => reject(new Error(`${method} timed out after ${timeout_ms}ms`)), - timeout_ms, - ); + timeout = setTimeout(() => reject(new Error(`${method} timed out after ${timeout_ms}ms`)), timeout_ms); }), ]).finally(() => { if (timeout != null) clearTimeout(timeout); @@ -293,40 +238,24 @@ export class ExtensionInjector { const deadline = Date.now() + timeout_ms; while (true) { const session_id = this.options.sessionIdForTarget?.(target_id); - if (typeof session_id === "string" && session_id.length > 0) - return session_id; + if (typeof session_id === "string" && session_id.length > 0) return session_id; if (Date.now() >= deadline) return null; - await delay( - this.options.injector_target_session_poll_interval_ms ?? - DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, - ); + await delay(this.options.injector_target_session_poll_interval_ms ?? DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS); } } - protected async ensureSessionIdForTarget( - target_id: string, - timeout_ms = 0, - allow_attach = false, - ) { + protected async ensureSessionIdForTarget(target_id: string, timeout_ms = 0, allow_attach = false) { const session_id = this.options.sessionIdForTarget?.(target_id); - if (typeof session_id === "string" && session_id.length > 0) - return session_id; + if (typeof session_id === "string" && session_id.length > 0) return session_id; if (allow_attach) { - const attached_session_id = - await this.options.attachToTarget?.(target_id); - if ( - typeof attached_session_id === "string" && - attached_session_id.length > 0 - ) - return attached_session_id; + const attached_session_id = await this.options.attachToTarget?.(target_id); + if (typeof attached_session_id === "string" && attached_session_id.length > 0) return attached_session_id; } return await this.sessionIdForTarget(target_id, timeout_ms); } protected async targetInfos() { - return TargetCommands["Target.getTargets"].result.parse( - await this.send("Target.getTargets"), - ).targetInfos; + return TargetCommands["Target.getTargets"].result.parse(await this.send("Target.getTargets")).targetInfos; } protected async probeTarget( @@ -335,11 +264,7 @@ export class ExtensionInjector { { allow_attach = false }: { allow_attach?: boolean } = {}, ): Promise { if (this.unusable_target_ids.has(target.targetId)) return null; - const session_id = await this.ensureSessionIdForTarget( - target.targetId, - session_timeout_ms, - allow_attach, - ); + const session_id = await this.ensureSessionIdForTarget(target.targetId, session_timeout_ms, allow_attach); if (session_id == null) return null; await this.sendWithTimeout("Runtime.enable", {}, session_id); const probe = RuntimeCommands["Runtime.evaluate"].result.parse( @@ -362,27 +287,20 @@ export class ExtensionInjector { }; } - protected async discoverReadyServiceWorker({ - matched_only = false, - }: { matched_only?: boolean } = {}) { + protected async discoverReadyServiceWorker({ matched_only = false }: { matched_only?: boolean } = {}) { const target_infos = await this.targetInfos(); if (this.options.injector_trust_service_worker_target) { - const trusted_target = target_infos.find((candidate) => - this.serviceWorkerTargetMatches(candidate), - ) as TargetInfo | undefined; + const trusted_target = target_infos.find((candidate) => this.serviceWorkerTargetMatches(candidate)) as + | TargetInfo + | undefined; if (trusted_target) { - const probed = await this.probeTarget( - trusted_target, - this.options.injector_service_worker_probe_timeout_ms, - { - allow_attach: true, - }, - ); + const probed = await this.probeTarget(trusted_target, this.options.injector_service_worker_probe_timeout_ms, { + allow_attach: true, + }); if (probed) return { ...probed, source: "trusted" }; } } - if (this.options.injector_trust_service_worker_target || matched_only) - return null; + if (this.options.injector_trust_service_worker_target || matched_only) return null; for (const candidate of target_infos) { if (candidate.type !== "service_worker") continue; if (!candidate.url.startsWith("chrome-extension://")) continue; @@ -409,35 +327,25 @@ export class ExtensionInjector { matched_only, }); if (discovered) return discovered; - await delay( - this.options.injector_service_worker_poll_interval_ms ?? - DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, - ); + await delay(this.options.injector_service_worker_poll_interval_ms ?? DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS); } return null; } - protected serviceWorkerTargetMatches(candidate: { - type?: string; - url?: string; - }) { + protected serviceWorkerTargetMatches(candidate: { type?: string; url?: string }) { const url = candidate.url ?? ""; if (candidate.type !== "service_worker") return false; if (!url.startsWith("chrome-extension://")) return false; const has_extension_id = Boolean(this.options.injector_extension_id); if ( this.options.injector_extension_id && - !url.startsWith( - `chrome-extension://${this.options.injector_extension_id}/`, - ) + !url.startsWith(`chrome-extension://${this.options.injector_extension_id}/`) ) return false; const includes = this.options.injector_service_worker_url_includes ?? []; const suffixes = this.options.injector_service_worker_url_suffixes ?? []; - if (includes.length > 0 && !includes.every((part) => url.includes(part))) - return false; - if (suffixes.length > 0 && !suffixes.some((suffix) => url.endsWith(suffix))) - return false; + if (includes.length > 0 && !includes.every((part) => url.includes(part))) return false; + if (suffixes.length > 0 && !suffixes.some((suffix) => url.endsWith(suffix))) return false; return has_extension_id || includes.length > 0 || suffixes.length > 0; } } diff --git a/js/src/injector/ExtensionsLoadUnpackedInjector.ts b/js/src/injector/ExtensionsLoadUnpackedInjector.ts index 22013ca..43043c0 100644 --- a/js/src/injector/ExtensionsLoadUnpackedInjector.ts +++ b/js/src/injector/ExtensionsLoadUnpackedInjector.ts @@ -10,8 +10,7 @@ export class ExtensionsLoadUnpackedInjector extends ExtensionInjector { private cleanup: (() => Promise) | null = null; async prepare() { - const extension_path = - this.options.injector_extension_path ?? defaultModCDPExtensionPath(); + const extension_path = this.options.injector_extension_path ?? defaultModCDPExtensionPath(); if (this.unpacked_extension_path) { await super.prepare(); return; @@ -31,13 +30,8 @@ export class ExtensionsLoadUnpackedInjector extends ExtensionInjector { path: extension_path, })) as Record; } catch (error) { - const load_error = - error instanceof Error ? error : new Error(String(error)); - if ( - /Method not available|Method.*not.*found|wasn't found/i.test( - load_error.message, - ) - ) { + const load_error = error instanceof Error ? error : new Error(String(error)); + if (/Method not available|Method.*not.*found|wasn't found/i.test(load_error.message)) { this.last_error = load_error; return null; } @@ -49,31 +43,21 @@ export class ExtensionsLoadUnpackedInjector extends ExtensionInjector { const extension_id = load_result.id || load_result.extensionId; if (typeof extension_id !== "string" || !extension_id) { - throw new Error( - `Extensions.loadUnpacked returned no extension id (got ${JSON.stringify(load_result)})`, - ); + throw new Error(`Extensions.loadUnpacked returned no extension id (got ${JSON.stringify(load_result)})`); } this.options.injector_extension_id = extension_id; const sw_url_prefix = `chrome-extension://${extension_id}/`; - const deadline = - Date.now() + - (this.options.injector_service_worker_ready_timeout_ms ?? 60_000); + const deadline = Date.now() + (this.options.injector_service_worker_ready_timeout_ms ?? 60_000); while (Date.now() < deadline) { const target_infos = await this.targetInfos(); const target = target_infos.find( - (candidate) => - candidate.type === "service_worker" && - candidate.url.startsWith(sw_url_prefix), + (candidate) => candidate.type === "service_worker" && candidate.url.startsWith(sw_url_prefix), ) as TargetInfo | undefined; if (target) { - const probed = await this.probeTarget( - target, - this.options.injector_service_worker_probe_timeout_ms, - { - allow_attach: true, - }, - ); + const probed = await this.probeTarget(target, this.options.injector_service_worker_probe_timeout_ms, { + allow_attach: true, + }); if (probed) return { ...probed, @@ -81,16 +65,9 @@ export class ExtensionsLoadUnpackedInjector extends ExtensionInjector { extension_id, }; } - await new Promise((resolve) => - setTimeout( - resolve, - this.options.injector_service_worker_poll_interval_ms ?? 100, - ), - ); + await new Promise((resolve) => setTimeout(resolve, this.options.injector_service_worker_poll_interval_ms ?? 100)); } - throw new Error( - `Timed out waiting for service worker target for extension ${extension_id}.`, - ); + throw new Error(`Timed out waiting for service worker target for extension ${extension_id}.`); } async close() { diff --git a/js/src/injector/LocalBrowserLaunchExtensionInjector.ts b/js/src/injector/LocalBrowserLaunchExtensionInjector.ts index 4c4ca15..b1ff853 100644 --- a/js/src/injector/LocalBrowserLaunchExtensionInjector.ts +++ b/js/src/injector/LocalBrowserLaunchExtensionInjector.ts @@ -12,8 +12,7 @@ export class LocalBrowserLaunchExtensionInjector extends ExtensionInjector { private cleanup: (() => Promise) | null = null; async prepare() { - const extension_path = - this.options.injector_extension_path ?? defaultModCDPExtensionPath(); + const extension_path = this.options.injector_extension_path ?? defaultModCDPExtensionPath(); if (this.unpacked_extension_path) { await super.prepare(); return; @@ -47,17 +46,13 @@ export class LocalBrowserLaunchExtensionInjector extends ExtensionInjector { private async resolveExtensionId() { if (this.extension_id) return this.extension_id; this.extension_id = - typeof this.options.injector_extension_id === "string" && - this.options.injector_extension_id.trim() + typeof this.options.injector_extension_id === "string" && this.options.injector_extension_id.trim() ? this.options.injector_extension_id.trim() : null; if (!this.extension_id && this.unpacked_extension_path) { - this.extension_id = await extensionIdFromManifestKey( - this.unpacked_extension_path, - ); + this.extension_id = await extensionIdFromManifestKey(this.unpacked_extension_path); } - if (this.extension_id) - this.options.injector_extension_id = this.extension_id; + if (this.extension_id) this.options.injector_extension_id = this.extension_id; return this.extension_id; } } diff --git a/js/test/ModCDPClient_protocol_validation.test.ts b/js/test/ModCDPClient_protocol_validation.test.ts index e8de0b7..8d82d43 100644 --- a/js/test/ModCDPClient_protocol_validation.test.ts +++ b/js/test/ModCDPClient_protocol_validation.test.ts @@ -11,7 +11,9 @@ test("protocol validation covers native methods, native events, custom methods, "Custom.echo": { params: { text: string }; result: { ok: boolean } }; "Target.getTargets": { params: cdp.types.ts.Target.GetTargetsParams; - result: cdp.types.ts.Target.GetTargetsResult & { targetInfos: Array }; + result: cdp.types.ts.Target.GetTargetsResult & { + targetInfos: Array; + }; }; }, { "Custom.ready": { ok: boolean } } @@ -40,15 +42,24 @@ test("protocol validation covers native methods, native events, custom methods, // @ts-expect-error Runtime.evaluate params require expression. const badRuntimeParams: cdp.types.ts.Runtime.EvaluateParams = {}; void badRuntimeParams; - // @ts-expect-error Target.targetCreated targetInfo.targetId is a string. - const badNativeEvent: cdp.types.ts.Target.TargetCreatedEvent = { targetInfo: { ...nativeEvent.targetInfo, targetId: 1 } }; + const badNativeEvent: cdp.types.ts.Target.TargetCreatedEvent = { + targetInfo: { + ...nativeEvent.targetInfo, + // @ts-expect-error Target.targetCreated targetInfo.targetId is a string. + targetId: 1, + }, + }; void badNativeEvent; // @ts-expect-error Custom.echo requires text. client.Custom.echo({ id: "wrong" }); // @ts-expect-error Custom.echo returns ok as boolean. const badCustomResult: Awaited> = { ok: "yes" }; void badCustomResult; - await client.Mod.addMiddleware({ name: client.Target.getTargets, phase: client.RESPONSE, expression: "async (value, next) => next(value)" }); + await client.Mod.addMiddleware({ + name: client.Target.getTargets, + phase: client.RESPONSE, + expression: "async (value, next) => next(value)", + }); } assert.deepEqual(client.command_params_schemas.get("Runtime.evaluate")?.parse(runtimeParams), runtimeParams); @@ -93,7 +104,10 @@ test("protocol validation covers native methods, native events, custom methods, targetInfos: [{ ...nativeEvent.targetInfo, tabId: 7 }], }; assert.deepEqual(client.command_result_schemas.get("Target.getTargets")?.parse(extendedTargets), extendedTargets); - assert.deepEqual(client.event_schemas.get("Target.targetCreated")?.parse({ targetInfo: { ...nativeEvent.targetInfo, tabId: 7 } }), { - targetInfo: { ...nativeEvent.targetInfo, tabId: 7 }, - }); + assert.deepEqual( + client.event_schemas.get("Target.targetCreated")?.parse({ targetInfo: { ...nativeEvent.targetInfo, tabId: 7 } }), + { + targetInfo: { ...nativeEvent.targetInfo, tabId: 7 }, + }, + ); }); diff --git a/js/test/test.ExtensionsLoadUnpackedInjector.ts b/js/test/test.ExtensionsLoadUnpackedInjector.ts index 0a74207..65f3c2f 100644 --- a/js/test/test.ExtensionsLoadUnpackedInjector.ts +++ b/js/test/test.ExtensionsLoadUnpackedInjector.ts @@ -10,15 +10,11 @@ test("ExtensionsLoadUnpackedInjector prepares the default packaged extension zip try { await injector.prepare(); - const unpacked_extension_path = ( - injector as unknown as { unpacked_extension_path?: string | null } - ).unpacked_extension_path; + const unpacked_extension_path = (injector as unknown as { unpacked_extension_path?: string | null }) + .unpacked_extension_path; assert.equal(typeof unpacked_extension_path, "string"); assert.match(unpacked_extension_path!, /modcdp-extension-/); - assert.equal( - existsSync(path.join(unpacked_extension_path!, "manifest.json")), - true, - ); + assert.equal(existsSync(path.join(unpacked_extension_path!, "manifest.json")), true); } finally { await injector.close(); } diff --git a/js/test/test.LocalBrowserLaunchExtensionInjector.ts b/js/test/test.LocalBrowserLaunchExtensionInjector.ts index 875dd9a..70800ba 100644 --- a/js/test/test.LocalBrowserLaunchExtensionInjector.ts +++ b/js/test/test.LocalBrowserLaunchExtensionInjector.ts @@ -15,8 +15,7 @@ function crc32(data: Buffer) { let crc = 0xffffffff; for (const byte of data) { crc ^= byte; - for (let bit = 0; bit < 8; bit++) - crc = (crc >>> 1) ^ (0xedb88320 & -(crc & 1)); + for (let bit = 0; bit < 8; bit++) crc = (crc >>> 1) ^ (0xedb88320 & -(crc & 1)); } return (crc ^ 0xffffffff) >>> 0; } @@ -58,10 +57,7 @@ test("LocalBrowserLaunchExtensionInjector rejects zip entries outside extraction }); try { - await assert.rejects( - () => injector.prepare(), - /escapes extension extraction directory/, - ); + await assert.rejects(() => injector.prepare(), /escapes extension extraction directory/); assert.equal(existsSync(path.join(temp_dir, "evil.txt")), false); } finally { await injector.close(); @@ -76,22 +72,15 @@ test("LocalBrowserLaunchExtensionInjector prepares an unpacked extension directo try { await injector.prepare(); - const unpacked_extension_path = ( - injector as unknown as { unpacked_extension_path?: string | null } - ).unpacked_extension_path; + const unpacked_extension_path = (injector as unknown as { unpacked_extension_path?: string | null }) + .unpacked_extension_path; assert.equal(typeof unpacked_extension_path, "string"); assert.notEqual(unpacked_extension_path, EXTENSION_PATH); - assert.equal( - existsSync(path.join(unpacked_extension_path!, "manifest.json")), - true, - ); + assert.equal(existsSync(path.join(unpacked_extension_path!, "manifest.json")), true); assert.deepEqual(injector.getLauncherConfig(), { extra_args: [`--load-extension=${unpacked_extension_path}`], }); - assert.equal( - injector.options.injector_extension_id, - DEFAULT_MODCDP_EXTENSION_ID, - ); + assert.equal(injector.options.injector_extension_id, DEFAULT_MODCDP_EXTENSION_ID); } finally { await injector.close(); } @@ -102,22 +91,15 @@ test("LocalBrowserLaunchExtensionInjector prepares the default extension zip for try { await injector.prepare(); - const unpacked_extension_path = ( - injector as unknown as { unpacked_extension_path?: string | null } - ).unpacked_extension_path; + const unpacked_extension_path = (injector as unknown as { unpacked_extension_path?: string | null }) + .unpacked_extension_path; assert.equal(typeof unpacked_extension_path, "string"); assert.match(unpacked_extension_path!, /modcdp-extension-/); - assert.equal( - existsSync(path.join(unpacked_extension_path!, "manifest.json")), - true, - ); + assert.equal(existsSync(path.join(unpacked_extension_path!, "manifest.json")), true); assert.deepEqual(injector.getLauncherConfig(), { extra_args: [`--load-extension=${unpacked_extension_path}`], }); - assert.equal( - injector.options.injector_extension_id, - DEFAULT_MODCDP_EXTENSION_ID, - ); + assert.equal(injector.options.injector_extension_id, DEFAULT_MODCDP_EXTENSION_ID); } finally { await injector.close(); } diff --git a/js/test/test.ModCDPClient.ts b/js/test/test.ModCDPClient.ts index 83685a4..0ff0769 100644 --- a/js/test/test.ModCDPClient.ts +++ b/js/test/test.ModCDPClient.ts @@ -72,17 +72,9 @@ test("ModCDPClient normalizes nested config owners", () => { assert.equal(cdp._launcherOptions().user_data_dir, "/tmp/profile"); assert.equal(cdp.upstream.upstream_nats_wait_timeout_ms, 345); assert.equal(cdp.upstream.upstream_reversews_wait_timeout_ms, 456); - assert.equal( - cdp.upstream.upstream_nativemessaging_manifest, - "/tmp/native-host.json", - ); - assert.deepEqual(cdp.upstream.upstream_nativemessaging_manifests, [ - "/tmp/native-host-extra.json", - ]); - assert.equal( - cdp.upstream.upstream_nativemessaging_host_name, - "com.modcdp.custom", - ); + assert.equal(cdp.upstream.upstream_nativemessaging_manifest, "/tmp/native-host.json"); + assert.deepEqual(cdp.upstream.upstream_nativemessaging_manifests, ["/tmp/native-host-extra.json"]); + assert.equal(cdp.upstream.upstream_nativemessaging_host_name, "com.modcdp.custom"); assert.equal(cdp.upstream.upstream_nativemessaging_wait_timeout_ms, 567); assert.equal(cdp.upstream.upstream_ws_connect_error_settle_timeout_ms, 321); assert.equal(cdp.injector.injector_execution_context_timeout_ms, 4321); @@ -103,22 +95,16 @@ test("ModCDPClient normalizes nested config owners", () => { assert.equal(params.client.client_routes["*.*"], "direct_cdp"); assert.equal(params.server.server_browser_token, "token-1"); assert.equal(params.server.server_cdp_send_timeout_ms, 9876); - assert.equal( - params.server.server_loopback_execution_context_timeout_ms, - 8765, - ); + assert.equal(params.server.server_loopback_execution_context_timeout_ms, 8765); assert.equal(params.server.server_ws_connect_error_settle_timeout_ms, 7654); }); test("ModCDPClient dispatches root events before extension session is attached", () => { const cdp = new ModCDPClient(); const seen: string[] = []; - cdp.on( - "Target.targetCreated", - (payload: { targetInfo?: { targetId?: string } }) => { - seen.push(String(payload.targetInfo?.targetId)); - }, - ); + cdp.on("Target.targetCreated", (payload: { targetInfo?: { targetId?: string } }) => { + seen.push(String(payload.targetInfo?.targetId)); + }); cdp._onRecv({ method: "Target.targetCreated", @@ -252,10 +238,7 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server const service_worker_url = await cdp.Mod.evaluate({ expression: "chrome.runtime.getURL('modcdp/service_worker.js')", }); - assert.equal( - service_worker_url, - `chrome-extension://${cdp.extension_id}/modcdp/service_worker.js`, - ); + assert.equal(service_worker_url, `chrome-extension://${cdp.extension_id}/modcdp/service_worker.js`); const contexts = (await cdp.Mod.evaluate({ expression: "chrome.runtime.getContexts({}).then((contexts) => contexts.map((context) => ({ type: context.contextType, url: context.documentUrl || context.origin || '' })))", @@ -292,10 +275,7 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server }; cdp.on("Mod.pong", listener); }); - const ping_result = (await cdp.Mod.ping({ sent_at })) as Record< - string, - unknown - >; + const ping_result = (await cdp.Mod.ping({ sent_at })) as Record; const pong_payload = await pong; assert.equal(ping_result.ok, true); assert.equal(pong_payload.sent_at, sent_at); @@ -303,9 +283,7 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server assert.equal(pong_payload.from, "extension-service-worker"); } finally { if (direct_session_target_id) { - await cdp - .send("Target.closeTarget", { targetId: direct_session_target_id }) - .catch(() => ({})); + await cdp.send("Target.closeTarget", { targetId: direct_session_target_id }).catch(() => ({})); } await cdp.close(); } @@ -320,10 +298,7 @@ test("ModCDPClient preserves explicit empty service worker suffix config", async }); assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, []); - assert.deepEqual( - (await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, - [], - ); + assert.deepEqual((await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, []); }, 60_000); function reversewsTestBrowserPath() { @@ -415,13 +390,10 @@ function scorePath(candidate: string) { test("ModCDPClient defaults service worker suffix config to the ModCDP worker", async () => { const cdp = new ModCDPClient(); - assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, [ + assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, ["/modcdp/service_worker.js"]); + assert.deepEqual((await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, [ "/modcdp/service_worker.js", ]); - assert.deepEqual( - (await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, - ["/modcdp/service_worker.js"], - ); }); test("ModCDPClient preserves explicit null server config", () => { @@ -544,8 +516,7 @@ test("ModCDPClient.close keeps injector files until after launched browser shutd try { await cdp.connect(); const injector = cdp._injectors.find( - (candidate) => - candidate.constructor.name === "ExtensionsLoadUnpackedInjector", + (candidate) => candidate.constructor.name === "ExtensionsLoadUnpackedInjector", ) as unknown as { unpacked_extension_path?: string | null } | undefined; const unpacked_extension_path = injector?.unpacked_extension_path; assert.equal(typeof unpacked_extension_path, "string"); @@ -594,8 +565,5 @@ test("ModCDPClient.close clears top-level connection state", async () => { await cdp.close(); assert.equal(cdp.transport, null); - await assert.rejects( - () => cdp.sendRaw("Browser.getVersion"), - /ModCDP upstream is not connected/, - ); + await assert.rejects(() => cdp.sendRaw("Browser.getVersion"), /ModCDP upstream is not connected/); }, 60_000); diff --git a/python/tests/test_BorrowedExtensionInjector.py b/python/tests/test_BorrowedExtensionInjector.py index 25ace8e..38baa76 100644 --- a/python/tests/test_BorrowedExtensionInjector.py +++ b/python/tests/test_BorrowedExtensionInjector.py @@ -22,28 +22,28 @@ def test_bootstraps_modcdp_inside_live_extension_service_worker(self) -> None: "injector_trust_service_worker_target": True, }, ) - cdp = ModCDPClient( - launcher={"launcher_mode": "remote"}, - upstream={"upstream_mode": "ws"}, - injector={ - "injector_mode": "borrow", - "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], - "injector_trust_service_worker_target": True, - }, - ) - try: owner.connect() - cdp.upstream["upstream_cdp_url"] = owner.cdp_url - cdp.connect() - self.assertEqual(cdp.connect_timing.get("injector_source") if cdp.connect_timing else None, "borrowed") - self.assertEqual(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf") - self.assertEqual( - cdp.Mod.evaluate(expression="chrome.runtime.getURL('modcdp/service_worker.js')"), - "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js", + cdp = ModCDPClient( + launcher={"launcher_mode": "remote"}, + upstream={"upstream_mode": "ws", "upstream_cdp_url": owner.cdp_url}, + injector={ + "injector_mode": "borrow", + "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], + "injector_trust_service_worker_target": True, + }, ) + try: + cdp.connect() + self.assertEqual(cdp.connect_timing.get("injector_source") if cdp.connect_timing else None, "borrowed") + self.assertEqual(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf") + self.assertEqual( + cdp.Mod.evaluate(expression="chrome.runtime.getURL('modcdp/service_worker.js')"), + "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js", + ) + finally: + cdp.close() finally: - cdp.close() owner.close() diff --git a/python/tests/test_DiscoveredExtensionInjector.py b/python/tests/test_DiscoveredExtensionInjector.py index b3946ae..46c71a7 100644 --- a/python/tests/test_DiscoveredExtensionInjector.py +++ b/python/tests/test_DiscoveredExtensionInjector.py @@ -22,28 +22,28 @@ def test_attaches_to_already_loaded_real_modcdp_extension(self) -> None: "injector_trust_service_worker_target": True, }, ) - cdp = ModCDPClient( - launcher={"launcher_mode": "remote"}, - upstream={"upstream_mode": "ws"}, - injector={ - "injector_mode": "discover", - "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], - "injector_trust_service_worker_target": True, - }, - ) - try: owner.connect() - cdp.upstream["upstream_cdp_url"] = owner.cdp_url - cdp.connect() - self.assertEqual(cdp.connect_timing.get("injector_source") if cdp.connect_timing else None, "discovered") - self.assertEqual(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf") - self.assertEqual( - cdp.Mod.evaluate(expression="chrome.runtime.getURL('modcdp/service_worker.js')"), - "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js", + cdp = ModCDPClient( + launcher={"launcher_mode": "remote"}, + upstream={"upstream_mode": "ws", "upstream_cdp_url": owner.cdp_url}, + injector={ + "injector_mode": "discover", + "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], + "injector_trust_service_worker_target": True, + }, ) + try: + cdp.connect() + self.assertEqual(cdp.connect_timing.get("injector_source") if cdp.connect_timing else None, "discovered") + self.assertEqual(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf") + self.assertEqual( + cdp.Mod.evaluate(expression="chrome.runtime.getURL('modcdp/service_worker.js')"), + "chrome-extension://mdedooklbnfejodmnhmkdpkaedafkehf/modcdp/service_worker.js", + ) + finally: + cdp.close() finally: - cdp.close() owner.close() From 4539f17436fa7b5e5a7d2de6cfd2fa68a49797b3 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 16:38:39 -0700 Subject: [PATCH 03/33] Fix borrowed injector bootstrap lookup --- go/modcdp/injector/BorrowedExtensionInjector.go | 2 ++ go/modcdp/injector/ExtensionInjector_test.go | 2 +- python/modcdp/injector/BorrowedExtensionInjector.py | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/go/modcdp/injector/BorrowedExtensionInjector.go b/go/modcdp/injector/BorrowedExtensionInjector.go index e82a852..c6af6ec 100644 --- a/go/modcdp/injector/BorrowedExtensionInjector.go +++ b/go/modcdp/injector/BorrowedExtensionInjector.go @@ -166,9 +166,11 @@ func modcdpServerPathFromExtensionPath(extensionPath string) (string, error) { if extensionPath != "" { candidates = append(candidates, filepath.Join(extensionPath, "ModCDPServer.js")) candidates = append(candidates, filepath.Join(extensionPath, "js", "src", "server", "ModCDPServer.js")) + candidates = append(candidates, filepath.Join(filepath.Dir(extensionPath), "js", "src", "server", "ModCDPServer.js")) } if _, file, _, ok := runtime.Caller(0); ok { for dir := filepath.Dir(file); ; dir = filepath.Dir(dir) { + candidates = append(candidates, filepath.Join(dir, "dist", "js", "src", "server", "ModCDPServer.js")) candidates = append(candidates, filepath.Join(dir, "dist", "extension", "js", "src", "server", "ModCDPServer.js")) candidates = append(candidates, filepath.Join(dir, "dist", "extension", "ModCDPServer.js")) if parent := filepath.Dir(dir); parent == dir { diff --git a/go/modcdp/injector/ExtensionInjector_test.go b/go/modcdp/injector/ExtensionInjector_test.go index bf8c96c..3be2e6a 100644 --- a/go/modcdp/injector/ExtensionInjector_test.go +++ b/go/modcdp/injector/ExtensionInjector_test.go @@ -38,7 +38,7 @@ func TestExtensionInjectorOwnsSharedInjectorConfig(t *testing.T) { func TestExtensionInjectorBaseInjectReportsTheClassName(t *testing.T) { injector := NewExtensionInjector(ExtensionInjectorConfig{}) - if _, err := injector.Inject(); err == nil || !strings.Contains(err.Error(), "ExtensionInjector.inject is not implemented") { + if _, err := injector.Inject(); err == nil || !strings.Contains(err.Error(), "ExtensionInjector.Inject is not implemented") { t.Fatalf("Inject error = %v", err) } } diff --git a/python/modcdp/injector/BorrowedExtensionInjector.py b/python/modcdp/injector/BorrowedExtensionInjector.py index e3f6bcd..326b624 100644 --- a/python/modcdp/injector/BorrowedExtensionInjector.py +++ b/python/modcdp/injector/BorrowedExtensionInjector.py @@ -117,6 +117,7 @@ def bootstrap_modcdp_server_expression() -> str: def modcdp_server_source() -> str: candidates: list[Path] = [] for parent in Path(__file__).resolve().parents: + candidates.append(parent / "dist" / "js" / "src" / "server" / "ModCDPServer.js") candidates.append(parent / "dist" / "extension" / "js" / "src" / "server" / "ModCDPServer.js") candidates.append(parent / "dist" / "extension" / "ModCDPServer.js") candidates.append(parent / "ModCDPServer.js") From 4cb1ef9bc0fe40c80b4d95ce8682fbe6ca6c9ee5 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 16:42:26 -0700 Subject: [PATCH 04/33] Allow demos more Chrome startup time --- go/examples/demo/main.go | 7 ++++--- js/examples/demo.ts | 1 + python/examples/demo.py | 1 + 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/go/examples/demo/main.go b/go/examples/demo/main.go index 21afb8f..41c14ad 100644 --- a/go/examples/demo/main.go +++ b/go/examples/demo/main.go @@ -199,9 +199,10 @@ func main() { headless = true } launchOptions = modcdp.LaunchOptions{ - ExecutablePath: chromePath, - Headless: &headless, - Sandbox: &sandbox, + ExecutablePath: chromePath, + ChromeReadyTimeoutMS: 60_000, + Headless: &headless, + Sandbox: &sandbox, } } diff --git a/js/examples/demo.ts b/js/examples/demo.ts index 5d4ee2e..5a4d092 100644 --- a/js/examples/demo.ts +++ b/js/examples/demo.ts @@ -239,6 +239,7 @@ async function main() { } else { cdp_url = null; launch_options = { + chrome_ready_timeout_ms: 60_000, headless: process.platform === "linux" && !process.env.DISPLAY, sandbox: process.platform !== "linux", }; diff --git a/python/examples/demo.py b/python/examples/demo.py index d2ebed8..0fd9bea 100644 --- a/python/examples/demo.py +++ b/python/examples/demo.py @@ -149,6 +149,7 @@ def main(): else: cdp_url = None launch_options: dict[str, object] = { + "chrome_ready_timeout_ms": 60_000, "headless": sys.platform.startswith("linux") and not os.environ.get("DISPLAY"), "sandbox": not sys.platform.startswith("linux"), } From 463ee5a95624731911680c99919f853ac8d93a5a Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 16:44:31 -0700 Subject: [PATCH 05/33] Allow proxy examples more Chrome startup time --- js/examples/playwright.ts | 1 + js/examples/puppeteer.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/js/examples/playwright.ts b/js/examples/playwright.ts index 265e89e..b868ccf 100644 --- a/js/examples/playwright.ts +++ b/js/examples/playwright.ts @@ -26,6 +26,7 @@ let browser: Awaited> | null = null; try { chrome = await new LocalBrowserLauncher().launch({ + chrome_ready_timeout_ms: 60_000, headless: process.platform === "linux" && !process.env.DISPLAY, sandbox: process.platform !== "linux", extra_args: [`--load-extension=${extension_path}`], diff --git a/js/examples/puppeteer.ts b/js/examples/puppeteer.ts index e0785ba..0aa8c0a 100644 --- a/js/examples/puppeteer.ts +++ b/js/examples/puppeteer.ts @@ -26,6 +26,7 @@ let browser: Awaited> | null = null; try { chrome = await new LocalBrowserLauncher().launch({ + chrome_ready_timeout_ms: 60_000, headless: process.platform === "linux" && !process.env.DISPLAY, sandbox: process.platform !== "linux", extra_args: [`--load-extension=${extension_path}`], From fca30516f456c352b4afe4ab379dc94bbafb42a7 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 16:47:04 -0700 Subject: [PATCH 06/33] Stabilize ModCDPClient browser tests --- js/test/test.ModCDPClient.ts | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/js/test/test.ModCDPClient.ts b/js/test/test.ModCDPClient.ts index 0ff0769..bdfc1c3 100644 --- a/js/test/test.ModCDPClient.ts +++ b/js/test/test.ModCDPClient.ts @@ -228,8 +228,9 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server assert.equal(cdp.upstream.upstream_reversews_wait_timeout_ms, 10_000); assert.equal(cdp.injector.injector_mode, "auto"); assert.equal( - cdp.connect_timing?.injector_source === "local_launch" || - cdp.connect_timing?.injector_source === "extensions_load_unpacked", + ["discovered", "local_launch", "extensions_load_unpacked", "borrowed"].includes( + String(cdp.connect_timing?.injector_source), + ), true, ); assert.equal(cdp.client.client_routes["*.*"], "direct_cdp"); @@ -457,14 +458,15 @@ test("ModCDPClient rejects unknown component modes at their owning factory bound test("ModCDPClient.close does not close a remote browser it did not launch", async () => { const chrome = await new LocalBrowserLauncher({ headless: true, + chrome_ready_timeout_ms: 60_000, + extra_args: [`--load-extension=${EXTENSION_PATH}`], }).launch(); const raw_cdp = await CdpSocket.connect(chrome.cdp_url!); const cdp = new ModCDPClient({ launcher: { launcher_mode: "remote" }, upstream: { upstream_mode: "ws", upstream_cdp_url: chrome.cdp_url }, injector: { - injector_mode: "inject", - injector_extension_path: EXTENSION_PATH, + injector_mode: "discover", injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], injector_trust_service_worker_target: true, injector_service_worker_ready_timeout_ms: 5_000, From c4ec952dfc47e6611e4595ff302b785cd3af66e0 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 16:49:33 -0700 Subject: [PATCH 07/33] Align Python ModCDPClient browser tests --- python/tests/test_ModCDPClient.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/python/tests/test_ModCDPClient.py b/python/tests/test_ModCDPClient.py index 21fd222..8af46e7 100644 --- a/python/tests/test_ModCDPClient.py +++ b/python/tests/test_ModCDPClient.py @@ -190,10 +190,11 @@ def test_rejects_unknown_component_modes_at_their_owning_factory_boundary(self) def test_connects_with_local_launch_injector_chain(self) -> None: cdp = ModCDPClient( - launcher={"launcher_mode": "local", "launcher_options": {"headless": True}}, + launcher={"launcher_mode": "local", "launcher_options": {"headless": True, "chrome_ready_timeout_ms": 60_000}}, upstream={"upstream_mode": "ws"}, injector={ "injector_mode": "inject", + "injector_extension_path": str(EXTENSION_PATH), "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], "injector_trust_service_worker_target": True, "injector_service_worker_probe_timeout_ms": 30_000, @@ -266,6 +267,8 @@ def test_close_does_not_close_a_remote_browser_it_did_not_launch(self) -> None: chrome = LocalBrowserLauncher( { "headless": True, + "chrome_ready_timeout_ms": 60_000, + "extra_args": [f"--load-extension={EXTENSION_PATH}"], } ).launch() raw_ws = create_connection(cast(str, chrome["cdp_url"]), timeout=5) @@ -273,8 +276,7 @@ def test_close_does_not_close_a_remote_browser_it_did_not_launch(self) -> None: launcher={"launcher_mode": "remote"}, upstream={"upstream_mode": "ws", "upstream_cdp_url": chrome["cdp_url"]}, injector={ - "injector_mode": "inject", - "injector_extension_path": str(EXTENSION_PATH), + "injector_mode": "discover", "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], "injector_trust_service_worker_target": True, "injector_service_worker_ready_timeout_ms": 5_000, From c40259a6ee6a65dcbc686a5e7e3c8e9195a71783 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 16:52:05 -0700 Subject: [PATCH 08/33] Use Python auto injector path in browser test --- python/tests/test_ModCDPClient.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/tests/test_ModCDPClient.py b/python/tests/test_ModCDPClient.py index 8af46e7..64516ff 100644 --- a/python/tests/test_ModCDPClient.py +++ b/python/tests/test_ModCDPClient.py @@ -193,7 +193,7 @@ def test_connects_with_local_launch_injector_chain(self) -> None: launcher={"launcher_mode": "local", "launcher_options": {"headless": True, "chrome_ready_timeout_ms": 60_000}}, upstream={"upstream_mode": "ws"}, injector={ - "injector_mode": "inject", + "injector_mode": "auto", "injector_extension_path": str(EXTENSION_PATH), "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], "injector_trust_service_worker_target": True, @@ -209,7 +209,7 @@ def test_connects_with_local_launch_injector_chain(self) -> None: cdp.connect() self.assertIn( cdp.connect_timing.get("injector_source") if cdp.connect_timing else None, - ("local_launch", "extensions_load_unpacked"), + ("discovered", "local_launch", "extensions_load_unpacked", "borrowed"), ) self.assertEqual(cdp.extension_id, "mdedooklbnfejodmnhmkdpkaedafkehf") self.assertEqual( From 06becd28c3853ee0da4cf446e5e5ecb0324ff6cc Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 16:55:34 -0700 Subject: [PATCH 09/33] Fix Python pipe browser launch --- .../modcdp/launcher/LocalBrowserLauncher.py | 76 +++++-------------- 1 file changed, 21 insertions(+), 55 deletions(-) diff --git a/python/modcdp/launcher/LocalBrowserLauncher.py b/python/modcdp/launcher/LocalBrowserLauncher.py index 2ad7a0d..62266a4 100644 --- a/python/modcdp/launcher/LocalBrowserLauncher.py +++ b/python/modcdp/launcher/LocalBrowserLauncher.py @@ -220,64 +220,30 @@ def _move_fd_if_needed(fd: int, reserved: set[int]) -> int: return moved -class _SpawnedProcess: - def __init__(self, pid: int) -> None: - self.pid = pid - self.returncode: int | None = None +def _spawn_chrome_with_pipe_fds(executable_path: str, args: list[str], child_read: int, child_write: int) -> _ChromeProcess: + if sys.platform.startswith("win"): + raise RuntimeError("remote_debugging='pipe' is not supported by the Python launcher on Windows.") - def terminate(self) -> None: - self._signal(signal.SIGTERM) - - def kill(self) -> None: - self._signal(signal.SIGKILL) - - def wait(self, timeout: float | None = None) -> int: - deadline = None if timeout is None else time.monotonic() + timeout - while True: - try: - waited_pid, status = os.waitpid(self.pid, os.WNOHANG) - except ChildProcessError: - if self.returncode is None: - self.returncode = 0 - return self.returncode - if waited_pid == self.pid: - self.returncode = os.waitstatus_to_exitcode(status) - return self.returncode - if deadline is not None and time.monotonic() >= deadline: - assert timeout is not None - raise subprocess.TimeoutExpired([str(self.pid)], timeout) - time.sleep(0.05) - - def _signal(self, sig: int) -> None: - if self.returncode is not None: - return - try: - os.kill(self.pid, sig) - except ProcessLookupError: - self.returncode = 0 - - -def _spawn_chrome_with_pipe_fds(executable_path: str, args: list[str], child_read: int, child_write: int) -> _SpawnedProcess: - if not hasattr(os, "posix_spawn"): - raise RuntimeError("remote_debugging='pipe' requires os.posix_spawn support in the Python client.") os.set_inheritable(child_read, True) os.set_inheritable(child_write, True) - devnull = os.open(os.devnull, os.O_RDWR) - os.set_inheritable(devnull, True) - file_actions: list[tuple[int, int] | tuple[int, int, int]] = [ - (os.POSIX_SPAWN_DUP2, devnull, 0), - (os.POSIX_SPAWN_DUP2, devnull, 1), - (os.POSIX_SPAWN_DUP2, devnull, 2), - (os.POSIX_SPAWN_DUP2, child_read, 3), - (os.POSIX_SPAWN_DUP2, child_write, 4), - ] - for fd in {devnull, child_read, child_write} - {0, 1, 2, 3, 4}: - file_actions.append((os.POSIX_SPAWN_CLOSE, fd)) - try: - pid = os.posix_spawn(executable_path, [executable_path, *args], os.environ, file_actions=file_actions) - return _SpawnedProcess(pid) - finally: - os.close(devnull) + + def setup_pipe_fds() -> None: + os.dup2(child_read, 3) + os.dup2(child_write, 4) + if child_read not in (3, 4): + os.close(child_read) + if child_write not in (3, 4): + os.close(child_write) + + return subprocess.Popen( + [executable_path, *args], + stdin=subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + pass_fds=(child_read, child_write), + preexec_fn=setup_pipe_fds, + start_new_session=True, + ) class _ChromeProcess(Protocol): From 313f12bd293223195ca90f3e9be1999cef11ce4d Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 16:57:32 -0700 Subject: [PATCH 10/33] Pass Python pipe fds directly --- .../modcdp/launcher/LocalBrowserLauncher.py | 45 +++++++++++-------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/python/modcdp/launcher/LocalBrowserLauncher.py b/python/modcdp/launcher/LocalBrowserLauncher.py index 62266a4..80e6627 100644 --- a/python/modcdp/launcher/LocalBrowserLauncher.py +++ b/python/modcdp/launcher/LocalBrowserLauncher.py @@ -224,26 +224,35 @@ def _spawn_chrome_with_pipe_fds(executable_path: str, args: list[str], child_rea if sys.platform.startswith("win"): raise RuntimeError("remote_debugging='pipe' is not supported by the Python launcher on Windows.") - os.set_inheritable(child_read, True) - os.set_inheritable(child_write, True) - - def setup_pipe_fds() -> None: + extra_parent_fds: list[int] = [] + if child_read == 4: + child_read = os.dup(child_read) + extra_parent_fds.append(child_read) + if child_write == 3: + child_write = os.dup(child_write) + extra_parent_fds.append(child_write) + if child_read != 3: os.dup2(child_read, 3) + if child_write != 4: os.dup2(child_write, 4) - if child_read not in (3, 4): - os.close(child_read) - if child_write not in (3, 4): - os.close(child_write) - - return subprocess.Popen( - [executable_path, *args], - stdin=subprocess.DEVNULL, - stdout=subprocess.DEVNULL, - stderr=subprocess.DEVNULL, - pass_fds=(child_read, child_write), - preexec_fn=setup_pipe_fds, - start_new_session=True, - ) + os.set_inheritable(3, True) + os.set_inheritable(4, True) + try: + return subprocess.Popen( + [executable_path, *args], + stdin=subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + pass_fds=(3, 4), + start_new_session=True, + ) + finally: + if child_read != 3: + os.close(3) + if child_write != 4: + os.close(4) + for fd in extra_parent_fds: + os.close(fd) class _ChromeProcess(Protocol): From 6008edbd9e1c56c345851252fd0516cff705e1a7 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 16:59:20 -0700 Subject: [PATCH 11/33] Stabilize Python pipe fd setup --- python/modcdp/launcher/LocalBrowserLauncher.py | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/python/modcdp/launcher/LocalBrowserLauncher.py b/python/modcdp/launcher/LocalBrowserLauncher.py index 80e6627..d751bff 100644 --- a/python/modcdp/launcher/LocalBrowserLauncher.py +++ b/python/modcdp/launcher/LocalBrowserLauncher.py @@ -85,6 +85,10 @@ def launch(self, options: BrowserLaunchOptions | None = None) -> LaunchedBrowser child_read, parent_write = os.pipe() parent_read = _move_fd_if_needed(parent_read, {3, 4}) parent_write = _move_fd_if_needed(parent_write, {3, 4}) + if child_read == 4: + child_read = _move_fd_if_needed(child_read, {4}) + if child_write == 3: + child_write = _move_fd_if_needed(child_write, {3}) process = _spawn_chrome_with_pipe_fds(executable_path, args, child_read, child_write) os.close(child_read) os.close(child_write) @@ -224,13 +228,6 @@ def _spawn_chrome_with_pipe_fds(executable_path: str, args: list[str], child_rea if sys.platform.startswith("win"): raise RuntimeError("remote_debugging='pipe' is not supported by the Python launcher on Windows.") - extra_parent_fds: list[int] = [] - if child_read == 4: - child_read = os.dup(child_read) - extra_parent_fds.append(child_read) - if child_write == 3: - child_write = os.dup(child_write) - extra_parent_fds.append(child_write) if child_read != 3: os.dup2(child_read, 3) if child_write != 4: @@ -251,8 +248,6 @@ def _spawn_chrome_with_pipe_fds(executable_path: str, args: list[str], child_rea os.close(3) if child_write != 4: os.close(4) - for fd in extra_parent_fds: - os.close(fd) class _ChromeProcess(Protocol): From b8104728e79cd33bfc2314edfe9a07e57e1cda07 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 17:06:48 -0700 Subject: [PATCH 12/33] Align remote close browser tests --- go/modcdp/client/ModCDPClient_test.go | 20 ++++++++++---------- js/test/test.ModCDPClient.ts | 4 ++-- python/tests/test_ModCDPClient.py | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/go/modcdp/client/ModCDPClient_test.go b/go/modcdp/client/ModCDPClient_test.go index a9fc320..763650f 100644 --- a/go/modcdp/client/ModCDPClient_test.go +++ b/go/modcdp/client/ModCDPClient_test.go @@ -661,8 +661,14 @@ func TestModCDPClientConnectsWithLocalLaunchAndInjectorChain(t *testing.T) { func TestModCDPClientCloseDoesNotCloseRemoteBrowserItDidNotLaunch(t *testing.T) { headless := true + extensionPath, err := filepath.Abs("../../../dist/extension") + if err != nil { + t.Fatal(err) + } chrome, err := NewLocalBrowserLauncher(LaunchOptions{ - Headless: &headless, + Headless: &headless, + ChromeReadyTimeoutMS: 60_000, + ExtraArgs: []string{"--load-extension=" + extensionPath}, }).Launch(LaunchOptions{}) if err != nil { t.Fatal(err) @@ -676,21 +682,15 @@ func TestModCDPClientCloseDoesNotCloseRemoteBrowserItDidNotLaunch(t *testing.T) t.Fatal(err) } defer rawConn.Close() - extensionPath, err := filepath.Abs("../../../dist/extension") - if err != nil { - t.Fatal(err) - } - cdp := New(Options{ Launcher: LauncherConfig{LauncherMode: "remote"}, Upstream: UpstreamConfig{UpstreamMode: "ws", UpstreamCDPURL: chrome.CDPURL}, Injector: InjectorConfig{ - InjectorMode: "inject", - InjectorExtensionPath: extensionPath, + InjectorMode: "discover", InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, InjectorTrustServiceWorkerTarget: true, - InjectorServiceWorkerReadyTimeoutMS: 5_000, - InjectorServiceWorkerProbeTimeoutMS: 5_000, + InjectorServiceWorkerReadyTimeoutMS: 30_000, + InjectorServiceWorkerProbeTimeoutMS: 30_000, }, Client: ClientConfig{ClientRoutes: map[string]string{"*.*": "direct_cdp"}}, }) diff --git a/js/test/test.ModCDPClient.ts b/js/test/test.ModCDPClient.ts index bdfc1c3..c497f33 100644 --- a/js/test/test.ModCDPClient.ts +++ b/js/test/test.ModCDPClient.ts @@ -469,8 +469,8 @@ test("ModCDPClient.close does not close a remote browser it did not launch", asy injector_mode: "discover", injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], injector_trust_service_worker_target: true, - injector_service_worker_ready_timeout_ms: 5_000, - injector_service_worker_probe_timeout_ms: 5_000, + injector_service_worker_ready_timeout_ms: 30_000, + injector_service_worker_probe_timeout_ms: 30_000, }, client: { client_routes: { "*.*": "direct_cdp" } }, }); diff --git a/python/tests/test_ModCDPClient.py b/python/tests/test_ModCDPClient.py index 64516ff..2e66f98 100644 --- a/python/tests/test_ModCDPClient.py +++ b/python/tests/test_ModCDPClient.py @@ -279,8 +279,8 @@ def test_close_does_not_close_a_remote_browser_it_did_not_launch(self) -> None: "injector_mode": "discover", "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], "injector_trust_service_worker_target": True, - "injector_service_worker_ready_timeout_ms": 5_000, - "injector_service_worker_probe_timeout_ms": 5_000, + "injector_service_worker_ready_timeout_ms": 30_000, + "injector_service_worker_probe_timeout_ms": 30_000, }, client={"client_routes": {"*.*": "direct_cdp"}}, ) From 2dfa879caef2fd88c17eca088e230681555974d3 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 17:10:33 -0700 Subject: [PATCH 13/33] Stabilize reverse transport CI paths --- go/examples/demo/main.go | 16 ++++++++++++++-- go/modcdp/client/ModCDPClient_test.go | 14 +++++++++++--- js/examples/demo.ts | 13 ++++++++++++- python/examples/demo.py | 12 ++++++++++-- 4 files changed, 47 insertions(+), 8 deletions(-) diff --git a/go/examples/demo/main.go b/go/examples/demo/main.go index 41c14ad..a60af8c 100644 --- a/go/examples/demo/main.go +++ b/go/examples/demo/main.go @@ -29,11 +29,23 @@ import ( "golang.org/x/term" ) +const reverseTransportWaitTimeoutMS = 60_000 + func optionsFor(mode, upstreamMode, cdpURL, extensionPath string, launchOptions modcdp.LaunchOptions) modcdp.Options { + upstream := modcdp.UpstreamConfig{UpstreamMode: upstreamMode, UpstreamCDPURL: cdpURL} + if upstreamMode == "reversews" { + upstream.UpstreamReverseWSWaitTimeoutMS = reverseTransportWaitTimeoutMS + } + if upstreamMode == "nativemessaging" { + upstream.UpstreamNativeMessagingWaitTimeoutMS = reverseTransportWaitTimeoutMS + } + if upstreamMode == "nats" { + upstream.UpstreamNATSWaitTimeoutMS = reverseTransportWaitTimeoutMS + } if mode == "direct" { return modcdp.Options{ Launcher: modcdp.LauncherConfig{LauncherMode: map[bool]string{true: "remote", false: "local"}[cdpURL != ""], LauncherOptions: launchOptions}, - Upstream: modcdp.UpstreamConfig{UpstreamMode: upstreamMode, UpstreamCDPURL: cdpURL}, + Upstream: upstream, Injector: modcdp.InjectorConfig{InjectorMode: "auto", InjectorExtensionPath: extensionPath}, Client: modcdp.ClientConfig{ClientRoutes: clientRoutesFor(mode)}, } @@ -43,7 +55,7 @@ func optionsFor(mode, upstreamMode, cdpURL, extensionPath string, launchOptions } return modcdp.Options{ Launcher: modcdp.LauncherConfig{LauncherMode: map[bool]string{true: "remote", false: "local"}[cdpURL != ""], LauncherOptions: launchOptions}, - Upstream: modcdp.UpstreamConfig{UpstreamMode: upstreamMode, UpstreamCDPURL: cdpURL}, + Upstream: upstream, Injector: modcdp.InjectorConfig{InjectorMode: "auto", InjectorExtensionPath: extensionPath}, Client: modcdp.ClientConfig{ClientRoutes: clientRoutesFor(mode)}, Server: server, diff --git a/go/modcdp/client/ModCDPClient_test.go b/go/modcdp/client/ModCDPClient_test.go index 763650f..b271d13 100644 --- a/go/modcdp/client/ModCDPClient_test.go +++ b/go/modcdp/client/ModCDPClient_test.go @@ -510,15 +510,21 @@ func TestModCDPClientOnlyExposesInjectorAttachAfterCDPSendIsAvailable(t *testing func TestModCDPClientConnectsWithLocalLaunchAndInjectorChain(t *testing.T) { headless := runtime.GOOS == "linux" && os.Getenv("DISPLAY") == "" + extensionPath, err := filepath.Abs("../../../dist/extension") + if err != nil { + t.Fatal(err) + } cdp := New(Options{ Launcher: LauncherConfig{LauncherMode: "local", LauncherOptions: LaunchOptions{ - Headless: boolPtr(headless), + Headless: boolPtr(headless), + ChromeReadyTimeoutMS: 60_000, }, }, Upstream: UpstreamConfig{UpstreamMode: "ws"}, Injector: InjectorConfig{ - InjectorMode: "inject", + InjectorMode: "auto", + InjectorExtensionPath: extensionPath, InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, InjectorTrustServiceWorkerTarget: true, InjectorServiceWorkerProbeTimeoutMS: 30_000, @@ -537,7 +543,9 @@ func TestModCDPClientConnectsWithLocalLaunchAndInjectorChain(t *testing.T) { if err := cdp.Connect(); err != nil { t.Fatal(err) } - if cdp.ConnectTiming["injector_source"] != "local_launch" && cdp.ConnectTiming["injector_source"] != "extensions_load_unpacked" { + switch cdp.ConnectTiming["injector_source"] { + case "discovered", "local_launch", "extensions_load_unpacked", "borrowed": + default: t.Fatalf("injector_source = %v", cdp.ConnectTiming["injector_source"]) } if cdp.ExtensionID != DefaultModCDPExtensionID { diff --git a/js/examples/demo.ts b/js/examples/demo.ts index 5a4d092..b29c8e2 100644 --- a/js/examples/demo.ts +++ b/js/examples/demo.ts @@ -42,6 +42,7 @@ const EXTENSION_PATH = existsSync(path.join(candidate, "modcdp/service_worker.js")), ) ?? path.resolve(HERE, "..", "..", "extension"); const DEFAULT_DEMO_EVENT_TIMEOUT_MS = 10_000; +const DEFAULT_REVERSE_TRANSPORT_WAIT_TIMEOUT_MS = 60_000; const DEFAULT_LIVE_CDP_POLL_INTERVAL_MS = 250; const DEFAULT_LIVE_CDP_ACTIVE_PORT_STALE_MS = 1_000; const DEFAULT_TARGET_EVENT_TIMEOUT_MS = 10_000; @@ -121,7 +122,17 @@ function clientOptionsFor(mode, upstream_mode, cdp_url, launch_options = {}) { const launcher = cdp_url ? ({ launcher_mode: "remote" } as const) : ({ launcher_mode: "local", launcher_options: launch_options } as const); - const upstream = { upstream_mode, upstream_cdp_url: cdp_url }; + const upstream = { + upstream_mode, + upstream_cdp_url: cdp_url, + ...(upstream_mode === "reversews" + ? { upstream_reversews_wait_timeout_ms: DEFAULT_REVERSE_TRANSPORT_WAIT_TIMEOUT_MS } + : {}), + ...(upstream_mode === "nativemessaging" + ? { upstream_nativemessaging_wait_timeout_ms: DEFAULT_REVERSE_TRANSPORT_WAIT_TIMEOUT_MS } + : {}), + ...(upstream_mode === "nats" ? { upstream_nats_wait_timeout_ms: DEFAULT_REVERSE_TRANSPORT_WAIT_TIMEOUT_MS } : {}), + }; const injector = { injector_mode: "auto" as const, injector_extension_path: EXTENSION_PATH, diff --git a/python/examples/demo.py b/python/examples/demo.py index 0fd9bea..66518ad 100644 --- a/python/examples/demo.py +++ b/python/examples/demo.py @@ -28,6 +28,7 @@ ROOT = Path(__file__).resolve().parent.parent.parent EXTENSION_PATH = ROOT / "dist" / "extension" +REVERSE_TRANSPORT_WAIT_TIMEOUT_MS = 60_000 LIVE_DEVTOOLS_ACTIVE_PORTS = [ Path.home() / "Library" / "Application Support" / "Google" / "Chrome" / "DevToolsActivePort", Path.home() / "Library" / "Application Support" / "Google" / "Chrome Beta" / "DevToolsActivePort", @@ -99,10 +100,17 @@ def parse_args(argv): def client_options_for(mode, upstream_mode, cdp_url, launch_options=None): + upstream: ProtocolPayload = {"upstream_mode": upstream_mode, "upstream_cdp_url": cdp_url} + if upstream_mode == "reversews": + upstream["upstream_reversews_wait_timeout_ms"] = REVERSE_TRANSPORT_WAIT_TIMEOUT_MS + if upstream_mode == "nativemessaging": + upstream["upstream_nativemessaging_wait_timeout_ms"] = REVERSE_TRANSPORT_WAIT_TIMEOUT_MS + if upstream_mode == "nats": + upstream["upstream_nats_wait_timeout_ms"] = REVERSE_TRANSPORT_WAIT_TIMEOUT_MS if mode == "direct": return { "launcher": {"launcher_mode": "remote" if cdp_url else "local", "launcher_options": launch_options or {}}, - "upstream": {"upstream_mode": upstream_mode, "upstream_cdp_url": cdp_url}, + "upstream": upstream, "injector": {"injector_mode": "auto", "injector_extension_path": str(EXTENSION_PATH)}, "client": {"client_routes": client_routes_for(mode)}, } @@ -111,7 +119,7 @@ def client_options_for(mode, upstream_mode, cdp_url, launch_options=None): } return { "launcher": {"launcher_mode": "remote" if cdp_url else "local", "launcher_options": launch_options or {}}, - "upstream": {"upstream_mode": upstream_mode, "upstream_cdp_url": cdp_url}, + "upstream": upstream, "injector": {"injector_mode": "auto", "injector_extension_path": str(EXTENSION_PATH)}, "client": {"client_routes": client_routes_for(mode)}, "server": server, From 943f26925aacc4e03b29a0bb2246899a8b1802f3 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 17:13:42 -0700 Subject: [PATCH 14/33] Give router live context tests CI time --- go/modcdp/router/AutoSessionRouter_test.go | 6 +++--- js/test/test.AutoSessionRouter.ts | 4 ++-- python/tests/test_AutoSessionRouter.py | 6 +++--- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/go/modcdp/router/AutoSessionRouter_test.go b/go/modcdp/router/AutoSessionRouter_test.go index b9d31e6..1ba7fe2 100644 --- a/go/modcdp/router/AutoSessionRouter_test.go +++ b/go/modcdp/router/AutoSessionRouter_test.go @@ -161,7 +161,7 @@ func TestAutoSessionRouterTracksRealTargetSessionsAndExecutionContexts(t *testin return nil, fmt.Errorf("%s timed out", method) } } - router = NewAutoSessionRouter(send, func() int { return 5000 }) + router = NewAutoSessionRouter(send, func() int { return 30000 }) go func() { for { @@ -217,7 +217,7 @@ func TestAutoSessionRouterTracksRealTargetSessionsAndExecutionContexts(t *testin contextResult := make(chan int, 1) contextError := make(chan error, 1) go func() { - contextID, err := router.WaitForExecutionContext(sessionID, 5000) + contextID, err := router.WaitForExecutionContext(sessionID, 30000) if err != nil { contextError <- err return @@ -234,7 +234,7 @@ func TestAutoSessionRouterTracksRealTargetSessionsAndExecutionContexts(t *testin } case err := <-contextError: t.Fatal(err) - case <-time.After(10 * time.Second): + case <-time.After(35 * time.Second): t.Fatal("timed out waiting for execution context") } if _, err := send("Target.detachFromTarget", map[string]any{"sessionId": sessionID}, ""); err != nil { diff --git a/js/test/test.AutoSessionRouter.ts b/js/test/test.AutoSessionRouter.ts index 7b7693d..b5e7414 100644 --- a/js/test/test.AutoSessionRouter.ts +++ b/js/test/test.AutoSessionRouter.ts @@ -74,7 +74,7 @@ test("AutoSessionRouter tracks real target sessions and execution contexts", asy const router = new AutoSessionRouter( (method, params = {}, session_id = null) => send(method, params as Record, session_id) as Promise>, - () => 5_000, + () => 30_000, ); function send(method: string, params: Record = {}, session_id: string | null = null) { @@ -125,7 +125,7 @@ test("AutoSessionRouter tracks real target sessions and execution contexts", asy const session_id = router.sessionIdForTarget(target_id)!; const context_promise = router.waitForExecutionContext(session_id, { - timeout_ms: 5_000, + timeout_ms: 30_000, }); await send("Runtime.enable", {}, session_id); await expect(context_promise).resolves.toEqual(expect.any(Number)); diff --git a/python/tests/test_AutoSessionRouter.py b/python/tests/test_AutoSessionRouter.py index d6c2cdc..0b9cd57 100644 --- a/python/tests/test_AutoSessionRouter.py +++ b/python/tests/test_AutoSessionRouter.py @@ -86,7 +86,7 @@ def send(method: str, params: dict[str, Any] | None = None, session_id: str | No result = response.get("result") return result if isinstance(result, dict) else {} - router = AutoSessionRouter(send, lambda: 5_000) + router = AutoSessionRouter(send, lambda: 30_000) def reader() -> None: while not closed: @@ -121,11 +121,11 @@ def reader() -> None: session_id = _wait_for(lambda: router.sessionIdForTarget(target_id)) context_result: Queue[int | BaseException] = Queue() threading.Thread( - target=lambda: _put_result(context_result, lambda: router.waitForExecutionContext(session_id, 5_000)), + target=lambda: _put_result(context_result, lambda: router.waitForExecutionContext(session_id, 30_000)), daemon=True, ).start() send("Runtime.enable", {}, session_id) - context_id = context_result.get(timeout=10) + context_id = context_result.get(timeout=35) if isinstance(context_id, BaseException): raise context_id self.assertIsInstance(context_id, int) From b3f853b941f5089863695abe936505b113bda849 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 17:17:23 -0700 Subject: [PATCH 15/33] Avoid parent fd mutation for Python pipe launch --- .../modcdp/launcher/LocalBrowserLauncher.py | 33 +++++++++---------- 1 file changed, 15 insertions(+), 18 deletions(-) diff --git a/python/modcdp/launcher/LocalBrowserLauncher.py b/python/modcdp/launcher/LocalBrowserLauncher.py index d751bff..28bc406 100644 --- a/python/modcdp/launcher/LocalBrowserLauncher.py +++ b/python/modcdp/launcher/LocalBrowserLauncher.py @@ -228,26 +228,23 @@ def _spawn_chrome_with_pipe_fds(executable_path: str, args: list[str], child_rea if sys.platform.startswith("win"): raise RuntimeError("remote_debugging='pipe' is not supported by the Python launcher on Windows.") - if child_read != 3: + def setup_pipe_fds() -> None: os.dup2(child_read, 3) - if child_write != 4: os.dup2(child_write, 4) - os.set_inheritable(3, True) - os.set_inheritable(4, True) - try: - return subprocess.Popen( - [executable_path, *args], - stdin=subprocess.DEVNULL, - stdout=subprocess.DEVNULL, - stderr=subprocess.DEVNULL, - pass_fds=(3, 4), - start_new_session=True, - ) - finally: - if child_read != 3: - os.close(3) - if child_write != 4: - os.close(4) + if child_read not in (3, 4): + os.close(child_read) + if child_write not in (3, 4): + os.close(child_write) + + return subprocess.Popen( + [executable_path, *args], + stdin=subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + pass_fds=(child_read, child_write), + preexec_fn=setup_pipe_fds, + start_new_session=True, + ) class _ChromeProcess(Protocol): From 8cd3d8f178ba76813f7dcd6713a439625149a58e Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 17:21:01 -0700 Subject: [PATCH 16/33] Use posix spawn for Python pipe launch --- .../modcdp/launcher/LocalBrowserLauncher.py | 72 ++++++++++++++----- 1 file changed, 53 insertions(+), 19 deletions(-) diff --git a/python/modcdp/launcher/LocalBrowserLauncher.py b/python/modcdp/launcher/LocalBrowserLauncher.py index 28bc406..bae202e 100644 --- a/python/modcdp/launcher/LocalBrowserLauncher.py +++ b/python/modcdp/launcher/LocalBrowserLauncher.py @@ -224,27 +224,61 @@ def _move_fd_if_needed(fd: int, reserved: set[int]) -> int: return moved -def _spawn_chrome_with_pipe_fds(executable_path: str, args: list[str], child_read: int, child_write: int) -> _ChromeProcess: - if sys.platform.startswith("win"): - raise RuntimeError("remote_debugging='pipe' is not supported by the Python launcher on Windows.") +class _SpawnedProcess: + def __init__(self, pid: int) -> None: + self.pid = pid + self.returncode: int | None = None - def setup_pipe_fds() -> None: - os.dup2(child_read, 3) - os.dup2(child_write, 4) - if child_read not in (3, 4): - os.close(child_read) - if child_write not in (3, 4): - os.close(child_write) + def terminate(self) -> None: + self._signal(signal.SIGTERM) + + def kill(self) -> None: + self._signal(signal.SIGKILL) - return subprocess.Popen( - [executable_path, *args], - stdin=subprocess.DEVNULL, - stdout=subprocess.DEVNULL, - stderr=subprocess.DEVNULL, - pass_fds=(child_read, child_write), - preexec_fn=setup_pipe_fds, - start_new_session=True, - ) + def wait(self, timeout: float | None = None) -> int: + deadline = None if timeout is None else time.monotonic() + timeout + while True: + try: + waited_pid, status = os.waitpid(self.pid, os.WNOHANG) + except ChildProcessError: + if self.returncode is None: + self.returncode = 0 + return self.returncode + if waited_pid == self.pid: + self.returncode = os.waitstatus_to_exitcode(status) + return self.returncode + if deadline is not None and time.monotonic() >= deadline: + assert timeout is not None + raise subprocess.TimeoutExpired([str(self.pid)], timeout) + time.sleep(0.05) + + def _signal(self, sig: int) -> None: + if self.returncode is not None: + return + try: + os.kill(self.pid, sig) + except ProcessLookupError: + self.returncode = 0 + + +def _spawn_chrome_with_pipe_fds(executable_path: str, args: list[str], child_read: int, child_write: int) -> _ChromeProcess: + if not hasattr(os, "posix_spawn"): + raise RuntimeError("remote_debugging='pipe' requires os.posix_spawn support in the Python client.") + devnull = os.open(os.devnull, os.O_RDWR) + file_actions: list[tuple[int, int] | tuple[int, int, int]] = [ + (os.POSIX_SPAWN_DUP2, devnull, 0), + (os.POSIX_SPAWN_DUP2, devnull, 1), + (os.POSIX_SPAWN_DUP2, devnull, 2), + (os.POSIX_SPAWN_DUP2, child_read, 3), + (os.POSIX_SPAWN_DUP2, child_write, 4), + ] + for fd in {devnull, child_read, child_write} - {0, 1, 2, 3, 4}: + file_actions.append((os.POSIX_SPAWN_CLOSE, fd)) + try: + pid = os.posix_spawn(executable_path, [executable_path, *args], os.environ, file_actions=file_actions, setsid=True) + return _SpawnedProcess(pid) + finally: + os.close(devnull) class _ChromeProcess(Protocol): From e07e4ddeaccc8faefd5671f40536ddaaca934ba5 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 17:28:14 -0700 Subject: [PATCH 17/33] Allow remote close test full browser budget --- js/test/test.ModCDPClient.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/test/test.ModCDPClient.ts b/js/test/test.ModCDPClient.ts index c497f33..ff29edf 100644 --- a/js/test/test.ModCDPClient.ts +++ b/js/test/test.ModCDPClient.ts @@ -288,7 +288,7 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server } await cdp.close(); } -}, 60_000); +}, 180_000); test("ModCDPClient preserves explicit empty service worker suffix config", async () => { const cdp = new ModCDPClient({ From 67b466d86c343e66df0caab4ddd82f2209834f46 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 17:36:00 -0700 Subject: [PATCH 18/33] Set remote close test timeout --- js/test/test.ModCDPClient.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/test/test.ModCDPClient.ts b/js/test/test.ModCDPClient.ts index ff29edf..24bbbfa 100644 --- a/js/test/test.ModCDPClient.ts +++ b/js/test/test.ModCDPClient.ts @@ -288,7 +288,7 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server } await cdp.close(); } -}, 180_000); +}, 60_000); test("ModCDPClient preserves explicit empty service worker suffix config", async () => { const cdp = new ModCDPClient({ @@ -300,7 +300,7 @@ test("ModCDPClient preserves explicit empty service worker suffix config", async assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, []); assert.deepEqual((await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, []); -}, 60_000); +}, 180_000); function reversewsTestBrowserPath() { const explicit_candidates = [process.env.CHROME_PATH, platform() === "linux" ? "/usr/bin/chromium" : null].filter( From 566e1f01491003d13c3889bc77f4d8336f205c4d Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 17:36:15 -0700 Subject: [PATCH 19/33] Correct remote close timeout placement --- js/test/test.ModCDPClient.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/test/test.ModCDPClient.ts b/js/test/test.ModCDPClient.ts index 24bbbfa..e743c15 100644 --- a/js/test/test.ModCDPClient.ts +++ b/js/test/test.ModCDPClient.ts @@ -300,7 +300,7 @@ test("ModCDPClient preserves explicit empty service worker suffix config", async assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, []); assert.deepEqual((await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, []); -}, 180_000); +}, 60_000); function reversewsTestBrowserPath() { const explicit_candidates = [process.env.CHROME_PATH, platform() === "linux" ? "/usr/bin/chromium" : null].filter( @@ -486,7 +486,7 @@ test("ModCDPClient.close does not close a remote browser it did not launch", asy await cdp.close(); await chrome.close(); } -}, 60_000); +}, 180_000); test("ModCDPClient.close keeps injector files until after launched browser shutdown", async () => { const cdp = new ModCDPClient({ From bd87af3d087823b7e8a015b893fb86d20c4b71a9 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 17:44:14 -0700 Subject: [PATCH 20/33] Use injector path in remote close tests --- go/modcdp/client/ModCDPClient_test.go | 4 ++-- js/test/test.ModCDPClient.ts | 4 ++-- python/tests/test_ModCDPClient.py | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/go/modcdp/client/ModCDPClient_test.go b/go/modcdp/client/ModCDPClient_test.go index b271d13..66fd67e 100644 --- a/go/modcdp/client/ModCDPClient_test.go +++ b/go/modcdp/client/ModCDPClient_test.go @@ -676,7 +676,6 @@ func TestModCDPClientCloseDoesNotCloseRemoteBrowserItDidNotLaunch(t *testing.T) chrome, err := NewLocalBrowserLauncher(LaunchOptions{ Headless: &headless, ChromeReadyTimeoutMS: 60_000, - ExtraArgs: []string{"--load-extension=" + extensionPath}, }).Launch(LaunchOptions{}) if err != nil { t.Fatal(err) @@ -694,7 +693,8 @@ func TestModCDPClientCloseDoesNotCloseRemoteBrowserItDidNotLaunch(t *testing.T) Launcher: LauncherConfig{LauncherMode: "remote"}, Upstream: UpstreamConfig{UpstreamMode: "ws", UpstreamCDPURL: chrome.CDPURL}, Injector: InjectorConfig{ - InjectorMode: "discover", + InjectorMode: "auto", + InjectorExtensionPath: extensionPath, InjectorServiceWorkerURLSuffixes: []string{"/modcdp/service_worker.js"}, InjectorTrustServiceWorkerTarget: true, InjectorServiceWorkerReadyTimeoutMS: 30_000, diff --git a/js/test/test.ModCDPClient.ts b/js/test/test.ModCDPClient.ts index e743c15..b94d302 100644 --- a/js/test/test.ModCDPClient.ts +++ b/js/test/test.ModCDPClient.ts @@ -459,14 +459,14 @@ test("ModCDPClient.close does not close a remote browser it did not launch", asy const chrome = await new LocalBrowserLauncher({ headless: true, chrome_ready_timeout_ms: 60_000, - extra_args: [`--load-extension=${EXTENSION_PATH}`], }).launch(); const raw_cdp = await CdpSocket.connect(chrome.cdp_url!); const cdp = new ModCDPClient({ launcher: { launcher_mode: "remote" }, upstream: { upstream_mode: "ws", upstream_cdp_url: chrome.cdp_url }, injector: { - injector_mode: "discover", + injector_mode: "auto", + injector_extension_path: EXTENSION_PATH, injector_service_worker_url_suffixes: ["/modcdp/service_worker.js"], injector_trust_service_worker_target: true, injector_service_worker_ready_timeout_ms: 30_000, diff --git a/python/tests/test_ModCDPClient.py b/python/tests/test_ModCDPClient.py index 2e66f98..68ba942 100644 --- a/python/tests/test_ModCDPClient.py +++ b/python/tests/test_ModCDPClient.py @@ -268,7 +268,6 @@ def test_close_does_not_close_a_remote_browser_it_did_not_launch(self) -> None: { "headless": True, "chrome_ready_timeout_ms": 60_000, - "extra_args": [f"--load-extension={EXTENSION_PATH}"], } ).launch() raw_ws = create_connection(cast(str, chrome["cdp_url"]), timeout=5) @@ -276,7 +275,8 @@ def test_close_does_not_close_a_remote_browser_it_did_not_launch(self) -> None: launcher={"launcher_mode": "remote"}, upstream={"upstream_mode": "ws", "upstream_cdp_url": chrome["cdp_url"]}, injector={ - "injector_mode": "discover", + "injector_mode": "auto", + "injector_extension_path": str(EXTENSION_PATH), "injector_service_worker_url_suffixes": ["/modcdp/service_worker.js"], "injector_trust_service_worker_target": True, "injector_service_worker_ready_timeout_ms": 30_000, From bfe7ea93d8ec799045b0e5cbecd8c20af78d5eef Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 17:47:37 -0700 Subject: [PATCH 21/33] Preload extension for remote close tests --- go/modcdp/client/ModCDPClient_test.go | 1 + js/test/test.ModCDPClient.ts | 1 + python/tests/test_ModCDPClient.py | 1 + 3 files changed, 3 insertions(+) diff --git a/go/modcdp/client/ModCDPClient_test.go b/go/modcdp/client/ModCDPClient_test.go index 66fd67e..576375f 100644 --- a/go/modcdp/client/ModCDPClient_test.go +++ b/go/modcdp/client/ModCDPClient_test.go @@ -676,6 +676,7 @@ func TestModCDPClientCloseDoesNotCloseRemoteBrowserItDidNotLaunch(t *testing.T) chrome, err := NewLocalBrowserLauncher(LaunchOptions{ Headless: &headless, ChromeReadyTimeoutMS: 60_000, + ExtraArgs: []string{"--load-extension=" + extensionPath}, }).Launch(LaunchOptions{}) if err != nil { t.Fatal(err) diff --git a/js/test/test.ModCDPClient.ts b/js/test/test.ModCDPClient.ts index b94d302..480e979 100644 --- a/js/test/test.ModCDPClient.ts +++ b/js/test/test.ModCDPClient.ts @@ -459,6 +459,7 @@ test("ModCDPClient.close does not close a remote browser it did not launch", asy const chrome = await new LocalBrowserLauncher({ headless: true, chrome_ready_timeout_ms: 60_000, + extra_args: [`--load-extension=${EXTENSION_PATH}`], }).launch(); const raw_cdp = await CdpSocket.connect(chrome.cdp_url!); const cdp = new ModCDPClient({ diff --git a/python/tests/test_ModCDPClient.py b/python/tests/test_ModCDPClient.py index 68ba942..80e1af8 100644 --- a/python/tests/test_ModCDPClient.py +++ b/python/tests/test_ModCDPClient.py @@ -268,6 +268,7 @@ def test_close_does_not_close_a_remote_browser_it_did_not_launch(self) -> None: { "headless": True, "chrome_ready_timeout_ms": 60_000, + "extra_args": [f"--load-extension={EXTENSION_PATH}"], } ).launch() raw_ws = create_connection(cast(str, chrome["cdp_url"]), timeout=5) From 583fa3c2b2c5d0110117349ba1375132aa760ae9 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 17:59:10 -0700 Subject: [PATCH 22/33] Use reversews browser helper in Python client test --- python/tests/test_ModCDPClient.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/python/tests/test_ModCDPClient.py b/python/tests/test_ModCDPClient.py index 80e1af8..17912a1 100644 --- a/python/tests/test_ModCDPClient.py +++ b/python/tests/test_ModCDPClient.py @@ -15,6 +15,7 @@ from modcdp import ModCDPClient from modcdp.launcher.LocalBrowserLauncher import LocalBrowserLauncher from modcdp.types import JsonValue +from tests.test_ReverseWebSocketUpstreamTransport import reversews_test_browser_path HERE = Path(__file__).resolve().parent @@ -301,7 +302,16 @@ def test_close_does_not_close_a_remote_browser_it_did_not_launch(self) -> None: def test_close_keeps_injector_files_until_after_launched_browser_shutdown(self) -> None: cdp = ModCDPClient( - launcher={"launcher_mode": "local", "launcher_options": {"headless": True}}, + launcher={ + "launcher_mode": "local", + "launcher_options": { + "headless": True, + # Reversews is browser -> client only. After explicit CHROME_PATH and + # CI /usr/bin/chromium, this test uses Chrome for Testing because + # Canary rejects --load-extension in this local test path. + "executable_path": reversews_test_browser_path(), + }, + }, upstream={ "upstream_mode": "reversews", "upstream_reversews_wait_timeout_ms": 30_000, From 2326b8815019a813c342159796c28bc272ee3030 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 18:07:59 -0700 Subject: [PATCH 23/33] Use reversews browser helper in Go client test --- go/modcdp/client/ModCDPClient_test.go | 109 ++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) diff --git a/go/modcdp/client/ModCDPClient_test.go b/go/modcdp/client/ModCDPClient_test.go index 576375f..6443d73 100644 --- a/go/modcdp/client/ModCDPClient_test.go +++ b/go/modcdp/client/ModCDPClient_test.go @@ -5,7 +5,10 @@ import ( "encoding/json" "os" "path/filepath" + "regexp" "runtime" + "sort" + "strconv" "strings" "testing" "time" @@ -742,6 +745,10 @@ func TestModCDPClientCloseKeepsInjectorFilesUntilAfterLaunchedBrowserShutdown(t Launcher: LauncherConfig{LauncherMode: "local", LauncherOptions: LaunchOptions{ Headless: boolPtr(true), + // Reversews is browser -> client only. After explicit CHROME_PATH and + // CI /usr/bin/chromium, this test uses Chrome for Testing because + // Canary rejects --load-extension in this local test path. + ExecutablePath: reverseWSTestBrowserPath(t), }, }, Upstream: UpstreamConfig{ @@ -834,6 +841,108 @@ func TestModCDPClientCloseClearsTopLevelConnectionState(t *testing.T) { } } +func reverseWSTestBrowserPath(t *testing.T) string { + t.Helper() + explicitCandidates := []string{os.Getenv("CHROME_PATH")} + if runtime.GOOS == "linux" { + explicitCandidates = append(explicitCandidates, "/usr/bin/chromium") + } + for _, candidate := range explicitCandidates { + if candidate == "" { + continue + } + if _, err := os.Stat(candidate); err == nil { + return candidate + } + } + home, err := os.UserHomeDir() + if err != nil || home == "" { + home = "." + } + localAppData := os.Getenv("LOCALAPPDATA") + if localAppData == "" { + localAppData = filepath.Join(home, "AppData", "Local") + } + var patterns []string + switch runtime.GOOS { + case "darwin": + patterns = []string{ + filepath.Join(home, "Library", "Caches", "ms-playwright", "chromium-*", "chrome-mac*", "Google Chrome for Testing.app", "Contents", "MacOS", "Google Chrome for Testing"), + filepath.Join(home, "Library", "Caches", "ms-playwright", "chromium-*", "chrome-mac*", "Chromium.app", "Contents", "MacOS", "Chromium"), + filepath.Join(home, "Library", "Caches", "puppeteer", "chrome", "mac*-*", "chrome-mac*", "Google Chrome for Testing.app", "Contents", "MacOS", "Google Chrome for Testing"), + } + case "windows": + patterns = []string{ + filepath.Join(localAppData, "ms-playwright", "chromium-*", "chrome-win*", "chrome.exe"), + filepath.Join(home, ".cache", "puppeteer", "chrome", "win*-*", "chrome.exe"), + } + default: + patterns = []string{ + filepath.Join(home, ".cache", "ms-playwright", "chromium-*", "chrome-linux*", "chrome"), + filepath.Join("/opt", "pw-browsers", "chromium-*", "chrome-linux*", "chrome"), + filepath.Join(home, ".cache", "puppeteer", "chrome", "linux-*", "chrome-linux*", "chrome"), + } + } + var candidates []string + for _, pattern := range patterns { + matches, err := filepath.Glob(pattern) + if err != nil { + continue + } + candidates = append(candidates, matches...) + } + candidates = newestChromeForTestingFirst(candidates) + if len(candidates) > 0 { + return candidates[0] + } + t.Fatal("Reversews tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing.") + return "" +} + +func newestChromeForTestingFirst(candidates []string) []string { + seen := map[string]bool{} + deduped := make([]string, 0, len(candidates)) + for _, candidate := range candidates { + if candidate == "" || seen[candidate] { + continue + } + seen[candidate] = true + deduped = append(deduped, candidate) + } + sort.SliceStable(deduped, func(i, j int) bool { + leftVersion := maxPathNumber(deduped[i]) + rightVersion := maxPathNumber(deduped[j]) + if leftVersion != rightVersion { + return leftVersion > rightVersion + } + leftStat, leftErr := os.Stat(deduped[i]) + rightStat, rightErr := os.Stat(deduped[j]) + var leftMtime, rightMtime time.Time + if leftErr == nil { + leftMtime = leftStat.ModTime() + } + if rightErr == nil { + rightMtime = rightStat.ModTime() + } + if !leftMtime.Equal(rightMtime) { + return leftMtime.After(rightMtime) + } + return deduped[i] < deduped[j] + }) + return deduped +} + +func maxPathNumber(value string) int { + maxValue := 0 + for _, raw := range regexp.MustCompile(`\d+`).FindAllString(value, -1) { + number, err := strconv.Atoi(raw) + if err == nil && number > maxValue { + maxValue = number + } + } + return maxValue +} + func TestCustomCommandSchemasValidateParamsAndResults(t *testing.T) { cdp := New(Options{ CustomCommands: []CustomCommand{ From 965fe7f9229139de12704b240ee75c91568c4254 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 18:15:54 -0700 Subject: [PATCH 24/33] Bump ModCDP versions --- package.json | 2 +- python/pyproject.toml | 2 +- python/uv.lock | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 8c3f474..e0131ac 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "modcdp", - "version": "0.0.15", + "version": "0.0.16", "repository": { "type": "git", "url": "git+https://github.com/pirate/modcdp.git" diff --git a/python/pyproject.toml b/python/pyproject.toml index f710d4c..bfd7df4 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "modcdp" -version = "0.0.15" +version = "0.0.16" description = "Python client for ModCDP." readme = "README.md" requires-python = ">=3.11" diff --git a/python/uv.lock b/python/uv.lock index 8079fb2..a33f910 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -13,7 +13,7 @@ wheels = [ [[package]] name = "modcdp" -version = "0.0.15" +version = "0.0.16" source = { editable = "." } dependencies = [ { name = "pydantic" }, From a8c8fe98cea278103fc3b5f5aabf2d3af303e46b Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 22:45:56 -0700 Subject: [PATCH 25/33] Fix launcher sandbox defaults --- go/modcdp/launcher/LocalBrowserLauncher.go | 6 +- .../launcher/LocalBrowserLauncher_test.go | 33 +++++++- js/src/launcher/LocalBrowserLauncher.ts | 2 +- js/test/test.LocalBrowserLauncher.ts | 11 +++ package.json | 6 +- .../modcdp/launcher/LocalBrowserLauncher.py | 75 +++++-------------- python/pyproject.toml | 2 +- python/tests/test_LocalBrowserLauncher.py | 13 +++- python/uv.lock | 2 +- 9 files changed, 85 insertions(+), 65 deletions(-) diff --git a/go/modcdp/launcher/LocalBrowserLauncher.go b/go/modcdp/launcher/LocalBrowserLauncher.go index 6cee26c..79034b4 100644 --- a/go/modcdp/launcher/LocalBrowserLauncher.go +++ b/go/modcdp/launcher/LocalBrowserLauncher.go @@ -102,7 +102,11 @@ func (l *LocalBrowserLauncher) Launch(options LaunchOptions) (*LaunchedBrowser, if headless { args = append(args, "--headless=new") } - if options.Sandbox == nil || !*options.Sandbox { + sandbox := runtime.GOOS != "linux" + if options.Sandbox != nil { + sandbox = *options.Sandbox + } + if !sandbox { args = append(args, "--no-sandbox") } args = append(args, options.Args...) diff --git a/go/modcdp/launcher/LocalBrowserLauncher_test.go b/go/modcdp/launcher/LocalBrowserLauncher_test.go index 3feea5e..92f463d 100644 --- a/go/modcdp/launcher/LocalBrowserLauncher_test.go +++ b/go/modcdp/launcher/LocalBrowserLauncher_test.go @@ -4,6 +4,7 @@ import ( "context" "encoding/json" "os" + "runtime" "strconv" "strings" "testing" @@ -23,7 +24,7 @@ func TestLocalBrowserLauncherClassHelpersMatchLocalLauncherSurface(t *testing.T) } } -func TestLocalBrowserLauncherLaunchesRealBrowserAndSpeaksCDP(t *testing.T) { +func TestLocalBrowserLauncherLaunchesRealBrowserOverChosenCDPPortAndHonorsLaunchOptions(t *testing.T) { headless := true profileDir := t.TempDir() port, err := freePort() @@ -101,6 +102,36 @@ func TestLocalBrowserLauncherLaunchesRealBrowserAndSpeaksCDP(t *testing.T) { if response.Result.ProtocolVersion == "" { t.Fatal("expected protocolVersion") } + if err := wsutil.WriteClientText(conn, []byte(`{"id":2,"method":"SystemInfo.getInfo","params":{}}`)); err != nil { + t.Fatal(err) + } + systemInfoBody, err := wsutil.ReadServerText(conn) + if err != nil { + t.Fatal(err) + } + var systemInfoResponse struct { + ID int `json:"id"` + Result struct { + CommandLine string `json:"commandLine"` + } `json:"result"` + } + if err := json.Unmarshal(systemInfoBody, &systemInfoResponse); err != nil { + t.Fatal(err) + } + if systemInfoResponse.ID != 2 { + t.Fatalf("unexpected SystemInfo.getInfo response id %d", systemInfoResponse.ID) + } + command := systemInfoResponse.Result.CommandLine + if !strings.Contains(command, "--window-size=900,700") { + t.Fatalf("expected browser command to include --window-size=900,700: %s", command) + } + if runtime.GOOS == "linux" { + if !strings.Contains(command, "--no-sandbox") { + t.Fatalf("expected Linux browser command to include --no-sandbox: %s", command) + } + } else if strings.Contains(command, "--no-sandbox") { + t.Fatalf("expected browser command not to include --no-sandbox: %s", command) + } } func TestLocalBrowserLauncherLaunchesRealBrowserOverRemoteDebuggingPipe(t *testing.T) { diff --git a/js/src/launcher/LocalBrowserLauncher.ts b/js/src/launcher/LocalBrowserLauncher.ts index b153114..d99c435 100644 --- a/js/src/launcher/LocalBrowserLauncher.ts +++ b/js/src/launcher/LocalBrowserLauncher.ts @@ -261,7 +261,7 @@ export class LocalBrowserLauncher extends BrowserLauncher { port, user_data_dir, headless = process.platform === "linux" && !process.env.DISPLAY, - sandbox = false, + sandbox = process.platform !== "linux", args = [], extra_args = [], remote_debugging = "port", diff --git a/js/test/test.LocalBrowserLauncher.ts b/js/test/test.LocalBrowserLauncher.ts index 054cec8..2924ba7 100644 --- a/js/test/test.LocalBrowserLauncher.ts +++ b/js/test/test.LocalBrowserLauncher.ts @@ -60,9 +60,20 @@ describe("LocalBrowserLauncher", () => { ); if (process.platform === "linux") { expect((chrome.proc as { spawnargs?: string[] }).spawnargs ?? []).toContain("--no-sandbox"); + } else { + expect((chrome.proc as { spawnargs?: string[] }).spawnargs ?? []).not.toContain("--no-sandbox"); } await expect(stat(userDataDir)).resolves.toBeTruthy(); cdp = await CdpSocket.connect(chrome.cdp_url!); + const systemInfo = await cdp.send("SystemInfo.getInfo"); + const commandLine = systemInfo.commandLine; + expect(commandLine).toEqual(expect.any(String)); + expect(commandLine).toContain("--window-size=900,700"); + if (process.platform === "linux") { + expect(commandLine).toContain("--no-sandbox"); + } else { + expect(commandLine).not.toContain("--no-sandbox"); + } await expectCdpBrowserSurface(cdp); } finally { await cdp?.close(); diff --git a/package.json b/package.json index e0131ac..c369498 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "modcdp", - "version": "0.0.16", + "version": "0.0.17", "repository": { "type": "git", "url": "git+https://github.com/pirate/modcdp.git" @@ -8,6 +8,8 @@ "files": [ "js/scripts/**/*.mjs", "dist/**/*", + "dist/extension/**/*", + "dist/js/**/*", "dist/extension.zip", "extension/src/**/*.ts", "extension/src/pages/**/*", @@ -132,7 +134,7 @@ "clean": "rm -rf dist", "build": "pnpm run build:package && pnpm run build:extension-assets && pnpm run build:python-readme", "build:clean": "pnpm run clean && pnpm run build", - "build:package": "tsc -p tsconfig.json && rm -rf dist/js/test", + "build:package": "tsc -p tsconfig.json && rm -rf dist/js/test && rm -f dist/.gitignore", "build:extension-assets": "node js/scripts/build-extension-assets.mjs", "build:python-readme": "mkdir -p python && if [ README.md -ef python/README.md ]; then :; else cp README.md python/README.md; fi", "typecheck": "tsc -p tsconfig.json --noEmit", diff --git a/python/modcdp/launcher/LocalBrowserLauncher.py b/python/modcdp/launcher/LocalBrowserLauncher.py index bae202e..46c9e6c 100644 --- a/python/modcdp/launcher/LocalBrowserLauncher.py +++ b/python/modcdp/launcher/LocalBrowserLauncher.py @@ -75,7 +75,8 @@ def launch(self, options: BrowserLaunchOptions | None = None) -> LaunchedBrowser default_headless = sys.platform.startswith("linux") and not os.environ.get("DISPLAY") if merged.get("headless", default_headless): args.append("--headless=new") - if merged.get("sandbox", False) is False: + default_sandbox = not sys.platform.startswith("linux") + if merged.get("sandbox", default_sandbox) is False: args.append("--no-sandbox") args.extend(list(merged.get("args") or [])) args.extend(list(merged.get("extra_args") or [])) @@ -85,10 +86,8 @@ def launch(self, options: BrowserLaunchOptions | None = None) -> LaunchedBrowser child_read, parent_write = os.pipe() parent_read = _move_fd_if_needed(parent_read, {3, 4}) parent_write = _move_fd_if_needed(parent_write, {3, 4}) - if child_read == 4: - child_read = _move_fd_if_needed(child_read, {4}) - if child_write == 3: - child_write = _move_fd_if_needed(child_write, {3}) + child_read = _move_fd_to(child_read, 3) + child_write = _move_fd_to(child_write, 4) process = _spawn_chrome_with_pipe_fds(executable_path, args, child_read, child_write) os.close(child_read) os.close(child_write) @@ -224,61 +223,23 @@ def _move_fd_if_needed(fd: int, reserved: set[int]) -> int: return moved -class _SpawnedProcess: - def __init__(self, pid: int) -> None: - self.pid = pid - self.returncode: int | None = None - - def terminate(self) -> None: - self._signal(signal.SIGTERM) - - def kill(self) -> None: - self._signal(signal.SIGKILL) - - def wait(self, timeout: float | None = None) -> int: - deadline = None if timeout is None else time.monotonic() + timeout - while True: - try: - waited_pid, status = os.waitpid(self.pid, os.WNOHANG) - except ChildProcessError: - if self.returncode is None: - self.returncode = 0 - return self.returncode - if waited_pid == self.pid: - self.returncode = os.waitstatus_to_exitcode(status) - return self.returncode - if deadline is not None and time.monotonic() >= deadline: - assert timeout is not None - raise subprocess.TimeoutExpired([str(self.pid)], timeout) - time.sleep(0.05) - - def _signal(self, sig: int) -> None: - if self.returncode is not None: - return - try: - os.kill(self.pid, sig) - except ProcessLookupError: - self.returncode = 0 +def _move_fd_to(fd: int, target: int) -> int: + if fd == target: + return fd + os.dup2(fd, target) + os.close(fd) + return target def _spawn_chrome_with_pipe_fds(executable_path: str, args: list[str], child_read: int, child_write: int) -> _ChromeProcess: - if not hasattr(os, "posix_spawn"): - raise RuntimeError("remote_debugging='pipe' requires os.posix_spawn support in the Python client.") - devnull = os.open(os.devnull, os.O_RDWR) - file_actions: list[tuple[int, int] | tuple[int, int, int]] = [ - (os.POSIX_SPAWN_DUP2, devnull, 0), - (os.POSIX_SPAWN_DUP2, devnull, 1), - (os.POSIX_SPAWN_DUP2, devnull, 2), - (os.POSIX_SPAWN_DUP2, child_read, 3), - (os.POSIX_SPAWN_DUP2, child_write, 4), - ] - for fd in {devnull, child_read, child_write} - {0, 1, 2, 3, 4}: - file_actions.append((os.POSIX_SPAWN_CLOSE, fd)) - try: - pid = os.posix_spawn(executable_path, [executable_path, *args], os.environ, file_actions=file_actions, setsid=True) - return _SpawnedProcess(pid) - finally: - os.close(devnull) + return subprocess.Popen( + [executable_path, *args], + stdin=subprocess.DEVNULL, + stdout=subprocess.DEVNULL, + stderr=subprocess.DEVNULL, + pass_fds=(child_read, child_write), + start_new_session=not sys.platform.startswith("win"), + ) class _ChromeProcess(Protocol): diff --git a/python/pyproject.toml b/python/pyproject.toml index bfd7df4..5101b3e 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "modcdp" -version = "0.0.16" +version = "0.0.17" description = "Python client for ModCDP." readme = "README.md" requires-python = ">=3.11" diff --git a/python/tests/test_LocalBrowserLauncher.py b/python/tests/test_LocalBrowserLauncher.py index 9aea873..2816a22 100644 --- a/python/tests/test_LocalBrowserLauncher.py +++ b/python/tests/test_LocalBrowserLauncher.py @@ -1,6 +1,7 @@ from __future__ import annotations import json +import sys import tempfile import unittest from pathlib import Path @@ -15,7 +16,7 @@ def test_class_helpers_match_ts_surface(self) -> None: self.assertIsInstance(LocalBrowserLauncher.findChromeBinary(), str) self.assertIsInstance(LocalBrowserLauncher.freePort(), int) - def test_launches_real_browser_and_speaks_cdp(self) -> None: + def test_launches_real_browser_over_chosen_cdp_port_and_honors_launch_options(self) -> None: with tempfile.TemporaryDirectory(prefix="modcdp-python-local-profile-") as user_data_dir: chrome = LocalBrowserLauncher( { @@ -36,6 +37,16 @@ def test_launches_real_browser_and_speaks_cdp(self) -> None: self.assertEqual(version["id"], 1) self.assertIn("Chrome", version["result"]["product"]) self.assertIsInstance(version["result"]["protocolVersion"], str) + ws.send(json.dumps({"id": 2, "method": "SystemInfo.getInfo", "params": {}})) + system_info = json.loads(ws.recv()) + self.assertEqual(system_info["id"], 2) + command_line = system_info["result"]["commandLine"] + self.assertIsInstance(command_line, str) + self.assertIn("--window-size=900,700", command_line) + if sys.platform.startswith("linux"): + self.assertIn("--no-sandbox", command_line) + else: + self.assertNotIn("--no-sandbox", command_line) finally: ws.close() chrome["close"]() diff --git a/python/uv.lock b/python/uv.lock index a33f910..60a7fcb 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -13,7 +13,7 @@ wheels = [ [[package]] name = "modcdp" -version = "0.0.16" +version = "0.0.17" source = { editable = "." } dependencies = [ { name = "pydantic" }, From 77f930d0600d7ff58a08eb6454a33b54f722fc73 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 22:51:01 -0700 Subject: [PATCH 26/33] Stabilize Python pipe fd mapping --- python/modcdp/launcher/LocalBrowserLauncher.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/python/modcdp/launcher/LocalBrowserLauncher.py b/python/modcdp/launcher/LocalBrowserLauncher.py index 46c9e6c..c5bfeed 100644 --- a/python/modcdp/launcher/LocalBrowserLauncher.py +++ b/python/modcdp/launcher/LocalBrowserLauncher.py @@ -1,7 +1,8 @@ from __future__ import annotations -import json +import errno import glob +import json import os import re import select @@ -226,7 +227,15 @@ def _move_fd_if_needed(fd: int, reserved: set[int]) -> int: def _move_fd_to(fd: int, target: int) -> int: if fd == target: return fd - os.dup2(fd, target) + deadline = time.monotonic() + 1 + while True: + try: + os.dup2(fd, target) + break + except OSError as error: + if error.errno != errno.EBUSY or time.monotonic() >= deadline: + raise + time.sleep(0.001) os.close(fd) return target From 5ad98cae34b531139565aaa28c1962fc3645669b Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Fri, 15 May 2026 22:58:55 -0700 Subject: [PATCH 27/33] Map Python pipe fds in child process --- .../modcdp/launcher/LocalBrowserLauncher.py | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/python/modcdp/launcher/LocalBrowserLauncher.py b/python/modcdp/launcher/LocalBrowserLauncher.py index c5bfeed..50fb6d0 100644 --- a/python/modcdp/launcher/LocalBrowserLauncher.py +++ b/python/modcdp/launcher/LocalBrowserLauncher.py @@ -1,6 +1,5 @@ from __future__ import annotations -import errno import glob import json import os @@ -87,8 +86,8 @@ def launch(self, options: BrowserLaunchOptions | None = None) -> LaunchedBrowser child_read, parent_write = os.pipe() parent_read = _move_fd_if_needed(parent_read, {3, 4}) parent_write = _move_fd_if_needed(parent_write, {3, 4}) - child_read = _move_fd_to(child_read, 3) - child_write = _move_fd_to(child_write, 4) + child_read = _move_fd_if_needed(child_read, {3, 4}) + child_write = _move_fd_if_needed(child_write, {3, 4}) process = _spawn_chrome_with_pipe_fds(executable_path, args, child_read, child_write) os.close(child_read) os.close(child_write) @@ -220,33 +219,28 @@ def _move_fd_if_needed(fd: int, reserved: set[int]) -> int: if fd not in reserved: return fd moved = os.dup(fd) + while moved in reserved: + next_fd = os.dup(fd) + os.close(moved) + moved = next_fd os.close(fd) return moved -def _move_fd_to(fd: int, target: int) -> int: - if fd == target: - return fd - deadline = time.monotonic() + 1 - while True: - try: - os.dup2(fd, target) - break - except OSError as error: - if error.errno != errno.EBUSY or time.monotonic() >= deadline: - raise - time.sleep(0.001) - os.close(fd) - return target - - def _spawn_chrome_with_pipe_fds(executable_path: str, args: list[str], child_read: int, child_write: int) -> _ChromeProcess: + def map_pipe_fds() -> None: + os.dup2(child_read, 3) + os.dup2(child_write, 4) + os.close(child_read) + os.close(child_write) + return subprocess.Popen( [executable_path, *args], stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, - pass_fds=(child_read, child_write), + close_fds=sys.platform.startswith("win"), + preexec_fn=None if sys.platform.startswith("win") else map_pipe_fds, start_new_session=not sys.platform.startswith("win"), ) From 1765b4f53f383eaa2415d5a23db595d38b72faf3 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Sat, 16 May 2026 00:15:14 -0700 Subject: [PATCH 28/33] Pass custom command params as runtime arguments --- go/modcdp/translate/translate.go | 6 +++--- go/modcdp/translate/translate_test.go | 31 +++++++++++++++++++++++++++ js/src/translate/translate.ts | 6 ++++-- js/test/test.translate.ts | 17 +++++++++++++++ package.json | 2 +- python/modcdp/translate/translate.py | 9 +++++--- python/pyproject.toml | 2 +- python/tests/test_translate.py | 13 +++++++++++ 8 files changed, 76 insertions(+), 10 deletions(-) diff --git a/go/modcdp/translate/translate.go b/go/modcdp/translate/translate.go index 1f1d187..12bde56 100644 --- a/go/modcdp/translate/translate.go +++ b/go/modcdp/translate/translate.go @@ -135,10 +135,10 @@ func wrapModCDPAddMiddleware(params map[string]any) map[string]any { } func wrapCustomCommand(method string, params map[string]any, sessionID string) map[string]any { - m, _ := json.Marshal(method) p, _ := json.Marshal(params) - sid, _ := json.Marshal(sessionID) - return callFunctionParams(fmt.Sprintf(`async function() { return JSON.stringify(await globalThis.ModCDP.handleCommand(%s, %s, %s)); }`, string(m), string(p), string(sid))) + runtimeParams := callFunctionParams(`async function(method, paramsJson, cdpSessionId) { return JSON.stringify(await globalThis.ModCDP.handleCommand(method, JSON.parse(paramsJson), cdpSessionId)); }`) + runtimeParams["arguments"] = []map[string]any{{"value": method}, {"value": string(p)}, {"value": sessionID}} + return runtimeParams } func wrapServiceWorkerCommand(method string, params map[string]any, sessionID string, targetSessionID string) []rawStep { diff --git a/go/modcdp/translate/translate_test.go b/go/modcdp/translate/translate_test.go index 768347d..df05a5b 100644 --- a/go/modcdp/translate/translate_test.go +++ b/go/modcdp/translate/translate_test.go @@ -52,6 +52,37 @@ func TestTranslateRoutesWrapsAndUnwrapsModCDPProtocolMessagesDeterministically(t t.Fatalf("configure unwrap = %q", configured.Steps[0].Unwrap) } + custom, err := wrapCommandIfNeeded( + "Custom.echo", + map[string]any{"secret": strings.Repeat("x", 100), "nested": map[string]any{"ok": true}}, + DefaultClientRoutes(), + "session-1", + ) + if err != nil { + t.Fatal(err) + } + customParams := custom.Steps[0].Params + if !strings.Contains(stringValue(customParams["functionDeclaration"]), "JSON.parse(paramsJson)") { + t.Fatalf("functionDeclaration = %s", customParams["functionDeclaration"]) + } + if strings.Contains(stringValue(customParams["functionDeclaration"]), "xxxxxxxxxx") { + t.Fatalf("functionDeclaration includes custom params: %s", customParams["functionDeclaration"]) + } + customArguments := customParams["arguments"].([]map[string]any) + if customArguments[0]["value"] != "Custom.echo" { + t.Fatalf("method argument = %#v", customArguments[0]) + } + var customPayload map[string]any + if err := json.Unmarshal([]byte(customArguments[1]["value"].(string)), &customPayload); err != nil { + t.Fatal(err) + } + if customPayload["secret"] != strings.Repeat("x", 100) || customPayload["nested"].(map[string]any)["ok"] != true { + t.Fatalf("params argument = %#v", customPayload) + } + if customArguments[2]["value"] != "session-1" { + t.Fatalf("session argument = %#v", customArguments[2]) + } + unwrapped, err := unwrapResponseIfNeeded(map[string]any{"result": map[string]any{"type": "object", "value": map[string]any{"ok": true}}}, "runtime") if err != nil { t.Fatal(err) diff --git a/js/src/translate/translate.ts b/js/src/translate/translate.ts index 2338f2d..da94e2a 100644 --- a/js/src/translate/translate.ts +++ b/js/src/translate/translate.ts @@ -173,9 +173,11 @@ export function wrapCustomCommand( method: string, params: ProtocolParams = {}, cdpSessionId: string | null = null, -): cdp.types.ts.Runtime.EvaluateParams { +): cdp.types.ts.Runtime.CallFunctionOnParams { return { - functionDeclaration: `async function() { return JSON.stringify(await globalThis.ModCDP.handleCommand(${JSON.stringify(method)}, ${JSON.stringify(params)}, ${JSON.stringify(cdpSessionId)})); }`, + functionDeclaration: + "async function(method, paramsJson, cdpSessionId) { return JSON.stringify(await globalThis.ModCDP.handleCommand(method, JSON.parse(paramsJson), cdpSessionId)); }", + arguments: [{ value: method }, { value: JSON.stringify(params) }, { value: cdpSessionId }], awaitPromise: true, returnByValue: true, }; diff --git a/js/test/test.translate.ts b/js/test/test.translate.ts index d11c19c..df9981f 100644 --- a/js/test/test.translate.ts +++ b/js/test/test.translate.ts @@ -32,6 +32,23 @@ test("translate routes, wraps, and unwraps ModCDP protocol messages deterministi const configured = wrapCommandIfNeeded("Mod.configure", { server: { server_routes: { "*.*": "loopback_cdp" } } }); assert.equal(configured.steps[0]?.unwrap, "runtime_json"); + const custom = wrapCommandIfNeeded( + "Custom.echo", + { secret: "x".repeat(100), nested: { ok: true } }, + { cdpSessionId: "session-1" }, + ); + const custom_step_params = custom.steps[0]?.params as + | { arguments?: Array<{ value?: unknown }>; functionDeclaration?: unknown } + | undefined; + assert.match(String(custom_step_params?.functionDeclaration), /JSON\.parse\(paramsJson\)/); + assert.doesNotMatch(String(custom_step_params?.functionDeclaration), /xxxxxxxxxx/); + assert.equal(custom_step_params?.arguments?.[0]?.value, "Custom.echo"); + assert.deepEqual(JSON.parse(String(custom_step_params?.arguments?.[1]?.value)), { + secret: "x".repeat(100), + nested: { ok: true }, + }); + assert.equal(custom_step_params?.arguments?.[2]?.value, "session-1"); + assert.deepEqual(unwrapResponseIfNeeded({ result: { type: "object", value: { ok: true } } }, "runtime"), { ok: true, }); diff --git a/package.json b/package.json index c369498..b38d82a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "modcdp", - "version": "0.0.17", + "version": "0.0.18", "repository": { "type": "git", "url": "git+https://github.com/pirate/modcdp.git" diff --git a/python/modcdp/translate/translate.py b/python/modcdp/translate/translate.py index 06bbde5..648ba16 100644 --- a/python/modcdp/translate/translate.py +++ b/python/modcdp/translate/translate.py @@ -152,10 +152,13 @@ def _wrap_modcdp_add_middleware(params: ProtocolParams) -> RuntimeCallFunctionOn def _wrap_custom_command(method: str, params: ProtocolParams, session_id: str) -> RuntimeCallFunctionOnParams: - return _call_function_params( - "async function() { return JSON.stringify(await globalThis.ModCDP.handleCommand(" - f"{json.dumps(method)}, {json.dumps(params)}, {json.dumps(session_id)})); }}" + runtime_params = _call_function_params( + "async function(method, paramsJson, cdpSessionId) { " + "return JSON.stringify(await globalThis.ModCDP.handleCommand(method, JSON.parse(paramsJson), cdpSessionId)); " + "}" ) + runtime_params["arguments"] = [{"value": method}, {"value": json.dumps(params)}, {"value": session_id}] + return runtime_params def _wrap_service_worker_command( diff --git a/python/pyproject.toml b/python/pyproject.toml index 5101b3e..29d703e 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "modcdp" -version = "0.0.17" +version = "0.0.18" description = "Python client for ModCDP." readme = "README.md" requires-python = ">=3.11" diff --git a/python/tests/test_translate.py b/python/tests/test_translate.py index 3fa640b..d221779 100644 --- a/python/tests/test_translate.py +++ b/python/tests/test_translate.py @@ -38,6 +38,19 @@ def test_routes_wraps_and_unwraps_modcdp_protocol_messages_deterministically(sel ) self.assertEqual(configured["steps"][0].get("unwrap"), "runtime_json") + custom = wrap_command_if_needed( + "Custom.echo", + {"secret": "x" * 100, "nested": {"ok": True}}, + cdp_session_id="session-1", + ) + custom_step_params = custom["steps"][0].get("params", {}) + self.assertIn("JSON.parse(paramsJson)", str(custom_step_params.get("functionDeclaration"))) + self.assertNotIn("xxxxxxxxxx", str(custom_step_params.get("functionDeclaration"))) + custom_arguments = custom_step_params.get("arguments", []) + self.assertEqual(custom_arguments[0].get("value"), "Custom.echo") + self.assertEqual(json.loads(str(custom_arguments[1].get("value"))), {"secret": "x" * 100, "nested": {"ok": True}}) + self.assertEqual(custom_arguments[2].get("value"), "session-1") + self.assertEqual(unwrap_response_if_needed({"result": {"type": "object", "value": {"ok": True}}}, "runtime"), {"ok": True}) self.assertEqual(unwrap_response_if_needed({"product": "Chrome/1"}, None), {"product": "Chrome/1"}) From d3dd139d160384b8af89f7f30605e1ec693678b8 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Sat, 16 May 2026 11:59:46 -0700 Subject: [PATCH 29/33] Fix Python translate test typing --- python/tests/test_translate.py | 3 ++- python/uv.lock | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/python/tests/test_translate.py b/python/tests/test_translate.py index d221779..fd9ff1c 100644 --- a/python/tests/test_translate.py +++ b/python/tests/test_translate.py @@ -2,6 +2,7 @@ import unittest import json +from typing import cast from modcdp.translate import ( CUSTOM_EVENT_BINDING_NAME, @@ -46,7 +47,7 @@ def test_routes_wraps_and_unwraps_modcdp_protocol_messages_deterministically(sel custom_step_params = custom["steps"][0].get("params", {}) self.assertIn("JSON.parse(paramsJson)", str(custom_step_params.get("functionDeclaration"))) self.assertNotIn("xxxxxxxxxx", str(custom_step_params.get("functionDeclaration"))) - custom_arguments = custom_step_params.get("arguments", []) + custom_arguments = cast("list[dict[str, object]]", custom_step_params.get("arguments", [])) self.assertEqual(custom_arguments[0].get("value"), "Custom.echo") self.assertEqual(json.loads(str(custom_arguments[1].get("value"))), {"secret": "x" * 100, "nested": {"ok": True}}) self.assertEqual(custom_arguments[2].get("value"), "session-1") diff --git a/python/uv.lock b/python/uv.lock index 60a7fcb..c1a6a00 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -13,7 +13,7 @@ wheels = [ [[package]] name = "modcdp" -version = "0.0.17" +version = "0.0.18" source = { editable = "." } dependencies = [ { name = "pydantic" }, From cc2945977c1efad58789caaadc63a1ffb1292d96 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Sat, 16 May 2026 12:52:11 -0700 Subject: [PATCH 30/33] Stabilize extension injection fallback timing --- extension/src/service_worker.ts | 84 +- go/modcdp/client/ModCDPClient.go | 7 +- go/modcdp/client/ModCDPClient_test.go | 60 +- go/modcdp/injector/extension.zip | Bin 510634 -> 512241 bytes go/modcdp/launcher/LocalBrowserLauncher.go | 129 ++- js/src/client/ModCDPClient.ts | 746 ++++++++++++---- js/src/injector/ExtensionInjector.ts | 188 +++- .../LocalBrowserLaunchExtensionInjector.ts | 13 +- js/src/launcher/LocalBrowserLauncher.ts | 256 ++++-- js/src/server/ModCDPServer.ts | 836 ++++++++++++++---- ...est.LocalBrowserLaunchExtensionInjector.ts | 38 +- js/test/test.ModCDPClient.ts | 146 ++- python/modcdp/client/ModCDPClient.py | 5 +- python/modcdp/extension.zip | Bin 510634 -> 512241 bytes .../LocalBrowserLaunchExtensionInjector.py | 8 +- .../modcdp/launcher/LocalBrowserLauncher.py | 85 +- python/tests/test_ModCDPClient.py | 32 +- 17 files changed, 2041 insertions(+), 592 deletions(-) diff --git a/extension/src/service_worker.ts b/extension/src/service_worker.ts index 37d8e9f..a026067 100644 --- a/extension/src/service_worker.ts +++ b/extension/src/service_worker.ts @@ -29,18 +29,23 @@ const compact = (value: unknown) => { }; const trimLog = (log: any[]) => (log.length = Math.min(log.length, 80)); const routeFor = (method: string) => { - if (method.startsWith("Mod.") || method.startsWith("Custom.")) return "service_worker"; + if (method.startsWith("Mod.") || method.startsWith("Custom.")) + return "service_worker"; const routes = (bridge.routes ?? {}) as Record; const route = routes[method] ?? Object.entries(routes) - .filter(([pattern]) => pattern.endsWith(".*") && method.startsWith(pattern.slice(0, -1))) + .filter( + ([pattern]) => + pattern.endsWith(".*") && method.startsWith(pattern.slice(0, -1)), + ) .sort((a, b) => b[0].length - a[0].length)[0]?.[1] ?? routes["*.*"] ?? "chrome_debugger"; if (route === "loopback_cdp") return "loopback"; if (route === "chrome_debugger") return "debugger"; - if (route === "auto") return bridge.loopback_cdp_url ? "loopback" : "debugger"; + if (route === "auto") + return bridge.loopback_cdp_url ? "loopback" : "debugger"; return route; }; const upstreamServer = (id: string) => @@ -51,7 +56,8 @@ const upstreamServer = (id: string) => const configuredClient = (params: unknown, session_id?: string | null) => { const at = new Date().toISOString(); const id = - (session_id && client_id_by_config_session.get(session_id)) || `downstream_client_${next_downstream_client_id++}`; + (session_id && client_id_by_config_session.get(session_id)) || + `downstream_client_${next_downstream_client_id++}`; if (session_id) client_id_by_config_session.set(session_id, id); active_downstream_client_id = id; const configure = compact(params); @@ -71,7 +77,9 @@ const configuredClient = (params: unknown, session_id?: string | null) => { client: configure?.client ?? {}, server: configure?.server ?? {}, }; - if (client.downstream_transport !== "reversews") { + if (client.downstream_transport === "reversews") { + bridge.stopNativeBridge?.("reverse downstream connected"); + } else if (bridge.reverseBridgeActive?.() !== true) { bridge.stopReverseBridge?.("non-reverse downstream connected"); } return client; @@ -92,15 +100,29 @@ const downstreamClient = (session_id?: string | null) => { last_seen: at, }); const id = session_id || "root"; - const session = (client.sessions[id] ??= { id, commands: 0, events: 0, first_seen: at, last_seen: at }); + const session = (client.sessions[id] ??= { + id, + commands: 0, + events: 0, + first_seen: at, + last_seen: at, + }); return { at, client_id, client, session }; }; -const logTraffic = (direction: "command" | "event", name: string, payload: unknown, session_id?: string | null) => { +const logTraffic = ( + direction: "command" | "event", + name: string, + payload: unknown, + session_id?: string | null, +) => { const { at, client_id, client, session } = downstreamClient(session_id); const upstream = routeFor(name); const from = direction === "command" ? client_id : upstream; const to = direction === "command" ? upstream : client_id; - const route_path = from === "service_worker" || to === "service_worker" ? [from, to] : [from, "service_worker", to]; + const route_path = + from === "service_worker" || to === "service_worker" + ? [from, to] + : [from, "service_worker", to]; const entry: any = { id: `log_${next_log_id++}`, at, @@ -113,13 +135,16 @@ const logTraffic = (direction: "command" | "event", name: string, payload: unkno }; direction === "event" ? client.events++ : client.commands++; direction === "event" ? session.events++ : session.commands++; - direction === "event" ? (session.last_event = name) : (session.last_command = name); + direction === "event" + ? (session.last_event = name) + : (session.last_command = name); client.last_seen = at; session.last_seen = at; client.log ??= client.recent ?? []; client.log.unshift(entry); trimLog(client.log); - const endpointLog = upstream === "service_worker" ? self_log : upstreamServer(upstream).log; + const endpointLog = + upstream === "service_worker" ? self_log : upstreamServer(upstream).log; endpointLog.unshift(entry); trimLog(endpointLog); return entry; @@ -128,7 +153,11 @@ const logTraffic = (direction: "command" | "event", name: string, payload: unkno if (bridge) { const handleCommand = bridge.handleCommand?.bind(bridge); if (handleCommand) { - bridge.handleCommand = async (method: string, params?: unknown, session_id?: string | null) => { + bridge.handleCommand = async ( + method: string, + params?: unknown, + session_id?: string | null, + ) => { if (method === "Mod.configure") configuredClient(params, session_id); const entry = logTraffic("command", method, params, session_id); try { @@ -143,20 +172,26 @@ if (bridge) { } }; } - bridge.addEventListener?.((event: string, _payload: unknown, session_id?: string | null) => - logTraffic("event", event, _payload, session_id), + bridge.addEventListener?.( + (event: string, _payload: unknown, session_id?: string | null) => + logTraffic("event", event, _payload, session_id), ); for (const [method, key] of [ ["startReverseBridge", "reverse"], ["stopReverseBridge", "reverse"], ["startNativeBridge", "native"], + ["stopNativeBridge", "native"], ["startNatsBridge", "nats"], ]) { const start = bridge[method]?.bind(bridge); if (start) { bridge[method] = (...args: unknown[]) => { const result = start(...args); - self_transports[key] = { args: compact(args), result: compact(result), updated_at: new Date().toISOString() }; + self_transports[key] = { + args: compact(args), + result: compact(result), + updated_at: new Date().toISOString(), + }; return result; }; } @@ -205,14 +240,21 @@ chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => { loopback_cdp_url: bridge.loopback_cdp_url, browser_token: bridge.browser_token ? "set" : null, cdp_send_timeout_ms: bridge.cdp_send_timeout_ms, - loopback_execution_context_timeout_ms: bridge.loopback_execution_context_timeout_ms, - ws_connect_error_settle_timeout_ms: bridge.ws_connect_error_settle_timeout_ms, + loopback_execution_context_timeout_ms: + bridge.loopback_execution_context_timeout_ms, + ws_connect_error_settle_timeout_ms: + bridge.ws_connect_error_settle_timeout_ms, native_bridge_attempts: bridge.native_bridge_attempts, native_bridge_connected: bridge.native_bridge_connected, native_bridge_last_error: bridge.native_bridge_last_error, }, - ...(Object.keys(self_transports).length ? { transports: self_transports } : {}), - custom: { commands: [...self_custom.commands], events: [...self_custom.events] }, + ...(Object.keys(self_transports).length + ? { transports: self_transports } + : {}), + custom: { + commands: [...self_custom.commands], + events: [...self_custom.events], + }, log: self_log, }; sendResponse({ @@ -231,7 +273,11 @@ chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => { }, } : {}), - debugger: { ...upstream_servers.debugger, id: "debugger", log: upstream_servers.debugger?.log ?? [] }, + debugger: { + ...upstream_servers.debugger, + id: "debugger", + log: upstream_servers.debugger?.log ?? [], + }, }, }); return false; diff --git a/go/modcdp/client/ModCDPClient.go b/go/modcdp/client/ModCDPClient.go index bc72d5f..d3e32a4 100644 --- a/go/modcdp/client/ModCDPClient.go +++ b/go/modcdp/client/ModCDPClient.go @@ -1469,7 +1469,8 @@ func (c *ModCDPClient) extensionInjectorsForConfig() []extensionInjector { return nil } var injectors []extensionInjector - if c.Injector.InjectorMode == "auto" || c.Injector.InjectorMode == "discover" { + preferLaunchInjection := c.Injector.InjectorMode == "auto" && c.Launcher.LauncherMode == "local" + if (c.Injector.InjectorMode == "auto" || c.Injector.InjectorMode == "discover") && !preferLaunchInjection { injector := NewDiscoveredExtensionInjector(ExtensionInjectorConfig{}) injectors = append(injectors, &injector) } @@ -1485,6 +1486,10 @@ func (c *ModCDPClient) extensionInjectorsForConfig() []extensionInjector { injector := NewExtensionsLoadUnpackedInjector(ExtensionInjectorConfig{}) injectors = append(injectors, &injector) } + if preferLaunchInjection { + injector := NewDiscoveredExtensionInjector(ExtensionInjectorConfig{}) + injectors = append(injectors, &injector) + } if c.Injector.InjectorMode == "auto" || c.Injector.InjectorMode == "borrow" { injector := NewBorrowedExtensionInjector(ExtensionInjectorConfig{}) injectors = append(injectors, &injector) diff --git a/go/modcdp/client/ModCDPClient_test.go b/go/modcdp/client/ModCDPClient_test.go index 6443d73..7dad078 100644 --- a/go/modcdp/client/ModCDPClient_test.go +++ b/go/modcdp/client/ModCDPClient_test.go @@ -3,8 +3,10 @@ package client import ( "context" "encoding/json" + "fmt" "os" "path/filepath" + "reflect" "regexp" "runtime" "sort" @@ -454,6 +456,38 @@ func TestModCDPClientDefaultsLaunchedModCDPServerUpstreamsToExtensionAuto(t *tes } } +func TestModCDPClientOrdersLocalAutoInjectionAsLaunchFlagThenLoadUnpackedFallback(t *testing.T) { + cdp := New(Options{ + Launcher: LauncherConfig{LauncherMode: "local"}, + Injector: InjectorConfig{InjectorMode: "auto"}, + }) + + got := []string{} + for _, injector := range cdp.extensionInjectorsForConfig() { + switch injector.(type) { + case *LocalBrowserLaunchExtensionInjector: + got = append(got, "LocalBrowserLaunchExtensionInjector") + case *ExtensionsLoadUnpackedInjector: + got = append(got, "ExtensionsLoadUnpackedInjector") + case *DiscoveredExtensionInjector: + got = append(got, "DiscoveredExtensionInjector") + case *BorrowedExtensionInjector: + got = append(got, "BorrowedExtensionInjector") + default: + got = append(got, fmt.Sprintf("%T", injector)) + } + } + want := []string{ + "LocalBrowserLaunchExtensionInjector", + "ExtensionsLoadUnpackedInjector", + "DiscoveredExtensionInjector", + "BorrowedExtensionInjector", + } + if !reflect.DeepEqual(got, want) { + t.Fatalf("injector order = %#v", got) + } +} + func TestModCDPClientRejectsUnknownComponentModesAtTheirOwningFactoryBoundary(t *testing.T) { cases := []struct { name string @@ -679,7 +713,10 @@ func TestModCDPClientCloseDoesNotCloseRemoteBrowserItDidNotLaunch(t *testing.T) chrome, err := NewLocalBrowserLauncher(LaunchOptions{ Headless: &headless, ChromeReadyTimeoutMS: 60_000, - ExtraArgs: []string{"--load-extension=" + extensionPath}, + // This test manually supplies --load-extension, so it intentionally uses + // the launch-flag browser path instead of relying on the client fallback. + ExecutablePath: reverseWSTestBrowserPath(t), + ExtraArgs: []string{"--load-extension=" + extensionPath}, }).Launch(LaunchOptions{}) if err != nil { t.Fatal(err) @@ -745,15 +782,14 @@ func TestModCDPClientCloseKeepsInjectorFilesUntilAfterLaunchedBrowserShutdown(t Launcher: LauncherConfig{LauncherMode: "local", LauncherOptions: LaunchOptions{ Headless: boolPtr(true), - // Reversews is browser -> client only. After explicit CHROME_PATH and - // CI /usr/bin/chromium, this test uses Chrome for Testing because - // Canary rejects --load-extension in this local test path. + // After explicit CHROME_PATH and CI /usr/bin/chromium, this test uses + // Chrome for Testing because Canary rejects --load-extension in this + // local launch injector path. ExecutablePath: reverseWSTestBrowserPath(t), }, }, Upstream: UpstreamConfig{ - UpstreamMode: "reversews", - UpstreamReverseWSWaitTimeoutMS: 30_000, + UpstreamMode: "ws", }, Injector: InjectorConfig{ InjectorMode: "auto", @@ -768,16 +804,16 @@ func TestModCDPClientCloseKeepsInjectorFilesUntilAfterLaunchedBrowserShutdown(t if err := cdp.Connect(); err != nil { t.Fatal(err) } - var loadUnpackedInjector *ExtensionsLoadUnpackedInjector + var localLaunchInjector *LocalBrowserLaunchExtensionInjector for _, injector := range cdp.extensionInjectors { - if typed, ok := injector.(*ExtensionsLoadUnpackedInjector); ok { - loadUnpackedInjector = typed + if typed, ok := injector.(*LocalBrowserLaunchExtensionInjector); ok { + localLaunchInjector = typed } } - if loadUnpackedInjector == nil { - t.Fatal("expected ExtensionsLoadUnpackedInjector") + if localLaunchInjector == nil { + t.Fatal("expected LocalBrowserLaunchExtensionInjector") } - unpackedExtensionPath := loadUnpackedInjector.UnpackedExtensionPath + unpackedExtensionPath := localLaunchInjector.UnpackedExtensionPath if unpackedExtensionPath == extensionPath { t.Fatalf("UnpackedExtensionPath = %q", unpackedExtensionPath) } diff --git a/go/modcdp/injector/extension.zip b/go/modcdp/injector/extension.zip index d48ca552c711acaceddbab33088bdad663ffadfe..fd61fac0f7c19701920b206991cb3beeca89bbcd 100644 GIT binary patch delta 134894 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 E0HW7R82|tP delta 133325 zcmV)0K+eDMp&zQ1AFx{l53{YFI+Csg0C<-p044wcmoLx(&2x% zrjllV0R8>^6})ryvyX0hMMMVCJ+Du)vcQND5gCTLe4Q9jzz`w?L}vTHpVigXb?NSP zO9JW)&O9MmtFP77)t|1auC|FHdeyi>)h2h7%AZkEZ>klh)=wJsq^uydk6ACO6r%Q} z(}M~HD7;|3r&M_IE6{UF1*dxjdQE>;XwKRtDe8?KS?1izbocJvxL$MCy$w{F^hRql z`LUfeyX&E?y;{ZbkBVqp?m%^HnuU%VB}q(6r?ns zK9Ha1P+MvN-7{YS=$?DJKYHw|{rE*p<414vm3@>XX9h%6eD0N}-J{2WVvpWlewdN?V=gC}{_1d6wa^wux(sG6f`i^y&LLh9GF%=Vu7TD3xX z9VGE}X`!t4pR)!nl+)hxb?`pL$BHKyrc-L2dA|k!OGAWbggK>FDG$1dBR;H`6;i9UUL>A7nmnG=+jSQT*-2PO#8k(1V@;A2D5Zr>>WKL7jVY%nlQ&Lc6D z_i2A`Fq34&IWmNPcXqlb57XQ=^K)x3G|_*|$v|>l2KD7%aB5K=5CnFZd+*LA&V{E1 z{}SVNIy1;xe!hRF_jJTV^j_hCqUtiX4XPU$8Pq?x+_NL~visTe34Qj%!lFkUZEwxI z;vHxwTN$$HKZ{SHjovd{8(sgzS!&ysY$<+l(-ld!2f)@U8aG0b5e8; zcC!WSQ}<*qC&9~%J%YMl9iNT%>;o6{TcqJfKu7hAPJVxvk<|~fldd$jp1*!$Cemj5 zqV?u=yOXYOy?)c#%!JJRy*Kyn-SdT!%kzAF{bjR}ti4HpNt3PD?e!OLlJys_(_dcK zDP?=p&~izKw70mxXPm~mUOIkf^dx0=sP_Lr~HmG&>t z8|(?*5sn-IbBsCmr3nTBsZaJkp6#8Qco6>wzibd#{0X80N`U;16O}}9TL^cG9nQ0# z?%g`?W`O?D32{oM(m^0*kC-Q>#mZr+;^zLlX!}SYRN!g5B@42^+q68216t`^$Eqiv> zTULL>yvk4GH9Dttou`?DgeNaS3D8Us>7|<*g=Y zW@ZlF&D^rgD46RmPKdkFX)yECPe0{w&wu}SepzZN6sFX(%A~t(6QAsj&Q1oAJTQYC zIksMIzJ8T9I&U&gc=7s8v;CsgezD5KNHBlZ;#0FYzd0Lb(qXTA^yZBk(`0M&^?G?h z8t$8CV_D`~C}|+eto^>*9d+?*Hcp#HyJG?%WvK^eeH(V?3yCPm_-Mw; zw8vaPOlJBeK5_Z7MZ*+rr4Yn3dbYX#0;3=uy!(9XFKnP~n{F1yBbw26iKj5iCuV=+ zG}!wz)9DUL?v{YL|J=GQ=>~cZ+`*I-7NEXJQO~oN1{u4uHupyVdrJ{a&cT$v72Es3@ngMqMP9wp#g(5y`TqP~q{` z^yKy@N*hujJSv+q#D!k#9s0P11wFy=hHq@>Xgn|;67sj-e{gXS|Ddv;JSl$|&)cqO zNS39yRo^b^x`l?<)^!V6D|FojRIJ{0o1;qCfhp8(J7mIHH;D^nTVBT@?-Q%wigZ?D z?x1_oxpCX|OLnMx`gzdfZVk`g_76_?A%CnxL)+s(s2bt+rBJe>WT9>jDP#9j_h6*- zXm>NA#d7qP2%|?$qNdC;#+QG!&$@>=1b@v8pd(=c7$a=Pu7Bo>fl$=E3>uvcGKgjL zSGV2Z{N;)j#Tk9vXfNybyKdhs2O0V}HNFiQPNS~8**!TP4(*MmZXM?(Eu)1~26nom z-u^AMW{S?chB6I{*by_@nVoIQFc+}HkT8WU@!j!>nQ5j;eOzFTPEvobxVM?)SyTDP z4CT2M8z(tDt_K;_XL_cu8NZvzjkjfKJ!dR3Z!#|UP4dVeNHc2YyY2zTNVg?%4LH2^ zk69COs9sy8>8q@uj4n;9l>Et#pJ0U(`F``b_hD~jBt>`kGu+z=EV8}#*1oyB{xW?b zdV%=CYR(?{sx-y~=AVBPolHD_=XUqRnAza{l|eicI7*i(Wj+<~g{WbAq(;Iu?(V4o zs4@j*jSwQsG}yi6flMs$HV;8D!AB=&j^4S0^aA8s?idZk>zCQK`)@h|emCz9k565# zMD`r2dlall^wT1epT4o%<~OJR;8}r7rlHlXKmY45MV2#&ADe%n?rifiwyjs>xv}kj6t!)ZIz-2x!!QQDE;JctoxSL5SH2QCb zEm4{zR8U&W8@KWIA2K|5_kT>(+24Oa+wB{)-TpA^(pV8vn(TjE3e$6ZF54}Qf2wgP zlb>fJ)NdUhbu+@VKE+(dgKkeYp119>{m#A+<~ANI)X2xd-o@zo@$t~yI|J*+ywKkC z@r7L&W14?3S~ax}N@qm_cr~tlHDX9t;l5J!A)$d%Mr0W3#>2{a}hL8JCxPPNKQ?Sl+a? zBcqxFRN0>9JX`RcaZDT7sFjbilmrTgztd8BLq+H`zbz&5*W*IQ~IiJ@5j#i~7*J=3#}rPcwimRUj3z6qBWbHL1AN$%x`X_HqW1dCp4tBOm>066Bb* zqUC>_xSqc`K!UzGI?XArl%A1NN7Etb+p~A?_D;Z#ga#v%!Z<)VMLqH0uJbB&Zz9E8 z;d1=$-D&S+Z*Q=+w>NAU?=r);h9RLMyQ-}RiIl}EQbu>Q5BcfU+=uL4*Sx#CKRW7* z4rH%0E*!iMD`6u7NYxw?#d}a~Ix3B;+OL27@9Y2Eat|IU;s5$Sv#9DrOTeR<*RJ5d zl*;X*+mrhsb1m$xfzYlQ91V#`?FYZaM(C&u2kTx(x-JsD1pa@%H+T83^h!lZYz<>qwzV6=bh_a6-QxqaL8D;p_+rfuOg|6G60 z(|!h_Zrz*Bn!*4b$~N7cq{(WAUg@VERaEg> zFM-5|TycAl_JK3A1I-3@iFNhA_jJ3@9nS|}3HwV%mWk!F$asfzynk}nKJ@ma*$xX{!`qBJkAjBU5(gjxU3;-apKdcxo(n*qK{yn6@Wj4w3cML}ZWXSe5=M!L8FiQ~ zEDj9ZIIKUZy&A^LCD%BUG3;A+;wxBSxk8DSn^{*NC?vbCiv{Z5pj~6UnKZ@kg z#VaL@XEnt=UB-avU>A<@+}gu0fq#jRrT=n?4D-+ZzfY&9PaggL`&@ta|J=dd(cUSS za+@ItJ`t1ZUvvL&e>55vWoCPwH@E(DyVo~H;AHrI=IG2QMfS2;_38A{+}v#T$Nn{S zz?Y26p}y<~%sE%j?9BV)(aeAS<$iy;`{!-Fl3UUJ*UTrk=WvRsY~z`c+nIvjnPW^w zmrf7?~eBO2Dfh6&9Dg!e{3%2lq8AO5K5M?_fKEHemS#yaN0Z0 zD*KE?&t%KsINE6LAr4P0Q32x|5BCPfq6t|7p1J)fqRUYXRK_&pkGmOVJMu8bS-_IkgcD~G_iUWqx(}I5@<;z=-It*Fu{%U_TGDlmq^#Sb^rmLw{ zz*?(E45zb}(p+%;)@-a0_X;PL{_*Laa|ur9hi*9GZ3CaPQhv)g7%e}NSbxsW{Kg-y`R?%SG@BiEnK9xnD}ocjlP`bX_DboAHY*S;i-bgX zjp9Eml5@ZlU1WbOpVedQoc5U!Z)Q_mUdE^HX<}|(*QL0pI=?`)$Zod0!;H!qW|-mC zUmE)C5E)+qGtPl#?JrF>6}EPc!OL7;D+j5lm5{V8s7=4?lvNd!`B zn}4_bc9pfPplvg5rMmS=QBqX**UYhvLk*S;dU3mI`}cqB?eww(d$Fl9BW9=bU-3JE z%9mU6u_K5X!CNfP+~my$9$=uARoIx@w{OqtGL*B?r_(o16$BaHSo(opD69Sr9u0E; zrb@XVfX$6PL6E6Z-yq{I`9zsMdQBji97mn7%@4IYw@5&MmN`R1XD55HWOu=D2d_>2 zE2k1W8=ik_6}dO<{tDC~LsX?_K+e;y--Ug}skw?96WxtXI6qe}6CWqHa_C@uY0u0Z zlra@_M*V*GbLW(;2y*@PwddY+47`W564y&zkTRPgVm^2xp*Wvf>0n4Pf$HzApeNDc zH5@;K6v^YNxf>i)&(C+H~o?UR83lF{^E9Le!GCU#tpp*j#r(vfP@#ckiAvPRG&R zUpeD8JA>nlCS)u`@1TO|_abKND4u;WJ56K;=37y`#Q6ye=U-tqA849)va7eEov1q5 zn09}sbtxx}I&q@qnMy*c<)thmTS2~DvBiD8<@chV$nv&g_B4|cT}~mCZHRd4IF}cv z9&#N5b-!?E)90wMDau`zb_=I~)xe3;dg!7O!&DUNE#N7smCUc(T8odlZNZ=c{FheJ zWCFrVV}0yAm0W-=kH|d_8*Sa}qCItPy<&fr5@nHVT7)3zgCF$^S4YmA!y~qyJmtgz z2IG?+I`W|#yg+8BQ9stdW)3nL=JFrxx|^VdV^gm8vMZADp>Eatr?+r_0dyJT90hW%DE~OYFe&W<_jHmpU^5*COX4 zN#|p{V`zrWtKvAF*4|JHIJ*Op^&(}1<*77O;AGxo+J z7hr9Z@(F03ut@33yua7)A1i0mNj-n2_1yJcr?EaUv?ma*`1c=3x&Lo;BmB4LMri(_ zlKIihykt0+^Nrz2d0g3wx+hN7p)HON_$r1f8mwN%Q3tz#)MrX4O3vZgh}opV++;^k z43De&Ut9x=Kj%SBul}W3B1n0QlSXA_p|Gu5MuE7!9i^l?PhcGN3oFP6V_$zmm|p2* z;By3=js#-9*pA4;Tmk+S+y8Ars9Fn1R0$IpfaInvs)DF=98Ju?dYM^EfRoQ(b#iq8 zkAzhayK0uc*a@=Yrhj2l%BlY8wA4Nn*Qk6t#n%}?kEml&{qAesb9JS`7NQ#7_gEd9 z8d#;OXNEcGV|w?-I;*;lhSZWLglqwCxP-Go_q>05(C@zO?};0Wz9=56r}(YHWtBv@jX2nj!tLpxbrY28T#E*G|0v6^$=a_CuRXsH>hDH z4&rg~Nn$og*`F$HA|m*<)$#?RXrmhg@fV{{PNGx-XUpQkz^ z#4If5L7gq*o&)2ctBrpd@WZkG$&U8z7#k=qtIP=6@uV_OE9FJN#3m)!N1xE%E*p*C zf3TFBp~-5e!7h=+#4-IrG-gV&EZD+MO@8EVEXu}btkJ0|Zz8}ySV_ON`4dH)?AzRr#@zzwgj4_VJ4Of)eqx-FxZNBt$;}o`w-%#VDD_yWl99#TV z-Cy$bwWi3(;xRtCj(0yh^H3OY$uSGdsh1$9 zuomNnY-ITBY!;^w;N#@h?YlPA$1PLx?YnP3kM``DJQRO~|Mi!7@kNQQyh9MN2^qKg z3O9v_lf&)UYH`OJQL&2q+da}%=U72`g>Sc{*q{nTfp-s1 ze?HjzggzHjDV;9NK7Nbl4mwSh?dSjdzi0gZnUr}|Tcd@^ao2=CxTR{#_1U4-*l^g{ z5ipL6NpOEFOqh3sDa>or2lEX4JRd&};sKc(RMLTg>~E3U=8Bp1cbS~C+$SBn4eeZp z|DCxDKtfE!&#$6MxS(mj>v!qg7Q1}# z!HNuR?qKxqNK#8{mG2JJE;0b%w@t~I-|S-EXN@w6;7l-5)SU^IC1(}q4T{$ee`I8f zW<`;*&&0E_oUVG2UaKDBHhYhz`XDnMHi*|O$Q|Jl6mNhjGvUVKIeWJ5a3*v2m)Hc0 zfmMJ1sGfmrZ;wrMU)&iE_jbEkM|$+2-!->eI+*xxLURT~5Z?R!hk5gRi1RoDfH@1Q zJ3F|Ut#{5YYFo5h8u0)zp%*RIK6Fvt^1}Q>tWlFx9FWpcRQ@xDnmBT1$tyH^aEXKm zsc@*Tr-CkyBC|8jVr+XkYZUtw_$3e=P9J|!pdj+5D{lPJE1q}X>R74{%w?AcdoTno zz#`Br#-$OeARMM5FaUvtIP%3UF;aOPp-#5Ruo)yr`K4xg1i1tKLu@7hcazZW@i{V zikTdr_02iU(Tu4H6?NW~P9$+$^D=1bRVXw;?pPn5YyL?cCAQzpCe`UXERE#!w{hTW zPI}8IV!mhM^zK4rlQ#Yo|Ch~@@v48C)EQw1z5dzmo>^EL87226#mo&N_U0@KAP-o@ zP5g*Ns3<`^fiR=ysquZ(Qx+$)dK$pVJpLX-uA^^IcX04-?^Icggt8*zg$|~8a@U&* zI_4ZJ?x{%jtK(X<8&#I#_aENU1)SNFg8?OGx<8q@xIap!j<1%tY>eA5Eh68oC|`ad#~NmvySNm4h;Th=AP`Am*`|~*zabzY3~0S9r7$F z0&mNvI*2moWyBk{1RsUdCL7DGSI=)nI#;w}p&Z_856r@KizRgAG(Q>jLR%T@r8E+BGmL*fHbaWp>0HP1 zZi#U?Sw0gt#{{hUSXS_4>>FfUwK>?SKiv@DvgFHI7Ku86-d?&`-v08~ z&q$;SGU7E4VHR`Gqr7ViFCoIU{Pi)C=~hsp3K{(++?6AWiIg3-!Cq3SlB#u#lVb3t znXElL_NsQId?Z+tinM=ZB@VoHRL!Q4bzB8fWs+Ej?)q~37Ru>DU7$OEyS-U2sD%>{ z2d5(&O4Ey$3NhMz!;_8EX0w#4YblbOO|L|;J9g|>>te0u){Ysebo~8T`z)HUu;iN+ zkNn{xn;0#E=K^% zGIC@p5j+T=Kk_{>Aey*IuY>4Br@g4cJqw~&@w=cZgxGEZM8Ye0+AH~L28zb1Bw!&w z41wXlK*N0Z;1vGe;Tb0Ha6a|gcrF~%|QH*~myL&eCN+#hQS%TiV4N1T= zKEF+mg`!tv#9G75RH-pJ+~wz;2^!}zhAAJ#DD#uJ`O7aj@6Dr`TR9_d07Fp8?eGwg z{Rj3;pFG65Ijo8+yPvP9>|n~=&f{FK@La~PS9*eR-zyfMHxpT$K5cja_jJ1E_+Ca_9h+LbBWUH~5NLy#}3Pye_E?Y$+LhY!D zL`3yDjcGwgy=c4Yr}_bg$-IrQ>#1LQewVe;54(-WP6GI}N;NV>b zPxq8Q&-{ywQ|Teg-+y>%oXhtH_I$%EY)!*e*v0+Wb79=VA?+1kB`2yuWf3res|vfy zcgxNCHH0is-npQW*xhVOJwJH2*ZbV-+W>f{DYR_YJL+Zs{WW9Ty&FUxD;W2%{Zpc0 zZrgvSLsoBISsJT5E7`hQcV;*PEgg2;3#P_;S4xv_I_A7qE}AT;)dp=+^b|ooZ%lOfDN+WJccY&w zSM`yL{$;c{ozR0vr3q=73{%D<<4J?47sr24#Spz+gQ&3(ga16r%IPSq_DY`o8N^qV zM4wUdQTI4B>WmivbuSkCbS8*!>I=I)73|a#e1GZ~l;T&>AsuqRr&l@pL9I|^O{M3; z%P$I)zrAk1|C|-T{)N!ayN8umYzCR3tz^mV!5{+F;_3%9j<^`SIG*uS8R`4(;QfEu z2`)|l^_OjK;70I?-6(`|ySN3a08oGGo5Akf(I#pgm%+mP$DWJS;~e@uX40{_#)Q-+ zHWNV+aFKLB(Gv+dMd-CpdCMBR4wJrPmYgtJ{=zY)qm^$)#PFj&j@)<0F ze-cwbox3xp*6zD(Gmx>1;s7)7h5~;gbnKU-QzfitXUcMfx_sB{Q$Pah+=q9YSh#~w zAuh2JADh@^+ZG@(%B)Y6M>7H_)vhKM7daj_qsX+x*R{Eclu`3mEx`~89W%l72HQmL z9da4yKQ-nYuU2%((vp%kbEon`MYD3puY0^*wXhZjw8zyIc2X4O-VYaC(3gJ2g#z_8 ziBVIBA+%Y0OZ0h=1}gx^KdgVsEY(WD5-<6l{jQ_Nbl!_z4=Jf!BGC%8Kz_9OafeE2 zx$q0j!EnT2BbHP8sVse#uQqk1{BgUI;LVQ&KDJXH-3_O`^60UclKZZb()=%ini>)vnr zCThQ@!a*=LR5oI?%Oqk25dCuRBb<5i06Zqi-Ive&}yXxhLb#Q5;(FigNZmUzwQ z>&;D{UWaE{i{Bmez~g_+@R%tp$Bnt$gCGu{_7D1daJ`B>(tA2{V(urN!7Ig1VFz>e zet+g*bXV#AB*BeicDC|=4%dl7S_Q!_#O4thEH|^i%k+k?JhVgU46Pcg~_jk%(>z3vXb1Nl$Q2JG(LyZV3DY6nw&6ljeq#n~oXzq}5MF29n4%iZ35*r}$=*UVxM=pQ5D(uKalrXnw-kpOabMKAf%s`I0%i~>eIlg^6oA&TBoA#Q*Zn92L zuqz@c8#F?blxzzK%FT(NAm8f1gak7@XFifiYD*e96FyV#UTEGEJ}NEx38_jblk}{y(RA!~|aM$A;XaD2Ab*cD$ho-=YqZH!$G zJPjdNNEd%|+2n7(|9<*E|M_Fiioc@dw*}S=1Y&!TH7^q?hBh;p&)qluUw;)9EAMji z?(vApzQTLui|UD%kT=xT#b+d1R;lcqD40rl2)0@QRmK;od1`=Jw?(sR17m!L?dC0s z`|VEk4Pch6C7>aLZCfQogU<0s$A+3dl}F~l1Z02B2GS<6KOcK(Xm>@)+!H^gMNgd0 z{#H}f-b@~=EgY_B?*(-w`N%AF%b9!ZW+rjZh1D!LVC4qhM*h!|-K8gRXvR}dow|(^ zCdS{fq>`&4)tkVe_LHTZ|9m#cX*XNpbG2u3#i@s3p2!Zy<&3-v^Hg+EYp68Zl{rIc)ZApIS^XvxK+gNl z$a?Ej8YXj##O*+C`WP%f@2u7^6$kCgDaLD3auj>S7$|oUzzo;vuVAG;8kfgEL}uhLga9T9eQ|6WTJmc z`E|TbOZ^-(aR{M8gOA$K6 zdt=>8Pn;jeqf%~|QEfBD9iJQl&1_DyTe~$-v9nQy^4tHr`^TN%f4>WV{|k2!kTP_; zF)}GD-6=^91~aYWqwc}Loxsa@ z6?!2_pV7D@(yZr}V;;lplfDWb`OGq9-T`rWHk{%DX|H-DmOAD8B`ya`XcvpU0xUwJ z$3!AM+WRu|DVuXAz%YBpKkCy#)&%4F;)<4!{-BYlp`b!202jaDyRdrle z`|bB1PWC>Yndmk@n5ZRL{lg3f?Ac$?&)pON&%ZzyAP9h#j$XxUvdLo;7NB z>q6@FkfWgq`PomeA#UH|NYPZ&(w!A0$zW8t#u4991Qr@ z_?l9bAUc*6Bt#WLU^O}q#)uP0?C!PIZ zJb9r@?7yOOTVasPNE{RUDhy;28G={=?o~+v(+_SUi?0;oM75_%pc9#4V7rgRHotzx z04OeUr=fo){G7#KY%71>nB;HXIKPr}8|jG4$n6$SwEQS5_Mbv{nC;e3&O(}e!Eq*v zregp7X~Qm636#JAm!90s?>9^fSQ&Z34tTaoP#Ag)A?aV~I}yzz7cnVt8Rnctqk-c9 z8*sBZJ~`Mmdnt+vn~WK>+Kq-MM4qq z8YK2z!c=p;1NA}X^R_(>&WPwVGK7GFSwr0 z{>a#l>_+ldNDP02RDS#8_T6^}{n4I0wItGl6y%>4l>9`fCo3WLQf42 z1x;nkO3qOVfRa?MH|2|`h(~!dTf`%rI6d255U{srj*fq`oTH4%XO0KGJvnL2Kh-~V z6PcI?Zusn|&D@!ppXH@5u1KIodUR0_?YS2opmP>7?yOrOaS5>NBM8f^&RIEgm7>?5 zw$&kBV4wl$^^H9;tnwQN$mE5DY%Jk^nF z(HFfn3G07zJqmdF6_y|-syZx(gJPKX*jW+fH8-w5L6s_o6&ji}Rh&-hCluo+pF1$@ zp1z49)`gW~N?SfE7#zv)-R&oI*E*c5F^JkTd>NtQEv+_mhAqH5lO+KYCb`SdFkipt z9Wao^bR)y@%67!7-XAKnuxAl(0{G9%^;DWZZq z=~Z;*e}&ht%IyCN?*ElmQkrnCrZxr zh`JB4b|vP$q9e7NTb&Nx9hk1XJw7&ZWgfeWp5zr0-rbS^3Z3!<^XDIdv$jR9l5bB4@cY@V^w4D&Ty|&n=+vGb&Ug+vHSi7^eDHb?v}oJfY$cZWpv==-JX$dfBx5B zSu4KG9cIishe`f)ZqyD!04>~)yT>2Qwt{||oVQfSFW?VH(7T`LvPZ;XTO42m$bU;B zsC+_Wfzk2;<7Nds?2SSgUBRdEGsX%lG6kk)2KfN!b ztC;X=7xzG^9NzWKc5~oeToS*a1nX_6dV`@Xi1_R`WF{KUq9Dk#h_Zj+l@;;>#f?B= zo)NSxgi5qIIfFpKG*s-&XbCPNfvybj3I8ncBmlcrIo)aw(n}AQOnE+Z)jZVSm}a%+ByiB-{EWBv7T8J7mOwwus9d z{N{16{r~$vjdfuP_$4UqhpysnUioh$g$J3pg8j@)5Vpi?(c8AKjz$AOR^=ZvGRRK$ z;PlDek7s))pS6Ds4+HF&q&8(XG&XjN6J{n3$I5ZGE8g4P&am9^CyJ(~3sqrp%s-z- zSsmtL%m`6tJd(J?MxsCz?(92;;N7y1{Kzh>arL_oP%}cV?Cnf=Ybemc#H!NtrgN{j z-N~S9c)P)*eF#=NK|K@ZKe&ifUhA6E$8l~)^?MV)#6o{xni|3McGQ3RX(s4Ni27~B z_1ih@@g;XIL}usL+d;8E$k~KBn=p)j_4^Oqx5sCrM{oPx!H55^y?N6Eul8VmR?QKKe)Ke7jOD1=-8oMhZZ&UC^>V z;BsmV8zunQ-bL5MST)Qr$Lp%0aX#m`a}yjB+8h~-M}+nUJ=~JmMg&bYr|RbKE<~?Rk^QzeiNu1< zn)wD}^w`e{n8n863_>~QUkzjb!Oqi#N)CUIzvxRX)SfjbbSRBRBt)n@#@EQ$XFuaF zxlnZbU?L_g0b3c%p?hA>1w)TJe38KuYg=>#>q3U;P>(y%;}3JeAb*M9RKizM@nkY5 zWzA%YP1-T9j1YE;x`UAer^rDneqORJ)yJi|qWB4&FVZwo^NGhn$KP|td5P8NNS}Z7 zV8V3DsmVXoZVR>tWPbl4OL}*BY>s2vnr;^s;l;~Pg&a^JbOQE~JGgPu{q$yH9e)^# zpWMf}d=5eKGAkkns`d7=g=+Ur*I2_^*=l@uaQx|(zgN(nVa5fDM=GG3{im4i)OZwi zN00cbR1Dk&kHc%Vz4wn~J3SBY`15~v89Re7lLM0fMmzJrohe${X2tiYPhaG~*71jE zxViCphHNdlj8o=a=lKHacx)mDj*iH7d%||R6UXE7dyJQ3@kJt&gW^vFTwit|wNj81 zxpi_+AI)q+nYZ|nTrgZeb8kG);WU~UB}c@=GvSfTXeJy`Kh3!O=o(hsfPjBHbA$g( zt6Qm! za(~3}iS;9%@$MIkCpBuJ><@pXg5r+{xV_O03bcZl7%q8&9>mh?4SHTHezNVjo!?BQ zrVnoHQUuQ#8**ZZxXEX40QG0ffvHYLn4s$&(Cbz{y~SQXrtoaX^uyfTOzOajfBl9z z^7VNJ;#1x=wb|ga*)pkW`U0qD213$i{~w;tou2gOY{0-dHP20OTIhe1ZLf7p_TY15 z8SM@}n^Gxt1=j{Tu4|Oh;B;+$-~x|pA%{@{fEv!8YVdzFa@LIvJ+5zSA>*lr z{G&x@gNzTrgUT2NJi8R$oMN}@AW#N9gBM}vogqWD_nu*tDsQQ_JC#gaF=?_?N6(KT zh65AGMyJVslQuo$s?q-4ql1BXIy>|5-ff=XpcY*LU4mzhVM4+o?%@2VMKk8`oQe1l zd2Nvpgt>A=3q5~}A2ax%sHeB=z!e;;^_EIr*X|CNXPCmF`3>rpKWTTo#|GM$CUa3JZ2&XYi+yfFC%Uv2=F@L~FghkLYILbgK#H1b97dMc(rF2CkmXCg`8xI`ChAAt*+r!x50F?7UK`WPE?p0iy$NL3e-cVL!T}M;ymT;SpT6^W?4xn|M6< zx4Soq%XRlmfDy(mqe&}xdArh+(1T$(IN9sDdmnpF&o}db9O^VT zY}go!RC!a4hln>{Bx?#9`@uRg$SK0P;wj1#*g8-r9r&PrJ`wYVgZ_&WM#m-jsTqPx zef;<)gKq{r+vdd2!x>-V1|K6F+_^(zNC6b?+$kx+iBM65dsMj$$KZGE)tGqN-v(uWN%Cp87F)01MkXWfRwrzK*ASaAY0%ro7&|M#1uCsLc;t@&EZF_$rgP}Qg z_^|gGBBA|e%m2+7NByf`UHEo*#CKjpS`Y3QCH1b`v`KA*k7&wMFWsq2#qrmK-kijW z(<(&-3T~QBa=~Ldo56B-@80d6yl3?RD)90r92DuYNw)EHwZ8$m4Q93FyZHs#T$HFs z{hP+31UlXI4zHnP< za~(CNWzxk~CX@M_@Tj$DmKEo{@FK`ZRV_twb0^y%XS-;EZ$GNqiXwmW5jVjCkzB%B z1DbVMcYb-oZXFtyV}(S^K;wG#5+Y?pjlH<2W%Av)E1HnY=I<*Rx<%LmAng--Ue2m( z&@6X69N9B5qweVJROo#FytGhlng4Y%YI273svTL=pxWa`8Ge)1I;fPC$zs|``ddi&a^gbuQ-HlpvW3+z&PT+B(i47%B=Xh{} z4(FJ-QPLvprE{^Q+@2rSyGP0p{2N?^NQ)uux&L5onxDiz|AQI}<{7v36j}o*t;p-j zoaMNxR5Xz-^=o3++|J1gGZ%9&`qvOn>?>Rr-D{)=d3RPwB!*oss( zsRaot2?B1_`$vBP9VpuqR7|k4*8S6QXvAR$$trYQ?gRsp1{JyYv)C;*4bJ8?jnDZ} z)2K1R({jdNpT4L?vkNL9@Y(7g^geh?w*XJ}%5HC^9qtX*?XvLFoE^FCiqA0W|7T|A zhokP$IGmsU@Mz|T$Kqe3vGzWh-E1^AXST><&6{6MY3s9ljmDnMf`v62*|%grnO)Cb+uvJ_XCG9=ut{GVvpbE(j{Vum3U5Mt?C*9Xd2ZU%unmPa!iT9JO0*xVjmD}; zx7eh7&uo9b&73Ue?Pb$^&5~!G-Ld_|g3^pMTdv=;Y4*UR-^Yhg5`0jD%Z9Zr&{N%(;VnfJ8(IWen+HWaPvtzji z8kW_$MM(}5TlP^lYDY~m(kYf{sfyfT#*V2ZsN#RRblI}(N3FE{WyTZUKNB>CayE&E zS-x!=tizTaOF2v#Ro0+A9U5hLZKi_hcs2x3hHJ}GVj8{8v%r2}_f5|?ZNZjoFKuVH zB?W%*2>=6KM1cL4pBmDbHd0NOc1GFpGz2gi-&$Uv5t@CUjmUc%5tC^Tzy4z9EA)%z zt73n4ThDpI05?F$znnk~4BA(rH&E$g)0}lXV35)f8)rfXhs~1DzRtu_k9v2RsDhT# zhHGzXO8eYG;gEHDtucGhY^*o3WEbgM=z(Eln9b1D)8_11(^W$gARBF#Ms34%*om`N z$7Y3=+nlcHhlzcaRoHl8TKr?vNkv=gD1m;Mv_G4FZ=KnD8L952lwi1`We_&=gDdc% zSKxVKCy|rAySCJ`mT9P^i4#DB)Jg%>&HX^;t&u#3f=vg{ns#VEX5T-OgiRJ&wsA1_ zNCF^k_K__v$wi7BbMrCrM~X8A#>5H2rKXw%38sPZaB23FXd3u%oCNGK-xM`Cxw+W1 z(w-N8jni!OPht4yTcSLeq9|Bxc_&z&nzw_*mM4Uf_+Y64qO3!rU80C&e?_c7Ecvkn zhc9dq@BzHbB|?KB3nzgWP<>Xy04Gjv32p+6;`BFD0s6VFhilFbMZ>hOBdUP5;DX6D z@xttgcan-qPMaXPXi0$4g7&p-|7l%nS|QqhaWvz>4q8ssgz0U^9>|HfZj(euCNG}a zF1X~c?1Gcfl4>5lu;PdY2pMBf|#PVJM6f@-zAgUB=~iipw%1DYAW1+)sX(8HZ$pSQ8uCo%jkVxlb;I)iLDjB$YtEd z;L^@0JWEuRfZkOL|ZGWan-@{U`q z9s};*jx<@dc1bSTT3`!B1n<{>xb3OgGBb1f>pM}00opq6Vu=rynq`Y-#|T##($vgX zC?fmz+@=PaI5c(M^clc^=r$;Gay5_um8#`c6Ebr97@H9{K|WLNvD;+=>u?|Ku)rJ2 z4*0U^#yu0j%=505?>L|N`C3f6j#}9Z$|AOujc7|Q8OV$p)cNZ;<0v6`AS)5RLYZJ06&LteyNEqvu!aws^n3GlS z;)}vYA(fS&JZzDu(AqJN%4e;jrI;r^ZnCK{Ein;znk!V~P@4zNSVm|Sqmc2uXlT5@ z4-jP4+jGR}i~Bc9mGG8-Ow19zFwxIn1w*?r={E(NY4rQJ;na!}TsoLGhXbb&d{&yb zOZd=gG(Lc29NEdCu#DS+RS3;_EOKm0OvW zuhnZ%+RB0K1jAf0;mZnU9IFammIcFWH@9Av78#=ALs{DAEc@rCZs>A(Lor*})QeUw z4G386Cp8Emxy+V3-(mq61xVTwV9-$o9R;o6s0@xLS8xVb0^39Pa3GNktaYv(s2B6a zWJCq^*uqv&rOT%)!91s43K*urxjCyw0? z+6miVER<&1a*(z6Af;xWtXM(FDhzLnqBh(E0i#X6S622a+ezOsvA^iZAGeS!={hArA^50>`xGX{@W&Z0&-`&iQG-Ux0y%{ zcJXW_449PVG5Onb122`FS)ty=jU~xmkr^UW1rm-V55`)}|kWZC(Ysw43qVLE6UB z<;ya!DbQ&p-}*^(fYb<_`-&zso2k|BGP%~(?>Os!*)gwv7gJmPLTPx2t~^Xopbj+^ z<)S0R3&7Ih;@H!RBdKJYpz|zW7q@s_?B%bE=`&nr2|k&fa<=EOU)O0*5BAFP%F5|*p2#WS9Txr(he9(=hE3sg!ec>;zio;_ipz;pHYdU=Dz=MMAK*c` zd|RbFOVe|dreyRaXku2^4b5;cZS)G^cS=0 zKv?$H5bbQZEe43fwkXw=;D%LyiwYu8sF=B*)pEZ{LpFyT6k}d4lROjR9L!i(?JX`7 zQ91K6&sb06#Ob651-7%mU&lMM;lPszXsnMM*Fggz^h*4b-M*agm``}fffj~{OT(s- zi}zYalk#B&n4@i0lY1>=O8hZvaR#C75sN!%!?4skd>;I4gzDU|NoOs8;KO8t(*oHv zd*Du7;3WF6vWy2Oj_nBpVHQWFjD-ZGYI0&58r&YPhDD=jTJ5*&lGk;9TEJV8r7~@Z zwGluZoof(GLtadPsaA3qY5R?I)#m5V!iwQY{mLuAC@t9C_eEGdE>@0jKP7k=1vv$V zRA6oPf)I$NrxDGDLp0`pwbdl9)08I9W72`S<~^eqQXK9pLy8Mv+9w7 zohF9oj^z$bnVLQ%;sB}53dCoxfAVBcZ7$Q4_epT;2!C-Wj5yd4u zxCmhE#6m7s_6R%pX_F406ThN5R4Lcz6J0w)sbB0*SKBLuL3-l=?Qm8Np2I>U*jL+H zWAFGm+iARiZ>pus)@+E4n>3!aJXhnKZ_NsqvO{B)WBh$ZM&1JE6LQC?K^qnT=pDx{ z;elsF_h&Tz&(!L!WJku`U04d8JAIy>ypr&6LYucuyo$P}E;efj4BBXIdc7sP1EDu@@3vu0}t#rrYO`7lD5vDLV4MznfYB6EU z*~Bvf32KPk&iJ|Mw0COeP?oKXL5FcXt3ArCln_gjwHLZ^J(MbT9KH0NSc|CT(htcy zD9NsN9;?&-FZ#mSAC^{NtS!`)(q@Z<%@)~z1+=CX4aE40O-(zLbI)zLgB3@qLhZSy zhOgvwG7&5o7ti4=wAnhoY z@sw8>Z@@QT2f}+#(7)xEv#o`o`?lqjq_n=IewAG22H0=c6G>W7Ih7ez_I!rfQ{y(+kk;KVs{5L&M?i| z802Tu&I^#zZIBP<+bVwRTD3KNTg7i5K$m^c#P6%7DT^yn780H3smR}0?I%fY!Xl8} zRZL3H(8@wtAA6G}c$&kQw+Zjlm2>5PCCW8aBRLeX&?L1q0XjSIxLElnVmDt#oKb2c zJcFeNM>h-u^rR2RmTwDn47>>1o;Br}qjazqzpxqiXWQJatCl#n-xQ;^0kgzRmLA!# zFIv82*whOmcgnH&MOtM4s_^hl(8h3#ZzsY^t$;Ih9FI&ww>n1P#5N8|@3I1M{*2n_$TJ)HJM5&2QCg zesSe&4{Dp!+7&A&T~Q&EAC@tBW!iausX4Tplg;lztim6ynccO2nAU86aqWtD`>m?A zdy90=(9KVc^Sm@U)KgQZaFMFq{^Hsd_2w$qjy^r5qjxej?!!$$DFp|Ak^_uXJxFE` z5|~D=6N~jbQPu=S#$jm_jx%@Tv|oZX34Q{Cmx)px7I0jr@3f)=^x&?U}dyQ#!`sqG~jU$}#k9)b>DX zMSu`Nzu6^CyNH?85QQUuFC3ETHn8=&I9koYx8!j=qjc5EL8;d2Xw}!IueVC~3(_2A zr5!;Xhgb*sN1V)ht*qjtb4cnxnUj4QcyI1q~>+oe5~PX{7CU* z$NJI0M}k4ov!5@sV%qDrXe{3;KQ?ScZU|PkN@3KU2Bc&1?ig`z>pQX46Mr^8mI^s=c+Z@=ZAXdmpNDrX6I)aEH@gIa#zY~~X?AMhZ^=T;{A z*fZ(!saR_^z-Q%SQyPf+$yo1F@ea&`ySz6xKLtzhdv4&GZ-)~)t) zDBvYWf~=ls)-j&@lHiUr*TJ93x{-Op4f}k*>GY-y3`G!hK4!@hkF7P3y6s#n#UemU z<%&;G-f1cv)=%;Y=qz6QagtEP+-4CAuKud%ojQ8^zp>@pzsBqCf+pbsdn!3ed?K{Z z51X@hU=QYhmM{0xAKV^+W-N`os#?4qzT=lRYU#0dlMAbk6z7Kc$f8SK+(qT$$SZz2 z#qpw=Uz~)#_jcycArNDwGG9_GFg!OI)jaNKfVSFjQ6hP<*R}y;4zlsCjaBVpADq$K z#^TUE|1|M?MYoTw53cC9aP;(gz6!~< zM62C@B)Vt{{cCVC%^}nMmLLcd%`WF#D7ltV<7&zmR6;)Ok<4vt|49as*nYR*EvD?a zq4nMUruGkehMrthl;ap90PQQ>XYd|%gX7qB^dW8TDJv~0R&G^+yvyNMqA?&p1y2uKmlx-J( zms@humbRuqG)~9bT4Sge*+tMbw`qxgR=|0pAjK%>%_t`-#(5iKu&FYWk#VPrn=t-b z$W51pQjd*mL|GnFIfZzFJ85>22$@MEWZukSZcp#qHs4UX5g$PM$pOHQ>IZHZc4U`! zV?V9@>EVkHjGUGOSDt+CXPK^%GmE@Amm=5=kb?b!a4fdw?VdAW#-6($Zi{~Z%)>&@ zeidBVGhC^2&^L5x+)=XLvF7G8K@VUMHL$`uoI2sQw#jVgR_5hI>|~htx3Er?QSYlvi-yUB z6T-EUUDgJ2mbl6JE00P(TBX=O>fIojt$GgLLyvkMRBsS}I zHP83l`swEHQZl|O^=pXW8@{~Z%Wsh{>uu}*etbCWwMJhRJ4)jXES@Fo$R#OI zu~>fu8w870014hvgcwLrDBy7QD}#hFm>yh3&4X9t7_25&?MoP($p%nccby^24u}c| zhDX_?!NVJf4UYHVnM1c^Io7Jy@|`v8N$ED7pi@jehjqgn_wYiPaP1qO5{?AROP`@~s6s##-QU(+;{(i#=j_m0=->qT!K5$SVSW zjaoi4qZ625W_e^yG4sL-I9Q!FBiw7Rk1Mr&`a`-?bx2FhkM#SMzchMpWA^OG$kE$n zDa^hGj?<10_E_F1$sLFW2IBr^DxR);l<=*k0fVI!&qjHk@VvBiDF`!^%cISX8Bl*K zp^2xK2#h4BBAm-)u9o0J+;(8etqclyvUO&Lsj`dn_C$ZQOQjyoHHFugUdSlTVZt>~kKcO1rcABR?FfeP z8vIaic9q*P%w&Dz0f7cijH=rYWSDNnoVszuUy+IAmPaL$(=7c@yXYOx#Q0oOADqN?|+yy9d$3wGwy$b{V-=g zmJgfY+zH2_`2-(2_;)b4GJAKtwbDC0ZEC|~c!yK>@u8bx(w}b6yigK&$ewi#y_bK@ zWt*Sihs%d^U#hnav@nUXfV6I{c7azG*$1>*PX`~Q{#DeU($%i!2dMhE# zI9LgDi!0VC`53VCxN`}dk9U9O@Qruts?@nu#L3JphF3Xwq4)M88w*ZOEOh`b96nOa zk>s*zxq&yrYWB_R%NX6Ly4)}Pn;4whTp0&x3Q<;kT)|aQ9rs29SBhdjSi>W3!Cwo6Q)t z+h!#0G@EYjqHIex)E$^8@|t#L4qoaSF79B1_FDnDQvT(=U%?C(??u~T!77C@(e;Mvrt?1kpEpBV~YK{xbgaje8fmCvrJUFWTGP|QDrC8|N z7)2I~o#jx;TVa0|(e#w?v26+P1<@S|v_S;Y+bc@b2f}aj#D#~F@Orl+mNs4?<@t9b zly(RhKtg+mm(6Z>Q`GbM)FOI(u{IH)tcC+^sONpCwDvc?XaoNs@R9S zE@Vujttz#Rn+qtt=k6M@AG~u?lw80FDimxB#RM%HBx!#K@`iI|yPA`CSSoAkg$!H2 z<-+kIrQi)tWI6x`ZNed!LT&W~hulrBSI}Skj8)2RjCaLb!ibL>?nb39NdmmmBq}mI z<*W|S$V;T)y)b^?a?3WN>sHsI|s+gYltqfi* zDuZ$^28@5+p>~s=)<05DqDXCY&0Uw?Px=$p3cjgwell*n`}`U6gU7VpQk3F6m_M$Lx?$P*lH=RA*(4qxyn>XSLw= zps@79hiPKT_okUQ2pt-P&eaY=TMh!w;8{MDHpS+v9qDV~W&**}VlqTB#HXh+be9y( ztLJ}+GSx=J?(ckAPdq_Yxj?yENQ!S-Pa@;I)UIGt1apK@;hzH2Y$?gZD+;pT7D*ZX z+E?wc;%9?gvt;X%h18bC8XR5;>GlhhG<#}Wh!S*%_JKQen}^P=1GX(E);dFqMiQ+< zd7&m;zwUV*$@?j3#kXZ3hPM#g(|Nl9$c%q#cPLbS+o9S<{y-`Wd@ebqqoq0TMm2r~ zkbwJAR_0MmNyN@wT|a!t9y33+*~NZKDVY#Vcj*u`0~(HCNoI&dEN`^zGB7B5!{aTb zg4ujeV{F%Hw8F8y490ekun=KcB9ohTxns+oD5*iQEO9D~1Pubr9U0R|vQ0XatCK@E z70x$Fq4G?CWYP-ZWZ$4og4m41SlerjI9TvvQ{JAZOoh&N2|ZvKEL7;nO?n!dvd-<1 zLy?Qsvos=?0(lGM+SQj;NCQ283)Zx3Dl-_~sV56Ti7kZEioFw?I>_=V zOYytb<4_+nMebcOFn`lh6ZF1V+R!y}X#+sY(wld}IaeFIFHhz%?c5hrwX za%%zeSc--w4-F;Xu<9_;+cK|U_&}l6K2HT1d6DLYls0kl#&lpCF-^CBv^K*L(}@io zpWnPW6frr40?~=m{X{ssyEXGfn~3b;>^Kz}{&-YuBS3MhH}eDOB^Yg(`qmpho5gr7 zB-dptpW#5zc-niG4o8x3)DTSIIpYj4+x^G;SmO>wB| zVRWXE#KaV1;jdaTs6;VMB9DMEiuttTZjD8|^D^48U~6l>qh$)jr(yaZo0_B5Ix?&$ zdRP6ub85B>(I%-S2xRTYl^in-%#)xYq`9SezLW@r?CIWJzAb8h*SvtqZg$^s>m(j; zkqU3aQXSIj>xxkY>G{#5d}pFsj2*!-s-80UF0utyUX9?Y^C~`XRo8tg`}fakFzvH< z0{)e0Fz&2qK*8eIrxr^@XD+jb1kXPu&_ZnzU-8nc@3P@i#ZM&!AS~YJre4E2gKO%1 z9+RgdM31hihjER6nP-A7-79;`q0XX@VHtvVSmZ~R9)9Q)d-B3?P*34afO8slm_NdUxmDwv@xgeZ$3c2LuWuM@K{pCO16PtP#{gqUP@X zwaA3fI%(uTEs4y-*DUl&ZoDp+FiQg!e+@F=q)Tis$aT1p9-Hdzexk+cmRPU!?l5u8 zGk=nrde^&I`+j_Cfb_AAvb<(+aoc3jA<{qRygO0t2R3Bik zU^ux8?cIX*?m>Hd@Fe5NZS(yDq`3pn_n`lu;mHBC;xkMqXx5ML;Isun-_}g>k2XN{ zLCgFw>v`Aszi*iyXT!BPOmnZce~f%&BWf}|MHjMdIJ_yGRcZI8l{|Bxjdp>n_h@Rl zecoYCxN7}SFsRDim%hhN=nQ4F-P|e0a|owcI)}PWuP#0nAe^E0NU|usku%X*-IXH5 zNfR9y$(*5EJqKHA>DRGAw#bgOd$&WwrZK*6x{X4G_}&H{b`{+`rvr4We~i$dnzrnF zHqUw&s53*Dfk>?TyQ79XD!T*gq>rHMA6fk9^y>_^-Al299*e~R1|vgfqPtnx_UPPIM0-bR=fXhR5<*yxo&)fe__yi-;Q z?y~*Lbe4{P51TyLw8q+2_hhvBh7O^b1~<+jZtJ%#RIY4#e`;cz1Q+lW zOscGoQRZPhp%XiIfAlf;+z}=?g9H}e$}>pZ%N}rno_w~`M<$#DmW6yf9kO6ZQ`15RjcLZfBYi7T6OH#)Tuhpv=bd zm91PHF6@l8kI4z}aMq+~f00@TL4b$4wJLYsw|t)g4}sV>7#wpgKhY-Q&kDsAT{2Wr+If2f^$_cKk2J+?p@E^1{j0#)l$ znp-ql`^!$x%C(!9Lb)cb4iXWupOm^{1>0tOFm3NrT+SiWdjSO1_-3q85FK9#9vc#$ zg^v0CDtPZnCiCzee~q8fRblYO7Vnwb6F3^7_c!ZN9g{Cel*#bL5`ml|PznpuuHJ0e*yY*X~gHrdC@g*M$O5|$JjC4O-+R`@SCmVCXIZ&ohG zbvQbO6{7Q1VawN94ZlubYplWFJ%!B-f3F}ofA0As-OZUnYLnk@)owx$j)RC6(1ABk zjXu?mPgtwo_AP%6!he%ABJ6x+CJ>!P+^Y zpc7!2XqrF$>vP8SuCLcqYlY2O&($J!WU7dh#BrvB*d3fm?m}y!X>|Bz*u=e_R!ET+ ze`>zTdp+~JRagjn?zvYk$_@LvyA9GHuRT2?pE5ly#nPw4rauYge$q1i;de6sj+$SA z*V?RmH}CeVMWF4ua2xDLGge?N`WcNWOW&pugU&SUp`xmcMWN_=`PJxpAncNkvg3s; zy9UaB9XS4}dF?tevAVMZh%2H(e8#Uke>^6v`k8{1s9p_8wXixdso0M}G4XJ^ardr> zR5b)|WlNIhWdyoWSgzy23`wJ9d20$bA!VHoO(P(Q2D#s znXh6tPMHPr2m5=RAN9cc_)~<=Hnds9n?mTovq7eRS0dNI?Ng?(Tuw3g(*zWD#Qpgj zqHT@MNxj*v;+jmPzn*HnHOv%~e@U}%X7!lz?70ywV-bhyewaw}~Pe5ZxA9LU}vYakTpx4l@Gn0jc0^YPL8M zYt2z#zZN0ja_<*S30;}qnPQ-q9PKZYb4QbNhse1jH;R%#(G9N%tIvb(fArjaKSa2B z_znuH7A3_IEf1Nj6vSWu|EicI-&Uk5$T)PQ~vG@>?%uMQ+ID$Z@FeWM; zFNqb`3t8zGF*m|vD4u{}t(=Rs(gTY(^LE!iAd;NpU5MLy%hi+d&KKkqb7bi^*;iK1 z8G8~>y3D&%WgRhv$(0PoLtfy(40qOa=kVD6CML6v4u&2AVX)-Se_V==^29Tx>9fD) zSTO{Ks1VWVeUoLSxR?riyG06tDl*u{%!2oHI;=<;lQd9A>*)*oUrj302BaC4#XU9l zA)hFDKJS<%T+>J*!{iCid7e9Aj$W~xg2E!W6udC7LV2tp$BQj-d#RJ-BPGZ6DUesz z&vmRQ$6H>M7Q9`Pgnr3W^pYLXn_fNF9Oa6jxj*!NRMQ>*bOsSU80fEbfkAo;V!M zjJ>L1Nc`h^SSFsqOX-L*OX!{fCVXf7wOKFuL5;r($QOTVm6!H&$Kb$4nNj*;C$-rH40448x9_Cj4wENl=hT zGH8m%9%VE*3TW`Y5)CrauU?>R$H9p7K%~!#THDQ~X4ba$tALLD+t9J&T^sf zqRhwUe>62eu^pZENEE6JE}OyK7Dc^l6S(a-7u2WG^7+Jdh4Q!QdWo?7%aZaRH(cCB zc~v{9Zv3h={7Z0L8JcksJgxW`x~GWYS`?z{ukfhTFw1>otV0UYTvYFnI_5X;kO?0S zWyGGB8zewWQi6M^oit4DZQ;Vfjq<|r!ZS4!f6mKjvZGWA_8a$tpLx|eiVf0A5|KoU z`Ta83-YEB07u9Pg(1LeZ`3#fKZC{y%-PUhep-iT$QW!1-=huuA>;zgvtDe{N!KYN# zuK`xzotX$5_>o0mSSs#81BJW+NKbw!1XEmUM8gg;x-1p-A3?DV ze~fz{s>D2j`(O;`$M;PY&Pi?`$Q={du6e`UUy->dWLtTCPRO?Xv;x~ULbkP~7PDSJ?m(@?sy^6&yg4l-OPvB0QqbaK>f(m7^bFh2~=T4+(|Y(bd=?f9R(q zH5#&HsT@S3P}HK(h>p?3R$4h)3LttgOEhk57YEFISUH>6Wz|X45o#dZYHmo`5(#Pe6~Nsfo9~{NR~ff0Q(U$} zuDG`{P341zzPM0)C0`U@n9&JCmUnsz|2$=@XIB`iluf+f5}r*m0j*&zf6;ehZ1d(9 z-_#&Z4jsox(etEP&&5`upYm?O9!ZWK(XFQ=%k7vIG}M|k$T2~kn`KUSyo9 zZ>??ObG1CLHN;S`2%!&w$64k(#DjTU-& zy8YCrSjH{B-^bfeDPH|qe;g_%X25CdJ6?rUKS@NCVzK$NwTbAU#fwO6yRGOt=QJYm z&1cjf3t^+pz!rGMj!e%T@4}b&Nv=264trz8kp8%SS@L2j-n+A9RV^lqt70`N$w})< z%yj?odQNCm2g*IV_J-UyuGi3!yG}%W46#c}U-JrE>#sj{DiM(5f1MkKvE9~d%cvZ5A?v8 zO2s8xn29JQ#tp~(UX#>6v^TZ6n2LiyZ1?mscg*wlDN8#wuO&K1G@*7{T~D z@baLeCnC@?-=4{t?zvt{WfdbB;TdD2*5jVXu~Q~}?l-9ye?{sjhxf1mUM+;-tuo?^ z!Z{^-f7W0{z&SBqp`=U?18Er9P>h^@kA$wJuAn0w7ja@JG|Y`!GS@Uj-_QmA3`L)> z%#xyS2Swki15D!T29ov1P0hW+v65J6-$hF2-SDBSnxS)U|A;yjVD1Xak}z_9Eg{c~ zn7U)+Fad$Gep!HQ9p)r?uiFxep5P0tNKwr&KBfs}G$9Bo;AABnM z0DVg9Ol_#%kn7BG!8%hc$K&fvjv&{4m5WUeVqu0`gcqLd%2{hZ6}BbI!Jnic?Ij!VrUqNTKjrUr(!OWJOhk##N__jwd#+zCS z3eBe_`jZDu?+)MMBDZiEi%&Z9^F^KcmQA(NS$6O}PcwfaO|Ih|Z<=km24Zjg!-K`E zU&*}cf5n%)+|z$Tw4}xG+p4;3yU<;;j$9G5d49h9p%B2iO@*4SV7>XUGcNIaD66*tz zoaedV6`EWshk_8}>K`%jr%YulDt&AC-^Mg$fA*#kr(uiOAlxooqIrkW{86^)IBHSj z&e<;BUPs!&q}-(JjP}{DQ{t)S^`vvhvO4C4S|=!qq&ju+q9s;!X2dOZX( zf4U+$PHwDCD+jc}dzeb!6IztFX&*|KT9Xa#f!z!O zIiZNI&C09s9vmMOLoHNZ;3Fdf2?aEVNcCjN=0+(%@*!2#h(OLNy=cU(%QNk zEIImazZtzD&~^j&YplbO4o*BNFqu}r63d>*)2XcC+Q6B!l(S^Scp~OR)-j<1@@1Rh zpbyG1N?s%?89qH+1yXcFj!zd#_}Fi#l6`JgbeFaIT#99-B`802_8JBA& z11Z9-wU{m&NSCxo@Cl0+j%Irp6NhQTcPc0m@;h_Ab|`$8nxaSTi11_8nNq^ALs<;( z?biiZS2nGzi3*H6pWL*f9`fMIX=T&;EYLBrD8ljFx$3BvlWg2LBIX9RKDj~(*2vj~ z36r1*7gS|aCUnDrcbqAs>c;xI&VFAxtok;E>DS>X9G3S5X6I8a%Y|d5P%$nqG(~sJ zgQuRs{%OF!^*sShxp0cT;o^G8MmB=WT(Qle_v#4OpE2eQQi>IZKAk?~(rL#d(~hQ6 z&k;$KTc1WdOro6#g|<8jeTY$LgO_Sx10H{_rS4jlxfLWGyG}Vtw-n#$c@mlPIf=Yb zvO^RgNY%Go63@}E&u!;UCY8t{!lT!;P`tX(SEx63JUH)^OC7Rmnnr+o@fIdVF~?Pe zr!P+sC0S7|&(`Q%dVvTv#7v~H2bW2nD%RFYV+l>e5Ie31>ogA9-V)zF30rt*Ldkze z@S9f+D*kD#-)ktNaTm`v50Dd}8WBfBoNlSYO}#ib9Yweag9x}l80$1y!l`hmrUGu= zIw}J(-6FXqVt|mVnazov&93zu)W5Lx!&vLJpDMN91>BBb2zbXu`!Ge_QPTk-UN|8Z zCPdjxGRN49<1x1F3kQd|20g4dXS9Dc0lG5X4TDEI9e=6%MuYRY`YLM1r?}C$s;#Tl zqETH7iC7}gM#22jF>dVPG+0B^#sPLiJ@0nbU0`~FQGl1 zTUEz9QzuH;AVxax$M%j=KTyPRE9**2D1tZ_ypM#fBKdN@%KH#M>WPY8w5ESqD2$IX zzv4%d^V^B>B_gde=`T_#akUQ$O9d3RHf4vF7h))3m0<28PtTT&l)-48{qhwASxjt* zPB&A!;-&+=sG($|!g15U4T2$1h0ldcO+YEi%1vUI8}y3Ib(~>o0B@-UyyDilGtk=- zIT1KWzS5?rs~awa)lOvY@NR!C+_zm!&;@Suj&j7&eH%q*5cPGgS=QOAJG^Py3*40X zRq%*gQ1&qmZy?2q=7@ZQ+0hJ`{6UuW0Z)j13HWy~8lqjm)ZtEVSQ%OIq*l^mm`dTs zdH9348BP7cK(Wc+tBp#d(Y#CqUQ+`Z&RXd*wwR)geF^Rgl}y?R5E4qMepI;MIDR{26f;7xT;c;$+T(i06%CyPrh(?Kh! zeP2jA1F#~o6B1YG2qDKFMfB!gftN}Aq##!x=E*&?;s$_apoq=DRxJk>-g!r8cyFZF zs0)QYc`4k{frobJPA-2>{Pw_akQ4SOAyr5(-g>(3H`d9f(Cv zinR-31jee{@T%imPqrOgw4`+V@tkp}-#FFf!$=S&)tWAGN?Qi~x^7z>2Q1V+SN_SE zh~tYua9SlV46b}|PtjoTG=H_8SRdQY*|>J)+Bq+5%I5da0w8}mBgMV zG3?0lELOc2ICzbc5Yz^w7T?VBraP9|EiJ>9k{xs`vwORV0H}B`omV}TaJf?RkdN9d zU7#(W>&kIVh;3oV2r1GbudQ$f%{9lFTcmM}IMU{<#v(=&lSSCJSUhQMA->*mDo44r z*wsN#;2>v$WBGlPvaD`|RU#6%v_OtrwzjXk}XgFT~?JVtUw4{c6+j-v5*#*QZ3L zJeL8oEi!KsuG2|J;_`x$r00o{uLVgvjG2K833wpcSa5$!Wf-{XQsJK;Xgnurns8-@y9b}`kL9xKf^z&^=j|i!v ze3L^+hds~))YQZMnh^y|y8{qUcn1#{($Ny2pvyj@YP%UWi4UC$4Me+H_AnpGY5V)J z-No3nd*FY-XL1O01I)gbUz%OX-TOlqSc{YZvNj=vA?o<-y)4C#iA-`Q1+k>I7l){} zv-_w!&p=%iPi;uBLSGxyu9ox1SSJ;jgNhffF{a?NM4MT>Q+#es$`G1u%-PEf*t8_2 zsH2`?#=Ds8SEQpEJWz(?P8m;6i5?_QUm;QMKed6lDfR5VMCmKb=)t~r z880p=UL3D%qQSDys$y$9Xo?QQYWPmZ@N#_Acij74j=dwwWvejHX_n_mczOU{Db8Y9 zOnZOoEEZ=u%X;=P(WkDKUEouolr-7X!WR>7ORebK#u%#4v$>dviOZ8O4H6spvo39^ ztUwni>w%E7UaDZn4Ou+}$Al+Pw zjd`$QB8*jlbjvH(0O{@|Msp@nmrxOtBCZmoBQK+;4oQz+Hm}G5gy~Kj(MfVVkWGIE zd0LMUPQQU?ImaxJy4;^8fJ-z8f}u*TG7C9A6=%6)XQaY!?w|x-wO1Ly4dXKz%SvqU znh?NU1aJs8C?A?}Y{sA=ip|;qHal4j$`^yLdNALtfz0v?85fuJR~vjHR7G*rR%SVYnYI3z?bl$xCjBJ3P69WwsK1qfo@C^@Evg-Nl7i*A^$3h#MsPF*d<$S z*WJJjY#1*au_*lf)SeKmE<7`--ZufQ?l(1Dec!B$S814^X{+6eHncwXe<~LFSxgiK zNPebo4LwPoUUhBC7S_7z+Ek8}E3A#J>NoiP2EXUxcgXCugQ?Sz-dcZObZ>t&MxPYA zHvxHj8r+{NaDTrIo?6kw#*JWHY=2;tS5>h6p;Ol$b&S5b0=7T7Dr_&*lgB(R>#U3t zCE5h*4rU$87(_8=nTYQUtm`XCvCn}9_e0Bk-bpBKvS*Mifz(Pfdft|!o>!OI9v(ES z;_H*A9&=o&zWCY)6C`zsT_*1mYRbQDD5ZMNL0XvQ!@9Xx zL}wWlXED?Klc%Ka7ianW(s&o@0CGT$zfI1(Qwf}=Ms8N#gA?62Tb)5NA*?@tdL=r4=!XfZ zf$y~>@>mX((8jfWGnRBd&_bJY4LdoddTQu+(vEUiyuq#oA9DC;}c%VfSZ{ZQ%ad50D_kA@SyX+REgXfLLy(&1ie;qpN_ibSX7g+B>%M4RJ zB{k$Ug)cb2gS^s(rM(=(EPMrj$Af!My*05eK@_H2R*nZ@*|o^AIGNts#T+%dK}1~7 z!FNW2G~4VsT#^d0*K>wzv=kS^wFkndfP9CG-4H%JH&b3CJj!CUl$bhRhVcaW)=~%$ z3K$jgUZ{jp7mHBp*$d&ArBLcgh*Cdh(4<%9B~jo?Va}q~)7M{yz7+R=R&0Q}u%iog zfb55-HXv76%-q<%6u(Z0W9P5Nm%=bummM1lU@ZHZtAwE|#SQ^el`!vF`p@;7D;XE=YZE&uCWxsrydZYB~@BscY`!0ySk=5u_f` zz%7phQ_WpJ4;7HKXtGIvpsccYtUH^t>_BQx*^J7|ok8boL)0y12LSq2I!)>Uq*@$ucM6g{e+^KpDv0P;*E)oD9_%&tuc@|Ld#;o;52#yyY|W1YvhTsTy~ZLFdhj!Y508DRC^!(tcZSgdB2JJ4SZ-$un*%)T$; z(ukTkP?=W7Z#gkGkUNc5Hj3W{b@1B*i^a{Em9u750Jr!wsNo=KUw{el>m9)=U=P;}CTq9ZFh>17x>6V5yZY0Y)oH@d|$LS<(^i67$QO0yDZLfmi6a>=Rioo zYHjp|%7`#$qlbbbYtUIMh6v|EL};8RH{+0S8wYUJo|TO!vSGu12i5K9GD&#G*-4QZ^S|4eg*6D)>yuSJyx7of{a_mh%qPOMF0YG5{?Q&a&Aee zxOk%;%tKQDNT`^GP|@W`C0=y7((e^Cva9(0Tn%1M5WWh2e$Dzvm5;#mQvt>8Uk8e_ z7iUVG1?}IdkKyPDh|}QZ6wNlra>O!!_Z2jF_99TZn${zR4m_jqTUc}*VvME^-$E;_ zZS`V>^B-f_V~v*Tz=Llk(bZ3j6nay%$0~;rh2A2kKh$)e^kl~{G{@RujrHL&$q`Sy z>Tj?p2AcSrVrVK|T%C##PBIm>(`&ZnRlab?wPwDhJa6X&FhsE||kCguqU&9}R zW64I2?P;arMPN^M$4>mj`Ie_@2IacmhA6Ph;ppLYz|n)?EQnsTY8|Pt7rQ!*;`l`~ z0{aU3#N)(2GhB}tY9(G&aCEGHqKN_%9!J(-vISvC6_`9JR_xtL__&A5QWnxsIQKa+ zm&95$X1ZffeYoUyaxlV`@n_CqGFAwlMe*lccr3(|X;JiPI#rseB1An8b%zi9oeU*j zuIn*4ZQbFg=7f-M(7s~Grxws6mqC@V=xB;c7(%{S!W+nU1NpwGqbc=&spFBOco@b6 zu`$;1`s@9ymG^ICm#>DF?A9an0l2Y)h*jzuY!$IaN)wm#&v%Omr)|hA=?jCMOlA=2UxshK8HT$3>RtoBMCNh%kum+SFSW9Tq&XVv(hDjaBA-H$sA5b=5YSGNSG z#$P6vo2S94AX~yHrv%(_^Zc~e|0tZ<2<_Co||PT`rm~JQIDeiG605u!7c2HAb?v+wm7)#CRK?KGQ7u%$(6`f!&rT#| zcvd``vf~hc`3(xYL16(3D{hBZv}eAa#6Djb2<;_SN9uMT|NRlG z4cj7dWu~#;%wUjfkCHUccz2t!ZXgU~rtM>gLjphgH;< zql)T(%WWKn;W*Gn#d6$odKb~8Itb?6ow&~_wa%%Y`fi!E=|B=RKW64wbg&F~Q4%w= z4l(AZed0a>LI$+Av$H{-W7-rxC5e9 z+J`(xHy{p@m(sdHhAA_d0i(z%%{6Izk(5h+L77{*l`}g)LI|`KNja2wvap%MpmOV2 z8m7DmYBwR=J~ZP!0x2R2O~LmiOuE?e>o?QuD3&zC1VEVbrYdJu>V7v)QZJ<$`Pe93 z2Hnpi=^z;S?RYaUgUVSUq7ohkB|d27@{%|3r_D&29nhuCB#|2VS>tP}IJj#vv|n(jsmsIpoKOl$~ybOSnf9w}j8z zo>NUN+kNx(mr1v(Wm93pyBHU~ouzc)x+kuJDf_XND_OikKj%oRP^@p{3YKvfiu@88 zD<|}Nvl(A`PHL1`S@>11+FKv)?Z_;pt zeqFwztn^qe6m6O&HC0a6FpLDYLxhwP^`L(vY+|;d!OhMZ&4Cs;73ht4IR#3zxk8|p z4cTo}A=?qRxW%={tgOjt=P}V=mV1;MCYIa*6ogY9S{0Hkueiwt&`9i8c$*>4ECg*4 zk^p{VxoJk`^Nm>v$t+20b(S=fG`M7_y z8jArc&MKOp$(S2sy?LpiB(~j^JjcjMa2vFe_-IVM<%!Z;mN9s(Dp{(QDtE7S?iv9L zT(&m-xogjkh5T|c_T2p}PtEY$^?4j7&#E|Uzmq$6&#z|grnurOs)#k5%qa=LA%}N@ z^6sR#6Es@pGrvFn{N#f%J)>K&J^OzOBBY>+IU=P06+{SRnzjfT<%p2@Je!sXDKLqo zC6OpB285TSI4QPH7^L~Y%Q7s^Vy`*itqi;@acg-NoDfVeS`v8qHV_508TOHb63#av zWTnty+nKYdp#q4OYFqLfI*?lA+^CT1;cpwol;Ks;pQ(n5~f##xj7g!of=w zTF1R+@QsInGglCQZcglxq`6rZT8CJNQw#z3u)aUJjdJb*-r_9x#Su(L+LA2BKk9*Z z-N%V@KI%>HvNjuUI);T$Lgyo)2lha&joscwxmpF}E{D-L4AefY9)o{vsZM-1y!NPS z*;YkA4!(UmA-r9<8kcfbeJeN+UbDfNQY8#yF6Sf+?_rB2?3hj94ZOX9w`0Itrp`Yk ztlJ%MM3qVIMWCWqo11X`ACsKaTWCTX2P&F^?^T0}7X%gU;iz(`czIpN54%$L0nCF$ zs)qtyHS^Bz+_+ObYzBXY*E%n^_!aKf_>}k;V3-B-W6i)B#ETayoLyLWEqe5)cz)1e z&QGDX@(Qz5RJ0ny=b2Wtnp)6B0MJ!sz?X9sH>2*4(Fklyf%Ep2-|u$6ITcTGo(H81vO}dqPaxe`Zo`1E&2& zW7_Syn3jh2nHcFzHa*LwJgV{T@TDRYza{xt-}mF74Ts59mXnhG zMVlQt+_+vAXE|Qui%Z;4FUV`}HmYw)at^rTE?~{vz8%|=EQbCV4_ETHBqAzwRac8} zPhyW%#<_%ra?mh(712GnoZC@BiSytnHqK7vBAL{q;;L273XLoksGL>8(4!(J;YESU znG<%5PuhPCjJ<)eB{23M;(uTbj50~Dttm_J{pF2qE!&Gw~;Zqfux_?y>m@Q#g zclV=0bwfD$A%i%e{necXnhRR=?fZjb;A|0+)Xnw}$&s+%^b(2UN6=Nma?0A#5v( zCQ<{dT}4omN!6!|SA)-h{%&$|x~RwNMkHYvWG<(~5TC^o-r%zve0HN|tcc!BcmWqq z4lY2FNRC!c?QbXZ+-ZWV)pWc^&2BDg+l6U56MGBDgRT-Ek}M=d`WfuMmmOY(#2a zA$-)T4d~8V3>)3ho;yGXB&rPP21SZE+q4*<>xY2OG4=M5ij|Vr)Fu_%>ZUO`WX%qI7>nE}kmkFu-%H!BYvtn8C4xHz9*>@Z1fa ztBB`}-{4t^Hg2TQoQ>z2r;R%q7t5Jq52|6gxo`7!3Co8Pa6xNei0WZEcP4qxd3WX% zjn^f76K8$mXig1h2N}BtISLNfheg*T$Hf#ia#C03XcFFArm|Qamd;WVO4!a-4d8!D z&J3BLejmM1!pm;@m?R%-T!%JS1mONe=_8ms{##fcD}^J0=F>4c@!KdpCHmf}3C> z9N(=*j^e)3LOW2`iP^|K(X?iRKJI^YVy4)=N_cOnC0eoilqu_uh(FR<8fUh=rua!C+b4QG9LWCwp_LmaMc z6F7*%wQvG2tpvpjK(Cc@%^F}WzmRdET4zG2Hg`2p&0Z(~Uq7s&-??`$Eg9oS~q_+UaUwHXz!@7mRg4bmcE9g-7|43F)LjrB#dRzb9IP2 ztf>}prf#;q^Ndd?D6{Rnj3t`~+@3>p1ceSuZUd9`xlvdw37)xLV79f(a%FrtD#C{k z+Jb!*Kpce!C@ctwBSd?EVxxve?N7 zCvp7bV2&kaPJT%+favSW{x|J_00r|jLairMpdh3>kcwMt*n z`Qr=l+m5F;`m}Ll_LzbnR)c|y4hDXFnK45Z7&w0&Fz~ZH^(PL_GQ4T$YNkA^?maYF zB!|wdJ3-+@h0u)Iy>fr>cW1>vQCN>03hgba4arzVGuWF<^B01>)0e@y3ES#X1s}cR z_1Y%h_Z`NEj_M_DeFxc-JD!P`0$_bwfiuyS(cWUAiT8!@6;Wt!E<}6xvLUK3Ma14lK~dKJz-tyXV#P6ol$-_VKJCvgv;U?oE18?DCZxcU8hs zk!@F{3?nr{kf1Q(FcyeBNN9k-4G7GGOgA9#A9ifkTm|!^GTeSlTnK4emFAV<_BiER zBmKlijW(|37B4ogg6a-Q>yUtNmXGT8%m{el2&$nvx>!}i7%26C&1xpaeC1Hp4Az{W zS!#xuP$-?)I%|LYxw-`w%7{{oH9#w&eX3H)@$yguQyUmwGf4wj8STAcw%&MjwR2)w z;mf*p6j3Nq#%EghN`Dch?)o^WUo#ZLBz$b z$h==@+V^_Xfe$w%EF3}r$Te{!)_tQZjqvtXj0)Lti{xhf zw#!{0$!-+ny1?o%OI@q%y|ftWiI*e*njqr5Xqn6(ZKJY&e3fA#y`PFv;(-vM6t;2p zOg2VXJwt!`9$oonZc%H}*M?|Y&$O*dzAfU&4f(BRe9G^*pGwq}1wR-(SMO(#hb*S!rBSSTzF5oN)LakcKb5g<0$oOqP^y0LRip@yoEbRj? zPHRaPym?Nk1BQ;~d(*o)!t~~I)XOL|2LYwKaVI0z3v4v<&L1*IR`f$!2u>E#t3XrW zy2q5zW%Xoe8y#x_uW$(6HCxx1>CCLF{~LnNb4Gdd+YYM#B!gHt*cl^GdfT*{XVGe+7TH z_4jRqa^%`tlOW1g=Nx z_1Av@kTZLsPbD$M&J~WcvDKq#^N%1^a6fOt(WxphZvWei@NbRW5@@l4LMzY44ETTP zAYD#P+vVtp$LT8oI@N4mfybqdf_Hs&4l%5$4s8~u7;S8f&|&t{4V|SV_N#xL#Tw3) z#58+vV=F5-cXpP-oGU84>$8fzI-f+70%+G5!|bLm;OM>SJ>6A@I`XA1}I^dkF9*(Q+udoa1ph zRh^+-VgpT{Nmut;P}gTpx>Ra{vUw5y3Ti^tZV>R`BhL$AF93TVGq6~rxvAnt5B zAWq35Rm}X@ATC7^*ZY@`hXW#i8`GsP5jQSE5<@{RXvLg5N^=i(tntL)uQMjDyJz8I z6^9qIp^V3USCj%Vv}G9TU`Ds@=s{ zMf18m#Ty8YJzxYAxj0V4gjopF6=ykW7DR*CX-w^MP=liOVvz1U3E) z5AP)I_;{x(LL7t$@k8ou917rS0Y)q;W?Yo`?AtuM+m#0_xJT!I0Y=P87`hBv{d<@) zygxpg^5z2h8+>?!4=dtBa~0v4x^DoA)INmDUS^iv2T3&TRwQg`0Xlpv6?~^~0d+OQ zt@9x?cNX5Oa@eDPRfjzSymQtPzU?BE!@XvO%gud2*rQotZgqVoN8!gLUeAv}zp5Yz zyxguC5q|F!n&9AnM{4f&(0aYa;v*R*Z1jMz5Kl4-LG^`)yKf;6;e_jPv9aj)&Y!ypu&NcE&y)GU*laSLCDz zhx+KNTu7dW-bGu`JW@1#s|s1Zf`i_jrcg6? zsNnI`d~<5Q5f)vC7!%$fs_|P=`}R*e>2#Lmsk`TWY!$>|nWC!B9ObC&p0|;!sbj1# z)ngc!K`6g}*-y=>Tq#;q%(w_|XF`NGx*D5rmlSHorGOJI1rTqK)Ok8(=)t!`7s>0C zVX&6GlyS}9c98VO+3%YGgvH3~`@o0ZPcK5ZM-Gp&#a*g3-o<>T82Ed=Mhj(Z!bg*L z0>8l=ukmuQ`DqNWX@cQBtO7Pi*8w&S{?TVP;A8TC7&6X{aH%bjR-`5?YQJId8R&7Q z7(`}YS>eN)Y7ysh+Q)xCxAr!d0@OS zy_fJGB8Q_dTP6Igp!0cKj&ok=<^XeLZSLi@`YT-f2z*#K8&8Qx$EE#(+O~w{)}s1< zQn06+;5bw#h-z+>$A!T!U$8?1jaG4%v*)aKcjH+S{`}(xds?_5UZgv@TJD17O52p2 zKx!;x&Z66txiI>raT(bYGF#}!?Ul|w^R>V$cDqqiiymHxGkd&}e}KKle&@mJ^!Gc< z$+zhgTRDzqPQuYm9L*aLdjn#>4v1}knfS~yNjEq#rB54wv_V*6Y2hr=xDeLbo2x+B z!HQ6VeW>CRJAWOz>r=302O8xH2K+oniAATZ&MCT1G{&!?t5(hC6<`{U5@FF_H8kbD z&|AW`dZ~hL`hI=C2^&>hW4;RB8J|7BiN3>ppqZ=;`En+?beWGqzG0|c?(wOAHV@00 zG3Xi|-KYxY7DK03b;MpP*Xw|}tB8r7e(N#Ol@a)|!0A;b46z)Sc;uEun{=+=`Wl(E zV-~d=Ja>cVZtz?=o;wKeTo{{D>m*MFo(p4Bj;)eB9RtsOvXS@7@!Z_Cop?W%=N-0i zA==>c{?$Ppi%D~ON2v?VYJP8jtV)O?U*kTTsnAAYyphu6jbA>|B8=ZTA<#3v*~c-U zw^#w_-3v2k`AUOP)^tKR60QzzkOx-)^vvDC_oF~B;zm#!zY>B`SA}{@B|*rES(p*( z9CA7m>eia_53t9Xa+r%#RIlF}}gB4b{KhJp zr|uN(x<9r!nxv!1MR5Rs$_cYLGS3%hdC)Q394b>_^eWv3P-1LEgiEr{?@}C6Kq|R1&8h zxFWb5Dg*9A0p;2w7LNUNQMfsK-y5Qv#6fUrCU04UT zngoku?);MT%@O1oxM#rmDxq#;V(|nWfxKM7=V3ZeE z1LgPtc~6>P7Ygp5Q3=CflzYT0enJn##S(U0yw4j5cLU)HAl!F+db<`XOZ?*@k^5wZ z8kHq{JS1|TOwN|P9F<{|m0HI`9@sE>6>PEB;ag_{fS)OUi_DG#6*ZM^U8LKSXqGl};Gx8hNtWA8x`N}nG=7!iJKqhoxI_Y@;$%MHz zDAfaH@uVGp4rhM@%Wh!Vjr&{?X#26_TTCNodJmQM;)5`lM$YsGt7BEr_F)`*X$LeH z<)H24T7vmJ6E`Y~Q?Qdq^D#k-pxvWqF1|=kUA3-BS^f$J)1zm`{W4gZ$0d(Gl&sw8 z!kX$4XNoXyj8m@1FCk>U%5qr}z$Z)h$O>MIT?(@SeN3 znh*49A9@{yK(FYuY7MAowEy>_#T<_9GB;e!L3^gBAc%Lfk7o^$O&9PvuYjs>@v5Be znuNKgc;R4f(olyNPkN)pyMc>0hS>4YqjA5Xb7GLhI^-zyc&RS=J0Qduq&0i;ac__| z#U53Ev%?;`<;@%g{?M!d9-Z&*m4e5dI{*(zr%)X&LQYfm(yF+{V$8yMnf?|o7_3Q- zf=i^wDmowPOlpHYV^20^f^}@ygJaFDLo=(;d*tPcvxtE zHAJ==$EE;Xg!^cqFfnfF$;Wng)Z*Y7LfQ!GqLWxe!vGc<=G%^>4Ap+ols8(xZvyGvK)de&+8wM2muN_09H=}spFVE^ zSHULn#FL!2Fy)?A19m4AWhLv-!z#dkZgd^M&UmVPRG7<3$H|SvrnkliCKvW<9ApRtYCRMkX0nHEstD5GGjd0~sWKl;9xWl)^O+z9{CGZD`fAH6WO z1rF zZdMb8%RB&=mvXM@Be<;w-dPhQ^Z;Beq0!Xc;I}-qbA#V*thV`Z&fF_@s;suwGeW_+ zePy*Zp|7^%X^nhlaa;5BYyu8ORnXjWOCZbRDpuRY>#*7aVLS!e>NwyH&c(t4zA9-x zPSFhA0(jEB`s@0V*pfURR2!^+1Uxt{QVZ@gpX8=!aA8oWYgDWwtDnQ*w0Z{GhbzSg zHr8sKk1c{};PoFvX~R$p_Ylx^1(dcJBD`;0!!|ZToB!Gf%^K^&l>32>Ew9Y|=!MNe z%8ZWv8;q8RXl^jtKkR(0x$VbumNPxmu&b|NmkkjaP3wG&$AMj@*t*Vta%Oq?R0VeJ zUsb5$a@aMFuN>j7Q8DhS}=Nl!IqJTH6Sw_~pv?g4QPWl)ECZwngKvY?u9lODFt< z9#qS*oAv{w7E9PM;Qa=FsNDdyiIi#o5M!u;arcxl^iDG{hR&yEJVOzJh96R_RY`hG~#1R>8voLw}9rTpwJ=pN&C(5<}A5f|YRp1<2B{WLeW> zaBIe4GA03R(vI5-QQzI}g~_hgsPlrxw*>)KUqR!=D(yt@$PO97$fu|(=Uv&VdCgq~ z)CND{TZ;LHiBP&&{kmBHJ3doobuy)T-e=yIm2lQjj`sE(d4@N=vNc31+q1|HrtuucQ53>=%YYc+6xlR~a#KVRRp_gieQ-QTG8?te=R zYhh69TNX;!Ipnn(xcgj4jJAL6mkU!i0;qd418WR9$KejTJdjq$7d$mI^cE^V%_?R4ubTManWlPw ze__wUkdw}~I@HmoOLWI>LkqfRzWq|EHB1bzA&1i@2IxoVAXo`xhC6F_G8Q)j13BRK&M3f; zL-7bu*J#AxqfH7jGoPr4xs@u7?y}Zg3A({onSul|r#muYL5EHvoy?+tJw_*Y45=9y z@Ia^@XHcoiM5ZHS2o);NEIz{4ri091dj?q6jEU20WT(lb`)hd|oh? z+;N0)aQG7TyK5rOgzNrdQ()6b3s0IpbLFWJ-1$t~ftN*E&((@unNFiNJZjhm4w9l4 zN)gEGHArl!CAP<_VHJ0Oa$^CGy>3`xV&1G#B$)Z88Gts5oNc)g$Z|oH7&|l89DI`) z58m+kRxfNx2X0kg&#E)6Z`nh+z>Ic{*l`t`pD*zYtm9BTsVtPSw2#6!z&JE(r8=%8 zW0wRX5kz#t!G=LA+I>c))X8~v;WL8GZf%h+OeQtb!$jMGUgr;gH-loKg7u679N4H0 z(`O8?O9*$dswd)pGrw8HijOVCinPccVAh02fWdVsEr3N_H0NH}AV}K~vI7>cwmZzO zRX3M#E_qv|fl=av*w7rQF|zf!xFRWyoF;;zmOZR}Q9zS5C(m&D6w_qg%~M?3zY0y@ z8#MkZ2?LZTwgI_+!{W5(uM7*Y^=ktl6>10|1MgVYNx?z^^kDHwZDyY2)H^Xqq?plT z<}!0W$KgvhEKkpNMeR}7MN@#!fy62u5U9TbBCg9S;krej?7(PN8>9tg4sg=btq5Ed zeE2#ZHneS`VU^Z7Lf7USsHshy0^Z5Pt1TC`$PFhm8@yM4G4{3u+e;yuT%l- zB0I(Gh-6=|*>`$Qt;z^F4r} z@}pX0olQ0wXXwT7On@yN2ye^yfAPK_!~qbSRxe7|*B8~;hwr47 z#4CHl1n%O0^<_`UJKOkQ)w=26k+qA65pZ*Gmz) zv@zk*-EVpztq~P@MtHptP-&Z103tL9g|tu(ZaBn2O?s6BAKNi^h~nKk^bLe;*X_oI zkY!xXAi52K=rpLd!U)8sbqON)umoS*f+K)@LV6K@w!vsvjwjC!XT;zyr0OnXidwAlQo=r22yzz$;Cv7 z`mWZ07_@0cYQt`lWxnFMK81v_zh7I??Z;_q8%e7g=HU40s=}Pb}cXfj(ohkkl10PpLZ#OEtJH%R^C(2}P>#@40| z0Lv(Ukkn}j`z@QF?MwSj+hpdM6s*xK!na(z#R|yss6*3&`$F6yI1@H)+#|uRB%DO# zD4rK)+IHzNPB85!sri4gCEC726m$~)1mhDkiqn7%SPxe{=n;qi?2-Khx^dQOG|pOo z0x)o3Ewc?r$Y?0N6~oZf;0p{cMRZmyj++|Vil(nb+gztGxRhhsLx`{@C!c$>fWRmc z7E5n|h6yplGiKjJXlang)KpuvQ>`JU0wYMP=5e9iPH-2zOnZ2^9H$LU0|MS&gB27mB{k9d1&~wx zzSyu6x(HjY~Z z#XC{a$}Erz?y7Ga-IrHlBGy7;C(RCxGPi|8;(5<_TgY7?7l_oB#i>crj^dn)V5Wn` zgPTY@29IAfIzHsRxg;Se4()7z6O~GpBcd~u8Cz~)09xWe1KC+;qxSs!IOo{B8zT?5 zo-`&cE50}(tWmAmFE zw`h4YO~#hdLO>eM^w3t5*tnHcChRG6{~U` zAaG|gUSNGCVsEF2RBhGe5FliGGYs)B##k%tZF3J+8p)>?}(b~AUv<*8Ed<%p-h z*2tpu%1^D&bxGwcr-B? z-`W8%nHww?Gz{KP#Ac0zjyim~MXcyD9X44~ncu%~<>u#eLYje3>vaf0`g_F?HFY?~Uw)F<7Z+_>x~GF708Z(tl*UjfH|QdOrMBqUW-BFBwO zxLJZ$vvvxXKLgF7-(A!ezJ>V^5#l{sL)4)Hd#%kg`tEO zvAkk0QV51(hlgT|2B2V2oa9%N?KORC*i9z={#7)RU_BLh(G5vQibIEguCFFJ9}!C%>3QPBp#6<> z;~uElGHCiBA_irMQ*asM^>RnAm&b{@@B`*IVto%Ic^adXZ=hlYgQqo;nw+(zL@dK` z&_l=$m42{)*dimX6Y}#y!D11Ij~7^m5dcmmK%$95qF&crgDwIkl|lk1(&Fdf+puYO z83ZA@RWy-*7WE!K^?8Bb_T>WVDJFRr3VkPr2oRl`8gzjeFTKGcjWEjDPV&H>ZMBg6 ztUdBXouc^w*$|ij8rYTQmU(#;YQyMsSr@Ht+Oqo79TJ8%-Wc5KG)fx< z2Es~c`@wb%)~=CmYa~^jnyHy}(ZJowP2<(*X2YeF$!>T1)-N&g*4HPIAuy?uWn1Fr z#Y$P&!r}5Q`1vxP%<}Qip8lClsiN23Pp>Sulw3B8`eK=2G4a<5D1xmfOFJ zcbiIozf7a0vqgf808mwuJ6wKMVMq2?qE$Iabs}sFLK-U_*8oI4GLzR5#!+5NJR`PQ ztmB<_SpQt;e>Ce~qGXMcT5(f95q=tNdx;ZTAy^nh8{t@XgpFXS#s-L%nO^cAMbrIW9(8%yomv+wbjZpQwo0AR_ zb39M9x$QQzc?~~bu?>gD3ZD=Gm0X*bll(rm-2;c-+oFEe^TEngdoGIwW!fMc~gU2fR)la2z(^<7 zP$`DG=SpFr(ol(Y(;nTUa_=jJHEws$;Jw1>bTutBi-gK3)LF5CG^ z6o`gAp4w2$EnYRYqZP{|Jf6;zgf%AF=S3ebSV|2?Y`|HnQ)@;vf3nuB!jCogxo1=k z$M|&(?ES0euC`T|c#l$LzYkjGUG^XorW@vQ_E!~p1fRCNp8e=Rp*=`(-+B~(m=Kp| zO*lxCeZ7;=yDa-o!vt#SK(XuaWWyD(XTBc6;}4MJ2tN0$_3-k2GwSAL1*O8?yMn_y z`hH#T^I~M)!HeXiV;5~Sh$+lMlcGeHV$s7T)P@4sDT3Xo2!DsXY-IVj|@7JPaR}DOE*Ew{o~D_?a|t>~YPU*^gGtr&6G=Un@Tdb0f39@-otHRWdZ^PR6ZcZX^4*Fo1GcPvS(cnw3mm`di**8A4k=~(W)+@th4ZP9OQxgpHe~OR^%k3Fph3!xv*znQH|X$+2f2lRYopvO zr{`$a3|^aY>CuS6Yd1LkQ1&uzQtIRdG{)zmU5W&!@BoW*)ieK~KnTgb?$0XU{I>6G znll;B6TdAu8Lp`e@*1pNhEnA$HgmGqTnIf$9?IAGTJrT?R@6O~ugh`y8fbST^7SNT z%-*mMVPIbCw_@k~DhEdmQN-(qQ}UILm?8T+%C8_I)ijbQ?Mj z{Dwi?GD32P9aCc)u^fx`oN%oP;FYgxsFcWQ310}#RH8)hz;U@yB4xQLuSmCEI%^Ga zDY`o6nU~aT)$Kj)yoKd$`8sIZ2M!H2NE9~a1b>HXVP%$=F787^EiX{hsyHf`)0jb{nneb9) z+&J)sOg34$;`(Y%cxc*~HvS?PdatNqB0MOC+jUU6n5@!k(z4i~Rhi}F6#^S@4kX~W zVoiv@nRPSwGH)}xdLez-p$F(_XZ*4}&i1SZY+)vYtrk5V?(A^nK3*ZIm z;iKGna#Eddw=jxWJ0u75ht@t&>)5e&f7PW4K$4`0gCWpZ2Qej>V8B#-U9$!WE` z8^i2-wazeq4HOF3iRl}75an9Ybo*CtdB!%go}TLEkrPqW5G^uSLmoD22d)h1IpR+c zBAz$ixF8z^x0>67mRM#4wZ-lp#I8H5MuDubp8?m1ZGqzUr3h!Htr7(=&-*2%(?t=J zyKUP6<+3_7RX`U$sFoLcps2a_~_q2ZtmrwT)V-Gtkr%ZJ1f!Y$VV3$T0sI?CY! zyq%7xS7zr5rK;|)+9BeT2jnZ*^hFVMVwiVOIHo(w1AOH+A#dwW!$3l9zvZue;aS4{ zq`=Uj1CPvH70M(&du?8_udtpNCi@~sdZ_X6Z*+N0W-#YrsWz&}rpB~a)IVll-e-II_&R+aN(1^t``s(*thRM^ejrcz{f)*-^7_du-B zYln{KK$ckyvil8wsL+#k=odesp32yN#<=lIU(@8WvQ>DR;rJ7ZjZ_T z+zsfg@*KNFmngbk-6-RJq>(>wmc8zhbe5BTf6E!G_^|x1TCw#?ocn{;lI2QSw&eB} zQ)4$Ey$tp$ z#iXPSYqU3XmbN|)F3;AUBZ2w(3Vi`t-{IaYH>Z+PYO8P`kIMUFKHjO;f)VY ze{*S!yK0Zd&j@K@EhZdm3R{q8raLaCy4wq@c-t#cy287LJ^N^n!y>&m;d3u%IBq^} zKEAaN%e@o{r6u(miunQw6F%6H)pRUCe*38i+2nt%u8Sq5gV!69ovR3c*Kh)^jt&&-GISLR4Xh_P=Alrf6Wn)f3tAD zX)a+{?HJ5^mKe<}2%`lX{V9JYyWr6*!k}L(CcPx1+g0}yyv%`HN0R}g&#}Wx*KAmD zXU5u!4Z2&!{@${7S!W&GhR)M81tbf7>uk5SBEmWii$5c_x~}s;(`w)u-lg)R}jFb1)Y0 zIu6JD)Z65d+KoGgZVff94ZOZ9S|T}^I)3a(H|4B^&uUf~et1TGzesJej7fhClEI48 zrCJVGwBOgSvFWpvv_KfIK~D`pFrPc{nNcwXNBD$3d*ZVzKC`)>K-s%)f7P9Y$e9rx+?El5Db@F_RfLt3p$NjuGC?$CU!p z55=3A5KSKV4}3uC?f77KYv5N97Tb%Z@{5iZRR)MF6&3v6i4+ngV6@?WX=A7Xf)*FI zsLDpW68+-iQ>oWwtT7RzPOeD_DC)PjN+%17+m0vCWSiaVpv{-Ridv-1(V3U*dV~g=P@Tcc;-*F0V zX+%^n2LpI$>_ z8vdad@xldqH<x*a9BK$Al>F5o_!&m}lQ17mF2Oz*5Sh|4sOnVb^~U+W5S0)IP& zYJd(I9$cmqk!i11rbGlLh<8clf!3whlm|P+CQF#wn1|;FDK%t&$Vz3NE&6$AtnEqd zJ$r*NJw4BR3e%-4fGck*^`-L9x%qH9C>;9Zre&kt!T-4yn;B!e$z?;6)a99E9PT_G zt11wGm4_2E{W?zjR>o=G>Nw4-SAP?#>vn66@0uH^I+?I}FUH9P%OYRUv}`%hR_V8{g4NBXEHgS*f9e)u*JD}04&VTL-8h-= zp_~;ir)62lm2(*>XWcxo#Yp=(URUY|MU{iF;WSCwhr?YtOK$4ourkGmZ+{YI>SE=N zw1;IEPZ>vxADirs03FMtFuBshIGD6Qwj6(q!SewKdnvC8yXqq|0ezXd5_dI;I>$2Gs0V`5Ir)uYz2W_SyZxeVCEkK5sPa(@;v; z8;&-g>(yl7a;?Y3)cU%9*ngKC$hv3I73b14l4C;$yQ>j6vaH$GuSZ*-Cu4VPMWcFa z^{1w6A59F~e7}(@J4}l-r+40#P3=3ZxLsefz2o=r;p7s~?n6s*jA9#i$sWV9wsuWz zlWKiaA3L^jWXtfKsROSDB6m3RQC!#;!%@ zt(P#@x^ms5Ugx%`R^?lAQBjp2%F21G*w%rzy}FfK{V(;J;?_5GBjj^t z&Rue@C0Zm;%e7(eo7bpumx8tfBY!uIj@~XY0^-0smZ>(UXR;;b$NW){$Xn}T6%4+)wG>J(toL@Esi1X zrXqB8c>HmMZmqgMqv7~1<0c6+S=8{ZszaL}GJ}ePH|&$ZKGX1xKS&R~B6_FR%y(1j z-KG>YYB^JQ<4Wq@lY1tGEYzr~C9)sPL#Fr!?T7i00+5rHzHPXPYb*+_)xf{Ui9qsF zHO{^2${^{(pjX`K)ZNJ9!+#$dH;`PCVyw1?(`C`&3Rcy1DM?+iC$d->BD3wnJyb7v z%I!tTziqd(uG~3!EewCSjIa^HW!B!ywaF?eL^}o!cTmPGOUi2euwI9r88YLA!p`;y4nWH|sT5xA~QSxXmC%4vZzpjg9B0 zDJ&PV@!MA;M%|`O-Y|g|ov!jOkv6n$x)V0CzE%exxiVJljU4LGZ%F_>d)p zG2)<`c&qeI%PW`BxC0Y^ZtA_pyqH!r?WHk(jobhnO>ie=zWyR+-nu`Tkb|YBmPtek zI-qhZT25%WISEQs$4-^1nZrS70ktERKcz%%H$+C-JL(1~eL}c%3ltt&l)V(Y1Tiyt zxSM|Z%F_*^WUqM;*-&HD6mJ+eyA^H$FPP259TK_Fy2KZhHyjPzb)BwBS!|oFajqiW&J!VS*T$zEi8cF zW;D=RV!k?ii~0T$P5B(fkQBf`f>q8Y_*yAg_MeK;lwC;WMow|G!YAzSV!an)YZ#sE zm5UvZYHAiSDN^=-7XVX!Xu`?qk1$6Mo*9Vqsbv=HBYU$U+;k2&3OM~Fzt1^R%Z7kpz3fQ#9Dk!Rp9Xy1KM?m9nuW7{f@;siQ=!%oQ zZfF}hhbZ`A68XIYUorGcf(~!UZy(L3q>aq|Nx4S@Z-(bemQrh6;weZI$-G`{iXF-t zIfkoa>`R4z_t{IuU&94E2Du>vkACM`v znYy%Vk(qWVWOi;7Xy`$HuG-RM%mZ1TVVS*HD^^5*2ptE}_wm#Yufwt^mdmQ7xz+@k zKtmEVx~mTSaHe#EOkI70b)4LUPbSGEc26qX0V4`8Ry3;{)q^SX+EBlF<);%+qR{_JVDd~heVsr3Po3;4-DG8}(LP6|JCvLR}dB1_tHdz7ib3iC^>k*>UgIZp+ zTYF4PaH)vTOF7RIuL&mSGg~{o`9-85S-;ez17G{{?k`)@T0`Bj5HHKn8MpIn$q#wN zBx{Jdt!TI)J3!}f*w_&k$BDwyf`fS^`TY@p=~{^k!>fvzmkn|o*q4}_lt6JFVDsg# zn4#x_!^VfbX8F!=`a&jW#gyttKOn5wBHHYcqmr{5sJ+VJDYbn?n#&f-z~DL$3r6og zIB`Gf1}RB7rjjk9OQvmoHC$44ygMRpj;cH8E#V&=loLFk9pPQsY?3!7>nk}xB^ece zB*SK}c}pQBUzR!5uIY8qVU=-l0=6UP0-WIXMyfEj&IlCyYyRyeKyw+i)9APIrHT}! zYd>4bL{J9#_Xs4Tt_K#!q;BI#staGGg2p*2C~7+^m;d^(OZf{M092k*FQJ$ z!_}nkU%z5;b62BXR{g`;LBv_XwZdd3r?7s2h1}%IDJ)#4mVr6A zpX3`^Do5=VYT>KPrmy@^Wo&zY-p-<=gt$3^#~02sxE)EhSbkt4xEEOb?4Pr?yd&8q9??e-0|zXG*?zh0lGxBvRv)jUP%>1qz5^~uXxRNd!TH=yaT?!)9e;<2wc zugvAfrwRw6*F{+QCC0kJI09ky^VLai9GRxf~Z3e%>sS@JyRe%S0ix;z)Y5&m6aod!}oZgI0q$bPVb zO<9xSN3K>2*dl3vGTt}GG;`+179VE;Ysdvmc#KCDFzmsqPrt9b0ypZdz@C;A7)v!M zPsWp~d!o#cFgJ62-7`^!Z<;+$<{UMrY%#nI7K&srwGwzX=e9kkg!8GDz!Ne?#Q1t- zu2U^tQrs~HCwu2g-+bdzdGmXdX|@9kfl#iz4Nl6p!4r3X0Y|Q|3(M4nwR*eh3P%$r z?m&+WZh6hW44PkYOP-W($tP}pmpmf#ntu^6(030@DymnLa`o!O9nhhTW6hrrn*W`1 z|98^-YumRX2+rxRb!H`<+aiWV9-J?8q=^Dis?a zHv=bkc2uQ*UW87P+vFc6M+FmW}-nj@}9Nz<76=d-Hv{T!xX~1tuxAF|0xbr1`+PWIu$Hc3q z4NF_R1vq@_v&Hv@Bw3TDHzT|xG(AaAZ{C(lfSvD6u|&#pA7H~nd9^)m0ci@ICf}C^ zBpFuisR_oy8$Qoa)oHlsoWbc5bB#igI$7p_Q+vd@)@1eZiFYp_kx}JCWg_hfH^0+? z{D%zB#&@b~QJRZ=sqEnR4djer(p)4~Rl;xBSA+LUB)_4ri6|D@N}m2Oa!q?d8cAPZ zAFHYMW9&A?xnka!(XO-!%lo!?Pre^wk=R1?owi|hm+l+f4NF>DRW2Z!T7$Qo0?luK znLQuFh%Iwajt+6qv)7i10L}(+$F^KlyiH!mMD`9v3a?B^-V7=Cmtis6xseBAhpa;eC*?*MpQu zzQ1Y*)$Z5=31I6xFV|9iuTqp&BKs|Wwqo%{-if$Dps^k!Gm*J%b%|bX&S*%6k!Z~L zH254VK8XeZO(jF-JD60v(^X-@utElsSaU9Ly-qfb#WZ$T+EENP(Q3iFt?Cv z_M$K1R{%1g6`DsGYeuYLwa89kl!38h$i`BWls}DGiqj)B%1R(EneYgSk;!R)3umh7 z8^oY{2Myxo`z2hiN;kF}N?Xy+VM1NfW%r8V0JMS@jU+E?x?Ip9pU1Y8J0S*}?72<| zXEY{(YvG_}M-F3ZxdB~p`ZuoKRF}|g@ z64?-~XTW}9W5WKNOhHw0bv^yM!+FJ>-2T47P`s1Ic z!Rha9ucO9k*HgMtKL^1u)nL#3jubF1nm%Y+9J@`usq&$!8RuYF_vK1i-N4y7b&Hz= z{t3&7lRHLiA1T;}HmZnx#Z!ma(y%}0Q|PITG@UmMhk=Fcdz*%N1LZbHwx3JEX#FFW z!tZ9@;V7;8!t%Q@P5M56?;la>F2HWv2Gt$G`Lhlj5;S_1d(D26n6XPnm!9wu?7&ry z>vDJfQfMzbMhnb(k09@Mob9XjlIz)udF>Q15#EYhkn7E#3-+Vbkf54)ZcjpDl;4>@@tC z5$j`0HD9jSI)ET-mxH84Tb};H|Jdp41})o+HIgN?uM_v64TT|VQGXeKAfld@dd0<2|IVADgN0>M zaWKBvd1-D;hj z(4v0suL$;rif{{#O*C-KE8!?HV2>%)@=L&}?Mhe-O8AtO@QF)U3`%gGm|bCt@_xF~ zGmzqyewy`v@RWNvpXT(C3q-K$iaZR8yq6VukBeMR?L_Ay9bkEDbNV7_gG_50q)Gc) zS94CNE%zo;*q#ev_COjOC+3n?wZfqh5ed9k*ntiJ zMs4#G{n1@PxwwT81mi3!i{ypnD!dN_RtLHn3Rd-h#1_nL0fPuc)I;>j6)Tg%l9hM7 z_W$CKwqn2qY-iW8lbqNr6|?ogkbfQhS&iR6o-EmRivl7tx#b`r><=lgr%j)VN%E_jvnJryB+9^7H zr*fTlTsuSG;_0b#{o8*?9yCBUy$zZJ zioxcqab|u-c`pHK*5U)mC^^Mz7~FCoyPv*)6!{d^ITTsUw`Ycw8@kOuD;CbM_!e;= zVJ%b1V$;5%#onZTCybpg;Rr=FNj@B8quRi`Z<+sz>qsci8SQBzFDZv_j7m>h@uEBr zw+-~&azz2h!Z*@}B=LeImTTZ?CQ%S>GmNy&ZwJMRr7}h>QHJnc$}b~qM}OL7IA?)> z#VhPf2{|XsF0jftTv1kg=n1qh`@YRf={VW9*u7$$>}8zj-FdZvaeKcF$~(z$Ii6&g zkaQFFeZt0nf0TDnc=Z{98@b~l6l=;ICE&@rCp2UPJ_%9}aqDyi1>x&-zbUhKXj8zo zc}!w7Pq-y800AW9ue4CgOUV_Gea@BlKMwSssPx`nH#C<<^FB=b~y^Emswo%%*z3zyP(v8siK-)jqjIb1>Ks(rkz<6T9E zRSgvwQ*a`rW?T-Fs+phBrFktgI(6TmAS0v49YXOAN52!;oaZ=gcM!VwC@33$b0ZsB zF?D*_!T|52?iU7CRzs=%^hL{pRI~;3oU)#F7z0ee4(EJf5nMceUa$&yd(5! z-=U2@4?gWyv2uQmnmT3{v8{NIFoQaEfpz;vA#(N2W-V(Xev+f^r?S@A{9m8&{C*n}7PiL|Stj;$@Rc?7) zZ2F{Kb4EdUorpY+9Y^lyh5}gROABeCJZ5L5%w1|>%9zlPEkRUq3xq(|qa(v~y&{7+ zz_D<`$`!TP%pZEGP)M_G{Rku!2_j>uYraH5bYJ8I5;(e^qf0V+H<{7^I%;F zTVh3xTv6gkD`gxSb)WMp?$IWOm`t66h1Salj*u5AJl^z00j8Cza)T~EHgz5FK2mPO zp5j3|o;GEV_w9~d@qD{sMdV&M;Xp1YVoIQ_aCqW8!RbZp%D5>J%bm=NvOFENWL`F9 z1;R%GsFM{zd68e4N8tp2Q$qKWhwBLn*!It2ad6Xmp(z#__wb}CP#0^GB*&x+i8x}! zA|8f@yVs$mz_GzeYV)xMl~rI7KOm>1GI!fB!JL@3nw}SSia7n%3ppz~q=)Cdfb!N~ zBIZt7(TtSRX*hSZ%;`EuGw7Y0M_v#M&v8DKKFJl8i;Qo%)1xYX4W&FS#$vT}DCb&Y zD8(8g9-u$LHXKvo@k2$f8%E2)H^W$Q7^S*6b&EAT)H4L6F0LQ&hAHAinmh55-(CZt zdSZf0jb(%5-;{T}dO^ocDc-{P z8GoUl(iMT0EotF@RmcpDNn+vj_N=T$PVpK+XCdeccWh-jSw_bPd5=7Au{>ib4#cYU zbCL$EjuQV$GMHJV4Vk`p=+J_~1`sD6mRiCh7Oqs_1x0HB()Dp6Bi}0Jw#DatLRT_$aFJoLhs2_7W*WdHRhFakR zT5a8EHA!&S8DP7@Cg|yXj(R2NJazN1Nu++}Q<|&cEvegBF0^nU8PoHE;m<}c&8<`O z%?jDuGP?_t50YWoWhY&xulPt&dDKRGpSp;9(6kRFGG-$3rU#%LeDD?bi*R%r^&@sn zk+C;?0gb1B2jv~Da+wjH2|NJKZASV4V>1yJxDgnvh=y2Mj97eH4dLQ>k`bVhbwMjp zJHZ7&m+s(D#{^X4tcE8 zK>X<~XKT`M>b^Cw%{(5gh4K{VFbfPyz+>v3YtH+BjEe8sZ)^CJ84wPTYzb8rbkfmn zu0>Y#4c|dQHUZ)A#pfPZ+ z;mY=~O0SojqG_x`V#Tf7?At6rw3HG)Xli$b(Wdcx$ceNFIq}!hTq3G(Nzq;i{cL&^nixJtTyoT6h03Uvxhi>&trIUzuEX; z9htToW)5VJ?let*@44?;irEK$O~a$di3$AnDKWa3ER!uSd;TLN%|5f%nF6=ra|a%6 zLj%@8%4bPGLp_wH)0ll|n+HYP3T*STnm3>o>#q9u@b*-6=RQ2oO3u=sL9UO`tgM_a zECZXa#(VH-Q+{wIY{A=2C?8^+E&Te{$*YvbqR^NcSAoMON4)fH&+F)a(0|N^`?=JX zf%bgCgmGVs)r;1c889Asd4>^Y$i^@md^l3HND`)j${H&^s4RN(&h|d?rcZiVf2Oet zvJLYSn}l)tO_N^P7UAJA)1u{|MRfAOs~5FiL9H+>{==AWO9$quYP&j(ykF2_TsHEF z?orDvnyU*q2pR7g;a56;Y9A7p17!^5_#lLckvU7&ZPk2Tf#Pj^47<)+TMHA94!>sv z)-S00E7WETDS!%jZU6<$TfM|KW^>hO>_o4`S5SU4o!RROr;2fAy5B6y%)VxqX{16{ zv3Ae|o1^WKy*qPJUT{T>aN1$Z=QMhCg2q)mw5og(t*c8fIxQl96J##&37$!{#>XU9 z?PW`M_Cn)gQYW*!6vRvPO8JSG*uh?GrU%R&VGN6wt6XOHPENHf<9G{x+sAO zgp1)ZxAOp}WVWQ3yB=JlmREhD=eKIqVxf274dH$w8IjMRvqPYq+&0g066Y3mGle4- z_PtzqFSYy(#z(_{6O}Mtep}g;iV}ozvldrW(D_OrY>FAG-->jkC_~npY@s)?<0@uY zZbcTxq72#U$g4_~3>hOU#wzc0s%!98PJb;33s_9+H}PJU;a;^2Z3tMFyMploWOi9G zMnWF&MF+Y@3qc+k-$ajZPO@PuvJMtXu3C)N1~c7w6sXOAZAB#WSI*+XPR5~1*2{;L z87YGbHVjEsGA z?{3WY*=rtp(^VAthb>+0&-u0TKFs*vdbN7Y#+&7Tf^HPkPV&n@9v1d=Iq0cU4l(A(`EmRh_Vs=tRuY-yb6G+Oze$56eb$8UD?{&#j?%s<)jRGLUJXlPWz{A>6yfuntU!<8?hbuhT|P2{;+&sKRhm>Gvx?+^AQz8pqduxYRJ%X&55aP9?b&u?rzR zS#&q9%AE{3t2dk$*-B&Ck?@Jv7w>17ULpTqg-dtG1PSQsNUg<%lbb(Dc*~%2IS5IA zVP_^UX0iCO9?e4vTLH_W#vu>}NxEudYqDSMhw(pHcnbzn)8A)g>uY1sTsK8AhNF21 zK8`&$Q<$HhZ7AZWaG)iz#%$hyvAvnj2RLRkTXKC^7Q-N~p}A%mLz3Z&%+tkQQ>!DC z%(9C=pF(1sv%v~&FH0n0;wR+OAF;B3I}nc5nQd$UK1Np_$${c)<|v;%U!8!R*7G-nV06C_>}1n#OFitneD&n^H_Y!az2PpS=W8>XMor(+j7^tiNJY$s>69oZE7b3^fmEfo|1c! zozHu8V26umItol5qh9`I1YYNV=&ikya>b%$(p;uRfkFor=J9F*#M_mBd{nFuX$s|Z zZr^g-A#N=J(6LtDjK3#imvEb>h_w%eK2fMHco6n<#9qgfg`mxCQtm*YWt-s0u2OqUcOY^b zfi`K^h=u1$-F^k!FxBDC?H201UAInNmCd+m;*lyCqU!YQzbv1g91*}{sihU=LlMm! zU0`r+@OeDC7VyI;9QM_3Q`ionv6!HUR`N!B8C|rQZqe>UjewkgC&$>&38HLJA^~HI zp=bw}!%?TAkh^$lDTkq8)V;)^FY*+I5akPjlKrOeiI4J;xO^36bUMup(7JFyONKEz zc$2bDzDU#knMbuqmty-=;`u0BMP&e_WW*L->SA0NrB~(U$a1Ey>ByPdF;*Is?zes8 zWBw$=ajGx1M{DJOQd`-iymcbnIL73LD#1%orUb#lc|pe&&Z%GLUzPVDAN@$R-1tPT z+SHfj`o8cKOTFE`5UrJWWd5{?4dFy%>~BY7uR|<6$y!h%Qq)pW+M8GjN`1<$K~}23 zGw6F0@QijVNfytW2DL%TM z=N2wJqE+Gez!iSdzJ|i_arJpyB4w4gcZpUa_By&vh|Bx0zdV&LDN#MVcBQGdLhotor4vz;rX+27#np)oTScT@P8d$ zif)vma3Hi-hj3sjR9UQmV)Eg5wHd5Vj*KO)l!dwKmZ~cB`K6o!VpbL@=6GAK1}d5b zi4xnKDB&8-ETHJu0$=^N>a;?XY!jnbaqv+?sf12{!h_Em%0icLLysg68Wf@tut*a9FzU+8_O)gw{uFA8hV-_}+u{^Yqj-c%;w z^UjRgIzP0s!EA+f;shiG%z9y+xm~JQ{JvXKt*nzl*AqBDykIju|k9b|chVRoeI!a?kpB+a`>6QCM`l7GK6tyze{gbFjdjRcG{6CSBT(pBbgE zW5;m0`F8W|d;MlYaF~fNPVrHakvm#{8*ZhAt%#@6ic@BDa-7!!8B_A}6$e}b@GNSg zcbcU{+#(BKEuYdwhEOy?@|b9LrAZTl%v{pXy+?I_xbz<&kuI zJllTCH1e=_mp(o<+5nUph z!E;HTPYaIG=UFOx!cx(j(5JoRz)n+nw=d}^Qk8tC>Ncogw@9aNDx7jHAzSodRF4d? zVh2-Ii{+h3AKBgOYXc;5PBw@=Jy$|^_U0XY$k}k0xK538Mk1<`VHJ_D!C^8pQ6gRJ z36nB6RmC-|YNGOvCCvAKEL%YK>Z&eQX2EMOgn}1-K^V3J>t2iiQ5|oNZLfGRquf%J zQb=ApUAj{srlPYrUkMef&J%KT#h$d+Cg!3X3+aXvx|q)+Y1`jrDN1F>FXk}MHj{VY1Vam#Dk`Pf3QBvSH*Pq*4=@- zJfWGdkIy;1&SmC{%iLyoQAHeui(ElUgmNg}J$-yt&a7z3xY!uaP*}0}1-n$+gmt{= zt2))Tuc>^)Jvriwp^hf-I8;MT^)yHg4SF(7n^3jVJ06s<<>4PJvoS|dB~%nQ(k-d`RuA9v0|f~ zV@^@{gfU1`(a&nRUhOgAmgB|GXf_PRoe%!T|{Vzx`QPnc@}eyr|%z9R<*GJ72H|3F`Mw(=HeLXy@Y`cHWqv_W4f1 zemECGRy=SxY+pm+n7q29LfN>9OR7};h(uidOD_uR&+T5t;!oDfyH~WYo3wj#oone{ z(YCb&UFWNRw5o0ttGfSHaCs|H9zHV-lm1`PU>m)tLss4Wx9=`eZi!g zt?>?3S1kOzf{RaerMdR&DcovBz0RkC1eZ2zc`Zeux_2k^1g*g(Yz=sAisuU|?i3I+ zC3)57^G~(%&s{{qB;Ol9zAs|cX8!bSWz#cqA^>fF=&lXqb{lU)ZWpT--znd1i--Bz z+oCx!={|e(vapf4G^kko@>(q##Kc6|?zpFK$C#k8?)35%(_*}+C_XK!Zi6dg*8cjK zh+V3@mD#PT(z|MaoR{SSBLo0YA(kX|WfO~z!De}D#zK-+>wj5p8t4@pxqN%Ax6YPm z9ioLq=bRBNwxEr{(-o}+&MsL*q*9(P6F;7PZ-V9yQ2ZdDR+p7Max@r&mK6_}&A%#d z+*k}>v3@uGivs6HwfM0*D@G;yms;Ng9e*)kOo+2<*He?p#DFp20b@+n{_lI1)Ka&k zR;#tvfSv31fycudt=3no)!%)$FZP+e50v09UY4g6tEEhL=s#fI!5{ig`2OHoCM=n= zSp=6ch?Hdy<39&JCkFL4%JiO{oD%%Xi{1iJM)zGXP6@TNdkZ0}Z_1M@Na?SLlz%Q= z5=FDxG6Z_o$Hokeh8Y3>=WM!-S70y61g2d4%gaGoT}2c&GR;%!keufBD{A0oavEoS z2H%3~7)a}VSInJ}CtfjV$F5j_kp4jle{NAPr(EZ<|M*@;Bt zJfZm1n~H-~&Y3b=U9kttR3z({F~H#Eq5u1jdI;*C+GB~akN+fpw>yV_{~iDRbR+xs zd;|3^uFB?sdGz(i`M>E~n183hoa7);K@zAeL`~o9BvJf_;8)*%Z^Ls*Hi4^Al6b(j zfUi@UAmD7|uIxlPL`LPC-!qZzLhSk3t`pa=IZ#IPJt{T7ww*?{3waPWeDaw@4@``r zxaie`NwPx-vFG#cG%3Tx*GF#YIF5VhW`#{b?MViOCwIHHc@i@(WPd`qWYSbj`D79c zT&Y~Z7*|Y;wnLW2U`~iF;Mz+@-egk`T#jo|x3YQV_E(O*k^m%08DMRR$BS>ivYX}; zft@4M_RUv!YMawURb=bwD*5IQ+qGEpw1*=}wUNz-ayLqor_A^aE>|Nh+&1sT2rmZ1 zD+h@uBC56E>7o;RHGfF*UJL-W@hCL`3XR)T6y~e_Xj4e6zDiO^n2)#q<3pHx;Mk-d z*fYH5`k;H}0U$R%-dxH&U{G}rdL{-TS2vkLUXt_3~GR?{maB~wdK zu~f-5%q|lVmV&u>H{5nE^I~N{ct0->vZ5~$Y-N?IYLqwo9eaW3SJF2;@JjZV z<=)wy>fYxF(09APv?uefO~Sk4*^}6u`ysJ<`JeHyAo&`mtP`9vd%Kw*k&=z**gzA$ z7*<5zHU@3$)3yq?BW>51c;y4hQ1hN-eX$vBejuNp2iV@`wRul6z)Udd%RvPE6x-U| zF6Sh}%Uk^M*MB56%!yC`a*dEaC;4?gl2<+>)QKO*412vMZL!r!+_O!0^T~Xko6pZS z0ScH1llGJw867>{7dkS!wzMzWhJV7L{pONA(Y|sCo<5LI&sa2O z&h|5#M2YSp9l@`ePtE>(Z19t|Py3WA_NUnf* z8j2Go@_&E^BsY1W8F%p375Q0a70HU0p{R{>`(*i&DC!ArJm@Vc%oOEoxq6WcG)1uH zp_x8$^a%XOJ+y3Ae1rz`0*wnmBu4juckwA#vUx=iFt9Zs6N2z&hE4rk%*TY7tIeXp zFwA!ti+R&LfKEX^1bLYn#4-Ihi~*X$;u}cN6n|z9{{dv!6VuKu55a5z1LK9^!GAC{ zXaa!XWl*R=C(s0D3M~O<^q-xfix{(*G4*+I49=Uenm^460jS|fp%0ij42rG^tQKq) z%m|vB2B7&sJraxwIxr)F1%qve2B7|fzhFCPkOT|^`ZSvfkDxInAGEX!60fPZF_|R* zP=7Eqm=jFKEEE7UZzKdM%2c%Sagx{1M-Ze&=Dg2qIX8ZE@vOWld%S1dJK3X>xZJXSSNkNcDX*KdWZEOjVM+hRE-u?O zU{AV^EMt>Yauht0+-NTp0BJy$zX>MD0?LXVKw^)Sz|EnqAco9NLv+mDFGU=2-X*N2 z2H$^XJu+r;UZ}u14c`j974R|ZpSB;UnDgON8Nkt7fzB@S^pwWVBO8fapiN+dmG}r} zOvXoZOuS@rHz*4L>~@hY=6tv%u_&)VWOH6}i(iPd$a~jlrH;+t%lb$*4~_X2Pl4Sn zdQ(N?pDZEERCw*(1Cc~gV9B$o%1{_3C0&1)Yl?B#)7f^;`I!@{Dbo%AL0^8Q&#B;J z_zF0+=vhnslKeFZ>nasNjNNq6!jPwinX8q}!%+0t;gC1Ob4M5QrxDVTq~ zwf!7Z%+d$h`Vw)@H2Z?NI^)71&WTjt4JkHg56p6A$yA1hc(BD1(4^& zv{PRJIV_*2-kg@WWA-6CL{>~vV;k&<8?Bf~C$?d7oCVvl`sbKLMnC6k%V~b@u$NI5 z|I3qdCMR|~I)#fzy5_sR5(|4T+`KMpBT(Ho@c~I$y~I4L-pJe0>keGh;fkW%DN6)%kxYrkLgsTp1?Ls<*`T;+ zK>@f~P1vz12@QsQ!W>Z?X*@e9N650=9a(Ixd=eqf*>xUARd)5c^1kU02jfQO`PpeY0B@dss0p zUJ9*z@;ENvT&$dx*E(tMt(zBR-jBuXOu|3~&*i$zpKexKH_cgWE?}JYh`Xw>l}DU? zsN#&(ha$hjEZ3l>4QeuQT;hL{OD=p>Z0`MT87EW8yiUhfSj_^nn$uQtH%!W6vilPy zY}9XT_O>Wci~_m^3JO^RT!2*A2~v5U*LRjx!!vImjb7~Y2N?tbaOj}{zrpaFxM_QX z|H9c(v%5JZVBClQU@(91U+6OhD+&A${N)}trUWXyN7F1oUocr1lffm}66!Hzp2PB3 z=aYsytRTZPBc24*F)8%4A(zHtkzfTvS0i|tO6Y(;&>+MEGXj#Q3oQmAnv!_+bMI;d zt3zn&IUdmLCg0qYCrj#?rO$ln%Ue?yQiy&T1slGL;WI@?nz4Dn3ShGo^DxBi-6G^>JQ{SG@Nv22tHwR_JWM#4fPgJbU)v1=J zGL7!pX?aqe7FC-f{7}?DG%YAWL79M$(rsP5coy)IeV0vwWq_GBW-$voH(71Z5yDt&)0TouV+Nab5|5EVs=)C-{O z(|d?mW>kGTlobw~m;Doi2S!~D9+;*CJh?iJGHCxm4bNXb3wWujLBaLA za4QBH6fLn)=9PVXT^_xhIjipoZt9BvbWm+7Z?N^3&v8M%HVtdCh=#%*!uJ|CL%_Qh ztF41Bl!|{PWss_!B9q>yPHjg{Sg!Z%)KtJ%Kt(0xA!kKBd14?3r=-u0$@RXf$b!y_ zKc(73iF{m85VKMu_2?H}vrE2!%GJ0z6~kBZINYdet~e$~ijD~qsIx0elJ^Q4Ro#eO zTIAYv(aMrz8!yW41GB7UATQ78dcWwHJ~-5kk$Zm^QQA<2u5N!B`-*n<%Hgdk3O?o8 zg1(pPouciQ_RW8aa?4rCReImv$g(@2Ot|mjI_rYeP(Pv4pw2?mX^-KqALe3P3!GA; zDoTH}viB_DrM%e%NlGmfC=0pVy{Z}#4kWl*3dxh|hLX{WWEWql09jR(tYHZ$1>B>5 zcVlI6%e)r{Wp%Z8EAi2lgnVLjmlzn9_b(WxD)K8A7?4_+eR(Ed4_;W20s&xzlW8oC zYIH6HtF*GLa*}t)WkfG1yn7(ss(j3rh0}jhfD&1GZet{ESL*b`H7IcXd4i#Fl`7y( zG3|K2-V1LRV~UFnq#D%e1QY9g5+GawImoH6J#@+n)pxF10|yvIkvAaZ*&*0 zN-;$<*11aS1*^H!*Wz~Qhn8F7sD*Lr=(I|0XeBOq zrze5t%bOm!Dx?y6V?3?A2z4a(pPil(yoQBliK=|xDY<56OU(41otzTg9cRTqV%9}kt!KcV6SDIRgUNG zuq6^i`xMqJyj3ax~_6uOvvXzI=!d9w}JeTC2@SPQ*JAJ8x zOAq+Os?M)#GkW4%w}%p4?OUg0lJ8{+U|Br4Wb2Hnnd!~|Gka=2%(J2rCogR^Dto9q z^_kJ;r7a!!JK01NFGdFqSN`q10-;eU5AR<;i*8cMkIF2zlIz>t7yHakNy~ra%C3#< zlu}VL%6p54VR<+G-O;mL^wsXm1{nUCm#1aki|w!%Hy3PBwrSsscIEV0F4|0v!z_4Z z-So}zvw)vg6(1s8b^zRmh#T=|_o+ccJ;8q+Y*D8Z=cGWIW#Gw@sZtT+DE1TUc`^>4 zS@22^%KI130$!P4oDa)GkolJg^8+J)0-os2Xl%{b0Z*7G?(#Pz7+ytkEMup3U`Nj~ zZ;90}%v&*6C3AiCJiap3epnq+5-G*bhv$)MzmB`tvcSXk>IIX0-tFvuLFjlgBsfO? zxEzW@%Fb8`{zl=y#(KW=I2HHL@_4od#T`<6P-Z0oL8%I0-=_do>>-dVX+|qYRW?m-M(iN>dHP-- z!T_wOxGRTZ=xbpPCAEpv^Qx>T)~p_@@-PphQ2UOHv#v<8(mlpS>iGIYq$ODUv+6F=oJJ}Q=htY)rJF02S^_nzG@-}i-V124mH+!6^LIo3ZYc`>{dfHL*Pp@nZ{NQy@jOg_77PU9_h0efUw?$( zzkTg*_U@vX5c4#Sk3`ZjkyZ9U;)Ew4h{8GZBlu5$pz=3p_f##UpD@Xc4pLEUNU z6;AxxeDlqb(-mNIP&U|}4D0KgZ)`he7@GrgOqhFtQ$6mV@pn~ zZ@xAnwr+nm?YCB+;u}5=qlWgbg0GXPY2~4K+FP!2>tUy{IZTGk1E*Tu{F}O3fWyM( zaKg#q_RTNGwPROr(}HKd*hQw3@58^|+GKd-6i-vg;p~w1wd6LdF+V;mme4^I4x6%@NO0-FiQNG`5MgX}v=Ni}bRkhgcFnYbl~FbL$3I1x7#~vDG}g|j7;UtiXU;-6$X66+mlH)y z*$f?3-gZU5XW7JiG3Mugw?**D@tctiSjCx`6J$Cd-uUd+y1`4{RIH1h+GidVd9K4X z*~8SlTuP|~2#>vG@_N?3Jd^Wg#$!!8#K&p&2bH&@!Ib>^vV_XKlb;D|mRAs|2vIiP zL7JUORP7zHj;%*(=3(9eX#!S;MsQMR3D=)<;gV?1L{0)5)F$A67Ex-Tr8euYs(iIo zt_Ply!Qqthjhf|;F-r9?I|`r~ekT+~`MQsyZfGE4x}n{_ER%ZHmze4z5g!Q8!zajO zbLb}SLJA~`uaKi0vg7H(ZyXxlZRb`Zx)sbpG2hUMl^fFiZW;IT=TD1UtBU$7YED$m zV5<2>4LhhM6!+kNnP%3Wy-I+DxEJOlp5W&BiinlUFI-`A8a^%0QWyB+0+*M+i1Fu? zZs(&M0JAi`lArM&W*^3gpTFB#76cEA;5F#b;O1gbX7~(5(<=sLaku#Tj(Dn@oL{&y zVt4+cOf=Zw+#Y?dT93v*jh3jUEG86@PT^ZqvY*pF`1(D6HT?HYU0Ne$O!3OgXMtax z>qMEI>gsvG*CfBnVytq-=C8y)m$f0vpe*gptxZTN`{!mSrv$$)qeK2$?13Zmj@f)F zQ4j(Mw9%d?YDVOCxZo?89P3b7*Nwx)!DYsgou(4}YF#d6bydhlRUX)-0jSNPrv!gl zAmVv3P|a|Eea}T4H^|hCqkAQ$B0goIR#ZMBnhx4@5@tWhG>sH>oIZ+Vd0BcUle=FA z&%+leZ&q&k`rNSx&vM7smSV5t3BM9}1Zp3$GR)K!R}mO^-Dq4=`zM}kZHDag#kF?M zTx)QvJMe4I171ocqn4<&iBLNxic^9=QzZN#59KL;Devb;nfX}K^dqJaNO^LoD(2BIVJc9^wZhe;f=vs0EXyHF(mBAIiG=5$@JkB9Yot=NddWwT(! zD18N2ZIZ>~XW`u?{-dx89pn}zC*d+)JTapJT&5l^@|u}ES|pa!{5`!u>W>Uk!;X5y zI1xvmzo&KJ?`6Gg%xiP&z-DDzia@*8vG~D%5|zfC=T7a*bvKAoE4=#VS(MJ|DoA*4 zf?HP>Wt7R^&*c19*|{pg-|TfuN~J9w{XF2MeCw&5K_Sms6_L-fM68s$? zpOhpnbwbNdN}CkFW64t`_>H}?z|6Y1aeXR<(?>bgPIgL5vg79O)=WKZt$9bATl(mK ztJ;C{HwXaE+dzoMzwrWhmGuDgV`*7cZ9&ercmJdegxN=nw*IGC3d8(rOwSK{EZb60}DP~6C5J6W9{^ns)3b6X!g z%WW+YgbYu(6oRxNSGCSguhLgRQf2^uB2^-*POb4ED^v2ws?^meYJ$f~I_U~mE9bPP z?7rx6|NFC`hcY*;%+`Hd>^Io!^w*J$@4qg<{mLLDs4Dz%J`#J+^K3fsD+kX)`=xtt z#zv|{N;jGEYe(a3fP;MM%dhECUEz3A)aA32T1;gF`UX!fMnaEa&fDF|CG0F z%0*+y+Iwa14~haBtn!o9sLM;7$1crY^a^zN--df|Zza1A7GQs$T@K3I-vRlQ-Mi}R z-H@+u?;9O!j4Q#rKv2n7pu^;pHu*={Qz1LKN|S%BLKfAv{KL zWPo3i(jq?|fQo7H)BnD-$iO*&{_dY#Ht?vSk1R?A8BfwjUu_QG^yrp8TgwEHyki6A z(bpg6_x=9&ek-MPO_FX2SrIozPUGmC|6!yb$cyT9`}o3clBLULl6vP}ur4?Lh5Ow! z8=a7SZEYvb0w!dmyJxZh3fb3gss{t68p3l}y#?_`LsI-AO&TjC-dpW|u#}Z+6Ys5* z@^+)TIjv7Zjoidz$~V7aGUN(*?;dt)m$Gu~Nt!$%tLDmfn)etq1f(aVZezC)*j&g= zcd?r^H_5GB`^LN+zK~=b6><|lj%%@|a^=BMh%9B3%?Z6yJ($Ylon(3xG7hdY$!vv; z)0aDG3TYv^;wF=EP{@{lINzy7;ismvDvLn@PzoWWl}Ku5GTS!fi^<9b|gal$>_M zkPT{r#LJ7<*X>vP(WYdjk`~cVML7&0#L_o=dkUWvM|maFp)r1`@lZDHSkIVA7hTNZJVd z)EWXT@;YcMySbr6F^QO^#OM+z?ji7Ks8=t_o=Wkhogdhr{+Z z;YzSgy+dQiYk)KQ{_L(9>GDsc$k7s!pCW}dx|RfIE@TXDGIkGL^rSZ zP>0U^nV#fS=TYKMuNw}`w0;TgRrJcd%be(}j+{&~jQSb)D%~xAd`KD>FbacQ~g1=IP7v@t7$CrFkcf4d6NmslH97!(aTDJKO z)q!`Z5HoS;G4myFs4}3_g(B3(zAM2y8=XXC3mZD&oVBJ}?@?f$#d4&I$nSuCLcF4t zHn`qlHN;}iugboEvc+pUb0Gx*Ev#z}%nK=e04d41+m!=T)MH)y6l3eVslG+fzMe5P?Q&}Daa-t3QbMG4LDHHZ zrK%E_qxSjf#8!_mB_B?=dGEfy@VO>S`2%TlOXl^3z)6dA$VDQk z(uo$*$Q7i2pbD#xIEGNg6%^0N^c<+cXnO)RC{;mhp}o<4`amF145I}~K9e#2N>-8L;!g?Y zej$ZX;J7p~iR!^s;S$8Zbg2h-TVn)sB;)Y=Y=zWLF-5GfL(#Ju;A zrXZit87^6`ABBX@rY-vda7u9oXkg*kS0eq?3cND)nPK83Gb@8*1~w0d8deku3yZ*S zunMpYSn!a@#)00^rzbz@m%jr98-Io!CFz-Z&93=C{4&3C$du75N07=SuhsS_x|GSi#*%6|weO7=eA6_LQObgU*Y7T8!ft8bY`dZktbS;CI6?f!O9wsx7JApRn`&wttuF2+iY zCD1mrVL;$$xfo6xx}hjR(IItGOxbn?%7#L53G*}-G&Z+Q{w(ATY^Y+YDbHiDFVf2A z%>lDad5(-Fh}sU)kO$MNApk(Q%w)_W0YdrNoeyZ}8)K;9CNCQ_qQ=u~P(xvzvnUna zZD&6Xssi>4lrN2d%-eui3V#zUA3hH3B2w$@yg^Ou=Dl`OjwkxcR%%vdHzO)Lb|~cF z=8a)mGxol0#-=|9wkY;Y1C_^71bG}tFoHc&nTrrryU}u0n5Uy6HxGBNwnh^NQ$+U- zY)NFJhSV4i-1>{McLnl-01_n?^8xq{AVAv%PDU`%9~OW8F#Pei#eaXl4S)Q!nBu3A zf3NYG2iS|`@qEAwAvnU2-G_aE|A1D&GQ#~2f58Y~vw>rQoreG5D8g#PSY2WwyZP`R zD8J!9P$|NH02)>Uh6E2u<|bC8TK_fckbp?Wo`=lkBGaA--|n)>5E5?)Pyf#cBonM< zyX-P}(P1ygGZkh8+kclKIi^39g|Yh*ol#sx5q~y6%w-hGO8P`(YeKWKg4YAYgC>9p z@Si!3us^UsiEtaSfSX4-D-4(D-Oz4;kXTS6H-k$#)kXJMQTUjnt!@?H0V)pW9<)2K{EC)1YW2EKISmChe41Wpg5L;X1T2r5}+6KWg zaSbwVD@i%MjC7ed-A|eL9-AvGLl_qAsR~`jRugNH)r0ww` z;3B#Ur$sSvmwy0>RkEYiIKH3FilS;9_B?9}U~-*KNz8vCr$d2EXUI=Ms~2&q3dD<8 zFsjH>Y);qdAx(8Ojve`6z}9O+xrM>Zsi3#XmU@y2yStBdSzr3_=og zLD~^=R9yFALYD4$SgRJ zRy<_|K{5YxcF++?c3Cu~iqcf;O%&dPKvua>Sby|uSlmcr(5bJWbHy@5qQZJs?U*;+ z#$0!$*}RVZkA*i4n_6&)&v|uMsc$3A-o@K;OdNX+O65hR`vxHpup8$A2znBL(K9kk7NCwy}`6jC-L?31sCSo$r4$E>Q ztADTB&*?c?`HBymD4P5ujaLk{$oDALBNAzEPRk*$r@s0uGG&Mok=5vIx2zT`>Ai{u z^^8AKMPkSTG0S)barh}E$Yv$%dM(@IU%YE+VMWPxAgehdU(vO3nRp;NIcH)` ziHVGovts*-7rCCSL=yMINqMdXlvDGw@qgW|`MH8G<^#L?FL}}OQcT58hHh`WN<~j( z2))R7b!DH z>U}n22d+fSCu)V4hut!-kqJQ0nCwtbNs@BY1~g5Pg16Xs-6;d^l#G;NcBX+NAb-nH zEADw`X+URhk?UbOjYNT$aeFFguI&DKUFCl1ZYz?WjPXCRaAWHhP9LAUo(i+JN|soWdI}x11dne@!CYv51@aT!j4@T&?HGS0T_)_r zi|#loMNP~~aFye%juuXynRSh!-~c*22JR6vPH$jV8X)U&Ijx1h6zZ`MSvF;!^E z{>^bY-$lXw649PLw5+7TjV$uiypwa=n3qctW9*u-1c{VV5agc57>+##E7Wx4j8<4P zGddzTvS|}`N~A!jprj=7#ebmS0U2=8c}=&1x}8l$tmDvOzLVoaBb+q9z^ww^!mS1W zg`v3cA27wRW}&w-xuO=b2Sg~q@ZdNBxd7!7P>B!<{6+OulpTkq2z~wGAwU4I@B#n= zk_M)B_$&1MckH443*LkOV8p=m!=zw}(4R|}WD90N>L_>tb_32RWS7Yc1Pgy)h8lb* zr3HVH`X4MWzw%*JrpfH-Dp&&p8B{^Kv`+)r@G9W}G&40HfE)CTus2PKU9VW0jAo|yibX1z&3A*cK#~cjG$bwzq=l0V ze}y>(;Gw?cn?GG|%Ish&y5fHj%?5>@PPlt&9yMYa=Lcn7M9EdKsA%t`%V!w=W7gtc zaOtknW;~vj{lGF-z>E_js|srZC$4)%Iaad2EN5bnL&bl?(L??^s(OBTAdaSKLG=K? z;>s;Hb;VKPu1vtg20HK?`_BUYi5Ev1?JQ%Nvd-76*dwU;8_$L>`$`?O+(QdyUH`O18_lGR*0t(sAt@=!Yl zSr+&PPC#Go_wo1VVCZuR^38jhcwFv)X2Q3*rWw^U*VJh^vxtA6Cg0Xb*7#D$tK%6l zH~d?1h4SKu4*Xm}!#*E^ zU!2gYIGuN*wLC6wDSlc2{E6xR{o?uiA?k`=m-{c+272_qa+HgU>2)HA=n(Wy>^SDK zdMWmvy_uEZH^)_m1}?1}8)}$A!d{^;TJ5zWa9@t3nvs8eiM>a2P-S>#uQ~Hlbp6Ik zqpr8Ll6P=bpfc0QqM;J}#*43K5_n=OhZF}?L8?hyLeML5ZZ*V8?ln6pCHSkoGA;a` z`ryAZ^?~w2S-(*vDrJd(k4|qCsYFY%go5NNWr>2El|6$>@E0%2&ZHf3+G#Cc`(M*; zSBE{yJ}-ZtXG+rDMjo=rX^y#!oXTtI?%+9YJ?oaKU??-n-42FIHp|Al@Hj1nzufp; zo?>$vMqt|ssIZB46ovNL>w8r1VDtCB3=WCDt zT}}!~|DooCm5L5`U1j>rqO%hGqhlGHyaTa%O5lIkobm&WPoHks)K_Akd7)Vc-mREq zK_I*>?+n59uhiB%56vew1}KqGCIDJ(o1)J^T3Sl4H}cJ|COfP&lNS#_<=U5T=@M0x zxN!IA|4I?@8C1-W&$iZa?0MYYq@*?j4d3&ymqp%UG#p5 z(K(Zig+uK;5sezE*|B2v4sGFzyi8}=CT`hdn@Tm#9Z%S!B6)4U6V~s_F96R(i}liP02eE*+Jhq5Mdy3G&xO6F@O~)_jFmOL zdfhRK1-(D$<0_-UvkFBU5E$`dI_Q0(JKrLGj{DV7nW203aVvNb=fMME_|G+ND&evt zmwyoiHGdb1ROQPbnBr_+Da;&GE~i1>^sZ6vuy_p|=aVCng4EvqQTCmBf@P`H9OY%n ztbCeX6wskdi*k0_8&@*<*E-;~W)ly4Z(@gmDHihKRXMXnVPLFtQHRljHdvJ1T(yZN zAJhFzqXjFfD6Tonp|$b!-1Gvkxp??PfoD4?-+xHU8jj)~TIo;jzje~Ru5f#;T=4>R z?QHC*b6@*Ty8k;!x5U#wAsK%>>P^Ove(}1uNiMLgcNfMZ)+L??#8-?lu6F!rz zOMihKsN|NM=6H)51g4@2EXi&gI2wrC=Bl;zI8fakYc&dOW%z^X*>puuN0{P|oc!}a zR0YECG?p3->trI%v6^l;r5ejn(W|qV6)w#MP{kxDEFF*TIA?qWnidWRTVXtZ+^yf) z<}lCD*tkY6(X2*4|jaR*(0y(Zkj252#kkekJGjwi*a=t7xuZBpDw@i1+ZLbiHY9P^MFvsK&qBeP+@ z+K>PIXMs>>gZ77`$>M|=k=n?p$qc-;+-|mJgXv+J^Q-pXb($ z!pW@}ZF8OZ#F@}Fpb&p*@bh!h2mQ38{FJQLXR<~X_ioMSuVkLTC2!dte>KRf-)9l25a(J&t)aPKn8b=F>ic4cFB-naVo<^syeNoC=aSZMe1 z3cNhy(n3>Xp?l#TUNA!_nRvJXu$@RQ5P5r@73!RD>N(yHir{-Lx|1GPB?_ zU%m~Xnx705^UXBJM#Kht4zP%g=X^koIIaPI0EYF1zksuWhsGim)k=;ng9&I1}v7p~|d~-!+RW6@8Tb$+EpdvpI(_ zHho(d%$9K)iu#tCavc|4)dI&icFyL16mfHA$2pDT+Os@^zbaZ9JpVAXL|7`Kz|vWy zj%BYqyiW3d6-MO8%j#w6ZZOdEB>M?|u2|NGJ%0EsX-;210}d05Vyhf?3K3!WGkdS9 ze`X0R`!@G;=9JMeOnIT9rRUw=l(V$zCqy;~DVsoUBl5?M7nskON7rLEi;?VqPUP3W zh_N>>$}z00GZ>2v?7lTY?db>T5VW+F{9nmGi&A)M+H=lvt`39LyNadiF^01PLGaY@ zznP%R$g{V2`*K`go=`>& z^I649_hpJ>mJGTza-p}<8nNDg*f`7{y+10F6o1tnDokA!9FQzRln(Oh4{;HioFBM0 z$E984SEgZ2aY{lQ0{C7ZVQ5s>(w8;R#lST7A*%~(RK*51dWfx}P9|0xmT@>O}59r!DyuMmJiaN)kqHh)u|o4wwYcg`N;z5zc>Z_bseN|-;$3e|Fml~PcD~I&BUrxEfI>m5(D(l6~6@7NV z3uW&YE*HCH>e=4QLXJl^LE3Lj+Tv8&Z%ky0Kk0|%@hsuKRgT8hbL*x-jQLy{U6d&L zAhQ5n(WO$UDX~L;%UTd6PvkK8+v3n_i;*fB=$pFws$D0m9E~gcs4Ug4@hml?fqrQT z;-x5j){pv(w{P!`(8oUG1#8&A`+Nn!y`!Gd*zP_#=x&Pc*!C-*c%?>oRW3M@ov#wS z^OvdibCR)yBt!};@D6;=He%MSu0E{<|2P&Ibnjbz3+b7`#Z#RpapT9Yiv=SrMet#B(TS}2@rG2bmeauct zTL`|c3bgir7SURj6uq-}6U7Jh9mj*hD*ttFay4_T?6W{SpF;o*Xa_5T5|dbO(z~LN z|2rVMQr>@*6(ZT?R)SwsaH7kSzO)GTO|Ylk%++3`PUg2#j@pS$DO|&MKgWkMPt&6)esR;^KejsfULa1=P#+GS&q@J(NWa!M7OyCjxQs3;OB5 zQl93nclC@z_?vSdXiM;{gj?x+fLb--D&>H*3FY_f{Hiv1^ z3!wtXe|#sJVZH>*VvZBp%UdeI$VawLEC3V6| zHbM0oO&ytE$!D&XjsLXuN7|Ali_>yqbT%6!efbeK>oV0@?{7gW-%KG83>iaEU~)8S zrIwqpKjGOniY)U1Hx;&=IWFF5c;P?OG6PlJx^dlPbCBW4Cf?NutF4%h65tR==72wB z?F9(j05YqBzyU6uB0Mr}B9CzJYH*#GmLCKuf9sZ5j<{|mPo}bbP-oFwY>+)D*woQXGf^EPJ;R?Vm ze}O{>gu^ubn{5T23QjDn4E#myL8jY~sMF|TB%^S90L=w0kog%&W|Uuj;}@uDgd|vH zJTbFisYpuvSggUKKl$UVrkZj?HN+X`Psue@-w|Ytb*sSI{5UF28nQijlT`eoM0WEO zfb;w<c!`;k_r`mM34brYqcOl%ts|QV6NT)q5RLNF0+47;X^ntDs0I zvxMc-jz*D7<~dg7PO**b4J3O$D0_GDJCcXk*E-MHxhWGE%}>j7TLQi*M{}caf0xYP zz)QGC8&&A+>S1}9OIS4JXf%nXzn$x5Nzx@)fs?fXkhVEMcdVqj6zz)hWPb zGNy1XeN=>rF5{RNM>4u{RXM(b$5zQB>fhr1RPvdK4NHRm!NVv~{pVc@<|7wsk#O#u zS>eia%-CEoiL7qdHczaxpnWB0e-Et=yQu+9FkGH_RW3Hq8KK6lol`Q2qy`82Wbyi0 z6Dj!5w%g|ittP}50Y49Q`+^$(mXr>sDtcNjovQk2`*ZS1-=)t#C%;0e@q@+gZMELW zZ_Qyp+ZI**PRozVAK|V?)qi|j#A*fP1!C=Ss-?rnY};9sbBI-S7(xi7e;$c0uatv?F;vS}k_=5SezEiS0tIXQz zP)zERrHnoLT$ST7vdgHHQ*IQstI}(!Qs6;{3x2hr{_)396>i!hUu?t0igf&He zw4i}6_dHizv`^CWXztW-M}5_B|1CFk}H>rPeULkkEgulSyCF(QZ z{Bb)~Y6&{9bw(j4f4Hb$?xaytf_89ayLRkJ-~kXW;%$W5!BOp0)zBB4y*{GqzSBtE zm--IN3P7DoaBftB#}n}6CECDG#5>nMp0pp=1N^)tn!n%7=TGF*KK~*1Ahr+}H>3yi z!F>OPG=ERNeCJ&EmiIukn(+t(-Zf2)ON+y7)fzYzG;4f>q4 zd{6qN6a9(KC7IoCWbU?i;!90dQ0Y>A?zE)8j*OOc-_YWRy|P1epf3f)RB2f9+9S1w zBXTEPe^F+Im^*7qt|Qd=m{&A|i2S|R_sV*m4!IN~KdP&7?s`VWFGOJgp#%a3OXf;0 z*nDw7kATh)f1e@NY4Gth=kkDkLs||Xqu>$)R$~|!m`LD1;CA7^(3SE1VwCTPZWyEr zRKQbs#oFZ{hX$NyJHm+__jgK;`_RG6>x&Q;Ou)gK@0Rm?6g+$bJ*n0f9VtScLZ~_) z>y)vbO9M)60<6}Q=2E6xAiM%Y$5&V;)NF~)!e7w+e=|pwH;}Lm^)()%ow~XhoMh91Xn56jHf4KqSj|XJyfNaf zccDf&FamO+s4I{Ge96^@_TU%8nTRAl>s@x0*o z>vJRJe@%;NzR$Yj!TL-`MxK(|%u~}p%h5$}k^Hdu?+1@S9~T$N$Kj9Hi~p{NKmNS< z@8_YL8PN^0Si26L!Y!n|*C{QUaSrC3p)0ea1)CTj8^kgb_9AvuyE`ebXBdr@U8T!$ zj{8ASVcE}VXpoNhoU?J+y>iM$0>BdF*J#28e;9FVEvPX(p#_Qtthg!7I3OcR zZ1Dd(x4(!eaPLEtuvh>*3=Q0{4A9bX6OD0SgR>O=_IYv3e)bs%U^xIL^bVK|WRBbg zAwFDv9F&D#XEm`S0*nX9@D~iz^=khEKo$ddQum(y4IaYS-CEfffONxuj>y>F;XRlo zybga6lN>8#U%ALUiKhjS;rQS$khy_VhQDBS;4g4}2l@j4eV1-01R?=fmyss~7y){h zswV_8e>*ZA{m*M9n;r=cURFkcX)!^;J34xo-urWj0@g^ZeTf} zZ|DYw2M-OxKs(&Xh-_ahcBq&mAAU;|TMb4QaXa~8fqowl{chl#!U&|DG(!)WVVF0} zG!$K632~BOrgJ@SC>Tlwfs$DxEidT8P*dQb z=Ci8TP8x{bhTmAla9q}0n{kBPKzQwhN*lmi7!u11?vxBkXvd`xcFRypR%Wxuc(pP7sm;Nhbw$IxjyFcCUiM8jQ9j6Dw=4!rRy^Ug2lO z7(uG_cTd*%7U6Knb^>b&_cuIb7_Jc4LnngJQ0*|-5=ej;`b&h|Er6GUDg-ls<1jLA z7qG!`_DlAMk6Px@I2%=eIbic_G0PYhZ4lbaK62J}*_tI*J}+gnb{f+wy71w% zc<>wpLx5@X4r+5Nos?%?!hu^<_|MvXfo-P30Kq9}^wG=^`1TzZNd@gqa0k9BodNG&j zD+DorbSsQ@#F{50?y<2g{C_k`uN}9I#(O^?(RgP=RnD?Wwu}LrPNE)|ouLCB`)=wm9=O)TWdTy<)0u3UwJT(^|VP0kJIG+HQ3KJ+3JUO_1T8 z_z7K#={-t`IxdI6w%XhnSfcL;b4Pq2NiyF1%6yio{g9O0`^YG4rhbWaZd=FhE&6b#d&Gl=J zpHI=cFJ>aK!!f3y&!bBFt8H7J`#rR?*};_JX|;|>gKN{)&zaIn+qn= z3y_?rM8NNJ4FY2w*C36N$>XBd&=8r2=D+6%O5$7vn}UVLIBMg9tn+6)e{}P1EckQb zJS)!J#*30r%WigI*!gkALJrG+keLse`-fxhk3hD{25uZ6Ig4;u1@oD7`aW(piPpgVFljK;l*fPx~-hYyXQ>KEwf78vrqy&GZurEE=RL>5c zW2(QKgZhgyEdyGt%@k>^V?>oI-=U19IOC|Ny@0eis{a7#F|!8QHP#k?ecS7J>-WYn z;yV%y5Rl0YaPvSMV0QjW@EguZIpcJreQnK`#wk!WIdwP{KSveA8i}P62=&IqpEQc=h8fS%`xw0Z( zb=6T;I^k}F|$KbmhW9v45@=&SlRoUoXDPKa7^!V z@RX8@xl*T6?`)zk^U=5W&1{Ylaqbf}1}IBbxXKWf+TwR`|CuJqsm z91VG5HV3@l_4-6sFdQzHZpa9RjY(bQr*t6pnU_0t;Md)X*~g_R@w&83x$a4m=aNe+xGMUj71>9eVAbtT|&^Lmshjw#$r-{;K`^ z>(Bk`e*+!?SLMMOJsaF%tI*p}6u5Q=CPp<+4%TJT5Hr#sK(v0PYw+8%734 zzZ1j@()*sw#5cd+PKc)UV}`Gbm3iwMucs7NY@GN%3uR@0R=0x)O6s;mqG<5+jM5s_ zLP_iOo!UK(OMOcoHW%BqQ%$P>2tMjpJGIa&nhIzMvX9jl9<`cdEjo^HN8oV&P^H7o)N^f1};RBBgc2i&o`9;qlZ# z`>IriZ^)&jvx1@${Mw5?lZ$bG$!3W&*{Iu9>#lWek*!AAm4_rQ33yUI%S^7$D5ag8 zviBQV)7BNKmG-`ym*w7BwCd5P%U~vDgDznDjEnWpWbM)(1*LB9F`LF7pdBO?~pvMUAr`1J)WC54*WzR%SMlfB2e?lvT;wxT0WB%(zL;GQIXu z=@l~H@92n*am77)cYYa?^BLw{CAL$P$PimJzKO`s5}iWF?MYjgcAG%Na<2_ih}Ht zS-W0~m%TFt2M43iE{+oXjhD+a1S?u{92c+paJyZ#)knJ~ZeIbxWQT2ce=y zvY*rui+)nat@oMF)LqKL{Mk7^wG&v}wo`MHK5pmyo}7Qn6L9RT4^y05WxK38W9uD* z1k3tq=gl50%iaW4lU%q4u$!zW3Ho$l0v)uLMI`~904tSYGQ*yFKXm*S`P)FigiadC=E%Dx5r8ovd1OJ2J|OE3kpRMDQ!8jJ_B{c?hQpF)kAgbWsp+F3M;Di+_r zACxgWlLddZ+wQOrr(94M=G>7A9cT~C+MBXAij^>m(`2o>!iW-00Vr3z6qC zr?Eckr#5M+OGojv@I}Q$w~b_N_OY@*F9bKH9Az?mQufsh|G1mNSqa|7*-5oNm$N$A zg@B5$$w*-aURQW5jx@UvO7IXBU!A>GY4x~x@f>a7Mb%bN16RgP@aIo@h4NLdR~M?C z=`}kkCHQ=zGgb#AW0|(hj_l3XSM9HfSpJtzsn)4i>7nrWJm4jhd(49LwR+shX8!Dy zl;AfMsdUshrp;USJX2DdMVG=>t?fStTP02@;A8QQr7AdXm%%m!7JnMe!>h7TK_0SW zAZlw~`I`1ah&s<{mR#!T5Y$*ZgGBywOny6Hx$lg{HUmP1Lug~JvD$$k$QFFt;AfB~qruM~$S19;L#@2Ilo>QtN3PZou|YdKwuSGQv0to( z_}rJvI0Pbp92i$?Cp8!#7~s6&;!apVNaW_ZjBIo_mwp~v5%L)5;T_PctP64k)KO=C zY;MscWmi5rvd$g{Dn;KlD5WOZL?tX_HjJ~>Dr1DNJjf3z%j7A+uPMxI`5EWclDY(< zH;3KKZA$PLZtZFf@ybxS&8~+2I{1!Em&A)awdp_`MHilkqO)@SVvBxZwg`A_&(;4S zPBFWGf?Du$uyG!}3&B9vb1XITSTV*+P#r^^wcz*55>W{~_?*1?+bS=?EynyaGiI2J zAM+b=%y|uq4!p}r1POQ9B?-8ho{Wc+}8^t!4D^sDH9 z6*%yuSGe!}zP=KB&F-rb{G-ALl+`J)N|FUGePVD44vz2hpqn?R68w$g{8cl1dG6g_ zo1(+btFmyiR91`4l$Ed@3KjySM`?2Ru9UDnEKko96>>*eawZul9*&;J%Ll)iOAh^g zRDL?KPf%AMq5uAGCI6w=@8xCQ2WNGElx9B{d~nXjNi?L>K5^bg8>1gTF3|JiFeS&< zhSUVEDVHxCaY@u3L_g)5-|sq+9-D*q#LD|k5HGm082h66Z^M+35(N>CeecJg7R`U6 z&4s-17kjA@OYrcyV?2BWi`vSzW59{nG03`Ytuby}LiF#=ZtY-zuw!!}ocCdW$4RHy zJm*8U!0h=LQ9E^JqUrS)Pu3ft*toDmpokveO>FSH*lnL5Prz+yV(FFp_L-Q~ejuMe zk)ThScm5Lz;QTEK44uUeP`M=eG;)(9;cx6~?0?xr{4|OG`vyO$6_QTP#KHx>sCN{<^7mJ$swi8XK}6+n7>bxp%=Bqo@OdSUW!TPr<_Mfra%nWfK{)nQ*4to zvUD}ztVfMA3cwm)6k>~yU(P21G(WQrK$;q`>A~g}A~QG6<0gP5Cu_)Ce_wT*TOd5D z>RYb(l|X|N<#EPJDD^I3Y2W@Y z6{d~C?3YqBXtirn_R>03fA(LUf~A5>Q2G{i%?7Lmuc+q}U-q>#RR(D|!%S^)9wm66 zP3C%#H^FNwg_OuiGMK20(w*~olLkXh8pD=M?L!rHD-Gvje+k2hoWq}MDL0Pfv1jo{ zyEck^u)XK1O^`1qhR#k^3I6^?*~ZMuqFkTK1PhwNFD(1QJ`5OQUF2$l$1IC)`jyX; zHnX@~V=RAnMFPm;204NeP!%KLj6tuf#s{w~7wDa|r}|?6*rw zmur_FEYoLpN=op~EvhDWU3N-fW>5MA4D+&?+-G)5O7PxUw8=ZEt9J=(%&C~w7%|jO z=|Jo=J0&G}C&krf34rS@C8z_RbjT1?MTr7}1T5QuJahi`(2eGCx&DFL^jHe+Eu+Qk z!(u6}vRR~mVa_Y?dR##BtVxd*n^-MBSr-`*v}rr#)QB-!${V6}%a-e#WKWtlA)2d5 z)8y??>M3bmjt|5>vr|%nFRU1g!hLt?M$u=iU*9L&?Np*eG-%m z-u?6NkKYhMTh=c97v7}Ol%|}zf7$a~eVzj*IXUF*tl7yai_%}nE*9CzDZ#J13|`HX z%IlH}qKCm%8^_i$CcE;ck?vt4EwFq6^dV2T(()=P9NF7G7HQ(sTDLh$UEu1WRv6BxSbTK9 z9PT%jopXwTXew0(^)_M&hsGa`WzY&fWMSGqRhA}cK`;I;Yl|mx5>|FWVS^O&sG4fV zBTl8{DVV<-W2q94_Y{~YOIAyl7{3_oVzSPEfb1nmUCOg_fxt8IAf5C+NNj=_@a&1N z#Uzz{jQ^2uQ~n^b-ojE(y-o+D-G$KDGH=GMQ;M$UJ#@LQS*Hxik33AftZrV_VnYGN zy#9Zec~}OU$^q9vmZZL2iF0L5fxcJJXv1ZcMSV)=7)sqlHus4{5%!TP%5fq!l`@|Ou$G)4^@erc?@5gB}X%H64z>whW zrqSl`J{g#A-j*O~qDXmA8kRUz=2`z&xWPi;6_$sHFHsL{@p0&JC1>LM$9nVZEWJ^Pq2O`LFrL+`xO`^ z3|zfkDV0T)4%-;~AgLjx07{v-v3;so)$(f$iY5J5yat{7aJYy+2XEAa-K30-{S~z>axP=~l=81kqNY6KC z^ecjxbiv4MIkmvJt-eK9;nX6^VgVxA;$jG8ui6z13t2_Qt7w`zDnwA>f)zllaB*&h ziz9)Wh*yXD=XRyM>WSWhSM6swuIl$;mU6##7=w z*fzfREC-?jzOoCzYfF-ld`SUxLv7z=bTZvMw?L``K$!*g1nWt zt~@1W>IGK`z1G7`3Ep`LO01cBO3EOlJ2^dnc1lX{XNv4O>M4Ohkn{-z#dAb*pV=uX z!EcVsQ{t<&A^%~2cqW(%+o8REh8Nh^_2k_+i1b(_l{)m8IrwYcH@#G*#X^_7+}^}myNT3=#ca;E*K2_ zex?Li_B?2F2kwdB5fe*l3vOa?}IY8!Lrb7 zvS%ELc_%xFD0}e5p2*LdmuIPyJ?$kE%+qz1K+E9IWJ3GJZa3h}; zSJqle4pFxK5mjPQC+NKiUY5LN2r_Y2HnHL}ie&PjV4=ObeXrzwQu5Y_5*tOE$D(G` zP-hr$34o^ALL;Vs19nLaw9Y^0QOlyW8=(_DXIaC=1nr~+vv^)U=LQ1k=v{DR88}tz zA;CqMdFD4C0+rDfvWkSHw0WKnpQPbxC#=sBnWSDT?Uz_HH*H$^=SHk_=jCMG(8I1gQBb(FRDySfD7x;d)X4?P(U6^K9uBt~REDWCYFx=DMXM*6R{X(uup zca-a_Kb;wkccv@1F*JD|R*He_kPNev`MjO#Tm#pdEHCoA__gq7ZboegW zcwW1I#V%y&ZZnWLDNxN1N6N1aIc&6eo_|A%eb09LF{tsm16AcY)kfGCJdBa#7yXCx#}v2E*+UL7vq^{!Yc0P9ttuor}ik< zoQh9-q`(t8vD z;M|?0{&~6(S-g9UVMS4atKhyt&|XV_i$E}2{vTakIwGoZU<&g9aG}ra6NxEF^epK``PE|+>+Nqq;=5g6MwZnRUDl?;8 zD(a>MVg<*;zA!lQnR2}|&IgnV3q8i{Qs+pnj-|>dId+yF%%W!_BgcXJdIf@&xXWZU zqLc>fzn52o_mfu;S>+hc6jgRo;j~ia-YY8RMbmD*T(2Cmt2v~9tj4BYFvyFW^bRZI#T-TL%x8#fP^p(+L zSBk3Aa!5X)ki3@4(X8~s;>(@7{1ar5=F;5ld{p2Q|vK@y?7NHS``d4Cj+JC2$< z^7QE6q0duVlGVxbfj}o?CLU4-kq*ma&YR%-_U?|qFR-6m5A10sqFu1 zzihB9sfZFU%bqTOa7sJp=22J6bCsq~IhwVXqEaC%Rw%Uu8+*?JzBVns)()&-y-LQH zNYCG6H21H>GnbvL@GrQ_a@b`)` z1*}V~)?yBTv5|r635d}zzvy;Ip}hq9aaw?N(j7_xpw#!; zH_-Qzo$COc(DP_+d){lG{#&X~?L!*c1M{+-E6^MeLxy`Qvs{l%~Bh>_Fm-|BInaeX#`60KU&? z1)H^D?KqNu8Z+>K%-A+4;!gY~Xee=tmv`U{)qJDEHEvF;YO*q?joMR%y5FXz* zf7nT@@4y4{DlVjFow2!4M4l^1C{MMrIdEmz93Bw81|s=(E%c{F^~!YzYbt?m9}wdj zLLaB~2;c$PGT;1Ww{}-62LrMRQPbH6#Kh&BukJd3O+})iBDn9HUoi!qglbb8quS$9 ziDH#FQ#tmh9ZV&isYKw)b*~(IQiT;B5Nhl%!uuV(3Dfc~aUq&PjQ=Zx_%z=S;ydAy zdqOAK)?bYae%!yY)xuiCvMZy}7S~W0U8SGDxQYr32n%@oMq;`Xs;VBgJVBZj!&0-chxGJ) zvc$(8C_8H$*NY$DFMnQmKcolnqou9(k82|X`OY`S@gez(rQV8G+N-y zoD=x`L_TSopa2>9eBby_df;d)d-&RJ7hC$)p1zT)YFBE4!u)CQ8}LKZFnKzNvW~}d z_0gp&V8C#ZK#RZ-=s;b)s7e@vhiQsVKghJkros3u;zNeXnSYX>r(6!tv9C^$aeNqa z)eR6l+Ic@b>LkX8-JjOYQ}lSdeP@C(FQure z4poU*8oPM-D>EW+cJfq9j`PY+SP5PeTlW-XNEwmiW?!3YNeSLLM}WrrNy!i}%*l`- zgvTTJkvOF6jFsRauh|PxOi|MzkbzRSrbXkQ2@V%zqkrtAl<-|n5($abgh-pzLOwV> zF>?f%Sy?ImTmJ?^-F8;aGmmODFNrlxFh<<$r1mbs9K7lYX+lA*Ud0UFH-8wr2s@&6 zwHt0V$PH>!S}P`Fe3J(Q%n7-Y2U)Am6=OIQjGh<%l1y$#VxsiTS9TqT%zO3XmK#64WwRQ z9t+&otg|u{1@1uV&R5f9AEFS++IiTkizV)CrV{SwVj0wcJK`EhqAB%JP57&5+DKfN zkY**wAX3+7AeGCq?TjmPc+6?sxt}u~RU{qE>qI0qKj(A7N{cD4$W)u}j*SmIAx=i@ zDi;xy!IJlbSjw+h;lkkxaKE-eo?{t=>CL~mj68$9o@~aI=R$H4rm(WxM6@M6z79*TWLrU1MA7r-IsFsTh z^;k}?!qW5^qzf2}(KZH;V~7!PJ7?SwDJ>09)#rO)^YjlGlR!4hMj=49!_S4`v6G|K z9oT3ez?t|$jq=#_zfdLfOwTJhuC9DLs6v!F4phKg`Nd4q1&*oG6UsbCRQF=A?#!zv zs;impbAReBmifWT%faxie8bH7n|V+A;%;zF0}fkmsvc=3jckF#mOHP2sabmMaa()e zl)bxn#LV74r6BBSXaz4dk78p9d!*q*GV6+Tu`?~y*TKOdA?9{s*_!J5sQN&jFgYeO~4Z@MEe6fG^Ay84yWBP8CgsBMus8^#jL=;YewSt+G<(prop^C=z z<3ha}Gt^r&Wu56vS!W~fN{yzeeQ&{t`%y_L z$%;5KRa9nDTi+A<&axFs;16BnoU|!Op9_8^*QL#w^(^4Ua&R3GOX;P0C0Bkk@09|D z6k>#OG_I766xNhq3)9oG{SnvYBvjem*Sb3@(r{MJxX$vT^oDYI*K4zpX`QY1`hOgP z{4%hB1V&v-v~>TB$O&P9(r{c(#3c@gU9!4$)C?R@NttF(OYp#JONvFje3^@3GW;Ay zBi^YQ_isJPQOUI~$$(&1-h6A97QMlS3BxU=hnbI(bOr){emP2A{Dh1zcZ`c)F5f_# zo`A`kl5-$jEZ1C2PY|WcxNKq%!G9a>iN#Id#eE!Pxi)l?!N(xj>vQlQiUyXUKQjFM zp26)$A>{J)a(sb54;Smi`0Bn}Jb#CQh-Xd|uJr|0!hdvuh+mo|1X?JAKOYa}PV+3d z4*umqM;2L`cXG9>UR4KwG258hvgE8?tpzHklHaQTkJDG z*41$mZ|dWUK?BePj=onfk`yS}fbTZibfi)ktPU($u=)Yx@cMCppETbHeSS_pKao$W zKcG4T-^P-aYpW+XDe4IlX%quKjmTiGVuLM_86(PPaX^N%v*rd~ijBYNU>mhfp> z@OYS%Z4t`RxHv}1%BfypWu_XJyEoHkc7e6v71b8m13QylyLh91m5o`M`TRjql^{Nf z@npzxlo6$}P_!hoKiR7GP%_;eiQ~@mr#kQ}du5GI<+Aiu-rULM8-JFiyjk|~BJK;% zg3ufCAkBSK^c0I6%=;Ko?OFl z`sQn+G^wJH;c;WTR%@YFL$neFlNvTRm~op0mu^W`qPPb|!;f!`D#6GVQw*FtPK=IG zxCl8HTfAg$zR<@c2{5Id8Mu28-r23k7%% zLyN#L7TEzKm}g+HnMKwh1PLf@cs5$roVuoYkE(Gl#DE_n0*dULn>(cl!&oW88Vd5_ z68rizihW6aVp(#}0>C@K%pnyeIODMtv6a0LV6olOt^Ofe_^iLGw`l81bv?xz9<{977Hn^EW2OY%6%Q>ZYB7;y3#zE zIcw{ZDP`cBjy$9i{N-L*2UNY!smBQCdENs%opCrb>aT|Ul8awoQLkD%HHbiXbS2Hd;Lo0-1+M&UtL*W1j{KVl(mOKs5)fep)vPQ zS*Us5B(u+B)df1@(NsuPyOA2Fq*S$MOcs1W0=s17J3;8#+|IBw=G(O2K-A60t)Lkj zXix?n#6=M1gIF4Sh~=)$q0M3fx#g!sq?%A+>vK(7k}I}X|49u!pZU)w_^*{l{pWQk zo&92^vr}{8R^@!6R9O47#l%b!`^cN}Dwl&>1Y-fim*-mqBY#Np?lW5NX+h7gbS1va zrgoO6t^^Okb7FN*Zt}F~Kv7&P$7yAQJ_8jEcc^1}8vQHeacROX#gmpWYp8v!<#R$T-oe+MJPp4;Jo ziH%6|4PQOBjc(bM6q{*b&5~ksV`K{=wOT_L(*7m%PPZz>1EW#gF-P^D3sy;#iM#Ct z4l1~X4C$Hr8a3=&tWe02ph$rUT#ap@A7miU7f!`xSYFHe=6B?F?ne@?D0wEtDL23_eF zed$VkJT?4EO}8==(@Mu&Y08vIE18hN0z2DYj96^4isc>ygP)~?NmMalA8{O}d{^ww zD+NTajF_B4Jj2`8CfCIWt{Wn|KLHakEk5}%DJ)5h#iD_k8j^n?pEP=qI`*b!J zYKs0jFXzARjAy=Q*>=ht5ObqX1#)X1vf)r; zu5<^hS|GZ7fthPe^ogGec-=^)*;xLQRpaAW*$Yshu|9@V5fe$qlT2P^Bp`at{J?t+Fm~BB z@Vyp()dxU^=*#`D$bQV` zy<$0_f;t55f1~{8OnZh+RZOP3ErjEkYpIWw`)^M|K`0>eL zXYL*p)h5~;S3n`90Xgvv?nsq584ZWsDOL#9Vkr~>7Ps`E8@Hn^7A5FBq9uwjB{o zWEV1Pe;mths=E|Y5j-%t1%%j{$8Bf1NJx2NVqP>~-F4R*HWzX_+*MCC$+{p^8NLy- zInun0ttUVO^YTy5nz$_TMFVunKUr&nF}7OfCQ{U{Y+EZis81(o65DG(PPVMd6EZLa z>QWlxLsYHm7$N#eRl7b#yj8mXOe22o<%pk=e=HcXmj$a_Os)1B*DFEWJ(bT zGTf3kqDpH?i&11J5Y-*LQrI}VOo3<%Z~{b#m3=Iu!jn#hz#yoS#@7Hn@g;!KAZvcm zxS1DzW_c9+nXjLO3$+vS3sp%Zu0UC1cA&(|MqTEIDL0&OCe!#~{?H79U^)owKICKg ze~?RJl}$NYGX0sER!LPAMS@)vtEjUWXC6jTY#MA5%57cwwYj*v#`Fl^gSz(mmFBH1GZxJnH$r7ohO!-wH`;@XE3@kIw>Lbd~>Rah}!v zuzW#57gP9|J5Wmry*vA-y!yFPh9p7CNtjq#ozYo2%2hd__M63#-n(;Jo_A(2nS^aU z26Lq_6MvhRyVe$SQl20o$@ElGg;kFcxWI9#mdx`kab7@fR3UC>C*_$0BdK#zf7gv- z1frCXqe!hCZb=&EGWw$)LRRPejRY>0G`@+ZQiz^eVe-QY8sEolr#Mn6Ht%i%}YdB*ZwKF+odm^F${rsGrxFprTxbowl5XuKwl2h$No{mE;7Km^KmZ z33{@ANqk3XFhN@NGX12=)AtR2f99%ZQh!fnAZ2GADX@A5MjcEQ?Y<%=WA-h1^|jy zR6k`aqC{$0m1M_n<6Fo^_{i#_!aQ0B;=i2CE$y+|M&~ zwJE$UkAgJps-;&ZQn`N^e{@r0SEkFUvHE4_q*Q|y`s}M^+Zb07NhEHW6N6f+VkR-k zfl7BgmrN{O5abgROQl&Ji6vRd^8sOIy4*=mKw23O_kA`Yj5>Ii)l_f||0P^;Kb!e1 z%13Cn-TaJyDh`3R*x8psx3B^w{CU??fOv0EbK(oC#f!wUqfwsPQso|lzH7em$FnT? z6X!O3V(>88rzD%v1y%StPxrbL&<^B5jmjFTn&(y; zEUS-WAFAw}l+Fuhav}HZl$79?K4kw3`?Jt@$@eXL)`BeA%CaaPt7V`Lp0inA`HgFF20 zMfo+oD5bi6tbob&Sx)lX%-wV#0e%ZoheV98l}kEiL6>8RM}9@3TiEcU z=sDEG#|JRBA;-S#FA_|Mz%De+Q_&`fg?#+I6bsqY2}zJ1d^{$Q zKlFDHG*HFROL_G&TQy-^dD(bW_F=3sU=^paW<%qM($B4{@N-@xo6(cRGbott3zm@R zMTHAL3aWRV}4$N&qkd`vvROk zwop)gp1$u~_7b^lDO*&@VNMZ6uXIznlT%}v_Xz2UNJHP=FBH9ZIJDYQO)tNNxl55E z`Q9sBT{LR;*x?l!9tAB|2BvH(LSst#7tko%cQluZNTd#%uYc@)Ro?t8jZuQXQRtBi zxTRLT=aUde4f7r{c`l(*IW643DNk3;?kfAdQ>47?fIr$R{8d%&F&hyxx`abCgIWrk zF;@g!7DR=-5Sbkuu!WKW=TWw3$9gW75LLNTDKtNKE`Geq{?g~$e@m{ilDaBUz6*AS z`Oecug(dbHA%BY%97bA_yI02)-P znUYUIbN4Ixq@iNxP6szLD!2n%)22}+*UCr6u(fT>&r@G25#L5_n_=fpyeskI&XhS&{WvDh&1AeW0f z=0&o2ahR)N8uO@ytHJJ^k3+h1K5+w8*Z^*XX=zp?^koEkW_B6y1NV8tx$bDxthNlo zYwMz@=U#CS0>;6wm|=}wuFj`~U8|WOx|;yHS#SsatgGIm4tk|pg1E*6z$eZr+UT!# zpB}g~RDXBkw^WJul+uwa+?yFsU*XFo1g`ZF(h57z10HBaNj;@?K>~0R3%r>zezMGK zi(ptU?=SOrL;jAL*(YUgODyQb+bh}$AKLP`mP1_p^wu|h7}|@SaFcoFb8|>4cNAF9 zwPDKb!2^Q9I1a`;M{p{U**BWKVC?P9gjsX;SAUW@bq2m=&H(!}emzQ9wve5Jh<{q2 z%GWT3SpNZWLs`jka3b?YaoSyq7b9?9Y4?U{b*GI&F&pZbzp@xzEQ6$r0Klf8;bYdVe>g1tX! zxe+bZ3ut0syDw>wv>UMjnO4o0c4`D5e*v#$J&Cn3^#4YF%P5qe2fi2uQa}V=-H9zd zGo42VMRA2oxD})<28Dr^SY3s2PvHQ!vR|ffg@N*Bcx>sJ{QN-6wHca6Me2>GUr|^l z(eF=DLz<2AGasc(Sab_4I_EDlwOENaF7eh&R^JY=e6iKXX1Uyrv=UU7fo|1?e@S6h z%C<740tSH__}U=$#oipmjP&{-u3_*Pv%m8pB+@cG??wqdd|a|(Q_seje`9A~h_tMN-OF>C`z5|g#on^M19^Uwy;KK5YJC@A zKGArN7DNo0?~XW4@U5;6Jy&KnT~idKV%4oI56}Hv%z@Hl^q|mnrd|Ew=nC+y?Tg^! zJ6_|9*kd#ghuvZWlxa)vsd&BEfA4E%zkgXY z{)Oa`Jrw)Q>w9(J?;T&*m>5sJ#uTMg_TFh!C8Hk?#NM-$Q-X)mnXe69t1PX`+3Nx) z*vKV0yA;aoAM-c7U^dYrHFuWxhCWJz?-cQP z**-1HkFTx{!bjs)0F`9xB$DKYe6gDr4ul)cIzAah z^3AWtt}Y8Uhf?9zzsQW#H@|$5)|v#=B&W?cKN}~}=7)|ZTSdahe?d@G@oJkXA8Fgb zAJ>DxS?i1mPzN^8YDb%(a^d}MZS&aLXSEkUx#9dY2>h?o!iqm~IltG9Th-A7q7pw6 zbDK4>oo>0L-yet`V}cF964yjFy z(JxWJFG%%H_k|>;?2^<@e z`i?4^oKon^w$bUdzb)|P@s;Qn7buA&@8E!0>0)rb=uZg(U zIQFMw1Gpo5G$sLq^?hF+e`>HX6|<6?vi^#_msJXF z)(c|Z4e+8Vo9)=q?X!-T>`L}-8U$2ki(pw5%z&imlAAKpKl@!CBPRPb2o101tt;oL5awxx!#51g;w)lQkV%j+I{PT*$C{t6L!c77((e?a6tUD7}=P0###5B3!dutU^ZXC`+DrM}IX;Rm%1g)Om$|G=avyc0-^gVgO_rnF64*lRZ z0nen`)=xuhU|8)v+8mSxp9-ATkpQ`mr_ zY&}u>_r~+JyY^?b7c0^K1a=G(P-ocWu3oaW@Y{wJF2sa;4m}I(18*OE7VwwkZv-fR z1H+N@7}NSe*+oZoQ#&DqAv>D$1wlV&d@A6&@hc?zBboQ&tG4qBDaW)9V*<-l7sAFe z0*l^1F};IBjqBar%Tn)4!x`n6HjX+vTxd(Szjzk-+PpDtM^DL;R$THub+6jGbI0A> z9F^cV3R@!ahlciQ7_i#=-!zT+m;IK1JWQDqI(Z#pcI}n;bob};;H%OjniI6ty3(Fv zmU2dp1I^6nsR_u)PcD9lD^~cq;Iy01j`b~W$NKNjgTPW55m`<5Rmn$5m{0G^L68w^ z{jE6t?CL7PuXL>*f`!N=%DuchYVGhj?kH_=uk2$?^k+ezpfK`l|5EHTJ0&H5_;uJ? zsjyv#O5VUsCcT4t&-0!KV(;0>X~8Q(75}CCr7V?OaC2`|PMn3bcG)Q@!QbtbcPU5< z&4`Hm)TO%j9^M^3%O3u(o3NyoAg<<$Oar}@5=Y&fx|QHJ)9w}p(nJ}s0B`{#R z(4@2DZqYYN@T+ogk9kjFfbB5@f}7WujBx}he}cc?FWV8-Q&JXXoXdS?r=$db3A-ev zx=>H4GOKc?&+L?x;IH5;0Y3Jdk}`tMg$HK(%uY!O{zj2Pf2J^cbY6&$xJk0XD+ zbl~q_lo+g}qhM&ezXE ze>){cyQs-wnTDp6ce}ZNS*F_^j5@HHQqLPei=-6pj8f{fbRAlpka~7}zT`#GX}tkI z#3VWj4zyF>aIB=h*W@BSB@!iO=&8tE`S1Q_E|cH=-_M#ho(ri=AAKute*gCG`&PjTu9Nne=>CBlW?I;HpcT|*HOHLGbAcj-~4{;BxoXM zT4Bxd$xR!F?wdcpNMeHhKVo}uGnASa;U@(Pgc8t?JGIk= zJ0y`z%=f6m!QD>aXHL08f)>8{+HNiMBp0wyzWQvZ7J6m#N~}+U(1kGZn{jRPf6A4q z9D5StE(D=pjMF;cLdxcKCS|iw41Qxfjfe;FiJ+TrzPX#$Ul(eTTx>gF*jxzyzpPl9 zwo33ADRi2*FIx4pCZ5Y>17ktbJBZ2UyaDR!pR9&&joXZX=Bxc^!{g5mAd{a>QGK2d zRVU%)wmJ!XP9d85tqG>yH>~9)f0v-z1y5IIcT;Ce23qF)X4h>3|N4TF%EUBh&Q0T~ z;oHl)#-L{pQey?i2VNwur368y%v>?ow3FgFfu9lBTD+-(xJiZXYoA;KGxv{cdtZ#JGy%%GDR-$qCLq?VHKtzRnjPU za;y>3ndps_Qu_&!hS$s$t6adBmRSy-}*XJ zI`Gc(Pcr{^NX1#!Esw5x*6%bczg@ciO4l0j!l4Y0^@TjYCBn`- z%%mmO^P$3$&2#k&$w_tFz%BKeR`ppM>aQuY%`v7}q#J~JKA>8UA-ybWvE;1aVvK}y z8pSi!dN3DmxJeo~%9lT68tw;a_%mMVb+>MwvJZk9N%zwn6OK{~T(rQ{5ubDLO0iOd z548p&AtirCF%Qi`(A$WLV4kXisFhaoMrdZj5%&#TzZbE0%D&qL{9$WP0RFI>k-5b+ z_Z6*@tBO4EywRI7g(l;~9$~lQA?1%8E_EqvQ6cZfxh9TsD1-|e;mLeEx51qB4F?Ml z+od_NCcgl^1hH1I zL4Q&FbLtBpan$e*s38yv7BqD0v@&)I;kp6&gM7xY>2PWQRbWyfib3oxD5IeV=dWyk z`(g3l555U-g3!^I#cyAR&bH-HCqNd!P{&K#!NWrsmjQPK8h_mIpfuI1THgAb$`0`K zxf7lizNm6#Gib}YH|Sk-Yf(gn=C8>G`yzJ0ogYw*ROeacu30 z1%38m-IDQI2KmM8dc?_jUzbhGvF#y3seIyz>>whQgtKo;MiUlqSiD}+7$cd>1vN_x zl}cAJ*MGob6smnv9ztd&;|c<=aw4?)?q*eUWN~#zlD*CcK_1%qtB$Tbglh^b6%BkX zOCuw96|-vLS4yEuDenGRz*k4?DN6(1)CIG!NQK&>EJ`Uyb9GP->nU7(T<^+cD64W% zQFf`7;KAXA=Lq`hLYz(ENr6jZE}=Y}Nr1e={eRpkb)qsT_3^lB^s;hA*{7>nIpIpy zX19YVK0@F~wT&rZECBDSHPZGiXSi6_8TqdSUr9{!+)|Grx_lrKy^mSfoF#fjxRE@@ z<+(alO%G9xc~m~xT_)3Ev8pkAr-`wvcIx35`=39$g2zi*sqX-dFt2-(6 zGRSJaoznGN9oCLn-Mn>zO==rbO<5FlbH(Yr?8!oavCeD7=)Cr!EMl|3aHplBu1hm? zvwc6n|7`0iy5oLM$_#pKnAKZ-uzIUwbAP69vW`xg`g$yZ3M>hAPJkpoJYg?hwiumJ zo5krdRSu$rp%s){>@_q9e2ZM>o|w-@%lFjl=@LbO_uSd8inWjjNObsN0v)@HUbxxo z*yot9xWO%Rt5bCc->(1ruMXmd9R#sb4wy&J$@)`I*ix|9**3|f zY#PkGtU9GK!e*N3aMv(q=PrN2xuMO-%8p2`YP^p;?eY!RhG`_X5GVe)oraYQT>qTO zEs&E|#;uSL^X5Ntb;svJ5?GA^)0Q3HBhhIWTy$E;SZOw!GIu&)qrAatw|`qqs*;mh z89z%*s%|tR$ey*W*C>R?sVN^PAsBLfL?LC-=W+n(V|)Zoy>xa?f>F$a6ECN|OPvy; zs1#Zwoz{D&b<~4e>*O<62c8OmKatN5QeoJ@U)9<-v* z&1_%@k*pU*XdI>++{R^ za82TdQ23dMZ`u(?h`ExfkBw-Fw-P?1l7@%0T~;Ho8YMQ`I&>k;Xc}Z&G;qfL?pHX1 zu;U{#13$WgGKZD1S^2gJ>$Y|b8PI0Nmh-MG4ScPyi8fgIdEkpFURf1w{7`|Z5O|dg z2@0%wrAo(4uS)P6a6qIoChULYShdvx_GhL~2nO=2+_89x61+?AEF~spH&O6QlzH=y zivfIO1_n`TZea5xabS7m)q!`~9VwMIJMW_6S>=Lc{BTvWcl34Ut>RL@9rZlCB>?_`J4V0SmgWta>2`B`gP*TzkloIgAw~22yynSqa;aUHqO5FdLI4w zVR4>5(7G8y(*E_a6Re2_rO8%qxEnkC$L2zw{Ec0wj=|j6y#dh6T`-dP{^JwxChr3weJp&fs(o%kWkV&wUbLh=PE$7P4d zph!@eH3mWEgcV4bXkN+>RWC&;Scu5OeeQgY8h!Ekbk@ib;Mk-FB>~xu?q0U<^cbCF z61F;t0h>vvYWS|UqLhu)Y@zv(eM)Y2OWrBwee)4Hxthxv)GX)IRM;t zjAHlWOoo4wE&zf=WUR$4?T4Kii4N}aN?wi_1VvZQrX|M?RvM3I7NM-#tue~Ou_EUR z$tqHn1xq%^WzP<>>0DImq-bo!$E@hzWB99wWfesx2PD_4(tqG=zuapky>E|Rul7aJ zI*SQPrw&)5S(4nz_OZw9v>dpk^l66zHWd!8UsHcFO5JJW!X-I}^LZ*3xgD_PG6M%C zk?qvaJ6Hd%b<_>Un03@$ZK$K}+pQovat5s9!4{@@zmxpEC)tDwtfHx)HA7ZF%B|s2 zak72qjZHe>SH<|N4ii(R-EkhEY~R_5DS1-yE*Jh07 zTM&OAy*5nZ%h~9TwlrSi5l;nMdWaW|AL8@(Fn~a2;uAkbLGKGG+i>bXXpA#;ey2J7 zi2Jz>kA@&=+s}0<8-B8~;ZdQGgFEIKpX3sAXdXtXuvarK*@#b5u4WpHAk3g{4hqMH z28nMud9#?1zt|v6xf?YIjAVJ|vmP%5$<%)|F93!ojPoEWJCQxsu&$na{xIMvRwN5W z+9l^(bp=X{K#A#w6zoLp~5P_ksHx+(&C zJtK-P5p-=)K@h?c;G|xN*>goYZ9)g?d^eS2aQ32F-%ZfSCg4Fi>cBt9;NvM41Vw*c zpDszFGB;g8N7kqkciruaeP)+Y3I6hB*-jeh1~^)r(L&Jzh06*4eO(?bt374IV|ok( zM5-4;RuC5V*nk~YVT)%>q0vRE36J?ix0x6BJ&lW+vT5G;gT<)}{!Xv{BJ&V=R4Z^v zn+f7_04yfEhxv1*1AnQAab-0)Z0>(v?&l6U!OBHYn@#5qZuh>VtdDPw63Z&zEFeTm z<6Bp#RsufEyd4`699A8(c+aA8p94~oTqQZ~{^Yqm2bS~A2z6Kt@GtW>+VX_F2_;MU zEKEOOXpH9;vEk666E+pn8r)Qud#|i)pXizdyYyL_cx<;N2NSUGFIMEOU#ox3Aug6& zPPa9@4q~(O;~+?Y&?dx>W$G1|yI>ZI)F&waenN?wmWL;K^G}^VObkh<_STO?`u<3Q z#ceS9CnBeRCgI>8$&)WG1DTb|TZ^x^*luvy@<(!xCr>7mh6oaE*%z?&dW5(UL?mVia+kvjgHBB3skl zs4P@+@??};{Box(I>i@vhObE#8TdFTbRr81anQZ2G%_zwI0s|%u)wPoSwyJ;O$nLN zyWj$(hUq-h!>vlJo_Jf$V*wmz_c!# zWLA`wSn1aB^)v;=h(E7?mTVks3SV4}erw78%;r4cDp6$?Pw%>;Q2#yJdLz|=?cY?H zfTu5_@U-x?9{XB~p-j@YsxXTysBn)FxQNy2T7XpD-A(3c=86<`-Pc|$VfOOt&ste) zLOW|k1-upLSs4evW+Cljku#{RByMcEQm&ExB3F_s-lH~8F?7+Z% zMHAQ}g+;NkyK*cl95pc>r7lpk!9!(SK#Z$?^PjS&pr3-)IjYd5`nr3GT+S9%0+)EM)Nn{s=o8TFQTfX zX^m?<2r)@#qr|~Sib=W}r8!x1zIv@nQVe#961c8$B@xm#X{pdO0L7j!|72qTH?)5; zZ(_~xCRdg;?LB?V9((^}We~(dwe?b)NH4p#4SHFsJ0)cpe)XkAMV;#pnNJ!fLp`ME z=PmjCocRo5Xc~X~qdT81K;3IC#_XK~e3#DeE3K&>H3&w-HJHhX zG&3bK)mc7+i?LG&B=vkp=eR(5Ty&0$8e}hL@ECEpbMb#=P*Tukv|y?4UaV5nn7cJL zaDs1~M=kqv#(diWmGZJzM(?WFgh&Ut_P3}5j1RDOtCc#uN0$x%yNXa!5lT7&R-^^^ zdBLtRd4kgZEp_+48VBY610;+RdG+mowP*jSy@5Mrozp7!o!6)q>wIYh8-S!D9$-7rf*(zm%iyx??Z5nT^Sg(rwmiA8p7Vlb)}} zIPrV#^0hdq?3|V0R}_gFI~?D>f=O?l?s=G=u2(=;t^kgyq*K3B7}l0aj};b-&1GB> z9ac**v{glZy{8yj**G#pr`&{uu)2POf6kj`wgy1ClI)0#xK-4&8Zly>Y*V0U>K>$hovd-Gk% zeiS?FbJiKzUNdg(N0D{rW~Y6A1eqYLC;Yy1pcf4?@5v`MiJX%fYCh~7T-$BH`Mxb7 zm<>2jL(lWd-Mm^+r?(-*UCX0HUg_)mWv>Es9G3`)1SNlsx=Bp*C&XWd-3!-n8h4r9 z6*FG%l=`-mUw~c5{8X~tM()B_FS>cdD&zI8I(oy_g0EFYEAy({Jr8_s^*jz;S+i^$ z#Hcz-0)wB-BPu=ma9Ey41rM+6^--bpsOVLxU~&QYwWs!~K9aLGZ_HKmi9EVD zPOazUy$e&A`DgNE%`mg4_}~xb9R~1%=pBFKgE!0o(~g)S$6zKcSAY*52h5YV?I|LI z;nuG`6CX%dR}J&pg6dB2!C%SW=^O2N{h5GWYnW-Kqlp2hEfz>~fDaCt7V%2OFk_5K zcQJhu?|iz}EfM=dCj7{uRJ!-^V2=Ybd!fPa^pvR3JKeLmt8{5KGfJNjxMR4P;VysJ zZWog1Wgd<6A9b-4?cd_>6a4%4_V2g&_n+2 z?u`^?fSJs=(mv9W#xQ~{Vg8=t-+yy!bxnG>8E|g|2*~^$xBpBaJ`DJI#iNK}#=r05 z->xR9B9^8Q|Lx!{ zPVJv~XpL7isjD&nerUfR+V6+<+dj1ICG3(ZEqIPC<0w9Ee_tG5(_kNkMI&S{?r|gT z*pw?K0lyft{2aC5yH-?|J)`|A-d3JW*VAWj06VOdHUK(vPmZNNoJ8ER2 znf-GFoauPqDpt@SVD=9K{+xfN#LXDw`gWU)Uf8bd;|SK?YJU8$Kif5iUqJ)me?2#n z{W|RJV#_~`{9xBc7&YS`{*FF){@EXB{qa-#-Jq2P3kc;qZP&LgRMeud!Kd?~S@EGw z><-P3+Ihgfo*I?M;`4{$kNaLvwCHA~9qwq$z6c9*+H$aFTJFWgG=6`!_3ZqMoAgE6 zqhXQ_?yhgQX|sr)?-!p&+iZ?kt~sEii`}ON3aU*r#dg*0-mh+(iP~*w5#Wc$Er#i* z#VlV=~ zqP7>#-4+Dbc}=K6^09w6Dw>A0de;w8VE;LX{geky$vct9lftirO5n{7418d9#rhx_<&$^kA z8H~RT(cyR7xJr`bjjK4lZNIrM)1l#pZhVcQ**!K4N6VeOgh1Tie4@n>OY+QN8ygZJ zQ$(s=AGP{^yVFN#ktA3^NLI^r#;W;;L3nlkL11~B2y}m(HXXNOLInE2F`+G>Hv|x% zu;&rLFo`)A&8|6C=ze6G2XEGB9J>}XN1q0i=>%h}|Mi_^Nk{yz#<{Dx&%7J{3MVo8 z^&#`FWoj?BfjKtB5Pm&!+{-G@?(G;fS|GPsfOgqFH^A(eC+*c{x#&Chq=9h!7M=Iq zU2<&-eLR1R@U0&le{P<%B;>ZCoEq}y4stv24+f6gkdFhXG-z+BTNp zt&WhjFf{Yn;^`PT0e3O%!yz=3=Mo+sxy$V?xITZ(1P7MKXh29i#(ULJh!fbk6Mrbo z2|xA&SWp5Z#BBftHoqKsCc|75EwupN0pXZ_kdT=_o$PpGEerNSHepHa-L<&3;O@tR z>@E_ZXYuJiHSABDui$X;l97hprHXwWgP3{%*mdG8!b!xvA+$JLxAceC>Mdnn!0|2vt)xU+5=IePf&{f-;x9*Ta3OS0l;I6C(6>fA zPFi`s8CtV+RiI)Pt>&*#~PCI`DsY-pdyK#zdkuKrt~r{t$YkcmRuyjUYIQ z1t56di=2o6!easf#*8o!smuyTFxq=<+s}UcKSX*0^f+-;<`JY9vquJ&;in7+I5*54 zM0DC328B&`;8fHBl`)7ZK zylj)vezezhgn=JM?mpPuVKLCI+7$dB?e*eVO9MArF1H33$r^lIboFt>tik0D;jPC0 zMkVAGN@Fz_Lju%%_yon~5CN$KVSFLEIhNcD0`2QYR6X^C`JJKWRz0+Cq|JTeK!;+c z8`+WlHudEdyc!57@7wn0QxH{v>Y0Dm27SFl4{!``o$UM{FKZUwX=o#QGEg7oM>C{t zQQLBgF2-KIxf$ARnE6xZfBVY? z2eO6VyomOqT@4EM8o|CF5TVJw_y+-jGS(jL`JY11X7?Q?y)n$y#B^=jylsCO{_s{a ze~vAmK{7Xxk-cq|pf8Oo#y&Xl?o3CPPU#2jt~E@PW41pW&7K_%&=e#Xh}vOCAr0N! z2{nXNt>sI-wo%u9C{<^X{r5!6=2bWxX z=&o(EK-Ks#Ae~?!)Hx9YfQWycdsW6gaC^T{miN8Uiy-4=Fug%_Nvl{tZPx%6nkF}m zmSR6#im{rXOrsuy&WaKmz3A-nv^^M6-^SZT9jeOx9)jDBcx3ZD~qIk$iQ zWA^$s;Dzxf!VK}zGe^=MjLQL1ln^f#><1zKX2GZjqSx>Fg?XfigK>X%c29%r`J*58 z+5lBTmd-D3igTko3iouKsFYe#2Aneu8yXt|EN>VFPugMK#9YI9u$bLY4X^^)fg++k z2#98{dGIhCLjZ%(65ZL$-V$N=ZJWp~=)#I@@2PjkJ@A*hcPSqc?ah%_f@4gIdFE6k zhWxHtSK1Rll|TKR|H^+q12&Hv;=b{FLk&3MtNDm>f|+NA!SsTnp*lOU`gG(SbdfE< zsG5)+9VS}kV}G$8wK{YU*53?&A#DGQ>SNxv%sOuP+g7OY5*NK^PkfCMbIpXz_HM9% z49AQ)`)zoT)g5lLSaH(ciU%Ob{xWbo+fsD$6o}YprLk{)?Y)0Jwc?(0kk0L>AI(N; zBJd#mGXE3r-ch)FC*kg$WOwffcW*!3y|LfDc+ZfA281!*u3371agu|~KEV9|tOeQ; zT;@JgyT#gf*DaQ8**p6fSrNE?a(Z!`I5i#~wM!KJiMq?9mP?y@S9jF7P?Ff{%DmZ% zo0WN)j@Pc_meqf3ICgNorHReRMbs@$uUP@;9o#An?!9aL8CYrPQ+EcghVJBmsBNyN zK^E0t^+WXzD~_Q6%)#&rdlM17-QBH)lQo%R%X0ipUm2 z#r&V8GkHYMWO5@B8#5h01|PW-^Uzolj2z4urFIYRY?uK^2i30J30lsqD(Vw1<I5E4lPAQfz;Yewzll^K;H3s z3v*q8;Nod%+h}gf;CV4B*F$h*xZD5f?k(G0Xkw$*=1KcAsk9Ul>dhvGH1Q$f4oNQ? ztHnXRfprP8t75&H-1-Kqaulq4^9NmKpV_xOWja#EWf3JW%=g;Q_6&lq_)(_i@X>*F^GkV&R+vSJ^ z;ie+|*{+$g$JdvjMMnxA=6g7DQtGKww|kg=pC5VlD}R}N@r>hq5dNXQ*^Hb)T!>DH zV^M!7ve~gUppUu-@zd_E#~|CnBGY{IRhe1GbJbp#BxgW)Q{Fc^S@ON5>hp z+KgYq)bZo!j6W%GyeZM{bK=xSpr%Rh%`2+tbk-_^30YSnLLvh*rv*6QCIH`ph-Byc z-rf5rUV{?)XBiUKSSPqhqcV1;17exOcwv9)k_bO|q$N7ifCwQz%#hMkd!{k_ej<21 zF~U9i=}h3)?BM)sXWK;Q?_6V2JV&aLX`sjZV z;BJQX0WoBugzuQBP53$L8;!D*96~7Jen7?B0ZhGd*Rh9=aWJo=vw+!5bXGvOfY7)) zvJi14&3K&c@dVg2>%GZ)T(=8m*dJhwaUDI;gxh8o0--L_p7OYX99b>~4^*qQM_UFx z+^F7I9}wz;zFyJf0IyJyN{xwIf%ku}!@~u_o!FbaF^Y=!-kf7yxE}`@#{M)sL;Gfh zsF8KC(bj*3_%1~Hebd}AaaVT3UbT&m_L0?tySK%JSC*we@@KrAHFzsTinX`qupGnT zAzpa*v1%dDKpC%~*3IK+%lTqD?8+`nEbo{Z8>EXLy17{!FKb4(Bb-x~25x^I^uxRu zqP7Rt0~g(`?adIaFys^?H;5a9Ud|iTFz=K=MbD&3{%WV~^?Hf5MK`NUp%u=#{ z^8Pr1>66DPzmimjo&pnb1zUgH#F(J)y^a1e&Hdhv0uKv<7bYT#m+Z~@vX6BP@nk9dTO1#g}{r8Am z@=>r&%Q`l6nWCf|H;8UqY@kjs$A2Op-o@zlto3pgXt{508?_aHh`x^KgCl!X>%Y7{ zAT7;W;O`3p(a`INI`RhTJr;m=te^Nv{L|jn&L(2dE?pJpt74srHirax0P(4!w^dXf z`P(?+xE*o7p(GUqh5&!a6`;uxkkj_9Hh}EJa}cOekDRL<_AGexTQa=B>*vgtzWOvk zM6JQztq4i-7<`mY2?%HK-xykF z8#jA1mA?SQNlS3XlslrpP#?ALxlgK#ZLdz~Yr%fIBYX(3&E|h1#A)dNV7ncNhhA`9CoZnm7>R+HLa}naR3K zMVjmC2-<&$+QWZTLC9!dU2FwR>cA+A7N1RUOyPj+q28?>vzN2YS^rE97;gRg2%1t| zC2dL;him!;1%)8x(uuKg<2pg5Ss+lJk8x|@nMPm$?9;dH!k}L8t>Y4iLNxM%I5jYV z-)mkY4vy`zda=@0&HFqcN5!4rD;uB4P(vRiW49WQ{2zZdD=$GLT)JVwK) zU8QNOBk3oXyY}t~tG?xt>2GuXh|k^#^F>BG;!+gKh(r1!-Y_Az z!w8SfFu06kU85OX%zt<;(UPcl(fz)-ihdXb^~ZlU2Fw#1Rpy^ScH~=XrbPV`DdgZM z5m^6{Ndz3l-Sf`G@NL5k$n9hA0TTZ#l`%t+t{aWzoTxv=Ljqb3-m z@OpoH9AYy|s2!hsi;J;}U$^3KQB3j)NTV2@devAJyc8O|LX<}>oX?zdK8axtjnUwD zA4W}}AUZ;0)+{6g=zDLE2doZoHEG<)eA~PdG=nKp&K(i;$gqy-A-c4_v=h`H4#3Mi zP$Q%3_7-Z#%=t4=E*K~+f*eHNU4N%o9oc_#7$FMPN%IELa7fY6blGUp%zMcGOo+VS zoCkn2Bi?1+ywxfK@mHGk9$nJCg4Pn6pTnCZ6rOFEQe%_N*}Lm440*w(EN&8u&?q*- zfC4Gzj;1B>!eZnzW!7&PBKJEExi=dDx!YUv*xr(q+af6pj)0cYh+ng;_GG|M&eMNt zCtzS5n6puQJ|LpTytd=A6XR*vu@Bw*f7%(K5IXf4eoz^mR8YMrp`fOpFRzIOq{T4#!WS8N6un64SYlF zE^YvNk6UWtPUTCxXOye(rWrD4ys=%njfatQShCxS8myMEh2-)jp|t3da%2c4zPInS zd+qjah1RscOmC#Z_zEflcg<4%$4E?*aNMD@$RKeRndG*1l5^r1dIUt*^ zY7lDx?g_}_0rSyqRY!PUrY-s$)P}%I`yGGWI?XM5GmM1;|fO~ik4?X2FJk7xJ3W4X}*&v#oAL*NTq$gm& zdq+YA&B_l66M;G{2X@{NZ*?^Nxu3yZ&C~rC&QU6K&cIu2%dK8!6XSTnjkXMft*hF0dn`7m($_C0SIu+Ua_ESlgxtq%x|fIZlYsSh z2&UplPkmfI&J6a;Jix>@8#{s4V4qU12STF=wW9JbZq1RAuZ7=m$n5pw?~d@Mxoij? zMPZ;0#ZCCWWdha=B{p&sINjPggTp=bYI$0O5uGC)r?@eqCLi<=FW1KRYY&R zh@I;fx@4XW&5d|Kyd!X%IAgyvq~C1&yWObZJ~w~CV4Ag|=RaQIrH(3rHw7~87AO@5 zr=A|6*C~~3TRwtV(=5p$J|9Ssus46qU1R+T}0mxR1?~yH;zYb%_x|e1-J&JkyQT)>V9A$r%oPZ$kb^l zwK%=2GlCxx_g&;)Bj=rfXFh`!pZL*5c^HD^(*d&Zb|~bWU=2_uix;0)V43Tvp^8RA zNpPX@B?ALbyjzGnxHYI#Ms&r{s57GP+;M--@}oCos8d&D^Bm_gA6n0BY7a$HhU@FF z(PohYG0xwR?Vo>uqd3wg{4hOxZNQMW#6`iAAL_1=a&5&z43)uclg$CymO$w_r_%T= zQqM?pCO9<$y6Ch9|9~ii_6sB%$o=3|hS%MWOCxi)Z4a?$R6s^;*&EXbrdHbabYy=_ zyb&T_e?%=b>3K%b)4Tbo)Pdg(Gsx_C@Xl~+GjYxmMsfiXMZ~oB@#BDyqK^?WcmS~q z{=_JZ9Ozfci*VMc0^7djw8uwb#@i37_mA*>BQcl-onS{b*hf=R2`L1)lq-;RP9HnY7(C+Gve&28q-YPBPW1I#P*V^&Wuq5 z4xjz=k5C->-Cjw%#EZz-oXKRz^Z@_m48(=@A(0c?`|BvZOQNmeu;j>)eS~ou=bc9w zdtNmec_p>=Pf#nmO;#9RPT(^4+{!iyhMIDj;!)z--*QnWD9lBikpY96xjTQzL!-?! z-$t33;Rxxon-TR(Z*6+s6q6*1FvD(LFNaBVVSAi5z&k>o4tfPx1v1F3+^&pU6M4KB z?VbITp~#y%WHlX*%*c|$oc6u@ENs*0(r%NH8O^@^Nfl=iA4xpCjH1di43`kam8efw z=qe;5aF^y7Or}o6-r6FDXs3U;MLW?t5i#r)Fh#Q~5{ecLjM8|A&B2MBveRfCN1hKm z$T&Ba*g{UuBZ5|=vmu@PmWyv`UCgJR<$McCPxpv=1C_oPU{v8EkEVWb!A15sAW909 zL#f|$K(C1qK^(<#CRmbv=L#KW(4cE zd@|6?CE?hZqA+xs&@F$pPu^&4J5uqF)@{U4LtJ+_HrCNJm-G7?b%BsO8oenH@dM9> zm62yxr))!dF^^V9u_Z0yLW0BkI{p={GDlDo3#sAD*e*r`%V=UtJZn@VHk#W-eA&(< z_Pp^C2_W^kUxTX~+4A`y@MR_5DF!4cB8)q$v;HDIayrAy0r7vkwi`FbD*~j$)`q>0 zL?4CuNRJG|N2+f_S{yNYX#`-G6WR-y1LK(F^y;X23%22M2(EcJE)uP6r{FImI?l0| zaso^DTfdJ`I=a|DArE$`w=nJ*-9=qSVSmsw(W}22Ujh_3qwB@IjuyKEa&>xs3;BIY zx>6*0huY8L#b|%qqA23okNE0yyZ1PPsh}DTo4@z8<$$oI;49poY1EOrhiAx~zfjET z#K%<5;)uexhRZ|>YI3CEz4$AU-vWmI5j9g(x#|r-DY2w#o!0ZhIM9roMHHwVbp|Bn zZJ=xK{b&-(Ms)s^3ZJ@+L@AqajIfAXU?qx&S4DcyMkK~Me_6>G{??f3tK$xZ5*~?eU?eQ z)7~Lw^sxP{UNNnoH<|1mCbgBXVS&glJ5qMd;MD)RNK& zj$4*L6U~2k3=K_)=1*!xqGPpG;bEJwT?mf?MWtf`G?iq|b^rtBegcFQbGH1O>cnhKja(DtE3Uz(3*I@8W;bo55`nH`i(4k8WOq%u@-^j@oJP?|FviM zhxC6P>d$1XTI8*<&&cXLDt=AnIDZL~#JBC=|JXmL-YeMAN~oa}sX#A?3e;l)b?=TW ze*UKMjaR6hC*Ve3$Domsns^FIgYvha(i$#)@5PI>xB$TMNpGnVJ zg_}7G_vvv+*dEHpTGvfv#sjvFB8V@9)u>S39Hc6W#fd3xzpye_Q_I z4GUx9)8j-i?o=@Lx16z`gK?oBN0jKo5vVKBVW3Y9mYY~`p+9)bz$3W#B43*k6kLCR z0#4i?KTvc)xZa+V(VTp=AH_*Av4re&e;W8mCPRr$v346B3q{Qh_K^%erYQNwW}C5L z9FprXkn0IVb~(mxYxYp$<342q2GGlo&j8p?7D!r(3@=op0wK2pK$pu;MJCe z|BR1Upf&hBN97;aty{SH^;ZIBOk#f)&YB;6(gm{{FzWX5|3u`x#;*Y_6ooalNxC8O z5PTC`1I`#w_B|RkAE7Ta-=FxjybVFuQ!g4tj4|5i1AMr!d8Q_WTf_)yBeJE=#|K*# zRp^L33*3jhGo$$&q022w9_R!_{Wn|X!q^{c$7=bQ-+eD5`hd;YF(Hg}GkkvsR2Dt< z2Bp9m$kmTO@+nUMZ1We<0)ZsiVg~A$oR#FjDIGg`Oqh?6@xczg!HD<@Z5&@8J&W3* zQEbl;F%+uzY;_n{xby__FTET1#d7sQ%}+$b)Bg5Ae?#Mt0S{931e}v@Mjq|n5S)OE z71pg)iILSM)37ze(-h;ECpu`!BCh|v?77?VPG3FA%tQa zUx4rSnbq}#1mh38QOC~4Z1&M!8mKFVzdGQ9g9Hta_G!x84Z83NfTf9`_x!^_rVeOJ)s5{yLPBKpg+AnuKujv(YN1>TEYOi3cw&{OI2WxVJ_EIcBQ%%0?h&0lf1_R=K?vl=id&8Eftr0Ob8TfpI+Y9O8teHo?e;fZci6w)&a?@*_ZY z=mJF7GwxeBn)cc6wo96Y1!Z-jw>0F@Ez1Suf1z(3IZl8coQ-XCNOiG!?}`4F#Fd~c z*C|agb`&;*xEFs*@up6~uvk3}oz~nd8`Q}qxH&h#A>BmjXKC@e^)d3C?i)^z>WYeM zxL=nix!ms*wXXX#q&`&J;q7C7^~c|N@SA!It!Xgw5IZ3$kQ~=jPy3pU9CbF zaDW3d)fq6QK9w8!4bn5v7<+n8o8O2_x*ym&<|T#%NO*tZkSh*w_7T$HIHK@|sGCrH zICg^GeG{XTH{F=c7`P;6Xwku&3hw~Cq#}-e(jHW9tNm$S--+-nzuoHnp^|yL2ShjR z;cq1Cyzein%sSu0Iy?Gv7_YO_ida_-yV`SW2r(irMD^pQ7*aT7lRpLap4CBag|0>MAO1s4b^ht&fJ7m}Js0$VwcLXD z)?Fr*sArc>C49WrM3o7)Tuu!TLW0LXGJW>~h8* z5e*fp6j1m?Iv4%wc}}D^BSM=Nr{K`iuo-13{}9C?r>Y)Pj-7Z;?HV@6A z{pEkiCN?4Vo!2y9sDFAhAoy-_9Y+EDrs$yeD+KmGw#*%Y%&`SA8e>;b+&_Cs0vKrC zQXi~I+>O|d!Zp7mMWrHYW$!}N*>f}ib3ly0gWRD9VXP4GdjZYn|NQv>{Gb2xKUb3v zv)ljqfB(<_=YP(x&hO4Am*2Ie*uF`)hJL`}G(6_Gy0E{&6;YX#bnd=hp`Q`R(ne8NPpa{=xipKbzm4 zUti%5=U2C;zxnL;)8$>*0U7A@Y&Ly=>%YDBt*4W#$^1(Q;s3TDFs}3413#z9<>mF~ z+tK}h(uL?SGfEf9zP!-<_E+?`L1Ir^RcZX87mzr@Na^cfnNC$$x+HZ+~+2 z>BC?4#C&Tb`~D;)GaqJm=6|GKvk%u7=jPj|tG{ReoL|lUHh*1xx-?Ya?#s>WHh?s} z{(Ck}L7toUZWrX|!^D!0cjvcvmh?>T4Dq{vxV4n+pYuzAG@t$7*~88C{4O4h>pmP+ zOQZj9`<8jzkUaXn{n=B(p!MIAJO95Uwts(`Pws%)x@W;l<_|k150Tsv=4Z3iX@7pX z%op?f&18N%^Ix`Zzg(GRyq)|rJ9Iz!Km5h&pMwpZ-A?D{f7x|ewVf@7bbe{SIE0!l2vz l(M6`0V=juH^yD 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, "injector_service_worker_url_suffixes"> & { +type InjectorConfig = Omit< + Required, + "injector_service_worker_url_suffixes" +> & { injector_service_worker_url_suffixes: string[]; }; export type ClientConfigOptions = { @@ -153,8 +172,12 @@ type NormalizedClientOptions = { upstream_endpoint_kind: UpstreamEndpointKind; }; type ModCDPEventNameInput = string | symbol | (z.ZodType & ModCDPNamedValue); -type ModCDPEventPayload = TEvent extends z.ZodType ? TPayload : never; -type ModCDPClientCustomCommandParams = Omit & { +type ModCDPEventPayload = + TEvent extends z.ZodType ? TPayload : never; +type ModCDPClientCustomCommandParams = Omit< + ModCDPAddCustomCommandParams, + "expression" +> & { expression?: string | null; }; type ProtocolCommandSchema = { @@ -168,20 +191,32 @@ export type ModCDPCommandSpec = { }; export type ModCDPCommandMap = Record; export type ModCDPEventMap = Record; -type MethodName = TName extends `${string}.${infer TMethod}` ? TMethod : never; -type DomainName = TName extends `${infer TDomain}.${string}` ? TDomain : never; -type CommandsForDomain = { +type MethodName = + TName extends `${string}.${infer TMethod}` ? TMethod : never; +type DomainName = + TName extends `${infer TDomain}.${string}` ? TDomain : never; +type CommandsForDomain< + TCommands extends ModCDPCommandMap, + TDomain extends string, +> = { [TName in keyof TCommands as TName extends `${TDomain}.${string}` ? MethodName> : never]: undefined extends TCommands[TName]["params"] - ? (params?: TCommands[TName]["params"]) => Promise - : (params: TCommands[TName]["params"]) => Promise; + ? ( + params?: TCommands[TName]["params"], + ) => Promise + : ( + params: TCommands[TName]["params"], + ) => Promise; }; export type ModCDPClientInstance< TCommands extends ModCDPCommandMap = Record, TEvents extends ModCDPEventMap = Record, > = ModCDPClient & { - [TDomain in DomainName>]: CommandsForDomain; + [TDomain in DomainName>]: CommandsForDomain< + TCommands, + TDomain + >; } & { on>( eventName: TName, @@ -194,7 +229,10 @@ export type ModCDPClientInstance< }; class ModCDPEventEmitter { - private listeners = new Map void>>(); + private listeners = new Map< + string | symbol, + Set<(...args: unknown[]) => void> + >(); on(event_name: string | symbol, listener: (...args: unknown[]) => void) { const listeners = this.listeners.get(event_name); @@ -217,9 +255,11 @@ class ModCDPEventEmitter { } emit(event_name: string | symbol, ...args: unknown[]) { - for (const listener of this.listeners.get(event_name) ?? []) listener(...args); + for (const listener of this.listeners.get(event_name) ?? []) + listener(...args); if (event_name !== "*") { - for (const listener of this.listeners.get("*") ?? []) listener(event_name, ...args); + for (const listener of this.listeners.get("*") ?? []) + listener(event_name, ...args); } return true; } @@ -236,9 +276,16 @@ function normalizeClientOptions({ const upstream_endpoint_kind = endpointKindForUpstream(upstream_mode); const launcher_mode = launcher.launcher_mode ?? - (upstream_endpoint_kind === "modcdp_server" ? "none" : upstream.upstream_cdp_url ? "remote" : "local"); + (upstream_endpoint_kind === "modcdp_server" + ? "none" + : upstream.upstream_cdp_url + ? "remote" + : "local"); const injector_mode = - injector.injector_mode ?? (upstream_endpoint_kind === "raw_cdp" || launcher_mode !== "none" ? "auto" : "none"); + injector.injector_mode ?? + (upstream_endpoint_kind === "raw_cdp" || launcher_mode !== "none" + ? "auto" + : "none"); return { launcher: { launcher_mode, @@ -250,52 +297,80 @@ function normalizeClientOptions({ upstream_mode, upstream_cdp_url: upstream.upstream_cdp_url ?? null, upstream_nats_url: upstream.upstream_nats_url ?? null, - upstream_nats_subject_prefix: upstream.upstream_nats_subject_prefix ?? null, - upstream_nats_wait_timeout_ms: upstream.upstream_nats_wait_timeout_ms ?? DEFAULT_UPSTREAM_NATS_WAIT_TIMEOUT_MS, - upstream_reversews_bind: upstream.upstream_reversews_bind ?? DEFAULT_UPSTREAM_REVERSEWS_BIND, + upstream_nats_subject_prefix: + upstream.upstream_nats_subject_prefix ?? null, + upstream_nats_wait_timeout_ms: + upstream.upstream_nats_wait_timeout_ms ?? + DEFAULT_UPSTREAM_NATS_WAIT_TIMEOUT_MS, + upstream_reversews_bind: + upstream.upstream_reversews_bind ?? DEFAULT_UPSTREAM_REVERSEWS_BIND, upstream_reversews_wait_timeout_ms: - upstream.upstream_reversews_wait_timeout_ms ?? DEFAULT_UPSTREAM_REVERSEWS_WAIT_TIMEOUT_MS, - upstream_nativemessaging_manifest: upstream.upstream_nativemessaging_manifest ?? null, - upstream_nativemessaging_manifests: upstream.upstream_nativemessaging_manifests ?? null, - upstream_nativemessaging_host_name: upstream.upstream_nativemessaging_host_name ?? null, + upstream.upstream_reversews_wait_timeout_ms ?? + DEFAULT_UPSTREAM_REVERSEWS_WAIT_TIMEOUT_MS, + upstream_nativemessaging_manifest: + upstream.upstream_nativemessaging_manifest ?? null, + upstream_nativemessaging_manifests: + upstream.upstream_nativemessaging_manifests ?? null, + upstream_nativemessaging_host_name: + upstream.upstream_nativemessaging_host_name ?? null, upstream_nativemessaging_wait_timeout_ms: - upstream.upstream_nativemessaging_wait_timeout_ms ?? DEFAULT_UPSTREAM_NATIVEMESSAGING_WAIT_TIMEOUT_MS, + upstream.upstream_nativemessaging_wait_timeout_ms ?? + DEFAULT_UPSTREAM_NATIVEMESSAGING_WAIT_TIMEOUT_MS, upstream_ws_connect_error_settle_timeout_ms: - upstream.upstream_ws_connect_error_settle_timeout_ms ?? DEFAULT_WS_CONNECT_ERROR_SETTLE_TIMEOUT_MS, + upstream.upstream_ws_connect_error_settle_timeout_ms ?? + DEFAULT_WS_CONNECT_ERROR_SETTLE_TIMEOUT_MS, }, injector: { injector_mode, injector_extension_path: injector.injector_extension_path ?? null, injector_extension_id: injector.injector_extension_id ?? null, - injector_service_worker_url_includes: injector.injector_service_worker_url_includes ?? [], + injector_service_worker_url_includes: + injector.injector_service_worker_url_includes ?? [], injector_service_worker_url_suffixes: - injector.injector_service_worker_url_suffixes ?? DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES, - injector_trust_service_worker_target: injector.injector_trust_service_worker_target ?? false, - injector_require_service_worker_target: injector.injector_require_service_worker_target ?? false, - injector_service_worker_ready_expression: injector.injector_service_worker_ready_expression ?? null, + injector.injector_service_worker_url_suffixes ?? + DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES, + injector_trust_service_worker_target: + injector.injector_trust_service_worker_target ?? false, + injector_require_service_worker_target: + injector.injector_require_service_worker_target ?? false, + injector_service_worker_ready_expression: + injector.injector_service_worker_ready_expression ?? null, injector_execution_context_timeout_ms: - injector.injector_execution_context_timeout_ms ?? DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, + injector.injector_execution_context_timeout_ms ?? + DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, injector_service_worker_probe_timeout_ms: - injector.injector_service_worker_probe_timeout_ms ?? DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, + injector.injector_service_worker_probe_timeout_ms ?? + DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, injector_service_worker_ready_timeout_ms: - injector.injector_service_worker_ready_timeout_ms ?? DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, + injector.injector_service_worker_ready_timeout_ms ?? + DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, injector_service_worker_poll_interval_ms: - injector.injector_service_worker_poll_interval_ms ?? DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, + injector.injector_service_worker_poll_interval_ms ?? + DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, injector_target_session_poll_interval_ms: - injector.injector_target_session_poll_interval_ms ?? DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, + injector.injector_target_session_poll_interval_ms ?? + DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, }, client: { - client_routes: { ...DEFAULT_CLIENT_ROUTES, ...(client.client_routes ?? {}) }, + client_routes: { + ...DEFAULT_CLIENT_ROUTES, + ...(client.client_routes ?? {}), + }, client_hydrate_aliases: client.client_hydrate_aliases ?? true, - client_mirror_upstream_events: client.client_mirror_upstream_events ?? true, - client_cdp_send_timeout_ms: client.client_cdp_send_timeout_ms ?? DEFAULT_CDP_SEND_TIMEOUT_MS, - client_event_wait_timeout_ms: client.client_event_wait_timeout_ms ?? DEFAULT_EVENT_WAIT_TIMEOUT_MS, + client_mirror_upstream_events: + client.client_mirror_upstream_events ?? true, + client_cdp_send_timeout_ms: + client.client_cdp_send_timeout_ms ?? DEFAULT_CDP_SEND_TIMEOUT_MS, + client_event_wait_timeout_ms: + client.client_event_wait_timeout_ms ?? DEFAULT_EVENT_WAIT_TIMEOUT_MS, }, server: server === null ? null : { - ...(upstream_endpoint_kind === "modcdp_server" ? { server_routes: { "*.*": "chrome_debugger" } } : {}), + ...(upstream_endpoint_kind === "modcdp_server" + ? { server_routes: { "*.*": "chrome_debugger" } } + : {}), ...(server ?? {}), }, upstream_endpoint_kind, @@ -305,17 +380,22 @@ function normalizeClientOptions({ function defineCustomCommandMethod(client: ModCDPClient, name: string) { const parts = name.split("."); if (parts.length !== 2 || !parts[0] || !parts[1]) { - throw new Error(`Custom command must use Domain.method format, got ${name}`); + throw new Error( + `Custom command must use Domain.method format, got ${name}`, + ); } const [domain, method] = parts; const target = client as unknown as Record>; if (method === "*") { target[domain] = new Proxy(target[domain] ?? {}, { get(existing, property, receiver) { - if (typeof property !== "string") return Reflect.get(existing, property, receiver); - if (property in existing) return Reflect.get(existing, property, receiver); + if (typeof property !== "string") + return Reflect.get(existing, property, receiver); + if (property in existing) + return Reflect.get(existing, property, receiver); const command_name = `${domain}.${property}`; - const alias = (params?: unknown) => client.send(command_name, params ?? {}); + const alias = (params?: unknown) => + client.send(command_name, params ?? {}); Object.defineProperties(alias, { cdp_command_name: { value: command_name, @@ -364,7 +444,9 @@ function defineCustomCommandMethod(client: ModCDPClient, name: string) { function hasCommandExpression( command: ModCDPClientCustomCommandParams, ): command is ModCDPClientCustomCommandParams & { expression: string } { - return typeof command.expression === "string" && command.expression.length > 0; + return ( + typeof command.expression === "string" && command.expression.length > 0 + ); } export class ModCDPClient extends ModCDPEventEmitter { @@ -398,9 +480,19 @@ export class ModCDPClient extends ModCDPEventEmitter { auto_sessions: AutoSessionRouter; _injectors: ExtensionInjector[]; _cdp: { - send: (method: string, params?: ProtocolParams, sessionId?: string | null) => Promise; - on: (eventName: string | symbol, listener: (...args: unknown[]) => void) => ModCDPClient; - once: (eventName: string | symbol, listener: (...args: unknown[]) => void) => ModCDPClient; + send: ( + method: string, + params?: ProtocolParams, + sessionId?: string | null, + ) => Promise; + on: ( + eventName: string | symbol, + listener: (...args: unknown[]) => void, + ) => ModCDPClient; + once: ( + eventName: string | symbol, + listener: (...args: unknown[]) => void, + ) => ModCDPClient; }; _launched: LaunchedBrowser | null; @@ -452,19 +544,33 @@ export class ModCDPClient extends ModCDPEventEmitter { this.event_wait_cleanups = new Set(); this.auto_sessions = new AutoSessionRouter( (method, params = {}, session_id = null) => - this._sendMessage(method, params, session_id) as Promise, + this._sendMessage( + method, + params, + session_id, + ) as Promise, () => this.injector.injector_execution_context_timeout_ms, ); this._injectors = []; this._launched = null; this._cdp = { - send: (method: string, params: ProtocolParams = {}, session_id: string | null = null) => + send: ( + method: string, + params: ProtocolParams = {}, + session_id: string | null = null, + ) => this._sendMessage(method, params, session_id, { record_raw_timing: true, }) as Promise, - on: (event_name: string | symbol, listener: (...args: unknown[]) => void) => this.on(event_name, listener), - once: (event_name: string | symbol, listener: (...args: unknown[]) => void) => this.once(event_name, listener), + on: ( + event_name: string | symbol, + listener: (...args: unknown[]) => void, + ) => this.on(event_name, listener), + once: ( + event_name: string | symbol, + listener: (...args: unknown[]) => void, + ) => this.once(event_name, listener), }; this._hydrateNativeProtocolSchemas(); void this._hydrateCdpAliases(); @@ -487,7 +593,11 @@ export class ModCDPClient extends ModCDPEventEmitter { await this.transport?.waitForPeer?.(); this.event_schemas.set("Mod.pong", Mod.PongEvent); if (this.server !== null) { - await this._sendMessage("Mod.configure", this._serverConfigureParams(), null); + await this._sendMessage( + "Mod.configure", + this._serverConfigureParams(), + null, + ); } void this._measurePingLatency().catch(() => {}); const connected_at = Date.now(); @@ -508,26 +618,45 @@ export class ModCDPClient extends ModCDPEventEmitter { const injector_started_at = Date.now(); if (this.injector.injector_mode === "none") { - throw new Error("injector.injector_mode=none cannot be used with a raw_cdp upstream."); + throw new Error( + "injector.injector_mode=none cannot be used with a raw_cdp upstream.", + ); } const ext = await this._runInjectors( - (method, params, session_id) => this._sendMessage(method, params, session_id) as Promise, + (method, params, session_id) => + this._sendMessage( + method, + params, + session_id, + ) as Promise, ); const injector_completed_at = Date.now(); - this.extension_id = typeof ext.extension_id === "string" ? ext.extension_id : null; + this.extension_id = + typeof ext.extension_id === "string" ? ext.extension_id : null; this.ext_target_id = ext.target_id as string; this.ext_session_id = ext.session_id as string; this.event_schemas.set("Mod.pong", Mod.PongEvent); - const ext_context = this.auto_sessions.waitForExecutionContext(this.ext_session_id, { - timeout_ms: this.injector.injector_execution_context_timeout_ms, - }); + const ext_context = this.auto_sessions.waitForExecutionContext( + this.ext_session_id, + { + timeout_ms: this.injector.injector_execution_context_timeout_ms, + }, + ); await this._sendMessage("Runtime.enable", {}, this.ext_session_id); this.ext_execution_context_id = await ext_context; await Promise.all([ - this._sendMessage("Runtime.addBinding", { name: CUSTOM_EVENT_BINDING_NAME }, this.ext_session_id), + this._sendMessage( + "Runtime.addBinding", + { name: CUSTOM_EVENT_BINDING_NAME }, + this.ext_session_id, + ), this.client.client_mirror_upstream_events - ? this._sendMessage("Runtime.addBinding", { name: UPSTREAM_EVENT_BINDING_NAME }, this.ext_session_id) + ? this._sendMessage( + "Runtime.addBinding", + { name: UPSTREAM_EVENT_BINDING_NAME }, + this.ext_session_id, + ) : Promise.resolve(), ]); if (this.server !== null) { @@ -558,9 +687,16 @@ export class ModCDPClient extends ModCDPEventEmitter { return this; } - async send(method: string, params: unknown = {}, session_id: string | null = null) { + async send( + method: string, + params: unknown = {}, + session_id: string | null = null, + ) { const started_at = Date.now(); - let command_params = this.command_params_schemas.get(method)?.parse(params ?? {}) ?? params ?? {}; + let command_params = + this.command_params_schemas.get(method)?.parse(params ?? {}) ?? + params ?? + {}; if (method === "Mod.addCustomCommand") { const parsed = Mod.AddCustomCommandParams.parse(command_params); const name = normalizeModCDPName(parsed.name); @@ -580,7 +716,11 @@ export class ModCDPClient extends ModCDPEventEmitter { completed_at: Date.now(), duration_ms: Date.now() - started_at, }; - return this.command_result_schemas.get(method)?.parse({ name, registered: true }) ?? { name, registered: true }; + return ( + this.command_result_schemas + .get(method) + ?.parse({ name, registered: true }) ?? { name, registered: true } + ); } command_params = { ...parsed, @@ -593,7 +733,10 @@ export class ModCDPClient extends ModCDPEventEmitter { const name = normalizeModCDPName(parsed.name); const event_schema = normalizeModCDPPayloadSchema(parsed.event_schema); if (event_schema) this.event_schemas.set(name, event_schema); - if (!this.ext_session_id && this.upstream_endpoint_kind !== "modcdp_server") { + if ( + !this.ext_session_id && + this.upstream_endpoint_kind !== "modcdp_server" + ) { this.last_command_timing = { method, target: "client", @@ -601,12 +744,19 @@ export class ModCDPClient extends ModCDPEventEmitter { completed_at: Date.now(), duration_ms: Date.now() - started_at, }; - return this.command_result_schemas.get(method)?.parse({ name, registered: true }) ?? { name, registered: true }; + return ( + this.command_result_schemas + .get(method) + ?.parse({ name, registered: true }) ?? { name, registered: true } + ); } command_params = { ...parsed, name, event_schema: null }; } if (this.upstream_endpoint_kind === "modcdp_server") { - const result = await this._sendMessage(method, command_params as ProtocolParams); + const result = await this._sendMessage( + method, + command_params as ProtocolParams, + ); const completed_at = Date.now(); this.last_command_timing = { method, @@ -617,10 +767,14 @@ export class ModCDPClient extends ModCDPEventEmitter { }; return result; } - const command = wrapCommandIfNeeded(method, command_params as ProtocolParams, { - routes: this.client.client_routes, - targetCdpSessionId: session_id, - }); + const command = wrapCommandIfNeeded( + method, + command_params as ProtocolParams, + { + routes: this.client.client_routes, + targetCdpSessionId: session_id, + }, + ); const result = await this._sendRaw(command); const completed_at = Date.now(); this.last_command_timing = { @@ -639,17 +793,23 @@ export class ModCDPClient extends ModCDPEventEmitter { : parsed_result; } - async sendRaw(method: string, params: ProtocolParams = {}, session_id: string | null = null) { + async sendRaw( + method: string, + params: ProtocolParams = {}, + session_id: string | null = null, + ) { return await this._sendMessage(method, params, session_id); } async _hydrateCdpAliases() { - if (!this.client.client_hydrate_aliases || this.cdp_aliases_hydrated) return; + if (!this.client.client_hydrate_aliases || this.cdp_aliases_hydrated) + return; Object.assign( this, createCdpAliases((method, params) => this.send(method, params), { onCustomCommand: (name, params_schema, result_schema) => { - if (params_schema) this.command_params_schemas.set(name, params_schema); + if (params_schema) + this.command_params_schemas.set(name, params_schema); if (result_schema) { this.command_result_schemas.set(name, result_schema); this._setResultUnwrapKey(name, result_schema); @@ -667,11 +827,22 @@ export class ModCDPClient extends ModCDPEventEmitter { _hydrateCustomSurface() { for (const command of this.custom_commands) { const name = normalizeModCDPName(command.name); - const params_schema = command.params_schema ? Mod.PayloadSchemaSpec.parse(command.params_schema) : null; - const result_schema = command.result_schema ? Mod.PayloadSchemaSpec.parse(command.result_schema) : null; - const normalized_params_schema = params_schema == null ? null : this._normalizePayloadSchema(params_schema); - const normalized_result_schema = result_schema == null ? null : this._normalizePayloadSchema(result_schema); - if (normalized_params_schema) this.command_params_schemas.set(name, normalized_params_schema); + const params_schema = command.params_schema + ? Mod.PayloadSchemaSpec.parse(command.params_schema) + : null; + const result_schema = command.result_schema + ? Mod.PayloadSchemaSpec.parse(command.result_schema) + : null; + const normalized_params_schema = + params_schema == null + ? null + : this._normalizePayloadSchema(params_schema); + const normalized_result_schema = + result_schema == null + ? null + : this._normalizePayloadSchema(result_schema); + if (normalized_params_schema) + this.command_params_schemas.set(name, normalized_params_schema); if (normalized_result_schema) { this.command_result_schemas.set(name, normalized_result_schema); this._setResultUnwrapKey(name, normalized_result_schema); @@ -680,30 +851,56 @@ export class ModCDPClient extends ModCDPEventEmitter { } for (const event of this.custom_events) { const name = normalizeModCDPName(event.name); - const event_schema = event.event_schema ? this._normalizePayloadSchema(event.event_schema) : null; + const event_schema = event.event_schema + ? this._normalizePayloadSchema(event.event_schema) + : null; if (event_schema) this.event_schemas.set(name, event_schema); } } _hydrateNativeProtocolSchemas() { - for (const [method, schema] of Object.entries(nativeCommandSchemas) as [string, ProtocolCommandSchema][]) { + for (const [method, schema] of Object.entries(nativeCommandSchemas) as [ + string, + ProtocolCommandSchema, + ][]) { this.command_params_schemas.set(method, schema.params); this.command_result_schemas.set(method, schema.result); } this.command_params_schemas.set("Mod.evaluate", Mod.EvaluateParams); this.command_result_schemas.set("Mod.evaluate", Mod.EvaluateResponse); - this.command_params_schemas.set("Mod.addCustomCommand", Mod.AddCustomCommandParams); - this.command_result_schemas.set("Mod.addCustomCommand", Mod.AddCustomCommandResponse); - this.command_params_schemas.set("Mod.addCustomEvent", Mod.AddCustomEventParams); - this.command_result_schemas.set("Mod.addCustomEvent", Mod.AddCustomEventResponse); - this.command_params_schemas.set("Mod.addMiddleware", Mod.AddMiddlewareParams); - this.command_result_schemas.set("Mod.addMiddleware", Mod.AddMiddlewareResponse); + this.command_params_schemas.set( + "Mod.addCustomCommand", + Mod.AddCustomCommandParams, + ); + this.command_result_schemas.set( + "Mod.addCustomCommand", + Mod.AddCustomCommandResponse, + ); + this.command_params_schemas.set( + "Mod.addCustomEvent", + Mod.AddCustomEventParams, + ); + this.command_result_schemas.set( + "Mod.addCustomEvent", + Mod.AddCustomEventResponse, + ); + this.command_params_schemas.set( + "Mod.addMiddleware", + Mod.AddMiddlewareParams, + ); + this.command_result_schemas.set( + "Mod.addMiddleware", + Mod.AddMiddlewareResponse, + ); this.command_params_schemas.set("Mod.configure", Mod.ConfigureParams); this.command_result_schemas.set("Mod.configure", Mod.ConfigureResponse); this.command_params_schemas.set("Mod.ping", Mod.PingParams); this.command_result_schemas.set("Mod.ping", Mod.PingResponse); - for (const [event, schema] of Object.entries(nativeEventSchemas) as [string, z.ZodType][]) { + for (const [event, schema] of Object.entries(nativeEventSchemas) as [ + string, + z.ZodType, + ][]) { this.event_schemas.set(event, schema); } this.event_schemas.set("Mod.pong", Mod.PongEvent); @@ -714,7 +911,10 @@ export class ModCDPClient extends ModCDPEventEmitter { } _setResultUnwrapKey(name: string, schema: z.ZodType) { - const shape = "shape" in schema && schema.shape && typeof schema.shape === "object" ? schema.shape : null; + const shape = + "shape" in schema && schema.shape && typeof schema.shape === "object" + ? schema.shape + : null; const keys = shape ? Object.keys(shape) : []; if (keys.length === 1) this.command_result_unwrap_keys.set(name, keys[0]); else this.command_result_unwrap_keys.delete(name); @@ -732,10 +932,13 @@ export class ModCDPClient extends ModCDPEventEmitter { return { upstream: { upstream_mode: this.upstream.upstream_mode, - ...(this.upstream.upstream_nats_url ? { upstream_nats_url: this.upstream.upstream_nats_url } : {}), + ...(this.upstream.upstream_nats_url + ? { upstream_nats_url: this.upstream.upstream_nats_url } + : {}), ...(this.upstream.upstream_nats_subject_prefix ? { - upstream_nats_subject_prefix: this.upstream.upstream_nats_subject_prefix, + upstream_nats_subject_prefix: + this.upstream.upstream_nats_subject_prefix, } : {}), }, @@ -746,29 +949,35 @@ export class ModCDPClient extends ModCDPEventEmitter { ...this._serverDefaults(), ...(this.server ?? {}), }, - custom_commands: this.custom_commands.filter(hasCommandExpression).map((command) => ({ - name: normalizeModCDPName(command.name), - expression: command.expression, - params_schema: null as null, - result_schema: null as null, - })), + custom_commands: this.custom_commands + .filter(hasCommandExpression) + .map((command) => ({ + name: normalizeModCDPName(command.name), + expression: command.expression, + params_schema: null as null, + result_schema: null as null, + })), custom_events: this.custom_events.map((event) => ({ name: normalizeModCDPName(event.name), event_schema: null as null, })), - custom_middlewares: this.custom_middlewares.map(({ name, phase, expression }) => ({ - ...(name == null ? {} : { name: normalizeModCDPName(name) }), - phase, - expression, - })), + custom_middlewares: this.custom_middlewares.map( + ({ name, phase, expression }) => ({ + ...(name == null ? {} : { name: normalizeModCDPName(name) }), + phase, + expression, + }), + ), }; } _serverDefaults(): ModCDPServerOptions { return { server_cdp_send_timeout_ms: this.client.client_cdp_send_timeout_ms, - server_loopback_execution_context_timeout_ms: this.injector.injector_execution_context_timeout_ms, - server_ws_connect_error_settle_timeout_ms: this.upstream.upstream_ws_connect_error_settle_timeout_ms, + server_loopback_execution_context_timeout_ms: + this.injector.injector_execution_context_timeout_ms, + server_ws_connect_error_settle_timeout_ms: + this.upstream.upstream_ws_connect_error_settle_timeout_ms, }; } @@ -781,12 +990,17 @@ export class ModCDPClient extends ModCDPEventEmitter { const initial_transport_config = this._upstreamTransportConfig(); transport.update(initial_transport_config); launcher.update(this._launcherOptions()); - for (const injector of injectors) injector.update(this._baseInjectorConfig()); - for (const injector of injectors) injector.update(launcher.getInjectorConfig()); - for (const injector of injectors) injector.update(transport.getInjectorConfig()); + for (const injector of injectors) + injector.update(this._baseInjectorConfig()); + for (const injector of injectors) + injector.update(launcher.getInjectorConfig()); + for (const injector of injectors) + injector.update(transport.getInjectorConfig()); for (const injector of injectors) await injector.prepare(); - for (const injector of injectors) launcher.update(injector.getLauncherConfig()); - for (const injector of injectors) transport.update(injector.getTransportConfig()); + for (const injector of injectors) + launcher.update(injector.getLauncherConfig()); + for (const injector of injectors) + transport.update(injector.getTransportConfig()); launcher.update(transport.getLauncherConfig()); launcher.update({ loopback_cdp: this._serverNeedsLoopbackCdp() }); transport.update(launcher.getTransportConfig()); @@ -795,19 +1009,26 @@ export class ModCDPClient extends ModCDPEventEmitter { if (this.launcher.launcher_mode !== "none") { this._launched = await launcher.launch(); transport.update(launcher.getTransportConfig()); - for (const injector of injectors) injector.update(launcher.getInjectorConfig()); - for (const injector of injectors) transport.update(injector.getTransportConfig()); + for (const injector of injectors) + injector.update(launcher.getInjectorConfig()); + for (const injector of injectors) + transport.update(injector.getTransportConfig()); } const launched_cdp_url = this._launched?.cdp_url ?? null; if (transport.endpoint_kind === "raw_cdp") await transport.connect(); this.transport = transport; this.cdp_url = - transport.endpoint_kind === "raw_cdp" ? ((transport.url || launched_cdp_url) ?? null) : launched_cdp_url; + transport.endpoint_kind === "raw_cdp" + ? ((transport.url || launched_cdp_url) ?? null) + : launched_cdp_url; // For ws mode, cdp_url has been resolved to the concrete WebSocket CDP endpoint after connect(). - if (transport.mode === "ws" && transport.url) this.upstream.upstream_cdp_url = transport.url; + if (transport.mode === "ws" && transport.url) + this.upstream.upstream_cdp_url = transport.url; const server_config = { - ...(transport.endpoint_kind === "modcdp_server" && launched_cdp_url && !launched_cdp_url.startsWith("pipe://") + ...(transport.endpoint_kind === "modcdp_server" && + launched_cdp_url && + !launched_cdp_url.startsWith("pipe://") ? { server_loopback_cdp_url: launched_cdp_url } : {}), ...launcher.getServerConfig(), @@ -828,11 +1049,14 @@ export class ModCDPClient extends ModCDPEventEmitter { async _upstreamTransport(): Promise { switch (this.upstream.upstream_mode as UpstreamMode) { case "ws": { - const { WebSocketUpstreamTransport } = await import("../transport/WebSocketUpstreamTransport.js"); + const { WebSocketUpstreamTransport } = + await import("../transport/WebSocketUpstreamTransport.js"); return new WebSocketUpstreamTransport(); } case "pipe": { - const { PipeUpstreamTransport } = await import(/* @vite-ignore */ "../transport/PipeUpstreamTransport.js"); + const { PipeUpstreamTransport } = await import( + /* @vite-ignore */ "../transport/PipeUpstreamTransport.js" + ); return new PipeUpstreamTransport(); } case "reversews": { @@ -848,23 +1072,33 @@ export class ModCDPClient extends ModCDPEventEmitter { return new NativeMessagingUpstreamTransport(); } case "nats": { - const { NatsUpstreamTransport } = await import(/* @vite-ignore */ "../transport/NatsUpstreamTransport.js"); + const { NatsUpstreamTransport } = await import( + /* @vite-ignore */ "../transport/NatsUpstreamTransport.js" + ); return new NatsUpstreamTransport(); } default: - throw new Error(`unknown upstream.upstream_mode=${this.upstream.upstream_mode}`); + throw new Error( + `unknown upstream.upstream_mode=${this.upstream.upstream_mode}`, + ); } } async _browserLauncher(): Promise { switch (this.launcher.launcher_mode as LauncherMode) { case "local": { - const { LocalBrowserLauncher } = await import(/* @vite-ignore */ "../launcher/LocalBrowserLauncher.js"); + const { LocalBrowserLauncher } = await import( + /* @vite-ignore */ "../launcher/LocalBrowserLauncher.js" + ); return new LocalBrowserLauncher(this.launcher.launcher_options); } case "remote": { - const { RemoteBrowserLauncher } = await import("../launcher/RemoteBrowserLauncher.js"); - return new RemoteBrowserLauncher(this.launcher.launcher_options, this.upstream.upstream_cdp_url); + const { RemoteBrowserLauncher } = + await import("../launcher/RemoteBrowserLauncher.js"); + return new RemoteBrowserLauncher( + this.launcher.launcher_options, + this.upstream.upstream_cdp_url, + ); } case "bb": { const { BrowserbaseBrowserLauncher } = await import( @@ -873,25 +1107,34 @@ export class ModCDPClient extends ModCDPEventEmitter { return new BrowserbaseBrowserLauncher(this.launcher.launcher_options); } case "none": { - const { NoopBrowserLauncher } = await import("../launcher/NoopBrowserLauncher.js"); + const { NoopBrowserLauncher } = + await import("../launcher/NoopBrowserLauncher.js"); return new NoopBrowserLauncher(this.launcher.launcher_options); } default: - throw new Error(`unknown launcher.launcher_mode=${this.launcher.launcher_mode}`); + throw new Error( + `unknown launcher.launcher_mode=${this.launcher.launcher_mode}`, + ); } } _launcherOptions(): BrowserLaunchOptions { return { ...this.launcher.launcher_options, - ...(this.launcher.launcher_executable_path ? { executable_path: this.launcher.launcher_executable_path } : {}), - ...(this.launcher.launcher_user_data_dir ? { user_data_dir: this.launcher.launcher_user_data_dir } : {}), + ...(this.launcher.launcher_executable_path + ? { executable_path: this.launcher.launcher_executable_path } + : {}), + ...(this.launcher.launcher_user_data_dir + ? { user_data_dir: this.launcher.launcher_user_data_dir } + : {}), }; } _serverNeedsLoopbackCdp() { if (!this.server || this.server.server_loopback_cdp_url) return false; - return Object.values(this.server.server_routes ?? {}).includes("loopback_cdp"); + return Object.values(this.server.server_routes ?? {}).includes( + "loopback_cdp", + ); } _upstreamTransportConfig() { @@ -899,13 +1142,19 @@ export class ModCDPClient extends ModCDPEventEmitter { cdp_url: this.upstream.upstream_cdp_url, upstream_nats_url: this.upstream.upstream_nats_url, upstream_nats_subject_prefix: this.upstream.upstream_nats_subject_prefix, - upstream_nats_wait_timeout_ms: this.upstream.upstream_nats_wait_timeout_ms, + upstream_nats_wait_timeout_ms: + this.upstream.upstream_nats_wait_timeout_ms, upstream_reversews_bind: this.upstream.upstream_reversews_bind, - upstream_reversews_wait_timeout_ms: this.upstream.upstream_reversews_wait_timeout_ms, - upstream_nativemessaging_manifest: this.upstream.upstream_nativemessaging_manifest, - upstream_nativemessaging_manifests: this.upstream.upstream_nativemessaging_manifests, - upstream_nativemessaging_host_name: this.upstream.upstream_nativemessaging_host_name, - upstream_nativemessaging_wait_timeout_ms: this.upstream.upstream_nativemessaging_wait_timeout_ms, + upstream_reversews_wait_timeout_ms: + this.upstream.upstream_reversews_wait_timeout_ms, + upstream_nativemessaging_manifest: + this.upstream.upstream_nativemessaging_manifest, + upstream_nativemessaging_manifests: + this.upstream.upstream_nativemessaging_manifests, + upstream_nativemessaging_host_name: + this.upstream.upstream_nativemessaging_host_name, + upstream_nativemessaging_wait_timeout_ms: + this.upstream.upstream_nativemessaging_wait_timeout_ms, injector_extension_id: this.injector.injector_extension_id, }; } @@ -913,11 +1162,22 @@ export class ModCDPClient extends ModCDPEventEmitter { async _injectorsForConfig() { if (this.injector.injector_mode === "none") return []; const injectors: ExtensionInjector[] = []; - if (this.injector.injector_mode === "auto" || this.injector.injector_mode === "discover") { - const { DiscoveredExtensionInjector } = await import("../injector/DiscoveredExtensionInjector.js"); + const prefer_launch_injection = + this.injector.injector_mode === "auto" && + this.launcher.launcher_mode === "local"; + if ( + (this.injector.injector_mode === "auto" || + this.injector.injector_mode === "discover") && + !prefer_launch_injection + ) { + const { DiscoveredExtensionInjector } = + await import("../injector/DiscoveredExtensionInjector.js"); injectors.push(new DiscoveredExtensionInjector()); } - if (this.injector.injector_mode === "auto" || this.injector.injector_mode === "inject") { + if ( + this.injector.injector_mode === "auto" || + this.injector.injector_mode === "inject" + ) { if (this.launcher.launcher_mode === "bb") { const { BBBrowserExtensionInjector } = await import( /* @vite-ignore */ "../injector/BBBrowserExtensionInjector.js" @@ -935,11 +1195,24 @@ export class ModCDPClient extends ModCDPEventEmitter { ); injectors.push(new ExtensionsLoadUnpackedInjector()); } - if (this.injector.injector_mode === "auto" || this.injector.injector_mode === "borrow") { - const { BorrowedExtensionInjector } = await import(/* @vite-ignore */ "../injector/BorrowedExtensionInjector.js"); + if (prefer_launch_injection) { + const { DiscoveredExtensionInjector } = + await import("../injector/DiscoveredExtensionInjector.js"); + injectors.push(new DiscoveredExtensionInjector()); + } + if ( + this.injector.injector_mode === "auto" || + this.injector.injector_mode === "borrow" + ) { + const { BorrowedExtensionInjector } = await import( + /* @vite-ignore */ "../injector/BorrowedExtensionInjector.js" + ); injectors.push(new BorrowedExtensionInjector()); } - if (injectors.length === 0) throw new Error(`unknown injector.injector_mode=${this.injector.injector_mode}`); + if (injectors.length === 0) + throw new Error( + `unknown injector.injector_mode=${this.injector.injector_mode}`, + ); return injectors; } @@ -948,31 +1221,47 @@ export class ModCDPClient extends ModCDPEventEmitter { const trust_service_worker_target = this.injector.injector_trust_service_worker_target || this.injector.injector_service_worker_url_includes.length > 0 || - service_worker_url_suffixes.some((suffix) => suffix.split("/").filter(Boolean).length > 1); + service_worker_url_suffixes.some( + (suffix) => suffix.split("/").filter(Boolean).length > 1, + ); return { send, - sessionIdForTarget: (target_id) => this.auto_sessions.sessionIdForTarget(target_id), - attachToTarget: send ? (target_id) => this.auto_sessions.attachToTarget(target_id) : null, + sessionIdForTarget: (target_id) => + this.auto_sessions.sessionIdForTarget(target_id), + attachToTarget: send + ? (target_id) => this.auto_sessions.attachToTarget(target_id) + : null, waitForExecutionContext: (session_id, timeout_ms) => this.auto_sessions.waitForExecutionContext(session_id, { timeout_ms }), injector_extension_path: this.injector.injector_extension_path, injector_extension_id: this.injector.injector_extension_id, - injector_service_worker_url_includes: this.injector.injector_service_worker_url_includes, + injector_service_worker_url_includes: + this.injector.injector_service_worker_url_includes, injector_service_worker_url_suffixes: service_worker_url_suffixes, injector_trust_service_worker_target: trust_service_worker_target, injector_require_service_worker_target: - this.injector.injector_require_service_worker_target || this.injector.injector_mode === "discover", - injector_service_worker_ready_expression: this.injector.injector_service_worker_ready_expression, + this.injector.injector_require_service_worker_target || + this.injector.injector_mode === "discover", + injector_service_worker_ready_expression: + this.injector.injector_service_worker_ready_expression, injector_cdp_send_timeout_ms: this.client.client_cdp_send_timeout_ms, - injector_execution_context_timeout_ms: this.injector.injector_execution_context_timeout_ms, - injector_service_worker_probe_timeout_ms: this.injector.injector_service_worker_probe_timeout_ms, - injector_service_worker_ready_timeout_ms: this.injector.injector_service_worker_ready_timeout_ms, - injector_service_worker_poll_interval_ms: this.injector.injector_service_worker_poll_interval_ms, - injector_target_session_poll_interval_ms: this.injector.injector_target_session_poll_interval_ms, + injector_execution_context_timeout_ms: + this.injector.injector_execution_context_timeout_ms, + injector_service_worker_probe_timeout_ms: + this.injector.injector_service_worker_probe_timeout_ms, + injector_service_worker_ready_timeout_ms: + this.injector.injector_service_worker_ready_timeout_ms, + injector_service_worker_poll_interval_ms: + this.injector.injector_service_worker_poll_interval_ms, + injector_target_session_poll_interval_ms: + this.injector.injector_target_session_poll_interval_ms, }; } - async _runInjectors(send: SendCDP, injectors: ExtensionInjector[] | null = null) { + async _runInjectors( + send: SendCDP, + injectors: ExtensionInjector[] | null = null, + ) { injectors ??= await this._injectorsForConfig(); const errors: string[] = []; for (const injector of injectors) { @@ -983,7 +1272,8 @@ export class ModCDPClient extends ModCDPEventEmitter { if (result) return result; } catch (error) { const message = error instanceof Error ? error.message : String(error); - injector.last_error = error instanceof Error ? error : new Error(message); + injector.last_error = + error instanceof Error ? error : new Error(message); errors.push(`${injector.constructor.name}: ${message}`); } } @@ -1020,46 +1310,86 @@ export class ModCDPClient extends ModCDPEventEmitter { listener: (event: ModCDPEventPayload) => void, ): this; on(event_name: string | symbol, listener: (...args: unknown[]) => void): this; - on(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void): this; + on( + event_name: ModCDPEventNameInput, + listener: (...args: unknown[]) => void, + ): this; on(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void) { if (typeof event_name !== "string" && typeof event_name !== "symbol") { const name = normalizeModCDPName(event_name); this.event_schemas.set(name, event_name); return super.on(name, listener); } - return super.on(typeof event_name === "symbol" ? event_name : normalizeModCDPName(event_name), listener); + return super.on( + typeof event_name === "symbol" + ? event_name + : normalizeModCDPName(event_name), + listener, + ); } once( event_name: TEvent, listener: (event: ModCDPEventPayload) => void, ): this; - once(event_name: string | symbol, listener: (...args: unknown[]) => void): this; - once(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void): this; - once(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void) { + once( + event_name: string | symbol, + listener: (...args: unknown[]) => void, + ): this; + once( + event_name: ModCDPEventNameInput, + listener: (...args: unknown[]) => void, + ): this; + once( + event_name: ModCDPEventNameInput, + listener: (...args: unknown[]) => void, + ) { if (typeof event_name !== "string" && typeof event_name !== "symbol") { const name = normalizeModCDPName(event_name); this.event_schemas.set(name, event_name); return super.once(name, listener); } - return super.once(typeof event_name === "symbol" ? event_name : normalizeModCDPName(event_name), listener); + return super.once( + typeof event_name === "symbol" + ? event_name + : normalizeModCDPName(event_name), + listener, + ); } off( event_name: TEvent, listener: (event: ModCDPEventPayload) => void, ): this; - off(event_name: string | symbol, listener: (...args: unknown[]) => void): this; - off(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void): this; - off(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void) { + off( + event_name: string | symbol, + listener: (...args: unknown[]) => void, + ): this; + off( + event_name: ModCDPEventNameInput, + listener: (...args: unknown[]) => void, + ): this; + off( + event_name: ModCDPEventNameInput, + listener: (...args: unknown[]) => void, + ) { if (typeof event_name !== "string" && typeof event_name !== "symbol") { return super.off(normalizeModCDPName(event_name), listener); } - return super.off(typeof event_name === "symbol" ? event_name : normalizeModCDPName(event_name), listener); + return super.off( + typeof event_name === "symbol" + ? event_name + : normalizeModCDPName(event_name), + listener, + ); } - _waitForEvent(event_name: ModCDPEventNameInput, { timeout_ms }: { timeout_ms?: number } = {}) { - const effective_timeout_ms = timeout_ms ?? this.client.client_event_wait_timeout_ms; + _waitForEvent( + event_name: ModCDPEventNameInput, + { timeout_ms }: { timeout_ms?: number } = {}, + ) { + const effective_timeout_ms = + timeout_ms ?? this.client.client_event_wait_timeout_ms; let settled = false; let timeout: ReturnType | null = null; let cancel: () => void = () => {}; @@ -1099,8 +1429,14 @@ export class ModCDPClient extends ModCDPEventEmitter { received_at: payload.received_at ?? null, returned_at, round_trip_ms: returned_at - sent_at, - service_worker_ms: typeof payload.received_at === "number" ? payload.received_at - sent_at : null, - return_path_ms: typeof payload.received_at === "number" ? returned_at - payload.received_at : null, + service_worker_ms: + typeof payload.received_at === "number" + ? payload.received_at - sent_at + : null, + return_path_ms: + typeof payload.received_at === "number" + ? returned_at - payload.received_at + : null, }; return this.latency; } finally { @@ -1111,7 +1447,11 @@ export class ModCDPClient extends ModCDPEventEmitter { async _sendRaw(command: TranslatedCommand) { if (command.target === "direct_cdp") { const [step] = command.steps; - return this._sendMessage(step.method, step.params ?? {}, step.sessionId ?? null) as Promise; + return this._sendMessage( + step.method, + step.params ?? {}, + step.sessionId ?? null, + ) as Promise; } if (command.target !== "service_worker") { throw new Error(`Unsupported command target "${command.target}"`); @@ -1121,17 +1461,27 @@ export class ModCDPClient extends ModCDPEventEmitter { let unwrap = null; for (const step of command.steps) { const step_params = - step.method === "Runtime.callFunctionOn" && step.params && !Object.hasOwn(step.params, "executionContextId") + step.method === "Runtime.callFunctionOn" && + step.params && + !Object.hasOwn(step.params, "executionContextId") ? { ...step.params, executionContextId: this.ext_execution_context_id ?? - (await this.auto_sessions.waitForExecutionContext(this.ext_session_id, { - timeout_ms: this.injector.injector_execution_context_timeout_ms, - })), + (await this.auto_sessions.waitForExecutionContext( + this.ext_session_id, + { + timeout_ms: + this.injector.injector_execution_context_timeout_ms, + }, + )), } : (step.params ?? {}); - result = (await this._sendMessage(step.method, step_params, this.ext_session_id)) as ProtocolResult; + result = (await this._sendMessage( + step.method, + step_params, + this.ext_session_id, + )) as ProtocolResult; unwrap = step.unwrap ?? null; } return unwrapResponseIfNeeded(result, unwrap); @@ -1143,13 +1493,15 @@ export class ModCDPClient extends ModCDPEventEmitter { session_id: string | null = null, options: { record_raw_timing?: boolean; timeout_ms?: number | null } = {}, ) { - if (!this.transport) return Promise.reject(new Error("ModCDP upstream is not connected.")); + if (!this.transport) + return Promise.reject(new Error("ModCDP upstream is not connected.")); const id = this.next_id++; const started_at = Date.now(); const message: CdpCommandMessage = { id, method, params }; if (session_id) message.sessionId = session_id; return new Promise((resolve, reject) => { - const timeout_ms = options.timeout_ms ?? this.client.client_cdp_send_timeout_ms; + const timeout_ms = + options.timeout_ms ?? this.client.client_cdp_send_timeout_ms; let timeout: ReturnType | null = null; const finish = (callback: () => void) => { if (timeout != null) clearTimeout(timeout); @@ -1184,19 +1536,25 @@ export class ModCDPClient extends ModCDPEventEmitter { } void (async () => { try { - if (this.upstream_endpoint_kind === "modcdp_server") await this.transport?.waitForPeer?.(); + if (this.upstream_endpoint_kind === "modcdp_server") + await this.transport?.waitForPeer?.(); this.transport?.send(message); } catch (error) { - if (this.pending.delete(id)) reject(error instanceof Error ? error : new Error(String(error))); + if (this.pending.delete(id)) + reject(error instanceof Error ? error : new Error(String(error))); } })(); }); } _rejectAll(error: Error) { - const pending_methods = [...this.pending.values()].map((pending) => pending.method); + const pending_methods = [...this.pending.values()].map( + (pending) => pending.method, + ); const reject_error = - pending_methods.length === 0 ? error : new Error(`${error.message}; pending=${pending_methods.join(",")}`); + pending_methods.length === 0 + ? error + : new Error(`${error.message}; pending=${pending_methods.join(",")}`); for (const pending of this.pending.values()) pending.reject(reject_error); this.pending.clear(); } @@ -1208,18 +1566,28 @@ export class ModCDPClient extends ModCDPEventEmitter { if (!pending) return; this.pending.delete(response.id); if (response.error) { - const err = new Error(`${pending.method} failed: ${response.error.message}`) as Error & { cdp?: CdpError }; + const err = new Error( + `${pending.method} failed: ${response.error.message}`, + ) as Error & { cdp?: CdpError }; err.cdp = response.error; pending.reject(err); } else { - pending.resolve((response.result === undefined ? {} : response.result) as ProtocolResult); + pending.resolve( + (response.result === undefined + ? {} + : response.result) as ProtocolResult, + ); } return; } const event = CdpEventMessageSchema.parse(msg); if (event.sessionId === this.ext_session_id) { if (event.method === "Runtime.executionContextCreated") { - this.auto_sessions.recordProtocolEvent(event.method, event.params || {}, event.sessionId || null); + this.auto_sessions.recordProtocolEvent( + event.method, + event.params || {}, + event.sessionId || null, + ); } if (event.method !== "Runtime.bindingCalled") return; const u = unwrapEventIfNeeded( @@ -1230,7 +1598,11 @@ export class ModCDPClient extends ModCDPEventEmitter { ); if (u) { const payload = this._parseEventPayload(u.event, u.data); - this.auto_sessions.recordProtocolEvent(u.event, payload as ProtocolPayload, u.sessionId); + this.auto_sessions.recordProtocolEvent( + u.event, + payload as ProtocolPayload, + u.sessionId, + ); this.emit(u.event, payload, u.sessionId); } return; @@ -1238,7 +1610,11 @@ export class ModCDPClient extends ModCDPEventEmitter { if (event.method) { const data = event.params || {}; const payload = this._parseEventPayload(event.method, data); - this.auto_sessions.recordProtocolEvent(event.method, payload as ProtocolPayload, event.sessionId || null); + this.auto_sessions.recordProtocolEvent( + event.method, + payload as ProtocolPayload, + event.sessionId || null, + ); this.emit(event.method, payload, event.sessionId || null); } } diff --git a/js/src/injector/ExtensionInjector.ts b/js/src/injector/ExtensionInjector.ts index 5acf392..40943a8 100644 --- a/js/src/injector/ExtensionInjector.ts +++ b/js/src/injector/ExtensionInjector.ts @@ -9,7 +9,9 @@ import { commands as TargetCommands } from "../types/generated/zod/Target.js"; const EXT_ID_FROM_URL = /^chrome-extension:\/\/([a-z]+)\//; export const DEFAULT_MODCDP_EXTENSION_ID = "mdedooklbnfejodmnhmkdpkaedafkehf"; -export const DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = ["/modcdp/service_worker.js"]; +export const DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = [ + "/modcdp/service_worker.js", +]; const MODCDP_READY_EXPRESSION = "Boolean(globalThis.ModCDP?.__ModCDPServerVersion >= 1 && globalThis.ModCDP?.handleCommand && globalThis.ModCDP?.addCustomEvent)"; export const DEFAULT_CDP_SEND_TIMEOUT_MS = 10_000; @@ -19,14 +21,24 @@ export const DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS = 60_000; export const DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS = 100; export const DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS = 20; -export type SendCDP = (method: string, params?: ProtocolParams, session_id?: string | null) => Promise; +export type SendCDP = ( + method: string, + params?: ProtocolParams, + session_id?: string | null, +) => Promise; export type TargetInfo = { targetId: string; type?: string; url?: string }; export type ExtensionInjectorConfig = { send?: SendCDP | null; - sessionIdForTarget?: ((target_id: string) => string | null | undefined) | null; - attachToTarget?: ((target_id: string) => Promise) | null; - waitForExecutionContext?: ((session_id: string, timeout_ms: number) => Promise) | null; + sessionIdForTarget?: + | ((target_id: string) => string | null | undefined) + | null; + attachToTarget?: + | ((target_id: string) => Promise) + | null; + waitForExecutionContext?: + | ((session_id: string, timeout_ms: number) => Promise) + | null; injector_extension_path?: string | null; injector_extension_id?: string | null; injector_service_worker_url_includes?: string[]; @@ -67,11 +79,17 @@ function delay(ms: number) { } export function defaultModCDPExtensionPath() { - if (typeof process === "object" && process?.versions?.node && import.meta.url.startsWith("file:")) { + if ( + typeof process === "object" && + process?.versions?.node && + import.meta.url.startsWith("file:") + ) { const relative_path = import.meta.url.includes("/dist/js/src/") ? "../../../../dist/extension.zip" : "../../../dist/extension.zip"; - return decodeURIComponent(new URL(/* @vite-ignore */ relative_path, import.meta.url).pathname); + return decodeURIComponent( + new URL(/* @vite-ignore */ relative_path, import.meta.url).pathname, + ); } return "../../../dist/extension.zip"; } @@ -83,9 +101,14 @@ function firstString(...values: unknown[]) { return null; } -export async function prepareUnpackedExtension(extension_path: string): Promise { - const unpacked_path = fs.mkdtempSync(path.join(os.tmpdir(), "modcdp-extension-")); - const cleanup = async () => fs.rmSync(unpacked_path, { recursive: true, force: true }); +export async function prepareUnpackedExtension( + extension_path: string, +): Promise { + const unpacked_path = fs.mkdtempSync( + path.join(os.tmpdir(), "modcdp-extension-"), + ); + const cleanup = async () => + fs.rmSync(unpacked_path, { recursive: true, force: true }); try { if (extension_path.endsWith(".zip")) { await extractZip(extension_path, unpacked_path); @@ -100,21 +123,36 @@ export async function prepareUnpackedExtension(extension_path: string): Promise< } export async function extensionIdFromManifestKey(extension_path: string) { - const [crypto, fs, path] = await Promise.all([import("node:crypto"), import("node:fs"), import("node:path")]); + const [crypto, fs, path] = await Promise.all([ + import("node:crypto"), + import("node:fs"), + import("node:path"), + ]); const manifest_path = path.join(extension_path, "manifest.json"); if (!fs.existsSync(manifest_path)) return null; - const manifest = JSON.parse(fs.readFileSync(manifest_path, "utf8")) as Record; + const manifest = JSON.parse(fs.readFileSync(manifest_path, "utf8")) as Record< + string, + unknown + >; const key = firstString(manifest.key); if (!key) return null; - const digest = crypto.createHash("sha256").update(Buffer.from(key, "base64")).digest().subarray(0, 16); + const digest = crypto + .createHash("sha256") + .update(Buffer.from(key, "base64")) + .digest() + .subarray(0, 16); const alphabet = "abcdefghijklmnop"; - return [...digest].map((byte) => alphabet[byte >> 4] + alphabet[byte & 0x0f]).join(""); + return [...digest] + .map((byte) => alphabet[byte >> 4] + alphabet[byte & 0x0f]) + .join(""); } function extensionRoot(unpacked_path: string) { - if (fs.existsSync(path.join(unpacked_path, "manifest.json"))) return unpacked_path; + if (fs.existsSync(path.join(unpacked_path, "manifest.json"))) + return unpacked_path; const nested_path = path.join(unpacked_path, "extension"); - if (fs.existsSync(path.join(nested_path, "manifest.json"))) return nested_path; + if (fs.existsSync(path.join(nested_path, "manifest.json"))) + return nested_path; return unpacked_path; } @@ -133,7 +171,9 @@ async function extractZip(zip_path: string, destination: string) { normalized === ".." || normalized.startsWith("../") ) { - throw new Error(`zip entry ${JSON.stringify(raw_name)} escapes extension extraction directory`); + throw new Error( + `zip entry ${JSON.stringify(raw_name)} escapes extension extraction directory`, + ); } } execFileSync("unzip", ["-q", zip_path, "-d", destination]); @@ -158,11 +198,16 @@ export class ExtensionInjector { injector_require_service_worker_target: false, injector_service_worker_ready_expression: null, injector_cdp_send_timeout_ms: DEFAULT_CDP_SEND_TIMEOUT_MS, - injector_execution_context_timeout_ms: DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, - injector_service_worker_probe_timeout_ms: DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, - injector_service_worker_ready_timeout_ms: DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, - injector_service_worker_poll_interval_ms: DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, - injector_target_session_poll_interval_ms: DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, + injector_execution_context_timeout_ms: + DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, + injector_service_worker_probe_timeout_ms: + DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, + injector_service_worker_ready_timeout_ms: + DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, + injector_service_worker_poll_interval_ms: + DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, + injector_target_session_poll_interval_ms: + DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, injector_browserbase_api_key: null, injector_browserbase_base_url: null, upstream_nativemessaging_host_name: null, @@ -177,9 +222,13 @@ export class ExtensionInjector { ...this.options, ...config, injector_service_worker_url_includes: - config.injector_service_worker_url_includes ?? this.options.injector_service_worker_url_includes ?? [], + config.injector_service_worker_url_includes ?? + this.options.injector_service_worker_url_includes ?? + [], injector_service_worker_url_suffixes: - config.injector_service_worker_url_suffixes ?? this.options.injector_service_worker_url_suffixes ?? [], + config.injector_service_worker_url_suffixes ?? + this.options.injector_service_worker_url_suffixes ?? + [], }; return this; } @@ -193,7 +242,9 @@ export class ExtensionInjector { } getTransportConfig(): UpstreamTransportConfig { - return this.options.injector_extension_id ? { injector_extension_id: this.options.injector_extension_id } : {}; + return this.options.injector_extension_id + ? { injector_extension_id: this.options.injector_extension_id } + : {}; } async prepare() {} @@ -221,13 +272,17 @@ export class ExtensionInjector { method: string, params: ProtocolParams = {}, session_id: string | null = null, - timeout_ms = this.options.injector_cdp_send_timeout_ms ?? DEFAULT_CDP_SEND_TIMEOUT_MS, + timeout_ms = this.options.injector_cdp_send_timeout_ms ?? + DEFAULT_CDP_SEND_TIMEOUT_MS, ) { let timeout: ReturnType | null = null; return Promise.race([ this.send(method, params, session_id), new Promise((_, reject) => { - timeout = setTimeout(() => reject(new Error(`${method} timed out after ${timeout_ms}ms`)), timeout_ms); + timeout = setTimeout( + () => reject(new Error(`${method} timed out after ${timeout_ms}ms`)), + timeout_ms, + ); }), ]).finally(() => { if (timeout != null) clearTimeout(timeout); @@ -238,24 +293,40 @@ export class ExtensionInjector { const deadline = Date.now() + timeout_ms; while (true) { const session_id = this.options.sessionIdForTarget?.(target_id); - if (typeof session_id === "string" && session_id.length > 0) return session_id; + if (typeof session_id === "string" && session_id.length > 0) + return session_id; if (Date.now() >= deadline) return null; - await delay(this.options.injector_target_session_poll_interval_ms ?? DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS); + await delay( + this.options.injector_target_session_poll_interval_ms ?? + DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, + ); } } - protected async ensureSessionIdForTarget(target_id: string, timeout_ms = 0, allow_attach = false) { + protected async ensureSessionIdForTarget( + target_id: string, + timeout_ms = 0, + allow_attach = false, + ) { const session_id = this.options.sessionIdForTarget?.(target_id); - if (typeof session_id === "string" && session_id.length > 0) return session_id; + if (typeof session_id === "string" && session_id.length > 0) + return session_id; if (allow_attach) { - const attached_session_id = await this.options.attachToTarget?.(target_id); - if (typeof attached_session_id === "string" && attached_session_id.length > 0) return attached_session_id; + const attached_session_id = + await this.options.attachToTarget?.(target_id); + if ( + typeof attached_session_id === "string" && + attached_session_id.length > 0 + ) + return attached_session_id; } return await this.sessionIdForTarget(target_id, timeout_ms); } protected async targetInfos() { - return TargetCommands["Target.getTargets"].result.parse(await this.send("Target.getTargets")).targetInfos; + return TargetCommands["Target.getTargets"].result.parse( + await this.send("Target.getTargets"), + ).targetInfos; } protected async probeTarget( @@ -264,7 +335,11 @@ export class ExtensionInjector { { allow_attach = false }: { allow_attach?: boolean } = {}, ): Promise { if (this.unusable_target_ids.has(target.targetId)) return null; - const session_id = await this.ensureSessionIdForTarget(target.targetId, session_timeout_ms, allow_attach); + const session_id = await this.ensureSessionIdForTarget( + target.targetId, + session_timeout_ms, + allow_attach, + ); if (session_id == null) return null; await this.sendWithTimeout("Runtime.enable", {}, session_id); const probe = RuntimeCommands["Runtime.evaluate"].result.parse( @@ -287,20 +362,27 @@ export class ExtensionInjector { }; } - protected async discoverReadyServiceWorker({ matched_only = false }: { matched_only?: boolean } = {}) { + protected async discoverReadyServiceWorker({ + matched_only = false, + }: { matched_only?: boolean } = {}) { const target_infos = await this.targetInfos(); if (this.options.injector_trust_service_worker_target) { - const trusted_target = target_infos.find((candidate) => this.serviceWorkerTargetMatches(candidate)) as - | TargetInfo - | undefined; + const trusted_target = target_infos.find((candidate) => + this.serviceWorkerTargetMatches(candidate), + ) as TargetInfo | undefined; if (trusted_target) { - const probed = await this.probeTarget(trusted_target, this.options.injector_service_worker_probe_timeout_ms, { - allow_attach: true, - }); + const probed = await this.probeTarget( + trusted_target, + this.options.injector_service_worker_probe_timeout_ms, + { + allow_attach: true, + }, + ); if (probed) return { ...probed, source: "trusted" }; } } - if (this.options.injector_trust_service_worker_target || matched_only) return null; + if (this.options.injector_trust_service_worker_target || matched_only) + return null; for (const candidate of target_infos) { if (candidate.type !== "service_worker") continue; if (!candidate.url.startsWith("chrome-extension://")) continue; @@ -327,25 +409,35 @@ export class ExtensionInjector { matched_only, }); if (discovered) return discovered; - await delay(this.options.injector_service_worker_poll_interval_ms ?? DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS); + await delay( + this.options.injector_service_worker_poll_interval_ms ?? + DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, + ); } return null; } - protected serviceWorkerTargetMatches(candidate: { type?: string; url?: string }) { + protected serviceWorkerTargetMatches(candidate: { + type?: string; + url?: string; + }) { const url = candidate.url ?? ""; if (candidate.type !== "service_worker") return false; if (!url.startsWith("chrome-extension://")) return false; const has_extension_id = Boolean(this.options.injector_extension_id); if ( this.options.injector_extension_id && - !url.startsWith(`chrome-extension://${this.options.injector_extension_id}/`) + !url.startsWith( + `chrome-extension://${this.options.injector_extension_id}/`, + ) ) return false; const includes = this.options.injector_service_worker_url_includes ?? []; const suffixes = this.options.injector_service_worker_url_suffixes ?? []; - if (includes.length > 0 && !includes.every((part) => url.includes(part))) return false; - if (suffixes.length > 0 && !suffixes.some((suffix) => url.endsWith(suffix))) return false; + if (includes.length > 0 && !includes.every((part) => url.includes(part))) + return false; + if (suffixes.length > 0 && !suffixes.some((suffix) => url.endsWith(suffix))) + return false; return has_extension_id || includes.length > 0 || suffixes.length > 0; } } diff --git a/js/src/injector/LocalBrowserLaunchExtensionInjector.ts b/js/src/injector/LocalBrowserLaunchExtensionInjector.ts index b1ff853..4c4ca15 100644 --- a/js/src/injector/LocalBrowserLaunchExtensionInjector.ts +++ b/js/src/injector/LocalBrowserLaunchExtensionInjector.ts @@ -12,7 +12,8 @@ export class LocalBrowserLaunchExtensionInjector extends ExtensionInjector { private cleanup: (() => Promise) | null = null; async prepare() { - const extension_path = this.options.injector_extension_path ?? defaultModCDPExtensionPath(); + const extension_path = + this.options.injector_extension_path ?? defaultModCDPExtensionPath(); if (this.unpacked_extension_path) { await super.prepare(); return; @@ -46,13 +47,17 @@ export class LocalBrowserLaunchExtensionInjector extends ExtensionInjector { private async resolveExtensionId() { if (this.extension_id) return this.extension_id; this.extension_id = - typeof this.options.injector_extension_id === "string" && this.options.injector_extension_id.trim() + typeof this.options.injector_extension_id === "string" && + this.options.injector_extension_id.trim() ? this.options.injector_extension_id.trim() : null; if (!this.extension_id && this.unpacked_extension_path) { - this.extension_id = await extensionIdFromManifestKey(this.unpacked_extension_path); + this.extension_id = await extensionIdFromManifestKey( + this.unpacked_extension_path, + ); } - if (this.extension_id) this.options.injector_extension_id = this.extension_id; + if (this.extension_id) + this.options.injector_extension_id = this.extension_id; return this.extension_id; } } diff --git a/js/src/launcher/LocalBrowserLauncher.ts b/js/src/launcher/LocalBrowserLauncher.ts index d99c435..22be07a 100644 --- a/js/src/launcher/LocalBrowserLauncher.ts +++ b/js/src/launcher/LocalBrowserLauncher.ts @@ -1,7 +1,7 @@ import { spawn, type ChildProcess } from "node:child_process"; import { once } from "node:events"; import { existsSync, readdirSync, statSync } from "node:fs"; -import { mkdtemp, rm } from "node:fs/promises"; +import { mkdtemp, readFile, rm } from "node:fs/promises"; import net from "node:net"; import type { AddressInfo } from "node:net"; import { homedir, platform, tmpdir } from "node:os"; @@ -16,7 +16,9 @@ import { } from "./BrowserLauncher.js"; function wildcardToRegExp(value: string) { - return new RegExp(`^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`); + return new RegExp( + `^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`, + ); } function expandGlob(pattern: string) { @@ -59,7 +61,11 @@ function newestFirst(candidates: string[]) { return [...new Set(candidates)].sort((a, b) => { const left = score(a); const right = score(b); - return right.version - left.version || right.mtime - left.mtime || a.localeCompare(b); + return ( + right.version - left.version || + right.mtime - left.mtime || + a.localeCompare(b) + ); }); } @@ -72,7 +78,10 @@ function chromeForTestingCandidates() { home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", ), - path.join(home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium"), + path.join( + home, + "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium", + ), path.join( home, "Library/Caches/puppeteer/chrome/mac*-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", @@ -84,47 +93,80 @@ function chromeForTestingCandidates() { process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), "ms-playwright/chromium-*/chrome-win*/chrome.exe", ), - path.join(home, ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe"), + path.join( + home, + ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe", + ), ] : [ - path.join(home, ".cache/ms-playwright/chromium-*/chrome-linux*/chrome"), + path.join( + home, + ".cache/ms-playwright/chromium-*/chrome-linux*/chrome", + ), "/opt/pw-browsers/chromium-*/chrome-linux*/chrome", - path.join(home, ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome"), + path.join( + home, + ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome", + ), ]; return newestFirst(patterns.flatMap(expandGlob)); } function candidatePaths() { const home = homedir(); - const programFiles = [process.env.PROGRAMFILES, process.env["PROGRAMFILES(X86)"]].filter(Boolean) as string[]; + const programFiles = [ + process.env.PROGRAMFILES, + process.env["PROGRAMFILES(X86)"], + ].filter(Boolean) as string[]; const canary = platform() === "darwin" - ? ["/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"] + ? [ + "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary", + ] : platform() === "win32" ? [ path.join( process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), "Google/Chrome SxS/Application/chrome.exe", ), - ...programFiles.map((base) => path.join(base, "Google/Chrome SxS/Application/chrome.exe")), + ...programFiles.map((base) => + path.join(base, "Google/Chrome SxS/Application/chrome.exe"), + ), ] - : ["/usr/bin/google-chrome-canary", "/usr/bin/google-chrome-unstable", "/opt/google/chrome-unstable/chrome"]; + : [ + "/usr/bin/google-chrome-canary", + "/usr/bin/google-chrome-unstable", + "/opt/google/chrome-unstable/chrome", + ]; const stock = platform() === "darwin" ? ["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"] : platform() === "win32" ? [ - ...programFiles.map((base) => path.join(base, "Google/Chrome/Application/chrome.exe")), + ...programFiles.map((base) => + path.join(base, "Google/Chrome/Application/chrome.exe"), + ), path.join( process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), "Google/Chrome/Application/chrome.exe", ), ] - : ["/usr/bin/google-chrome-stable", "/usr/bin/google-chrome", "/opt/google/chrome/chrome"]; - const chromium = platform() === "linux" ? ["/usr/bin/chromium", "/usr/bin/chromium-browser"] : []; - return [process.env.CHROME_PATH, ...chromium, ...canary, ...chromeForTestingCandidates(), ...stock].filter( - (candidate): candidate is string => Boolean(candidate), - ); + : [ + "/usr/bin/google-chrome-stable", + "/usr/bin/google-chrome", + "/opt/google/chrome/chrome", + ]; + const chromium = + platform() === "linux" + ? ["/usr/bin/chromium", "/usr/bin/chromium-browser"] + : []; + return [ + process.env.CHROME_PATH, + ...chromium, + ...canary, + ...chromeForTestingCandidates(), + ...stock, + ].filter((candidate): candidate is string => Boolean(candidate)); } const DEFAULT_FLAGS = [ @@ -206,36 +248,112 @@ async function waitForPipeReady( const message = JSON.parse(raw); if (message.id !== readyId) continue; cleanup(); - if (message.error) reject(new Error(message.error.message ?? "Browser.getVersion failed over pipe")); + if (message.error) + reject( + new Error( + message.error.message ?? "Browser.getVersion failed over pipe", + ), + ); else resolve(); } }; const timeout = setTimeout(() => { cleanup(); - reject(new Error(`Chrome remote-debugging pipe did not respond within ${timeoutMs}ms`)); + reject( + new Error( + `Chrome remote-debugging pipe did not respond within ${timeoutMs}ms`, + ), + ); }, timeoutMs); pipe_read.on("data", onData); pipe_read.on("error", onError); pipe_write.on("error", onError); - pipe_write.write(`${JSON.stringify({ id: readyId, method: "Browser.getVersion" })}\0`); + pipe_write.write( + `${JSON.stringify({ id: readyId, method: "Browser.getVersion" })}\0`, + ); }); } -async function waitForCdpWebSocketUrl(cdp_url: string, timeout_ms: number, poll_interval_ms: number) { +async function waitForCdpWebSocketUrl( + cdp_url: string, + timeout_ms: number, + poll_interval_ms: number, +) { const deadline = Date.now() + timeout_ms; + let lastError: unknown = null; while (Date.now() < deadline) { try { return await resolveCdpWebSocketUrl(cdp_url); - } catch { + } catch (error) { + lastError = error; await delay(poll_interval_ms); } } - throw new Error(`Chrome at ${cdp_url} did not expose a WebSocket CDP URL within ${timeout_ms}ms`); + if (lastError instanceof Error) { + throw new Error( + `Chrome at ${cdp_url} did not expose a WebSocket CDP URL within ${timeout_ms}ms: ${lastError.message}`, + ); + } + throw new Error( + `Chrome at ${cdp_url} did not expose a WebSocket CDP URL within ${timeout_ms}ms`, + ); +} + +async function readDevToolsActivePort(profile_dir: string) { + const activePortPath = path.join(profile_dir, "DevToolsActivePort"); + let body: string; + try { + body = await readFile(activePortPath, "utf8"); + } catch (error) { + if ((error as NodeJS.ErrnoException).code === "ENOENT") return null; + throw error; + } + const [rawPort, websocketPath] = body.trim().split(/\r?\n/); + if (!rawPort || !websocketPath) return null; + const port = Number(rawPort); + if (!Number.isInteger(port) || port <= 0) + throw new Error(`Invalid DevToolsActivePort port: ${rawPort}`); + return { port, cdp_url: `http://127.0.0.1:${port}`, websocketPath }; +} + +async function waitForBrowserSelectedCdpWebSocketUrl( + profile_dir: string, + timeout_ms: number, + poll_interval_ms: number, + assertChromeRunning: () => void, +) { + const deadline = Date.now() + timeout_ms; + let lastError: unknown = null; + while (Date.now() < deadline) { + assertChromeRunning(); + const activePort = await readDevToolsActivePort(profile_dir); + if (activePort) { + try { + return { + port: activePort.port, + cdp_url: await resolveCdpWebSocketUrl(activePort.cdp_url), + }; + } catch (error) { + lastError = error; + } + } + await delay(poll_interval_ms); + } + if (lastError instanceof Error) { + throw new Error( + `Chrome did not expose DevToolsActivePort from ${profile_dir} within ${timeout_ms}ms: ${lastError.message}`, + ); + } + throw new Error( + `Chrome did not expose DevToolsActivePort from ${profile_dir} within ${timeout_ms}ms`, + ); } export class LocalBrowserLauncher extends BrowserLauncher { static findChromeBinary(explicit?: string | null) { - const candidates = [explicit, ...candidatePaths()].filter((candidate): candidate is string => Boolean(candidate)); + const candidates = [explicit, ...candidatePaths()].filter( + (candidate): candidate is string => Boolean(candidate), + ); for (const candidate of candidates) { if (candidate && existsSync(candidate)) return candidate; } @@ -273,8 +391,9 @@ export class LocalBrowserLauncher extends BrowserLauncher { const exe = LocalBrowserLauncher.findChromeBinary(executable_path); const usePipe = remote_debugging === "pipe"; const useLoopbackCdp = !usePipe || loopback_cdp || port != null; - const usePort = useLoopbackCdp ? port || (await LocalBrowserLauncher.freePort()) : null; - const profile_dir = user_data_dir || (await mkdtemp(path.join(tmpdir(), "modcdp."))); + const usePort = useLoopbackCdp ? (port ?? 0) : null; + const profile_dir = + user_data_dir || (await mkdtemp(path.join(tmpdir(), "modcdp."))); const flags = [ ...DEFAULT_FLAGS, headless ? "--headless=new" : null, @@ -289,7 +408,9 @@ export class LocalBrowserLauncher extends BrowserLauncher { "about:blank", ].filter(Boolean); - const useStdio = (usePipe ? ["ignore", "ignore", "ignore", "pipe", "pipe"] : "ignore") as + const useStdio = ( + usePipe ? ["ignore", "ignore", "ignore", "pipe", "pipe"] : "ignore" + ) as | "ignore" | "inherit" | "pipe" @@ -307,7 +428,16 @@ export class LocalBrowserLauncher extends BrowserLauncher { if (closed) return; closed = true; await terminateProcess(proc); - if (!user_data_dir || cleanup_user_data_dir) await removeProfileDir(profile_dir); + if (!user_data_dir || cleanup_user_data_dir) + await removeProfileDir(profile_dir); + }; + const assertChromeRunning = () => { + if (spawnError) throw spawnError; + if (proc.exitCode !== null || proc.signalCode !== null) { + throw new Error( + `Chrome exited before CDP became ready (exit=${proc.exitCode}, signal=${proc.signalCode}).`, + ); + } }; if (usePipe) { @@ -315,26 +445,35 @@ export class LocalBrowserLauncher extends BrowserLauncher { const pipe_read = proc.stdio[4] as NodeJS.ReadableStream | null; if (!pipe_write || !pipe_read) { await close(); - throw new Error("Chrome remote-debugging pipe stdio handles were not created."); - } - if (spawnError) { - await close(); - throw spawnError; + throw new Error( + "Chrome remote-debugging pipe stdio handles were not created.", + ); } + assertChromeRunning(); await waitForPipeReady(pipe_read, pipe_write, chrome_ready_timeout_ms); - const loopback_cdp_url = + const loopback = usePort == null ? null - : await waitForCdpWebSocketUrl( - `http://127.0.0.1:${usePort}`, - chrome_ready_timeout_ms, - chrome_ready_poll_interval_ms, - ); + : usePort === 0 + ? await waitForBrowserSelectedCdpWebSocketUrl( + profile_dir, + chrome_ready_timeout_ms, + chrome_ready_poll_interval_ms, + assertChromeRunning, + ) + : { + port: usePort, + cdp_url: await waitForCdpWebSocketUrl( + `http://127.0.0.1:${usePort}`, + chrome_ready_timeout_ms, + chrome_ready_poll_interval_ms, + ), + }; this.launched = { proc, - ...(usePort == null ? {} : { port: usePort }), + ...(loopback == null ? {} : { port: loopback.port }), cdp_url: `pipe://${proc.pid}`, - ...(loopback_cdp_url == null ? {} : { loopback_cdp_url }), + ...(loopback == null ? {} : { loopback_cdp_url: loopback.cdp_url }), pipe_read, pipe_write, profile_dir, @@ -343,37 +482,46 @@ export class LocalBrowserLauncher extends BrowserLauncher { return this.launched; } - const cdp_port = usePort as number; - const cdp_url = `http://127.0.0.1:${cdp_port}`; const deadline = Date.now() + chrome_ready_timeout_ms; while (Date.now() < deadline) { - if (spawnError) { + try { + assertChromeRunning(); + } catch (error) { await close(); - throw spawnError; + throw error; } - if (proc.exitCode !== null || proc.signalCode !== null) { - await close(); - throw new Error(`Chrome exited before CDP became ready (exit=${proc.exitCode}, signal=${proc.signalCode}).`); + const activePort = + usePort === 0 + ? await readDevToolsActivePort(profile_dir) + : { port: usePort as number, cdp_url: `http://127.0.0.1:${usePort}` }; + if (!activePort) { + await delay(chrome_ready_poll_interval_ms); + continue; } try { - const response = await fetch(`${cdp_url}/json/version`); + const response = await fetch(`${activePort.cdp_url}/json/version`); if (response.ok) { const version = await response.json(); // cdp_url is resolved from the HTTP discovery endpoint before returning. this.launched = { proc, - port: cdp_port, - cdp_url: version.webSocketDebuggerUrl ?? cdp_url, - loopback_cdp_url: version.webSocketDebuggerUrl ?? cdp_url, + port: activePort.port, + cdp_url: version.webSocketDebuggerUrl ?? activePort.cdp_url, + loopback_cdp_url: + version.webSocketDebuggerUrl ?? activePort.cdp_url, profile_dir, close, }; return this.launched; } } catch {} - await new Promise((resolve) => setTimeout(resolve, chrome_ready_poll_interval_ms)); + await new Promise((resolve) => + setTimeout(resolve, chrome_ready_poll_interval_ms), + ); } await close(); - throw new Error(`Chrome at ${cdp_url} did not become ready within ${chrome_ready_timeout_ms}ms`); + throw new Error( + `Chrome did not become ready within ${chrome_ready_timeout_ms}ms`, + ); } } diff --git a/js/src/server/ModCDPServer.ts b/js/src/server/ModCDPServer.ts index ef5163a..eada866 100644 --- a/js/src/server/ModCDPServer.ts +++ b/js/src/server/ModCDPServer.ts @@ -7,7 +7,10 @@ // when Chrome refuses Extensions.loadUnpacked. import type { cdp } from "../types/generated/cdp.js"; -import { commands as nativeCommandSchemas, events as nativeEventSchemas } from "../types/generated/zod.js"; +import { + commands as nativeCommandSchemas, + events as nativeEventSchemas, +} from "../types/generated/zod.js"; import { normalizeModCDPPayloadSchema } from "../types/modcdp.js"; import type { CdpCommandMessage, @@ -50,7 +53,9 @@ type ModCDPGlobalScope = typeof globalThis & }; }; -export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis as ModCDPGlobalScope) { +export function installModCDPServer( + globalScope: ModCDPGlobalScope = globalThis as ModCDPGlobalScope, +) { const MODCDP_SERVER_VERSION = 2; const DEFAULT_CDP_SEND_TIMEOUT_MS = 10_000; const DEFAULT_LOOPBACK_EXECUTION_CONTEXT_TIMEOUT_MS = 10_000; @@ -81,7 +86,9 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis const commandHandlers = new Map(); const eventBindings = new Map(); - const eventListeners = new Set<(event: string, data: ProtocolPayload, cdpSessionId: string | null) => void>(); + const eventListeners = new Set< + (event: string, data: ProtocolPayload, cdpSessionId: string | null) => void + >(); const middlewares: Record = { request: [], response: [], @@ -91,35 +98,61 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis let runtime_types_promise: Promise | null = null; function nativeCommandSchema(method: string) { - return (nativeCommandSchemas as Record)[method]; + return (nativeCommandSchemas as Record)[ + method + ]; } function nativeEventSchema(eventName: string) { - return (nativeEventSchemas as Record)[eventName]; + return (nativeEventSchemas as Record)[ + eventName + ]; } - function commandParamsSchema(method: string, command: ModCDPCustomCommandRegistration | null) { + function commandParamsSchema( + method: string, + command: ModCDPCustomCommandRegistration | null, + ) { return ( - (command?.params_schema as ProtocolCommandSchema["params"] | null) ?? nativeCommandSchema(method)?.params ?? null + (command?.params_schema as ProtocolCommandSchema["params"] | null) ?? + nativeCommandSchema(method)?.params ?? + null ); } - function commandResultSchema(method: string, command: ModCDPCustomCommandRegistration | null) { + function commandResultSchema( + method: string, + command: ModCDPCustomCommandRegistration | null, + ) { return ( - (command?.result_schema as ProtocolCommandSchema["result"] | null) ?? nativeCommandSchema(method)?.result ?? null + (command?.result_schema as ProtocolCommandSchema["result"] | null) ?? + nativeCommandSchema(method)?.result ?? + null ); } - function eventPayloadSchema(eventName: string, event: ModCDPCustomEventRegistration | null) { - return (event?.event_schema as ProtocolEventSchema | null) ?? nativeEventSchema(eventName) ?? null; + function eventPayloadSchema( + eventName: string, + event: ModCDPCustomEventRegistration | null, + ) { + return ( + (event?.event_schema as ProtocolEventSchema | null) ?? + nativeEventSchema(eventName) ?? + null + ); } - async function publishEvent(eventName: string, payload: ProtocolPayload = {}, cdpSessionId: string | null = null) { + async function publishEvent( + eventName: string, + payload: ProtocolPayload = {}, + cdpSessionId: string | null = null, + ) { payload = await ModCDPServer.runMiddleware("event", eventName, payload, { cdpSessionId, event: { name: eventName, payload }, }); - if (payload === undefined) return { event: eventName, emitted: false, reason: "middleware_dropped" }; + if (payload === undefined) + return { event: eventName, emitted: false, reason: "middleware_dropped" }; const event = registryMatch(eventBindings, eventName); payload = eventPayloadSchema(eventName, event)?.parse(payload) ?? payload; @@ -157,7 +190,10 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis params: (payload ?? {}) as CdpEventMessage["params"], }; if (cdpSessionId) message.sessionId = cdpSessionId; - publishNats(`${nats_bridge_subject_prefix}.browser_to_client`, { type: "modcdp.nats.message", message }); + publishNats(`${nats_bridge_subject_prefix}.browser_to_client`, { + type: "modcdp.nats.message", + message, + }); emittedThroughNatsBridge = true; } @@ -166,13 +202,25 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis if (isCustomEvent) { const customBinding = globalScope[CUSTOM_EVENT_BINDING_NAME]; if (typeof customBinding === "function") { - customBinding(encodeBindingPayload({ event: eventName, data: payload, cdpSessionId })); + customBinding( + encodeBindingPayload({ + event: eventName, + data: payload, + cdpSessionId, + }), + ); emittedThroughBinding = true; } } else { const mirrorBinding = globalScope[UPSTREAM_EVENT_BINDING_NAME]; if (typeof mirrorBinding === "function") { - mirrorBinding(encodeBindingPayload({ event: eventName, data: payload, cdpSessionId })); + mirrorBinding( + encodeBindingPayload({ + event: eventName, + data: payload, + cdpSessionId, + }), + ); emittedThroughBinding = true; } } @@ -204,7 +252,10 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis const loopbackTargetSessions = new Map(); const loopbackSessionTargets = new Map(); const loopbackSessionContexts = new Map(); - const loopbackContextWaiters = new Map void>>(); + const loopbackContextWaiters = new Map< + string, + Set<(contextId: number) => void> + >(); const initializedLoopbackSockets = new WeakSet(); const loopbackPending = new Map< number, @@ -212,16 +263,19 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis >(); let reverseBridgeSocket: WebSocket | null = null; let reverseBridgeUrl: string | null = null; - let reverseBridgeReconnectIntervalMs = DEFAULT_REVERSE_BRIDGE_RECONNECT_INTERVAL_MS; + let reverseBridgeReconnectIntervalMs = + DEFAULT_REVERSE_BRIDGE_RECONNECT_INTERVAL_MS; let reverseBridgeReconnectTimer: ReturnType | null = null; let nativeBridgePort: chrome.runtime.Port | null = null; let nativeBridgeHostName: string | null = null; - let nativeBridgeReconnectIntervalMs = DEFAULT_NATIVE_BRIDGE_RECONNECT_INTERVAL_MS; + let nativeBridgeReconnectIntervalMs = + DEFAULT_NATIVE_BRIDGE_RECONNECT_INTERVAL_MS; let nativeBridgeReconnectTimer: ReturnType | null = null; let nats_bridge_socket: WebSocket | null = null; let nats_bridge_url: string | null = null; let nats_bridge_subject_prefix = DEFAULT_NATS_BRIDGE_SUBJECT_PREFIX; - let nats_bridge_reconnect_interval_ms = DEFAULT_NATS_BRIDGE_RECONNECT_INTERVAL_MS; + let nats_bridge_reconnect_interval_ms = + DEFAULT_NATS_BRIDGE_RECONNECT_INTERVAL_MS; let nats_bridge_reconnect_timer: ReturnType | null = null; let nats_bridge_buffer = ""; let selfDebuggee: chrome.debugger.Debuggee | null = null; @@ -238,7 +292,8 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis for (const [pattern, value] of registry) { if (!pattern.endsWith(".*")) continue; const prefix = pattern.slice(0, -1); - if (!name.startsWith(prefix) || prefix.length <= matchPrefixLength) continue; + if (!name.startsWith(prefix) || prefix.length <= matchPrefixLength) + continue; match = value; matchPrefixLength = prefix.length; } @@ -253,7 +308,12 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis id?: string; name?: string; meta?: () => - | { cdp_command_name?: unknown; cdp_event_name?: unknown; id?: unknown; name?: unknown } + | { + cdp_command_name?: unknown; + cdp_event_name?: unknown; + id?: unknown; + name?: unknown; + } | undefined; } | string, @@ -263,13 +323,20 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis const name = value?.cdp_command_name ?? value?.cdp_event_name ?? - (typeof meta?.cdp_command_name === "string" ? meta.cdp_command_name : undefined) ?? - (typeof meta?.cdp_event_name === "string" ? meta.cdp_event_name : undefined) ?? + (typeof meta?.cdp_command_name === "string" + ? meta.cdp_command_name + : undefined) ?? + (typeof meta?.cdp_event_name === "string" + ? meta.cdp_event_name + : undefined) ?? value?.id ?? (typeof meta?.id === "string" ? meta.id : undefined) ?? (typeof meta?.name === "string" ? meta.name : undefined) ?? value?.name; - if (typeof name !== "string" || !name) throw new Error("Expected a CDP name string or a named CDP schema/alias."); + if (typeof name !== "string" || !name) + throw new Error( + "Expected a CDP name string or a named CDP schema/alias.", + ); return name; } @@ -278,28 +345,43 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis } function compactDebuggee(input: { - [Key in keyof chrome.debugger.Debuggee]?: chrome.debugger.Debuggee[Key] | null; + [Key in keyof chrome.debugger.Debuggee]?: + | chrome.debugger.Debuggee[Key] + | null; }): chrome.debugger.Debuggee { return { ...(typeof input.tabId === "number" ? { tabId: input.tabId } : {}), - ...(typeof input.targetId === "string" ? { targetId: input.targetId } : {}), - ...(typeof input.extensionId === "string" ? { extensionId: input.extensionId } : {}), + ...(typeof input.targetId === "string" + ? { targetId: input.targetId } + : {}), + ...(typeof input.extensionId === "string" + ? { extensionId: input.extensionId } + : {}), }; } async function resolveCDPEndpoint(endpoint: string | null) { if (!endpoint || /^wss?:\/\//i.test(endpoint)) return endpoint; if (!/^https?:\/\//i.test(endpoint)) { - throw new Error(`loopback_cdp_url must be a ws://, wss://, http://, or https:// CDP endpoint, got ${endpoint}.`); + throw new Error( + `loopback_cdp_url must be a ws://, wss://, http://, or https:// CDP endpoint, got ${endpoint}.`, + ); } - const { webSocketDebuggerUrl } = await fetch(`${endpoint}/json/version`).then((r) => r.json()); - if (!webSocketDebuggerUrl) throw new Error(`loopback_cdp_url HTTP discovery returned no webSocketDebuggerUrl.`); + const { webSocketDebuggerUrl } = await fetch( + `${endpoint}/json/version`, + ).then((r) => r.json()); + if (!webSocketDebuggerUrl) + throw new Error( + `loopback_cdp_url HTTP discovery returned no webSocketDebuggerUrl.`, + ); return webSocketDebuggerUrl; } async function openCDPSocket(endpoint: string): Promise { if (!/^wss?:\/\//i.test(endpoint)) { - throw new Error(`loopback_cdp_url must be a ws:// or wss:// CDP websocket URL, got ${endpoint}.`); + throw new Error( + `loopback_cdp_url must be a ws:// or wss:// CDP websocket URL, got ${endpoint}.`, + ); } return new Promise((resolve, reject) => { const w = new WebSocket(endpoint); @@ -340,7 +422,11 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis }, { once: true }, ); - w.addEventListener("close", (event) => fail(new Error(describe("CDP socket closed", event))), { once: true }); + w.addEventListener( + "close", + (event) => fail(new Error(describe("CDP socket closed", event))), + { once: true }, + ); }); } @@ -371,12 +457,37 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis } const socket = reverseBridgeSocket; reverseBridgeSocket = null; - if (socket?.readyState === WebSocket.OPEN || socket?.readyState === WebSocket.CONNECTING) { + if ( + socket?.readyState === WebSocket.OPEN || + socket?.readyState === WebSocket.CONNECTING + ) { socket.close(1000, reason); } return { upstream_reversews_url, stopped: true, reason }; } + function reverseBridgeActive() { + return ( + reverseBridgeSocket?.readyState === WebSocket.OPEN || + reverseBridgeSocket?.readyState === WebSocket.CONNECTING + ); + } + + function stopNativeBridge(reason = "stopped") { + const upstream_nativemessaging_host_name = nativeBridgeHostName; + nativeBridgeHostName = null; + if (nativeBridgeReconnectTimer) { + clearTimeout(nativeBridgeReconnectTimer); + nativeBridgeReconnectTimer = null; + } + const port = nativeBridgePort; + nativeBridgePort = null; + ModCDPServer.native_bridge_connected = false; + ModCDPServer.native_bridge_last_error = reason; + port?.disconnect?.(); + return { upstream_nativemessaging_host_name, stopped: true, reason }; + } + function scheduleNativeBridgeReconnect(delayMs: number) { if (!nativeBridgeHostName) return; if (nativeBridgeReconnectTimer) return; @@ -399,14 +510,19 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis let message: CdpCommandMessage; try { const parsed = JSON.parse(typeof data === "string" ? data : String(data)); - if (typeof parsed?.id !== "number" || typeof parsed?.method !== "string") return; + if (typeof parsed?.id !== "number" || typeof parsed?.method !== "string") + return; message = parsed as CdpCommandMessage; } catch { return; } try { - const result = await ModCDPServer.handleCommand(message.method, message.params ?? {}, message.sessionId ?? null); + const result = await ModCDPServer.handleCommand( + message.method, + message.params ?? {}, + message.sessionId ?? null, + ); ws.send(JSON.stringify({ id: message.id, result })); } catch (error) { ws.send( @@ -421,7 +537,10 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis } } - async function handleNativeBridgeMessage(port: chrome.runtime.Port, data: unknown) { + async function handleNativeBridgeMessage( + port: chrome.runtime.Port, + data: unknown, + ) { let message: CdpCommandMessage; try { if ( @@ -435,7 +554,11 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis } try { - const result = await ModCDPServer.handleCommand(message.method, message.params ?? {}, message.sessionId ?? null); + const result = await ModCDPServer.handleCommand( + message.method, + message.params ?? {}, + message.sessionId ?? null, + ); port.postMessage({ id: message.id, result }); } catch (error) { port.postMessage({ @@ -455,7 +578,10 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis } catch { return; } - const record = parsed && typeof parsed === "object" ? (parsed as Record) : null; + const record = + parsed && typeof parsed === "object" + ? (parsed as Record) + : null; if (record?.type === "modcdp.nats.hello") { publishNats(`${nats_bridge_subject_prefix}.browser_to_client`, { type: "modcdp.nats.hello", @@ -465,7 +591,8 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis }); return; } - const candidate = record?.type === "modcdp.nats.message" ? record.message : parsed; + const candidate = + record?.type === "modcdp.nats.message" ? record.message : parsed; if ( !candidate || typeof candidate !== "object" || @@ -475,7 +602,11 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis return; const message = candidate as CdpCommandMessage; try { - const result = await ModCDPServer.handleCommand(message.method, message.params ?? {}, message.sessionId ?? null); + const result = await ModCDPServer.handleCommand( + message.method, + message.params ?? {}, + message.sessionId ?? null, + ); publishNats(`${nats_bridge_subject_prefix}.browser_to_client`, { type: "modcdp.nats.message", message: { id: message.id, result }, @@ -499,12 +630,16 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis reverseBridgeSocket?.readyState === WebSocket.OPEN || reverseBridgeSocket?.readyState === WebSocket.CONNECTING ) { - return { upstream_reversews_url: endpoint, connected: reverseBridgeSocket.readyState === WebSocket.OPEN }; + return { + upstream_reversews_url: endpoint, + connected: reverseBridgeSocket.readyState === WebSocket.OPEN, + }; } const ws = new WebSocket(endpoint); reverseBridgeSocket = ws; ws.addEventListener("open", () => { + stopNativeBridge("reverse bridge connected"); startOffscreenKeepAlive(); ws.send( JSON.stringify({ @@ -521,10 +656,12 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis ws.addEventListener("error", () => { if (reverseBridgeSocket === ws) reverseBridgeSocket = null; scheduleReverseBridgeReconnect(reverseBridgeReconnectIntervalMs); + if (nativeBridgeHostName) connectNativeBridge(nativeBridgeHostName); }); ws.addEventListener("close", () => { if (reverseBridgeSocket === ws) reverseBridgeSocket = null; scheduleReverseBridgeReconnect(reverseBridgeReconnectIntervalMs); + if (nativeBridgeHostName) connectNativeBridge(nativeBridgeHostName); }); return { upstream_reversews_url: endpoint, connected: false }; } @@ -533,9 +670,25 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis const chromeApi = globalScope.chrome; if (!chromeApi?.runtime?.connectNative) { scheduleNativeBridgeReconnect(nativeBridgeReconnectIntervalMs); - return { upstream_nativemessaging_host_name: hostName, connected: false, reason: "native_messaging_unavailable" }; + return { + upstream_nativemessaging_host_name: hostName, + connected: false, + reason: "native_messaging_unavailable", + }; } - if (nativeBridgePort) return { upstream_nativemessaging_host_name: hostName, connected: true }; + if ( + reverseBridgeUrl && + (reverseBridgeSocket?.readyState === WebSocket.OPEN || + reverseBridgeSocket?.readyState === WebSocket.CONNECTING) + ) { + return { + upstream_nativemessaging_host_name: hostName, + connected: false, + reason: "reverse_bridge_active", + }; + } + if (nativeBridgePort) + return { upstream_nativemessaging_host_name: hostName, connected: true }; try { ModCDPServer.native_bridge_attempts += 1; ModCDPServer.native_bridge_last_error = null; @@ -556,7 +709,8 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis if (nativeBridgePort === port) nativeBridgePort = null; ModCDPServer.native_bridge_connected = false; ModCDPServer.native_bridge_last_error = - chromeApi.runtime.lastError?.message ?? "Native messaging port disconnected."; + chromeApi.runtime.lastError?.message ?? + "Native messaging port disconnected."; scheduleNativeBridgeReconnect(nativeBridgeReconnectIntervalMs); }); return { upstream_nativemessaging_host_name: hostName, connected: true }; @@ -565,15 +719,24 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis ModCDPServer.native_bridge_connected = false; ModCDPServer.native_bridge_last_error = errorMessage(error); scheduleNativeBridgeReconnect(nativeBridgeReconnectIntervalMs); - return { upstream_nativemessaging_host_name: hostName, connected: false, reason: errorMessage(error) }; + return { + upstream_nativemessaging_host_name: hostName, + connected: false, + reason: errorMessage(error), + }; } } async function connectNatsBridge(endpoint: string) { if (!/^wss?:\/\//i.test(endpoint)) { - throw new Error(`nats bridge endpoint must be a ws:// or wss:// URL for extension transport, got ${endpoint}.`); + throw new Error( + `nats bridge endpoint must be a ws:// or wss:// URL for extension transport, got ${endpoint}.`, + ); } - if (nats_bridge_socket?.readyState === WebSocket.OPEN || nats_bridge_socket?.readyState === WebSocket.CONNECTING) { + if ( + nats_bridge_socket?.readyState === WebSocket.OPEN || + nats_bridge_socket?.readyState === WebSocket.CONNECTING + ) { return { upstream_nats_url: endpoint, upstream_nats_subject_prefix: nats_bridge_subject_prefix, @@ -605,23 +768,33 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis if (nats_bridge_socket === ws) nats_bridge_socket = null; scheduleNatsBridgeReconnect(nats_bridge_reconnect_interval_ms); }); - return { upstream_nats_url: endpoint, upstream_nats_subject_prefix: nats_bridge_subject_prefix, connected: false }; + return { + upstream_nats_url: endpoint, + upstream_nats_subject_prefix: nats_bridge_subject_prefix, + connected: false, + }; } function writeNats(data: string) { - if (nats_bridge_socket?.readyState === WebSocket.OPEN) nats_bridge_socket.send(data); + if (nats_bridge_socket?.readyState === WebSocket.OPEN) + nats_bridge_socket.send(data); } function publishNats(subject: string, message: unknown) { const body = JSON.stringify(message); - writeNats(`PUB ${subject} ${new TextEncoder().encode(body).byteLength}\r\n${body}\r\n`); + writeNats( + `PUB ${subject} ${new TextEncoder().encode(body).byteLength}\r\n${body}\r\n`, + ); } async function readNatsWebSocketData(data: unknown) { if (typeof data === "string") nats_bridge_buffer += data; - else if (data instanceof ArrayBuffer) nats_bridge_buffer += new TextDecoder().decode(data); - else if (ArrayBuffer.isView(data)) nats_bridge_buffer += new TextDecoder().decode(data); - else if (typeof Blob !== "undefined" && data instanceof Blob) nats_bridge_buffer += await data.text(); + else if (data instanceof ArrayBuffer) + nats_bridge_buffer += new TextDecoder().decode(data); + else if (ArrayBuffer.isView(data)) + nats_bridge_buffer += new TextDecoder().decode(data); + else if (typeof Blob !== "undefined" && data instanceof Blob) + nats_bridge_buffer += await data.text(); else return; nats_bridge_buffer = consumeNatsProtocol(nats_bridge_buffer); } @@ -637,7 +810,8 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis const size = Number(parts[parts.length - 1]); const payloadStart = lineEnd + 2; const payloadEnd = payloadStart + size; - if (!Number.isInteger(size) || buffer.length < payloadEnd + 2) return buffer; + if (!Number.isInteger(size) || buffer.length < payloadEnd + 2) + return buffer; const payload = buffer.slice(payloadStart, payloadEnd); buffer = buffer.slice(payloadEnd + 2); void handleNatsBridgePayload(payload); @@ -649,7 +823,13 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis } function natsConnectOptions() { - return { verbose: false, pedantic: false, lang: "modcdp-extension", version: "1", protocol: 1 }; + return { + verbose: false, + pedantic: false, + lang: "modcdp-extension", + version: "1", + protocol: 1, + }; } function debuggerSendCommand( @@ -671,17 +851,28 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis if (selfDebuggee) return selfDebuggee; const chromeApi = globalScope.chrome; if (!chromeApi?.debugger?.getTargets || !chromeApi?.debugger?.attach) { - throw new Error("chrome.debugger is unavailable for reverse expression evaluation."); + throw new Error( + "chrome.debugger is unavailable for reverse expression evaluation.", + ); } const serviceWorkerUrl = currentServiceWorkerUrl(); const targets = await chromeApi.debugger.getTargets(); - const target = targets.find((candidate) => candidate.url === serviceWorkerUrl); - if (!target?.id) throw new Error(`Could not find ModCDP service worker debugger target ${serviceWorkerUrl}.`); + const target = targets.find( + (candidate) => candidate.url === serviceWorkerUrl, + ); + if (!target?.id) + throw new Error( + `Could not find ModCDP service worker debugger target ${serviceWorkerUrl}.`, + ); const debuggee = { targetId: target.id }; await new Promise((resolve, reject) => chromeApi.debugger.attach(debuggee, "1.3", () => { const error = chromeApi.runtime.lastError; - if (!error || error.message?.includes("Another debugger is already attached")) resolve(); + if ( + !error || + error.message?.includes("Another debugger is already attached") + ) + resolve(); else reject(new Error(error.message)); }), ); @@ -694,7 +885,8 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis const manifest = chromeApi?.runtime?.getManifest?.(); const service_worker = manifest && typeof manifest === "object" && "background" in manifest - ? (manifest.background as { service_worker?: unknown } | undefined)?.service_worker + ? (manifest.background as { service_worker?: unknown } | undefined) + ?.service_worker : null; const service_worker_path = typeof service_worker === "string" && service_worker.length > 0 @@ -712,7 +904,9 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis })) as cdp.types.ts.Runtime.EvaluateResult; if (result.exceptionDetails) { const ex = result.exceptionDetails; - throw new Error(ex.exception?.description || ex.text || "Runtime evaluation failed"); + throw new Error( + ex.exception?.description || ex.text || "Runtime evaluation failed", + ); } return (result.result?.value ?? {}) as ProtocolResult; } @@ -757,10 +951,13 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis const method = typeof msg.method === "string" ? msg.method : null; if (!method) return; const payload = - msg.params && typeof msg.params === "object" && !Array.isArray(msg.params) + msg.params && + typeof msg.params === "object" && + !Array.isArray(msg.params) ? (msg.params as ProtocolPayload) : {}; - const cdpSessionId = typeof msg.sessionId === "string" ? msg.sessionId : null; + const cdpSessionId = + typeof msg.sessionId === "string" ? msg.sessionId : null; const payloadRecord = payload as Record; const targetInfo = payloadRecord.targetInfo && @@ -768,27 +965,48 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis !Array.isArray(payloadRecord.targetInfo) ? (payloadRecord.targetInfo as Record) : null; - const attachedSessionId = typeof payloadRecord.sessionId === "string" ? payloadRecord.sessionId : null; - const attachedTargetId = typeof targetInfo?.targetId === "string" ? targetInfo.targetId : null; - if (method === "Target.attachedToTarget" && attachedSessionId != null && attachedTargetId != null) { + const attachedSessionId = + typeof payloadRecord.sessionId === "string" + ? payloadRecord.sessionId + : null; + const attachedTargetId = + typeof targetInfo?.targetId === "string" + ? targetInfo.targetId + : null; + if ( + method === "Target.attachedToTarget" && + attachedSessionId != null && + attachedTargetId != null + ) { loopbackTargetSessions.set(attachedTargetId, attachedSessionId); loopbackSessionTargets.set(attachedSessionId, attachedTargetId); } else if (method === "Target.detachedFromTarget") { const detachedSessionId = - typeof payloadRecord.sessionId === "string" ? payloadRecord.sessionId : cdpSessionId; + typeof payloadRecord.sessionId === "string" + ? payloadRecord.sessionId + : cdpSessionId; const detachedTargetId = typeof payloadRecord.targetId === "string" ? payloadRecord.targetId : detachedSessionId == null ? null : (loopbackSessionTargets.get(detachedSessionId) ?? null); - if (detachedTargetId != null) loopbackTargetSessions.delete(detachedTargetId); - if (detachedSessionId != null) loopbackSessionTargets.delete(detachedSessionId); - if (detachedSessionId != null) loopbackSessionContexts.delete(detachedSessionId); - } else if (method === "Runtime.executionContextCreated" && cdpSessionId != null) { + if (detachedTargetId != null) + loopbackTargetSessions.delete(detachedTargetId); + if (detachedSessionId != null) + loopbackSessionTargets.delete(detachedSessionId); + if (detachedSessionId != null) + loopbackSessionContexts.delete(detachedSessionId); + } else if ( + method === "Runtime.executionContextCreated" && + cdpSessionId != null + ) { const context = payloadRecord.context; const contextId = - context && typeof context === "object" && "id" in context && typeof context.id === "number" + context && + typeof context === "object" && + "id" in context && + typeof context.id === "number" ? context.id : null; if (contextId != null) { @@ -806,19 +1024,34 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis attachedSessionId != null && (targetInfo?.type === "page" || targetInfo?.type === "iframe") ) { - await ModCDPServer.handleCommand("Page.enable", {}, attachedSessionId).catch((error) => - console.error("[ModCDPServer] Page.enable failed for attached target", error), + await ModCDPServer.handleCommand( + "Page.enable", + {}, + attachedSessionId, + ).catch((error) => + console.error( + "[ModCDPServer] Page.enable failed for attached target", + error, + ), ); await ModCDPServer.handleCommand( "Page.setLifecycleEventsEnabled", { enabled: true }, attachedSessionId, ).catch((error) => - console.error("[ModCDPServer] Page.setLifecycleEventsEnabled failed for attached target", error), + console.error( + "[ModCDPServer] Page.setLifecycleEventsEnabled failed for attached target", + error, + ), ); } await publishEvent(method, payload, cdpSessionId); - })().catch((error) => console.error("[ModCDPServer] loopback event listener failed", error)); + })().catch((error) => + console.error( + "[ModCDPServer] loopback event listener failed", + error, + ), + ); return; } const pending = loopbackPending.get(id); @@ -828,14 +1061,16 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis else pending.resolve(msg.result || {}); }); ws.addEventListener("error", () => { - if (loopbackSockets.get(endpoint) === ws) loopbackSockets.delete(endpoint); + if (loopbackSockets.get(endpoint) === ws) + loopbackSockets.delete(endpoint); loopbackTargetSessions.clear(); loopbackSessionTargets.clear(); loopbackSessionContexts.clear(); rejectLoopbackPending(new Error(`CDP socket error ${endpoint}`)); }); ws.addEventListener("close", (event) => { - if (loopbackSockets.get(endpoint) === ws) loopbackSockets.delete(endpoint); + if (loopbackSockets.get(endpoint) === ws) + loopbackSockets.delete(endpoint); loopbackTargetSessions.clear(); loopbackSessionTargets.clear(); loopbackSessionContexts.clear(); @@ -853,11 +1088,21 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis return nextSocket; } - async function callLoopbackWS(method: string, params: ProtocolParams = {}, sessionId: string | null = null) { - if (!ModCDPServer.loopback_cdp_url) throw new Error(`No loopback_cdp_url configured for ${method}.`); + async function callLoopbackWS( + method: string, + params: ProtocolParams = {}, + sessionId: string | null = null, + ) { + if (!ModCDPServer.loopback_cdp_url) + throw new Error(`No loopback_cdp_url configured for ${method}.`); const ws = await loopbackWS(ModCDPServer.loopback_cdp_url); const id = nextLoopbackId++; - const message: { id: number; method: string; params: ProtocolParams; sessionId?: string } = { + const message: { + id: number; + method: string; + params: ProtocolParams; + sessionId?: string; + } = { id, method, params, @@ -867,7 +1112,11 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis return new Promise((resolve, reject) => { const timeout = setTimeout(() => { if (!loopbackPending.delete(id)) return; - reject(new Error(`${method} timed out after ${ModCDPServer.cdp_send_timeout_ms}ms`)); + reject( + new Error( + `${method} timed out after ${ModCDPServer.cdp_send_timeout_ms}ms`, + ), + ); }, ModCDPServer.cdp_send_timeout_ms); loopbackPending.set(id, { resolve: (value) => { @@ -902,7 +1151,11 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis const waiters = loopbackContextWaiters.get(sessionId); waiters?.delete(complete); if (waiters?.size === 0) loopbackContextWaiters.delete(sessionId); - reject(new Error(`Timed out waiting for Runtime.executionContextCreated for session ${sessionId}.`)); + reject( + new Error( + `Timed out waiting for Runtime.executionContextCreated for session ${sessionId}.`, + ), + ); }, timeoutMs); const complete = (contextId: number) => { clearTimeout(timeout); @@ -917,7 +1170,8 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis async function ensureOffscreenKeepAlive() { const chromeApi = globalScope.chrome; const offscreen = chromeApi?.offscreen; - if (!offscreen || !chromeApi?.runtime?.getURL) return { started: false, reason: "offscreen_unavailable" }; + if (!offscreen || !chromeApi?.runtime?.getURL) + return { started: false, reason: "offscreen_unavailable" }; const offscreenUrl = chromeApi.runtime.getURL(offscreenKeepAlivePath); try { @@ -933,7 +1187,8 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis .createDocument({ url: offscreenKeepAlivePath, reasons: ["BLOBS"], - justification: "Keep ModCDP service worker active while CDP clients route commands through it.", + justification: + "Keep ModCDP service worker active while CDP clients route commands through it.", }) .finally(() => { creatingOffscreenKeepAlive = null; @@ -954,11 +1209,17 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis native_bridge_last_error: null as string | null, native_bridge_connected: false, cdp_send_timeout_ms: DEFAULT_CDP_SEND_TIMEOUT_MS, - loopback_execution_context_timeout_ms: DEFAULT_LOOPBACK_EXECUTION_CONTEXT_TIMEOUT_MS, - ws_connect_error_settle_timeout_ms: DEFAULT_WS_CONNECT_ERROR_SETTLE_TIMEOUT_MS, + loopback_execution_context_timeout_ms: + DEFAULT_LOOPBACK_EXECUTION_CONTEXT_TIMEOUT_MS, + ws_connect_error_settle_timeout_ms: + DEFAULT_WS_CONNECT_ERROR_SETTLE_TIMEOUT_MS, types: null as (typeof import("../types/generated/zod.js"))["types"] | null, - commands: null as (typeof import("../types/generated/zod.js"))["commands"] | null, - events: null as (typeof import("../types/generated/zod.js"))["events"] | null, + commands: null as + | (typeof import("../types/generated/zod.js"))["commands"] + | null, + events: null as + | (typeof import("../types/generated/zod.js"))["events"] + | null, startOffscreenKeepAlive, startReverseBridge( endpoint: string, @@ -969,16 +1230,24 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis } = {}, ) { if (!/^wss?:\/\//i.test(endpoint)) { - throw new Error(`reverse proxy endpoint must be a ws:// or wss:// URL, got ${endpoint}.`); + throw new Error( + `reverse proxy endpoint must be a ws:// or wss:// URL, got ${endpoint}.`, + ); } reverseBridgeUrl = endpoint; reverseBridgeReconnectIntervalMs = reconnect_interval_ms; void connectReverseBridge(endpoint).catch(() => { scheduleReverseBridgeReconnect(reverseBridgeReconnectIntervalMs); }); - return { upstream_reversews_url: endpoint, reconnect_interval_ms, connecting: true }; + return { + upstream_reversews_url: endpoint, + reconnect_interval_ms, + connecting: true, + }; }, stopReverseBridge, + reverseBridgeActive, + stopNativeBridge, startNativeBridge( hostName = DEFAULT_NATIVE_BRIDGE_HOST_NAME, { @@ -1001,25 +1270,37 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis reconnect_interval_ms?: number; } = {}, ) { - if (!upstream_nats_subject_prefix || /[\s*>]/.test(upstream_nats_subject_prefix)) - throw new Error(`Invalid NATS subject prefix ${upstream_nats_subject_prefix}`); + if ( + !upstream_nats_subject_prefix || + /[\s*>]/.test(upstream_nats_subject_prefix) + ) + throw new Error( + `Invalid NATS subject prefix ${upstream_nats_subject_prefix}`, + ); nats_bridge_url = endpoint; nats_bridge_subject_prefix = upstream_nats_subject_prefix; nats_bridge_reconnect_interval_ms = reconnect_interval_ms; void connectNatsBridge(endpoint).catch(() => { scheduleNatsBridgeReconnect(nats_bridge_reconnect_interval_ms); }); - return { upstream_nats_url: endpoint, upstream_nats_subject_prefix, reconnect_interval_ms, connecting: true }; + return { + upstream_nats_url: endpoint, + upstream_nats_subject_prefix, + reconnect_interval_ms, + connecting: true, + }; }, ensureOffscreenKeepAlive, async loadTypes() { - runtime_types_promise ??= import("../types/generated/zod.js").then((module) => { - this.types = module.types; - this.commands = module.commands; - this.events = module.events; - return module.types; - }); + runtime_types_promise ??= import("../types/generated/zod.js").then( + (module) => { + this.types = module.types; + this.commands = module.commands; + this.events = module.events; + return module.types; + }, + ); return runtime_types_promise; }, @@ -1031,18 +1312,28 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis server_routes, server_browser_token = this.browser_token, server_cdp_send_timeout_ms = this.cdp_send_timeout_ms, - server_loopback_execution_context_timeout_ms = this.loopback_execution_context_timeout_ms, - server_ws_connect_error_settle_timeout_ms = this.ws_connect_error_settle_timeout_ms, + server_loopback_execution_context_timeout_ms = this + .loopback_execution_context_timeout_ms, + server_ws_connect_error_settle_timeout_ms = this + .ws_connect_error_settle_timeout_ms, } = server; - const { custom_commands = [], custom_events = [], custom_middlewares = [] } = params; + const { + custom_commands = [], + custom_events = [], + custom_middlewares = [], + } = params; this.loopback_cdp_url = await resolveCDPEndpoint(server_loopback_cdp_url); this.browser_token = server_browser_token; this.cdp_send_timeout_ms = server_cdp_send_timeout_ms; - this.loopback_execution_context_timeout_ms = server_loopback_execution_context_timeout_ms; - this.ws_connect_error_settle_timeout_ms = server_ws_connect_error_settle_timeout_ms; + this.loopback_execution_context_timeout_ms = + server_loopback_execution_context_timeout_ms; + this.ws_connect_error_settle_timeout_ms = + server_ws_connect_error_settle_timeout_ms; if (upstream.upstream_mode === "nats" && upstream.upstream_nats_url) { this.startNatsBridge(upstream.upstream_nats_url, { - upstream_nats_subject_prefix: upstream.upstream_nats_subject_prefix ?? DEFAULT_NATS_BRIDGE_SUBJECT_PREFIX, + upstream_nats_subject_prefix: + upstream.upstream_nats_subject_prefix ?? + DEFAULT_NATS_BRIDGE_SUBJECT_PREFIX, }); } if (server_routes) this.routes = { ...defaultRoutes, ...server_routes }; @@ -1050,9 +1341,12 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis this.routes = { ...defaultRoutes }; await this.discoverLoopbackCDP(); } - for (const command of custom_commands) this.addCustomCommand(command as ModCDPCustomCommandRegistration); - for (const event of custom_events) this.addCustomEvent(event as ModCDPCustomEventRegistration); - for (const middleware of custom_middlewares) this.addMiddleware(middleware as ModCDPMiddlewareRegistration); + for (const command of custom_commands) + this.addCustomCommand(command as ModCDPCustomCommandRegistration); + for (const event of custom_events) + this.addCustomEvent(event as ModCDPCustomEventRegistration); + for (const middleware of custom_middlewares) + this.addMiddleware(middleware as ModCDPMiddlewareRegistration); await initializeLoopbackCDP(); return { loopback_cdp_url: this.loopback_cdp_url, routes: this.routes }; }, @@ -1065,13 +1359,26 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis handler, }: ModCDPCustomCommandRegistration) { name = normalizeModCDPName(name); - if (!/^[^.]+\.[^.]+$/.test(name)) throw new Error("name must be in Domain.method form."); + if (!/^[^.]+\.[^.]+$/.test(name)) + throw new Error("name must be in Domain.method form."); if (typeof handler !== "function" && typeof expression === "string") { - handler = async (params: ProtocolParams = {}, cdpSessionId: string | null = null, method: string = name) => { - return await evaluateUserExpression({ expression, params, cdpSessionId, method }); + handler = async ( + params: ProtocolParams = {}, + cdpSessionId: string | null = null, + method: string = name, + ) => { + return await evaluateUserExpression({ + expression, + params, + cdpSessionId, + method, + }); }; } - if (typeof handler !== "function") throw new Error(`Custom command ${name} was registered without a handler.`); + if (typeof handler !== "function") + throw new Error( + `Custom command ${name} was registered without a handler.`, + ); commandHandlers.set(name, { name, handler, @@ -1082,27 +1389,56 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis return { name, registered: true }; }, - addCustomEvent({ name, event_schema = null }: ModCDPCustomEventRegistration) { + addCustomEvent({ + name, + event_schema = null, + }: ModCDPCustomEventRegistration) { name = normalizeModCDPName(name); - if (!/^[^.]+\.[^.]+$/.test(name)) throw new Error("name must be in Domain.event form."); - eventBindings.set(name, { name, event_schema: normalizeModCDPPayloadSchema(event_schema) }); + if (!/^[^.]+\.[^.]+$/.test(name)) + throw new Error("name must be in Domain.event form."); + eventBindings.set(name, { + name, + event_schema: normalizeModCDPPayloadSchema(event_schema), + }); return { name, registered: true }; }, - addEventListener(listener: (event: string, data: ProtocolPayload, cdpSessionId: string | null) => void) { + addEventListener( + listener: ( + event: string, + data: ProtocolPayload, + cdpSessionId: string | null, + ) => void, + ) { eventListeners.add(listener); return { remove: () => eventListeners.delete(listener) }; }, - addMiddleware({ name = "*", phase, expression = null, handler }: ModCDPMiddlewareRegistration) { + addMiddleware({ + name = "*", + phase, + expression = null, + handler, + }: ModCDPMiddlewareRegistration) { name = normalizeModCDPName(name); if (!["request", "response", "event"].includes(phase)) throw new Error("phase must be request, response, or event."); - if (name !== "*" && (!name || !name.includes("."))) throw new Error("name must be '*' or Domain.name form."); + if (name !== "*" && (!name || !name.includes("."))) + throw new Error("name must be '*' or Domain.name form."); if (typeof handler !== "function" && typeof expression === "string") { - handler = async (payload: ProtocolPayload, next: unknown, context: ProtocolPayload = {}) => { - const context_object = context && typeof context === "object" ? (context as Record) : {}; - const cdpSessionId = typeof context_object.cdpSessionId === "string" ? context_object.cdpSessionId : null; + handler = async ( + payload: ProtocolPayload, + next: unknown, + context: ProtocolPayload = {}, + ) => { + const context_object = + context && typeof context === "object" + ? (context as Record) + : {}; + const cdpSessionId = + typeof context_object.cdpSessionId === "string" + ? context_object.cdpSessionId + : null; const result = (await evaluateInSelf(` (async () => { const payload = ${JSON.stringify(payload ?? {})}; @@ -1115,11 +1451,16 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis return await handler(payload, next, context); })() `)) as Record; - if (result?.__ModCDP_middleware_next__ === true && typeof next === "function") { + if ( + result?.__ModCDP_middleware_next__ === true && + typeof next === "function" + ) { const nextResult = await next(result.value); const { __ModCDP_middleware_next__, value, ...overrides } = result; if (Object.keys(overrides).length === 0) return nextResult; - return nextResult != null && typeof nextResult === "object" && !Array.isArray(nextResult) + return nextResult != null && + typeof nextResult === "object" && + !Array.isArray(nextResult) ? { ...(nextResult as Record), ...overrides } : overrides; } @@ -1127,23 +1468,35 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis }; } if (typeof handler !== "function") { - throw new Error(`Middleware ${name}:${phase} was registered without a handler.`); + throw new Error( + `Middleware ${name}:${phase} was registered without a handler.`, + ); } middlewares[phase].push({ name, phase, expression, handler }); return { name, phase, registered: true }; }, - async runMiddleware(phase: MiddlewarePhase, name: string, payload: ProtocolPayload, context: ProtocolPayload = {}) { + async runMiddleware( + phase: MiddlewarePhase, + name: string, + payload: ProtocolPayload, + context: ProtocolPayload = {}, + ) { const matching = (middlewares[phase] || []).filter( (middleware) => middleware.name === "*" || middleware.name === name, ); - const dispatch = async (index: number, value: ProtocolPayload): Promise => { + const dispatch = async ( + index: number, + value: ProtocolPayload, + ): Promise => { const middleware = matching[index]; if (!middleware) return value; let nextCalled = false; const next = async (nextValue = value) => { if (nextCalled) - throw new Error(`Middleware ${middleware.name}:${middleware.phase} called next() more than once.`); + throw new Error( + `Middleware ${middleware.name}:${middleware.phase} called next() more than once.`, + ); nextCalled = true; return dispatch(index + 1, nextValue); }; @@ -1153,10 +1506,20 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis return dispatch(0, payload); }, - async handleCommand(method: string, params: ProtocolParams = {}, cdpSessionId: string | null = null) { + async handleCommand( + method: string, + params: ProtocolParams = {}, + cdpSessionId: string | null = null, + ) { const request = { method, params, cdpSessionId }; - const middlewareParams = await this.runMiddleware("request", method, params, { cdpSessionId, request }); - if (middlewareParams == null) throw new Error(`Request middleware for ${method} returned no params.`); + const middlewareParams = await this.runMiddleware( + "request", + method, + params, + { cdpSessionId, request }, + ); + if (middlewareParams == null) + throw new Error(`Request middleware for ${method} returned no params.`); params = middlewareParams as ProtocolParams; const command = registryMatch(commandHandlers, method); @@ -1173,7 +1536,10 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis } let upstream = "chrome_debugger"; - for (const [pattern, route] of Object.entries(this.routes || {}) as [string, string][]) { + for (const [pattern, route] of Object.entries(this.routes || {}) as [ + string, + string, + ][]) { if (pattern === "*.*") { upstream = route; continue; @@ -1198,8 +1564,10 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis } else { result = await this.sendChromeDebugger(method, params); } - } else if (upstream === "loopback_cdp") result = await this.sendLoopback(method, params, cdpSessionId); - else if (upstream === "chrome_debugger") result = await this.sendChromeDebugger(method, params); + } else if (upstream === "loopback_cdp") + result = await this.sendLoopback(method, params, cdpSessionId); + else if (upstream === "chrome_debugger") + result = await this.sendChromeDebugger(method, params); else throw new Error(`No ModCDP command registered for ${method}.`); result = await this.runMiddleware("response", method, result, { @@ -1222,14 +1590,25 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis get events() { return ModCDPServer.events; }, - send: (method: string, params: ProtocolParams = {}) => this.handleCommand(method, params, cdpSessionId), - emit: (eventName: string, payload: ProtocolPayload = {}) => this.emit(eventName, payload, cdpSessionId), + send: (method: string, params: ProtocolParams = {}) => + this.handleCommand(method, params, cdpSessionId), + emit: (eventName: string, payload: ProtocolPayload = {}) => + this.emit(eventName, payload, cdpSessionId), }; }, - async emit(eventName: string, payload: ProtocolPayload = {}, cdpSessionId: string | null = null) { + async emit( + eventName: string, + payload: ProtocolPayload = {}, + cdpSessionId: string | null = null, + ) { const event = registryMatch(eventBindings, eventName); - if (!event) return { event: eventName, emitted: false, reason: "event_not_registered" }; + if (!event) + return { + event: eventName, + emitted: false, + reason: "event_not_registered", + }; payload = eventPayloadSchema(eventName, event)?.parse(payload) ?? payload; const customBinding = globalScope[CUSTOM_EVENT_BINDING_NAME]; if ( @@ -1238,28 +1617,46 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis !nativeBridgePort && nats_bridge_socket?.readyState !== WebSocket.OPEN ) - return { event: eventName, emitted: false, reason: "binding_not_installed" }; + return { + event: eventName, + emitted: false, + reason: "binding_not_installed", + }; return publishEvent(eventName, payload, cdpSessionId); }, - async discoverLoopbackCDP(): Promise<{ loopback_cdp_url: string | null; verified: boolean; version?: unknown }> { - if (!this.browser_token) return { loopback_cdp_url: null as null, verified: false }; + async discoverLoopbackCDP(): Promise<{ + loopback_cdp_url: string | null; + verified: boolean; + version?: unknown; + }> { + if (!this.browser_token) + return { loopback_cdp_url: null as null, verified: false }; const url = "http://127.0.0.1:9222"; const previousLoopbackUrl = this.loopback_cdp_url; const fail = (version?: unknown) => { this.loopback_cdp_url = previousLoopbackUrl ?? null; - return { loopback_cdp_url: null as null, verified: false, ...(version ? { version } : {}) }; + return { + loopback_cdp_url: null as null, + verified: false, + ...(version ? { version } : {}), + }; }; try { - const version = await fetch(`${url}/json/version`).then((response) => response.ok && response.json()); + const version = await fetch(`${url}/json/version`).then( + (response) => response.ok && response.json(), + ); if (!version?.webSocketDebuggerUrl) return fail(); this.loopback_cdp_url = version.webSocketDebuggerUrl; - const { targetInfos } = (await callLoopbackWS("Target.getTargets")) as cdp.types.ts.Target.GetTargetsResult; + const { targetInfos } = (await callLoopbackWS( + "Target.getTargets", + )) as cdp.types.ts.Target.GetTargetsResult; const serviceWorkerUrl = currentServiceWorkerUrl(); const worker = targetInfos.find( - (target) => target.type === "service_worker" && target.url === serviceWorkerUrl, + (target) => + target.type === "service_worker" && target.url === serviceWorkerUrl, ); if (!worker) return fail(version); @@ -1284,20 +1681,31 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis if (result.result?.value !== true) return fail(version); await initializeLoopbackCDP(); - return { loopback_cdp_url: this.loopback_cdp_url, verified: true, version }; + return { + loopback_cdp_url: this.loopback_cdp_url, + verified: true, + version, + }; } catch { return fail(); } }, - async sendLoopback(method: string, params: ProtocolParams = {}, cdpSessionId: string | null = null) { - if (!this.loopback_cdp_url) throw new Error(`No loopback_cdp_url configured for ${method}.`); + async sendLoopback( + method: string, + params: ProtocolParams = {}, + cdpSessionId: string | null = null, + ) { + if (!this.loopback_cdp_url) + throw new Error(`No loopback_cdp_url configured for ${method}.`); await initializeLoopbackCDP(); const domain = method.split(".")[0] ?? ""; - if (browserLevelDomains.has(domain)) return await callLoopbackWS(method, params); - if (cdpSessionId) return await callLoopbackWS(method, params, cdpSessionId); + if (browserLevelDomains.has(domain)) + return await callLoopbackWS(method, params); + if (cdpSessionId) + return await callLoopbackWS(method, params, cdpSessionId); const { debuggee = null, @@ -1306,7 +1714,8 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis extensionId = null, ...commandParams } = params as CdpDebuggeeCommandParams; - const resolvedDebuggee = debuggee ?? compactDebuggee({ tabId, targetId, extensionId }); + const resolvedDebuggee = + debuggee ?? compactDebuggee({ tabId, targetId, extensionId }); const chromeApi = globalScope.chrome; let resolvedTargetId = resolvedDebuggee.targetId || null; @@ -1315,24 +1724,38 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis let resolvedTabUrl: string | null = null; if (!resolvedTabId) { const [tab] = chromeApi.tabs?.query - ? await chromeApi.tabs.query({ active: true, lastFocusedWindow: true }) + ? await chromeApi.tabs.query({ + active: true, + lastFocusedWindow: true, + }) : []; resolvedTabId = tab?.id || null; resolvedTabUrl = tab?.url || tab?.pendingUrl || null; } else if (chromeApi.tabs?.get) { - const tab = await chromeApi.tabs.get(resolvedTabId).catch((): null => null); + const tab = await chromeApi.tabs + .get(resolvedTabId) + .catch((): null => null); resolvedTabUrl = tab?.url || tab?.pendingUrl || null; } if (resolvedTabId && chromeApi.debugger?.getTargets) { const targets = await chromeApi.debugger.getTargets(); resolvedTargetId = - targets.find((target) => target.tabId === resolvedTabId && target.type === "page")?.id || null; + targets.find( + (target) => + target.tabId === resolvedTabId && target.type === "page", + )?.id || null; } if (!resolvedTargetId) { - const { targetInfos } = (await callLoopbackWS("Target.getTargets")) as cdp.types.ts.Target.GetTargetsResult; - const pageTargets = targetInfos.filter((target) => target.type === "page"); + const { targetInfos } = (await callLoopbackWS( + "Target.getTargets", + )) as cdp.types.ts.Target.GetTargetsResult; + const pageTargets = targetInfos.filter( + (target) => target.type === "page", + ); resolvedTargetId = - pageTargets.find((target) => resolvedTabUrl && target.url === resolvedTabUrl)?.targetId || + pageTargets.find( + (target) => resolvedTabUrl && target.url === resolvedTabUrl, + )?.targetId || pageTargets[0]?.targetId || null; } @@ -1343,10 +1766,14 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis resolvedTargetId = created.targetId || null; } } - if (!resolvedTargetId) throw new Error(`loopback_cdp route for ${method} could not resolve a page target.`); + if (!resolvedTargetId) + throw new Error( + `loopback_cdp route for ${method} could not resolve a page target.`, + ); const existingSessionId = loopbackTargetSessions.get(resolvedTargetId); - if (existingSessionId) return await callLoopbackWS(method, commandParams, existingSessionId); + if (existingSessionId) + return await callLoopbackWS(method, commandParams, existingSessionId); const attached = (await callLoopbackWS("Target.attachToTarget", { targetId: resolvedTargetId, @@ -1355,13 +1782,18 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis const sessionId = attached.sessionId; loopbackTargetSessions.set(resolvedTargetId, sessionId); loopbackSessionTargets.set(sessionId, resolvedTargetId); - await callLoopbackWS("Target.setAutoAttach", targetAutoAttachParams, sessionId).catch(() => {}); + await callLoopbackWS( + "Target.setAutoAttach", + targetAutoAttachParams, + sessionId, + ).catch(() => {}); return await callLoopbackWS(method, commandParams, sessionId); }, async sendChromeDebugger(method: string, params: ProtocolParams = {}) { const chromeApi = globalScope.chrome; - if (!chromeApi?.debugger?.sendCommand) throw new Error("chrome.debugger is unavailable."); + if (!chromeApi?.debugger?.sendCommand) + throw new Error("chrome.debugger is unavailable."); const { debuggee = null, @@ -1370,20 +1802,33 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis extensionId = null, ...commandParams } = params as CdpDebuggeeCommandParams; - const resolvedDebuggee = debuggee ?? compactDebuggee({ tabId, targetId, extensionId }); + const resolvedDebuggee = + debuggee ?? compactDebuggee({ tabId, targetId, extensionId }); if (Object.keys(resolvedDebuggee).length === 0) { let tab: chrome.tabs.Tab | undefined; - [tab] = await chromeApi.tabs.query({ active: true, lastFocusedWindow: true }); + [tab] = await chromeApi.tabs.query({ + active: true, + lastFocusedWindow: true, + }); if (!tab?.id) [tab] = await chromeApi.tabs.query({}); if (!tab?.id) { try { - tab = await chromeApi.tabs.create({ url: "https://example.com/#modcdp", active: true }); + tab = await chromeApi.tabs.create({ + url: "https://example.com/#modcdp", + active: true, + }); } catch { - const win = await chromeApi.windows.create({ url: "https://example.com/#modcdp", focused: true }); + const win = await chromeApi.windows.create({ + url: "https://example.com/#modcdp", + focused: true, + }); tab = win?.tabs?.[0]; } } - if (!tab?.id) throw new Error(`chrome_debugger route for ${method} could not find an active tab.`); + if (!tab?.id) + throw new Error( + `chrome_debugger route for ${method} could not find an active tab.`, + ); resolvedDebuggee.tabId = tab.id; } @@ -1398,24 +1843,39 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis }), ); } catch (error) { - if (!errorMessage(error).includes("Another debugger is already attached")) throw error; + if ( + !errorMessage(error).includes( + "Another debugger is already attached", + ) + ) + throw error; } await new Promise((resolve, reject) => - chromeApi.debugger.sendCommand(resolvedDebuggee, "Target.setAutoAttach", targetAutoAttachParams, () => { - const error = chromeApi.runtime.lastError; - if (error) reject(new Error(error.message)); - else resolve(); - }), + chromeApi.debugger.sendCommand( + resolvedDebuggee, + "Target.setAutoAttach", + targetAutoAttachParams, + () => { + const error = chromeApi.runtime.lastError; + if (error) reject(new Error(error.message)); + else resolve(); + }, + ), ); attachedDebuggees.add(key); } return new Promise((resolve, reject) => - chromeApi.debugger.sendCommand(resolvedDebuggee, method, commandParams, (result) => { - const error = chromeApi.runtime.lastError; - if (error) reject(new Error(error.message)); - else resolve(result as ProtocolResult); - }), + chromeApi.debugger.sendCommand( + resolvedDebuggee, + method, + commandParams, + (result) => { + const error = chromeApi.runtime.lastError; + if (error) reject(new Error(error.message)); + else resolve(result as ProtocolResult); + }, + ), ); }, }; @@ -1428,13 +1888,17 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis ModCDPServer.addCustomCommand({ name: "Mod.ping", - handler: async (raw_params: ProtocolParams = {}, cdpSessionId: string | null = null) => { + handler: async ( + raw_params: ProtocolParams = {}, + cdpSessionId: string | null = null, + ) => { const params = raw_params as ModCDPPingParams; const received_at = Date.now(); await ModCDPServer.emit( "Mod.pong", { - sent_at: typeof params.sent_at === "number" ? params.sent_at : received_at, + sent_at: + typeof params.sent_at === "number" ? params.sent_at : received_at, received_at, from: "extension-service-worker", }, @@ -1446,13 +1910,18 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis ModCDPServer.addCustomCommand({ name: "Mod.configure", - handler: async (params: ProtocolParams = {}) => ModCDPServer.configure(params as ModCDPConfigureParams), + handler: async (params: ProtocolParams = {}) => + ModCDPServer.configure(params as ModCDPConfigureParams), }); ModCDPServer.addCustomCommand({ name: "Mod.evaluate", handler: async (raw_params: ProtocolParams = {}) => { - const { expression, params = {}, cdpSessionId = null } = raw_params as Record; + const { + expression, + params = {}, + cdpSessionId = null, + } = raw_params as Record; return await evaluateUserExpression({ expression: String(expression), params: params as ProtocolPayload, @@ -1475,7 +1944,8 @@ export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis ModCDPServer.addCustomCommand({ name: "Mod.addMiddleware", - handler: async (params: ProtocolParams = {}) => ModCDPServer.addMiddleware(params as ModCDPMiddlewareRegistration), + handler: async (params: ProtocolParams = {}) => + ModCDPServer.addMiddleware(params as ModCDPMiddlewareRegistration), }); const chromeApi = globalScope.chrome; diff --git a/js/test/test.LocalBrowserLaunchExtensionInjector.ts b/js/test/test.LocalBrowserLaunchExtensionInjector.ts index 70800ba..875dd9a 100644 --- a/js/test/test.LocalBrowserLaunchExtensionInjector.ts +++ b/js/test/test.LocalBrowserLaunchExtensionInjector.ts @@ -15,7 +15,8 @@ function crc32(data: Buffer) { let crc = 0xffffffff; for (const byte of data) { crc ^= byte; - for (let bit = 0; bit < 8; bit++) crc = (crc >>> 1) ^ (0xedb88320 & -(crc & 1)); + for (let bit = 0; bit < 8; bit++) + crc = (crc >>> 1) ^ (0xedb88320 & -(crc & 1)); } return (crc ^ 0xffffffff) >>> 0; } @@ -57,7 +58,10 @@ test("LocalBrowserLaunchExtensionInjector rejects zip entries outside extraction }); try { - await assert.rejects(() => injector.prepare(), /escapes extension extraction directory/); + await assert.rejects( + () => injector.prepare(), + /escapes extension extraction directory/, + ); assert.equal(existsSync(path.join(temp_dir, "evil.txt")), false); } finally { await injector.close(); @@ -72,15 +76,22 @@ test("LocalBrowserLaunchExtensionInjector prepares an unpacked extension directo try { await injector.prepare(); - const unpacked_extension_path = (injector as unknown as { unpacked_extension_path?: string | null }) - .unpacked_extension_path; + const unpacked_extension_path = ( + injector as unknown as { unpacked_extension_path?: string | null } + ).unpacked_extension_path; assert.equal(typeof unpacked_extension_path, "string"); assert.notEqual(unpacked_extension_path, EXTENSION_PATH); - assert.equal(existsSync(path.join(unpacked_extension_path!, "manifest.json")), true); + assert.equal( + existsSync(path.join(unpacked_extension_path!, "manifest.json")), + true, + ); assert.deepEqual(injector.getLauncherConfig(), { extra_args: [`--load-extension=${unpacked_extension_path}`], }); - assert.equal(injector.options.injector_extension_id, DEFAULT_MODCDP_EXTENSION_ID); + assert.equal( + injector.options.injector_extension_id, + DEFAULT_MODCDP_EXTENSION_ID, + ); } finally { await injector.close(); } @@ -91,15 +102,22 @@ test("LocalBrowserLaunchExtensionInjector prepares the default extension zip for try { await injector.prepare(); - const unpacked_extension_path = (injector as unknown as { unpacked_extension_path?: string | null }) - .unpacked_extension_path; + const unpacked_extension_path = ( + injector as unknown as { unpacked_extension_path?: string | null } + ).unpacked_extension_path; assert.equal(typeof unpacked_extension_path, "string"); assert.match(unpacked_extension_path!, /modcdp-extension-/); - assert.equal(existsSync(path.join(unpacked_extension_path!, "manifest.json")), true); + assert.equal( + existsSync(path.join(unpacked_extension_path!, "manifest.json")), + true, + ); assert.deepEqual(injector.getLauncherConfig(), { extra_args: [`--load-extension=${unpacked_extension_path}`], }); - assert.equal(injector.options.injector_extension_id, DEFAULT_MODCDP_EXTENSION_ID); + assert.equal( + injector.options.injector_extension_id, + DEFAULT_MODCDP_EXTENSION_ID, + ); } finally { await injector.close(); } diff --git a/js/test/test.ModCDPClient.ts b/js/test/test.ModCDPClient.ts index 480e979..4e905d4 100644 --- a/js/test/test.ModCDPClient.ts +++ b/js/test/test.ModCDPClient.ts @@ -72,9 +72,17 @@ test("ModCDPClient normalizes nested config owners", () => { assert.equal(cdp._launcherOptions().user_data_dir, "/tmp/profile"); assert.equal(cdp.upstream.upstream_nats_wait_timeout_ms, 345); assert.equal(cdp.upstream.upstream_reversews_wait_timeout_ms, 456); - assert.equal(cdp.upstream.upstream_nativemessaging_manifest, "/tmp/native-host.json"); - assert.deepEqual(cdp.upstream.upstream_nativemessaging_manifests, ["/tmp/native-host-extra.json"]); - assert.equal(cdp.upstream.upstream_nativemessaging_host_name, "com.modcdp.custom"); + assert.equal( + cdp.upstream.upstream_nativemessaging_manifest, + "/tmp/native-host.json", + ); + assert.deepEqual(cdp.upstream.upstream_nativemessaging_manifests, [ + "/tmp/native-host-extra.json", + ]); + assert.equal( + cdp.upstream.upstream_nativemessaging_host_name, + "com.modcdp.custom", + ); assert.equal(cdp.upstream.upstream_nativemessaging_wait_timeout_ms, 567); assert.equal(cdp.upstream.upstream_ws_connect_error_settle_timeout_ms, 321); assert.equal(cdp.injector.injector_execution_context_timeout_ms, 4321); @@ -95,16 +103,22 @@ test("ModCDPClient normalizes nested config owners", () => { assert.equal(params.client.client_routes["*.*"], "direct_cdp"); assert.equal(params.server.server_browser_token, "token-1"); assert.equal(params.server.server_cdp_send_timeout_ms, 9876); - assert.equal(params.server.server_loopback_execution_context_timeout_ms, 8765); + assert.equal( + params.server.server_loopback_execution_context_timeout_ms, + 8765, + ); assert.equal(params.server.server_ws_connect_error_settle_timeout_ms, 7654); }); test("ModCDPClient dispatches root events before extension session is attached", () => { const cdp = new ModCDPClient(); const seen: string[] = []; - cdp.on("Target.targetCreated", (payload: { targetInfo?: { targetId?: string } }) => { - seen.push(String(payload.targetInfo?.targetId)); - }); + cdp.on( + "Target.targetCreated", + (payload: { targetInfo?: { targetId?: string } }) => { + seen.push(String(payload.targetInfo?.targetId)); + }, + ); cdp._onRecv({ method: "Target.targetCreated", @@ -228,9 +242,12 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server assert.equal(cdp.upstream.upstream_reversews_wait_timeout_ms, 10_000); assert.equal(cdp.injector.injector_mode, "auto"); assert.equal( - ["discovered", "local_launch", "extensions_load_unpacked", "borrowed"].includes( - String(cdp.connect_timing?.injector_source), - ), + [ + "discovered", + "local_launch", + "extensions_load_unpacked", + "borrowed", + ].includes(String(cdp.connect_timing?.injector_source)), true, ); assert.equal(cdp.client.client_routes["*.*"], "direct_cdp"); @@ -239,7 +256,10 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server const service_worker_url = await cdp.Mod.evaluate({ expression: "chrome.runtime.getURL('modcdp/service_worker.js')", }); - assert.equal(service_worker_url, `chrome-extension://${cdp.extension_id}/modcdp/service_worker.js`); + assert.equal( + service_worker_url, + `chrome-extension://${cdp.extension_id}/modcdp/service_worker.js`, + ); const contexts = (await cdp.Mod.evaluate({ expression: "chrome.runtime.getContexts({}).then((contexts) => contexts.map((context) => ({ type: context.contextType, url: context.documentUrl || context.origin || '' })))", @@ -248,7 +268,8 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server contexts.some( (context) => context.type === "OFFSCREEN_DOCUMENT" && - context.url === `chrome-extension://${cdp.extension_id}/offscreen/keepalive.html`, + context.url === + `chrome-extension://${cdp.extension_id}/offscreen/keepalive.html`, ), true, ); @@ -276,7 +297,10 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server }; cdp.on("Mod.pong", listener); }); - const ping_result = (await cdp.Mod.ping({ sent_at })) as Record; + const ping_result = (await cdp.Mod.ping({ sent_at })) as Record< + string, + unknown + >; const pong_payload = await pong; assert.equal(ping_result.ok, true); assert.equal(pong_payload.sent_at, sent_at); @@ -284,7 +308,9 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server assert.equal(pong_payload.from, "extension-service-worker"); } finally { if (direct_session_target_id) { - await cdp.send("Target.closeTarget", { targetId: direct_session_target_id }).catch(() => ({})); + await cdp + .send("Target.closeTarget", { targetId: direct_session_target_id }) + .catch(() => ({})); } await cdp.close(); } @@ -299,13 +325,17 @@ test("ModCDPClient preserves explicit empty service worker suffix config", async }); assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, []); - assert.deepEqual((await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, []); + assert.deepEqual( + (await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, + [], + ); }, 60_000); function reversewsTestBrowserPath() { - const explicit_candidates = [process.env.CHROME_PATH, platform() === "linux" ? "/usr/bin/chromium" : null].filter( - (candidate): candidate is string => Boolean(candidate), - ); + const explicit_candidates = [ + process.env.CHROME_PATH, + platform() === "linux" ? "/usr/bin/chromium" : null, + ].filter((candidate): candidate is string => Boolean(candidate)); for (const candidate of explicit_candidates) { if (existsSync(candidate)) return candidate; } @@ -317,7 +347,10 @@ function reversewsTestBrowserPath() { home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", ), - path.join(home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium"), + path.join( + home, + "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium", + ), path.join( home, "Library/Caches/puppeteer/chrome/mac*-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", @@ -329,16 +362,27 @@ function reversewsTestBrowserPath() { process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), "ms-playwright/chromium-*/chrome-win*/chrome.exe", ), - path.join(home, ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe"), + path.join( + home, + ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe", + ), ] : [ - path.join(home, ".cache/ms-playwright/chromium-*/chrome-linux*/chrome"), + path.join( + home, + ".cache/ms-playwright/chromium-*/chrome-linux*/chrome", + ), "/opt/pw-browsers/chromium-*/chrome-linux*/chrome", - path.join(home, ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome"), + path.join( + home, + ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome", + ), ]; const candidates = newestFirst(patterns.flatMap(expandGlob)); if (candidates[0]) return candidates[0]; - throw new Error("Reversews tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing."); + throw new Error( + "Reversews tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing.", + ); } function expandGlob(pattern: string) { @@ -367,14 +411,20 @@ function expandGlob(pattern: string) { } function wildcardToRegExp(value: string) { - return new RegExp(`^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`); + return new RegExp( + `^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`, + ); } function newestFirst(candidates: string[]) { return [...new Set(candidates)].sort((a, b) => { const left = scorePath(a); const right = scorePath(b); - return right.version - left.version || right.mtime - left.mtime || a.localeCompare(b); + return ( + right.version - left.version || + right.mtime - left.mtime || + a.localeCompare(b) + ); }); } @@ -391,10 +441,13 @@ function scorePath(candidate: string) { test("ModCDPClient defaults service worker suffix config to the ModCDP worker", async () => { const cdp = new ModCDPClient(); - assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, ["/modcdp/service_worker.js"]); - assert.deepEqual((await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, [ + assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, [ "/modcdp/service_worker.js", ]); + assert.deepEqual( + (await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, + ["/modcdp/service_worker.js"], + ); }); test("ModCDPClient preserves explicit null server config", () => { @@ -431,6 +484,25 @@ test("ModCDPClient defaults launched ModCDP-server upstreams to extension auto", } }); +test("ModCDPClient orders local auto injection as launch flag then loadUnpacked fallback", async () => { + const cdp = new ModCDPClient({ + launcher: { launcher_mode: "local" }, + injector: { injector_mode: "auto" }, + }); + + assert.deepEqual( + (await cdp._injectorsForConfig()).map( + (injector) => injector.constructor.name, + ), + [ + "LocalBrowserLaunchExtensionInjector", + "ExtensionsLoadUnpackedInjector", + "DiscoveredExtensionInjector", + "BorrowedExtensionInjector", + ], + ); +}); + test("ModCDPClient rejects unknown component modes at their owning factory boundary", async () => { await assert.rejects( () => @@ -459,6 +531,9 @@ test("ModCDPClient.close does not close a remote browser it did not launch", asy const chrome = await new LocalBrowserLauncher({ headless: true, chrome_ready_timeout_ms: 60_000, + // This test manually supplies --load-extension, so it intentionally uses + // the launch-flag browser path instead of relying on the client fallback. + executable_path: REVERSEWS_TEST_BROWSER_PATH, extra_args: [`--load-extension=${EXTENSION_PATH}`], }).launch(); const raw_cdp = await CdpSocket.connect(chrome.cdp_url!); @@ -495,15 +570,14 @@ test("ModCDPClient.close keeps injector files until after launched browser shutd launcher_mode: "local", launcher_options: { headless: true, - // Reversews is browser -> client only. After explicit CHROME_PATH and - // CI /usr/bin/chromium, this test uses Chrome for Testing because - // Canary rejects --load-extension in this local test path. + // After explicit CHROME_PATH and CI /usr/bin/chromium, this test uses + // Chrome for Testing because Canary rejects --load-extension in this + // local launch injector path. executable_path: REVERSEWS_TEST_BROWSER_PATH, }, }, upstream: { - upstream_mode: "reversews", - upstream_reversews_wait_timeout_ms: 30_000, + upstream_mode: "ws", }, injector: { injector_mode: "auto", @@ -519,7 +593,8 @@ test("ModCDPClient.close keeps injector files until after launched browser shutd try { await cdp.connect(); const injector = cdp._injectors.find( - (candidate) => candidate.constructor.name === "ExtensionsLoadUnpackedInjector", + (candidate) => + candidate.constructor.name === "LocalBrowserLaunchExtensionInjector", ) as unknown as { unpacked_extension_path?: string | null } | undefined; const unpacked_extension_path = injector?.unpacked_extension_path; assert.equal(typeof unpacked_extension_path, "string"); @@ -568,5 +643,8 @@ test("ModCDPClient.close clears top-level connection state", async () => { await cdp.close(); assert.equal(cdp.transport, null); - await assert.rejects(() => cdp.sendRaw("Browser.getVersion"), /ModCDP upstream is not connected/); + await assert.rejects( + () => cdp.sendRaw("Browser.getVersion"), + /ModCDP upstream is not connected/, + ); }, 60_000); diff --git a/python/modcdp/client/ModCDPClient.py b/python/modcdp/client/ModCDPClient.py index 85de523..88dd819 100644 --- a/python/modcdp/client/ModCDPClient.py +++ b/python/modcdp/client/ModCDPClient.py @@ -827,7 +827,8 @@ def _extension_injectors_for_config(self) -> list[ExtensionInjector]: if mode == "none": return [] injectors: list[ExtensionInjector] = [] - if mode in ("auto", "discover"): + prefer_launch_injection = mode == "auto" and self.launcher.get("launcher_mode") == "local" + if mode in ("auto", "discover") and not prefer_launch_injection: injectors.append(DiscoveredExtensionInjector()) if mode in ("auto", "inject"): if self.launcher.get("launcher_mode") == "bb": @@ -835,6 +836,8 @@ def _extension_injectors_for_config(self) -> list[ExtensionInjector]: if self.launcher.get("launcher_mode") == "local": injectors.append(LocalBrowserLaunchExtensionInjector()) injectors.append(ExtensionsLoadUnpackedInjector()) + if prefer_launch_injection: + injectors.append(DiscoveredExtensionInjector()) if mode in ("auto", "borrow"): injectors.append(BorrowedExtensionInjector()) if not injectors: diff --git a/python/modcdp/extension.zip b/python/modcdp/extension.zip index d48ca552c711acaceddbab33088bdad663ffadfe..fd61fac0f7c19701920b206991cb3beeca89bbcd 100644 GIT binary patch delta 134894 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 E0HW7R82|tP delta 133325 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 l(M6`0V=juH^yD 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 LaunchedBrowser executable_path = self.findChromeBinary(merged.get("executable_path")) use_pipe = merged.get("remote_debugging") == "pipe" use_loopback_cdp = (not use_pipe) or bool(merged.get("loopback_cdp")) or merged.get("port") is not None - port = int(merged.get("port") or LocalBrowserLauncher.freePort()) if use_loopback_cdp else None + requested_port = merged.get("port") + port = int(requested_port) if use_loopback_cdp and requested_port is not None else (0 if use_loopback_cdp else None) temp_profile_dir: tempfile.TemporaryDirectory[str] | None = None profile_dir = merged.get("user_data_dir") if not profile_dir: @@ -96,10 +97,19 @@ def launch(self, options: BrowserLaunchOptions | None = None) -> LaunchedBrowser try: _wait_for_pipe_ready(pipe_read, pipe_write, int(merged.get("chrome_ready_timeout_ms") or DEFAULT_CHROME_READY_TIMEOUT_MS)) loopback_cdp_url = ( - _wait_for_cdp_websocket_url( - f"http://127.0.0.1:{port}", - int(merged.get("chrome_ready_timeout_ms") or DEFAULT_CHROME_READY_TIMEOUT_MS), - int(merged.get("chrome_ready_poll_interval_ms") or DEFAULT_CHROME_READY_POLL_INTERVAL_MS), + ( + _wait_for_browser_selected_cdp_websocket_url( + str(profile_dir), + int(merged.get("chrome_ready_timeout_ms") or DEFAULT_CHROME_READY_TIMEOUT_MS), + int(merged.get("chrome_ready_poll_interval_ms") or DEFAULT_CHROME_READY_POLL_INTERVAL_MS), + process, + ) + if port == 0 + else _wait_for_cdp_websocket_url( + f"http://127.0.0.1:{port}", + int(merged.get("chrome_ready_timeout_ms") or DEFAULT_CHROME_READY_TIMEOUT_MS), + int(merged.get("chrome_ready_poll_interval_ms") or DEFAULT_CHROME_READY_POLL_INTERVAL_MS), + ) ) if port is not None else None @@ -133,11 +143,22 @@ def launch(self, options: BrowserLaunchOptions | None = None) -> LaunchedBrowser stderr=subprocess.DEVNULL, start_new_session=not sys.platform.startswith("win"), ) - cdp_url = f"http://127.0.0.1:{port}" timeout_s = int(merged.get("chrome_ready_timeout_ms") or DEFAULT_CHROME_READY_TIMEOUT_MS) / 1000 poll_s = int(merged.get("chrome_ready_poll_interval_ms") or DEFAULT_CHROME_READY_POLL_INTERVAL_MS) / 1000 deadline = time.time() + timeout_s while time.time() < deadline: + exit_code = process.poll() + if exit_code is not None: + _close(process, temp_profile_dir, cleanup_profile_dir=cleanup_profile_dir) + raise RuntimeError(f"Chrome exited before CDP became ready (exit={exit_code}).") + if port == 0: + active_port = _read_devtools_active_port(str(profile_dir)) + if active_port is None: + time.sleep(poll_s) + continue + cdp_url = f"http://127.0.0.1:{active_port}" + else: + cdp_url = f"http://127.0.0.1:{port}" try: with urllib.request.urlopen(f"{cdp_url}/json/version", timeout=0.5) as response: version = json.loads(response.read()) @@ -152,7 +173,7 @@ def launch(self, options: BrowserLaunchOptions | None = None) -> LaunchedBrowser except Exception: time.sleep(poll_s) _close(process, temp_profile_dir, cleanup_profile_dir=cleanup_profile_dir) - raise RuntimeError(f"Chrome at {cdp_url} did not become ready within {timeout_s}s") + raise RuntimeError(f"Chrome did not become ready within {timeout_s}s") def _newest_first(candidates: list[str]) -> list[str]: @@ -254,6 +275,8 @@ def kill(self) -> None: ... def wait(self, timeout: float | None = None) -> int | None: ... + def poll(self) -> int | None: ... + def _wait_for_pipe_ready(pipe_read, pipe_write, timeout_ms: int) -> None: ready_id = 1 @@ -287,6 +310,7 @@ def _wait_for_pipe_ready(pipe_read, pipe_write, timeout_ms: int) -> None: def _wait_for_cdp_websocket_url(cdp_url: str, timeout_ms: int, poll_interval_ms: int) -> str: deadline = time.time() + timeout_ms / 1000 poll_s = poll_interval_ms / 1000 + last_error: Exception | None = None while time.time() < deadline: try: with urllib.request.urlopen(f"{cdp_url}/json/version", timeout=0.5) as response: @@ -294,12 +318,55 @@ def _wait_for_cdp_websocket_url(cdp_url: str, timeout_ms: int, poll_interval_ms: websocket_url = version.get("webSocketDebuggerUrl") if websocket_url: return str(websocket_url) - except Exception: - pass + except Exception as err: + last_error = err time.sleep(poll_s) + if last_error is not None: + raise RuntimeError(f"Chrome at {cdp_url} did not expose a WebSocket CDP URL within {timeout_ms}ms: {last_error}") raise RuntimeError(f"Chrome at {cdp_url} did not expose a WebSocket CDP URL within {timeout_ms}ms") +def _read_devtools_active_port(profile_dir: str) -> int | None: + active_port_path = Path(profile_dir) / "DevToolsActivePort" + try: + raw_port, websocket_path, *_ = active_port_path.read_text().strip().splitlines() + except FileNotFoundError: + return None + except ValueError: + return None + if not websocket_path: + return None + port = int(raw_port) + if port <= 0: + raise RuntimeError(f"Invalid DevToolsActivePort port: {raw_port}") + return port + + +def _wait_for_browser_selected_cdp_websocket_url( + profile_dir: str, + timeout_ms: int, + poll_interval_ms: int, + process: _ChromeProcess, +) -> str: + deadline = time.time() + timeout_ms / 1000 + poll_s = poll_interval_ms / 1000 + last_error: Exception | None = None + while time.time() < deadline: + exit_code = process.poll() + if exit_code is not None: + raise RuntimeError(f"Chrome exited before CDP became ready (exit={exit_code}).") + active_port = _read_devtools_active_port(profile_dir) + if active_port is not None: + try: + return _wait_for_cdp_websocket_url(f"http://127.0.0.1:{active_port}", poll_interval_ms, poll_interval_ms) + except Exception as err: + last_error = err + time.sleep(poll_s) + if last_error is not None: + raise RuntimeError(f"Chrome did not expose DevToolsActivePort from {profile_dir} within {timeout_ms}ms: {last_error}") + raise RuntimeError(f"Chrome did not expose DevToolsActivePort from {profile_dir} within {timeout_ms}ms") + + def _close( process: _ChromeProcess, temp_profile_dir: tempfile.TemporaryDirectory[str] | None, diff --git a/python/tests/test_ModCDPClient.py b/python/tests/test_ModCDPClient.py index 17912a1..cd2060c 100644 --- a/python/tests/test_ModCDPClient.py +++ b/python/tests/test_ModCDPClient.py @@ -181,6 +181,22 @@ def test_defaults_launched_modcdp_server_upstreams_to_extension_auto(self) -> No self.assertEqual(attach_only.upstream_endpoint_kind, "modcdp_server") self.assertEqual(attach_only.injector["injector_mode"], "none") + def test_orders_local_auto_injection_as_launch_flag_then_load_unpacked_fallback(self) -> None: + cdp = ModCDPClient( + launcher={"launcher_mode": "local"}, + injector={"injector_mode": "auto"}, + ) + + self.assertEqual( + [type(injector).__name__ for injector in cdp._extension_injectors_for_config()], + [ + "LocalBrowserLaunchExtensionInjector", + "ExtensionsLoadUnpackedInjector", + "DiscoveredExtensionInjector", + "BorrowedExtensionInjector", + ], + ) + def test_rejects_unknown_component_modes_at_their_owning_factory_boundary(self) -> None: with self.assertRaisesRegex(RuntimeError, r"unknown upstream\.upstream_mode=bogus"): ModCDPClient(upstream={"upstream_mode": "bogus"})._upstream_transport() @@ -269,6 +285,9 @@ def test_close_does_not_close_a_remote_browser_it_did_not_launch(self) -> None: { "headless": True, "chrome_ready_timeout_ms": 60_000, + # This test manually supplies --load-extension, so it intentionally uses + # the launch-flag browser path instead of relying on the client fallback. + "executable_path": reversews_test_browser_path(), "extra_args": [f"--load-extension={EXTENSION_PATH}"], } ).launch() @@ -306,16 +325,13 @@ def test_close_keeps_injector_files_until_after_launched_browser_shutdown(self) "launcher_mode": "local", "launcher_options": { "headless": True, - # Reversews is browser -> client only. After explicit CHROME_PATH and - # CI /usr/bin/chromium, this test uses Chrome for Testing because - # Canary rejects --load-extension in this local test path. + # After explicit CHROME_PATH and CI /usr/bin/chromium, this test uses + # Chrome for Testing because Canary rejects --load-extension in this + # local launch injector path. "executable_path": reversews_test_browser_path(), }, }, - upstream={ - "upstream_mode": "reversews", - "upstream_reversews_wait_timeout_ms": 30_000, - }, + upstream={"upstream_mode": "ws"}, injector={ "injector_mode": "auto", "injector_extension_path": str(EXTENSION_PATH), @@ -330,7 +346,7 @@ def test_close_keeps_injector_files_until_after_launched_browser_shutdown(self) injector = next( candidate for candidate in cdp._extension_injectors - if type(candidate).__name__ == "ExtensionsLoadUnpackedInjector" + if type(candidate).__name__ == "LocalBrowserLaunchExtensionInjector" ) unpacked_extension_path = getattr(injector, "unpacked_extension_path") self.assertIsInstance(unpacked_extension_path, str) From 844719db2e0b85bcac7c0c4b52c891d77804fa91 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Sat, 16 May 2026 12:59:07 -0700 Subject: [PATCH 31/33] Isolate reversews CI tests --- .github/workflows/test.yml | 50 ++++++++++++------ extension/src/service_worker.ts | 5 +- go/modcdp/injector/extension.zip | Bin 512241 -> 511669 bytes js/src/server/ModCDPServer.ts | 38 ------------- python/modcdp/extension.zip | Bin 512241 -> 511669 bytes .../test_ReverseWebSocketUpstreamTransport.py | 1 - 6 files changed, 34 insertions(+), 60 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index aac4de2..e2e2b0f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,7 +42,7 @@ jobs: run: | case "${{ matrix.client }}" in js) - xvfb-run -a pnpm exec vitest run \ + pnpm exec vitest run \ $(find js/test -name 'test.*.ts' \ ! -name 'test.ModCDPClient.ts' \ ! -name 'test.NatsUpstreamTransport.ts' \ @@ -52,7 +52,7 @@ jobs: ;; python) cd python - xvfb-run -a uv run python -m unittest \ + uv run python -m unittest \ $(find tests -name 'test_*.py' \ ! -name 'test_ModCDPClient.py' \ ! -name 'test_NatsUpstreamTransport.py' \ @@ -61,7 +61,7 @@ jobs: ;; go) cd go - xvfb-run -a go test -count=1 -p 1 \ + go test -count=1 -p 1 \ ./modcdp \ ./modcdp/injector \ ./modcdp/launcher \ @@ -122,15 +122,15 @@ jobs: run: | case "${{ matrix.client }}" in js) - xvfb-run -a node dist/js/examples/demo.js --${{ matrix.mode }} --upstream=${{ matrix.upstream }} + node dist/js/examples/demo.js --${{ matrix.mode }} --upstream=${{ matrix.upstream }} ;; python) cd python - xvfb-run -a uv run python examples/demo.py --${{ matrix.mode }} --upstream=${{ matrix.upstream }} + uv run python examples/demo.py --${{ matrix.mode }} --upstream=${{ matrix.upstream }} ;; go) cd go - xvfb-run -a go run ./examples/demo --${{ matrix.mode }} --upstream=${{ matrix.upstream }} + go run ./examples/demo --${{ matrix.mode }} --upstream=${{ matrix.upstream }} ;; *) echo "unknown client: ${{ matrix.client }}" >&2 @@ -164,25 +164,41 @@ jobs: cache-dependency-path: go/go.sum - run: pnpm install --frozen-lockfile - run: pnpm run build - - name: Run JS serialized connector tests + - name: Run JS serialized non-reverse connector tests run: | - xvfb-run -a pnpm exec vitest run \ + pnpm exec vitest run \ js/test/test.ModCDPClient.ts \ js/test/test.NatsUpstreamTransport.ts \ + js/test/test.proxy.ts \ + --testNamePattern "^(?!.*reversews).*" \ + --fileParallelism=false --maxWorkers=1 + - name: Run JS serialized reversews tests + run: | + pnpm exec vitest run \ js/test/test.ReverseWebSocketUpstreamTransport.ts \ js/test/test.proxy.ts \ + --testNamePattern "reversews" \ --fileParallelism=false --maxWorkers=1 - - name: Run Python serialized connector tests + - name: Run Python serialized non-reverse connector tests run: | cd python - xvfb-run -a uv run python -m unittest \ + uv run python -m unittest \ tests.test_ModCDPClient \ - tests.test_NatsUpstreamTransport \ + tests.test_NatsUpstreamTransport + - name: Run Python serialized reversews tests + run: | + cd python + uv run python -m unittest \ tests.test_ReverseWebSocketUpstreamTransport - - name: Run Go serialized connector tests + - name: Run Go serialized non-reverse connector tests + run: | + cd go + go test -count=1 -p 1 ./modcdp/client + go test -count=1 -p 1 ./modcdp/transport -run 'Test(UpstreamTransport|WebSocketUpstreamTransport|PipeUpstreamTransport|NativeMessagingUpstreamTransport|NatsUpstreamTransport)' + - name: Run Go serialized reversews tests run: | cd go - xvfb-run -a go test -count=1 -p 1 ./modcdp/client ./modcdp/transport + go test -count=1 -p 1 ./modcdp/transport -run 'TestReverseWebSocketUpstreamTransport' serialized-reversews-demo: name: serialized reversews demos @@ -213,12 +229,12 @@ jobs: - name: Run reversews demos serially run: | for mode in loopback debugger; do - xvfb-run -a node dist/js/examples/demo.js --"$mode" --upstream=reversews + node dist/js/examples/demo.js --"$mode" --upstream=reversews cd python - xvfb-run -a uv run python examples/demo.py --"$mode" --upstream=reversews + uv run python examples/demo.py --"$mode" --upstream=reversews cd .. cd go - xvfb-run -a go run ./examples/demo --"$mode" --upstream=reversews + go run ./examples/demo --"$mode" --upstream=reversews cd .. done @@ -247,4 +263,4 @@ jobs: cache: pnpm - run: pnpm install --frozen-lockfile - run: pnpm run build - - run: xvfb-run -a ${{ matrix.command }} + - run: ${{ matrix.command }} diff --git a/extension/src/service_worker.ts b/extension/src/service_worker.ts index a026067..b6f0aff 100644 --- a/extension/src/service_worker.ts +++ b/extension/src/service_worker.ts @@ -77,9 +77,7 @@ const configuredClient = (params: unknown, session_id?: string | null) => { client: configure?.client ?? {}, server: configure?.server ?? {}, }; - if (client.downstream_transport === "reversews") { - bridge.stopNativeBridge?.("reverse downstream connected"); - } else if (bridge.reverseBridgeActive?.() !== true) { + if (client.downstream_transport !== "reversews") { bridge.stopReverseBridge?.("non-reverse downstream connected"); } return client; @@ -180,7 +178,6 @@ if (bridge) { ["startReverseBridge", "reverse"], ["stopReverseBridge", "reverse"], ["startNativeBridge", "native"], - ["stopNativeBridge", "native"], ["startNatsBridge", "nats"], ]) { const start = bridge[method]?.bind(bridge); diff --git a/go/modcdp/injector/extension.zip b/go/modcdp/injector/extension.zip index fd61fac0f7c19701920b206991cb3beeca89bbcd..70c7786a55bf45083409df93f3c0ffde78c3cca0 100644 GIT binary patch delta 88785 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 z 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 E03$s+=>Px# delta 89382 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%0Ak8J_nsQdW^ohFUZ4L7E&2-csqWE&Y`*9QK7VN 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 diff --git a/js/src/server/ModCDPServer.ts b/js/src/server/ModCDPServer.ts index eada866..7742856 100644 --- a/js/src/server/ModCDPServer.ts +++ b/js/src/server/ModCDPServer.ts @@ -466,28 +466,6 @@ export function installModCDPServer( return { upstream_reversews_url, stopped: true, reason }; } - function reverseBridgeActive() { - return ( - reverseBridgeSocket?.readyState === WebSocket.OPEN || - reverseBridgeSocket?.readyState === WebSocket.CONNECTING - ); - } - - function stopNativeBridge(reason = "stopped") { - const upstream_nativemessaging_host_name = nativeBridgeHostName; - nativeBridgeHostName = null; - if (nativeBridgeReconnectTimer) { - clearTimeout(nativeBridgeReconnectTimer); - nativeBridgeReconnectTimer = null; - } - const port = nativeBridgePort; - nativeBridgePort = null; - ModCDPServer.native_bridge_connected = false; - ModCDPServer.native_bridge_last_error = reason; - port?.disconnect?.(); - return { upstream_nativemessaging_host_name, stopped: true, reason }; - } - function scheduleNativeBridgeReconnect(delayMs: number) { if (!nativeBridgeHostName) return; if (nativeBridgeReconnectTimer) return; @@ -639,7 +617,6 @@ export function installModCDPServer( const ws = new WebSocket(endpoint); reverseBridgeSocket = ws; ws.addEventListener("open", () => { - stopNativeBridge("reverse bridge connected"); startOffscreenKeepAlive(); ws.send( JSON.stringify({ @@ -656,12 +633,10 @@ export function installModCDPServer( ws.addEventListener("error", () => { if (reverseBridgeSocket === ws) reverseBridgeSocket = null; scheduleReverseBridgeReconnect(reverseBridgeReconnectIntervalMs); - if (nativeBridgeHostName) connectNativeBridge(nativeBridgeHostName); }); ws.addEventListener("close", () => { if (reverseBridgeSocket === ws) reverseBridgeSocket = null; scheduleReverseBridgeReconnect(reverseBridgeReconnectIntervalMs); - if (nativeBridgeHostName) connectNativeBridge(nativeBridgeHostName); }); return { upstream_reversews_url: endpoint, connected: false }; } @@ -676,17 +651,6 @@ export function installModCDPServer( reason: "native_messaging_unavailable", }; } - if ( - reverseBridgeUrl && - (reverseBridgeSocket?.readyState === WebSocket.OPEN || - reverseBridgeSocket?.readyState === WebSocket.CONNECTING) - ) { - return { - upstream_nativemessaging_host_name: hostName, - connected: false, - reason: "reverse_bridge_active", - }; - } if (nativeBridgePort) return { upstream_nativemessaging_host_name: hostName, connected: true }; try { @@ -1246,8 +1210,6 @@ export function installModCDPServer( }; }, stopReverseBridge, - reverseBridgeActive, - stopNativeBridge, startNativeBridge( hostName = DEFAULT_NATIVE_BRIDGE_HOST_NAME, { diff --git a/python/modcdp/extension.zip b/python/modcdp/extension.zip index fd61fac0f7c19701920b206991cb3beeca89bbcd..70c7786a55bf45083409df93f3c0ffde78c3cca0 100644 GIT binary patch delta 88785 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 z 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 E03$s+=>Px# delta 89382 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%0Ak8J_nsQdW^ohFUZ4L7E&2-csqWE&Y`*9QK7VN zq)1gTK5!y#{EY)~{Ot6U-Ou;R)05=7zSCRTf0pSyqp2NlQ zWFi8Cz=pG^;H`pl5w-3}`gW2>3r|(`~#0dr2lR<>Fsm4a({& zqOg%^o>GV8G`C+-12>b?IO{X`7F@?bTJO7J?uP=R^EA1{qvK=Bbk81&SFr8E!B_&8GR78=t=LKwJvI1t>PhCbe=Kv(TL<2@z_yg zy4Vd#Gk+R|3T~3Df58V#R#;4B!*M}J!u6QZn@yP<<P~HQny89wJzXW={9(HmYo7LSB&jyC`B3gg zY4VgApTXsNr0uuOJ2AqG!SKpK;)#fAEq{2r=)_(RlDroKKy5rqO@KnbmWnFq{j7OJ8O8k$5&=$+=;k=I{z z@o!dj{jh7ho@A@(6_S#vC8$`cL@lfE2Aou6S_o7?4rWPf;hgFpV7q=q^5>0fTJr_V`#oe$)d&)Dn4!!g5A zZ%A8gbsCRs)7^YBpBLuyvrT|Qp3vv^lcwnTLOy9qoOca=ek7kXNf1rZL;4g_643-a z>87PgcQPXc?P-D^n&yZm2ck2hZRl9^`8)E7NsNM2MdXu?l!J^yPxpmFMt|3qjz!zh ze(1QlWKVRgT!N?fAwL6XnzWeZ+e2JFnjm| zJ;R=uc5ZnHW<{j!RaysrEYS# z2WCWiZQ$tugfM##EkcAo2=qy$99V}I%X$1mt#=Vn0Dv8T2>vy$J z;+pchDNCk3q8yd&P-TNhL?YBgsK~sYozE7Eo5~01|to1a1y>1#!>p zG(^YT{Zhmc=YL(oYHILp)+1vk=YTvLp@p3b*(&d;1s zO_^@^17rD>zMz7S;Vac(<1Ba`IROWP}1UK0!5aDWM>VWx106+ciu9CIAppr=wJ{dVp$_g+_{1&Wc?M{ zmWUyF6MvP))TLnd*7kEuF-sq0>r2EbuPMSO*uHUsg`e5GLJC4sEKqdJT}3Ks670^h z57|@9KCC%LYzKKxOgr@zki+tM>dk412WB6#AhKeT8rxt;9JFF0o!ExSaTe^r>Yrm0 z8U38EEvNap!(K*N{I5>SnVi_|=oBs<>6-8MN`EX!o(yVsq0(mW1+r|IBi;fAn_$sG zJtf?i(5D#~I`ZonXd@ye$L*`KHUiac6CaS2)l1B?>W#b|z3#w81Fk5_ow7tQ7s-@p zEMz_xRB&DqpACwO78E)+s|hWsrvY~>MWAF4QG^`Xe`Fv~TlX@7&744jm>;$Pi&+9wOs^OWpk4CR{jkD7n z*IX%^Y(hYGMe6SHS=L*nPE;$YV6&m41^JS_ajOLKhucQUu5r4b_ zY&M7$p{<`_reI^ ztpfojkhc#ygC=msz;OWdgb*_VEnyn)2bKc5cJ>?V%>Z+7u-HC-UHtjAamUHp&w~tt z&~fOY0lxuwPTaJk!Jlw;)a-6f34a*(;ST@LwU5(&nDxm}ZK!Xqu3bAj z=xk4=FwEai!nw)V1ut=Z#0+h>JLZjvY0zRvrOuGOr$}O3m71Y3DIPt;{|9)1SY*;m zw`Fb)=n74hrAZVHwSbr>Ldv(}p8P77Pz?w}ORpAtupGX>Yn)>#HPBJ~lzdbA? zCM%N_c%ou$u1>W)m1%U(&&rePw5Zw?;YXqdqG`Jl6qHH#QM#?m7thkYWZz|zV42QL z8?%@Notvz-XNe()M>Ea=ssazCBzt)gyHO>#UYnFxQXQ$L&G`MY?0+=I?p~EX7p{r~ z7*hGx97IKtBJ~0&$MhZ|mKjx_4rPS{=VkxI-2#lr$&rVI%`3k70q&(!Ts3%Vh ztoT!^J(S4D1qCrHB~p)m(KWl|3#eR;+cPnIC6B|6s^*Gga-`^( zAb~o&vLt!0pi$L9B-ayNJ?;Ds*-G z%h*@6vsZ$*rYQK7XAAmXs&|UfGpXyN+>U)AnakJv6HB$`J;tGTzc4xF=<|*V@|Spi zCEx5+Wx_R>r3S52qR7m|mf-uv1}p@p1y!hWiLU+$;yUYs)KEX6(xA>l z(`gTI*N<|st$zhhsZkXrTG@M+?xnoh1xZRR6DSM0+#OVbgn$HBOCfnu9Vi*CNOtj+ z3XoMr$r_fB(vEwK?{2INZkhMupscR;ZY4gtl8{e~?h*sT^8N+GR7HN}0s~UpXJ4Ml z*Mk>Uq(A@|;ba<1qZ*wH!78mRtDNNBNg2@#3hy3Bw|^=hvt{A56re;_p4%8n+m$-~ za19Dvf1Y4yT%`(lQ%pPFZ}h_3#hBt^1E~geI>E#`p9Bb3^c>{W*B&}$h3Y$3(Lh2> z)`5~yjGWllmj~VDK`EwaCflpXI7MHEELqHxmVrW#=IZ6Lb6AdwPO7gu?P8b(_mou1 zYkYB7BY%c|Vn{vqV+C@047#vn6Im z&rVL+{k5WmU8TsvUSX0*| zS&9ZpkENcHQhRkTkGU+>oaCg`K?ACEQF>6gNPm@#D6rQu&MM)#J1Wc99acjt-7EY% zs^cSiz_Tu!{E=|6mqN^#aX)9$`LHU4g22G?i{ zqHv=tF?~CD7S{}kab$1WegVu{w({s%*h=-0=aSqLzOy29r!RGI=>eZu)%kU8Mo)a} z_J2^Kt9|Q~O!B=f0W6CLmu#IeH8aDR&di>g5A&?3#K}urjmjSCPJIU2ytJk3{!TX0 z#Ea2E!pSP_r)=@Q_?cIvTGwdrBsxR^4{WMSl&&4 zcl<0DeYN|t=?wqP%hNLN#SYkun+rB5+kdq0MZ0qLEEjDi$6>a6W!?16@w0S4ttvi5 zxa^>FA0lqVpWUbK8tMuD>-rXTI&n@4q*@X^EmaO_#%|R=-CHxXa&=V0abDv5cKsz>c3~-V&={n73lCO6L0dd3gjejRtO zWpxkRs~1f2dAGCs1)<{!NN|k&aXAt}%FbBX{jI`(jrDx#aVqYg$C*dE?K?&ND6iiK z`F3Xyecv(f6^`?4f@n<2#3GR;-G8_&rZ>;E8U&Jk$>Z4;6n9ANL79~V1f?o~eV+nU zv4=peq#3OoSJ^bV8L>d_^YpzwgaKGlaaWGS(AUBoN@^2nwu(Bd+1AlBmCPzz_*aEtUSKGK-Orc`^H~Z6Z)_;bzYIG#DPOO&X zC>B)Jkx3wfX<3Le_G}pI)}gH4}J%6M#BglR~e!?XbW=<;staW z;E48uN&L2)UA+CXyo*n>7zm!-tvv4PkYJsqEP+N)t}h8h_+-VXz3yppoxI zV|8T(GTy+fG%b5L?CjgALX2B$uv!6Mo z%rcHHT{4-)Pi+Rrt*yoEo6CX!y7m3r_iz8ZznN2i;Q#-}{NIrOTZ)4J{~iDT^=I(? z+xKrvJP(rv1A+McSAYEf*N5=?x3B$eywz+kzBN|GVVIIL-{#JzttVWp4xiHneL ze!uM)Vr&j`C)4)LA9kH-1)GD|My#y9`R&-P8#V`al34S6^M9*dr%}V^AT|=4yKjEI zQ@fBf1h;K+1UU-Z@77Juw_X`qX4Cp>j7uft^6ydp*Kh3vEgyrBv zK{nrt!FKZv8Ntopb&*d5wHgy@Zr9!@aS*j$)NaqyqE;oIS6&yDs8vZrE4QfSF1*>gYWxS9YrcFe(uA7*`-w&845lYSn@u6KA#0>6b!#s)5V|~CpNoN{u z`{N)!QGaXPTPcJQT{`FH-mOg}Iy?+wWV&r)ihdog*tp#b^VNR*=Rb={EI66P567nJ z*g_hAZ$9n!S^F`?r=LiRH`wfh`Fv+Szu=3ck9VZgQ~&mR@}BuL<;uvP3-YJkMF07= z!OtHC_(|J*Y4Gy`Kcil0Pwz6HH{|o@0e+HRgMap)2l#1b0-wJP{AXhUhCeOI@ShYS zI>Kl2nVbJ7^7(~){z^W7BA*0mVYO*bbp9X7Cmn&lOJ_!()AnzN_(}V`AfGpxPrBAW zxD_95wKcH5>@NPCZM_>B+r-+*Uk>v}?MK6Wj1KFQMn>i?HtD5o>Y*pv zh=0j^x{#F+=Mv z#)lL(jkPl>ppBOE+*t?*`HJG~a-xVSo1vr1+pg&MESq>Q#{B%Y2tGM}GqM4zI1_V% z%mBn2pWRvqyyQ*Ay6CBW=0TC?23(UpOn=SGrIbp5@Hko~uV?McGdXW&3~M?dK2Ebg zsJtBwrsUU`B~<2}{7hK0yn;wYh_dk(((Fv4YVU}3Y&}vl5AzO46Rn^+QGZ3viK-b)HQ%UV2epLa9z4^`+Ot;)kP!F6e8dynJYNy9 zQu&1|Oish6|Ypf-n|viqw75zmW(YKH53F5qezyQrGIBKx%*}CJbZ!jX62Tz&mDXCEO%^eDfT*^@GEtXo!W=2 z3^R4bRRjiJ2aQW=|HPB6&5(VuxYjP1YYlF7*Ztb_bT6fnQA8RUlqkCT?_RobhT&g)w7&6DXl<(H!0B_v?eN6MSqzD@A9}?w7jx= zS0V*O8NET$KfD-FJJW?XqD+otmYkcF&zOUGsC%8m6~6E_r7z|B{z(Nn0bP--^#4CUMBlPFcF_ zQjz?NWX>&`({-ah9)H#AwPGU*m(79^qx2PAwMiCFo`rXp_>aOWbdXz=oP^7G@x+V@ zaG83v$ZKZuXpvY>^Y`=usXs7C4Lj-)<5Yw`e^2YWznAs0F|W<71Dlm?DFW?U$KnS| zR2p}lJGC#@-5^S>@apSlQ97%uAmO0T-#iY$vPpgE0__KDYJZv)tAaLCElgOCd-ba#ic>^eTN7BxMF5QYEtL z)EW=6G9{0!N?nbjCU~r*ldf>Ja!zZ??u#Dxzds9lD1URq%52@Y#eRdmPJbQA`2Opn zyI&cE1XYDU&d1{Dd7e$z{mS99(0=LOo3W89k8Qs9fCYKjm$ka?u#F_Fg&qgQ9>2tNdg&>hcoju}iZTy#gKn zx8WY#TYt&!g9X^%XIF#r_IE%&$W8hF&u zM;0Z5j3?=%uQrEo8oH&=)-nMk@7REO^!4HVzJK5U-fyLpu1V4@AuHm>$Y~sX^FNIA z19?%MZXaLRO|o>^Oj2*%3)bbvzi_{sW}_3budVH*S-^yBboWdaKq33uZ8b1psv$gw z)msp6G$h3@(xkCM;=R=lOIf)#@!m=)Z#Sx&)A}UT$W1(^eDiB2L#~kb?qR2PDJx-5 z(tqR$Sv6O-)4a!^As{0mbsM{dz~(|`y35_9xk+y2+BfFq@P#DfsF0iZaa@Zvl`9X9 zLS!kMY)e5V$LpPCL=u1)3f zPO@MMIW`}efhQ5WWrm%=~AN(~#sY4Dum&`7_V!(8G$mw#?g z%2I=B;3(bKEhKhHQz~Gbz@#-vk+c!^sWk*xbT5)7D62I zYOfH-uN1BvFrOHViFbvCsl^SbDA*~;7_NK)ze_q{pLy)}@=-2MQM*RsuTsIGgL3NaIh9y4F^ zhAIO(T_{3r?7OmiXQPvdY=2=xC!Dj^RO>wo%(GaIR1x_duuq6rw9*DQI;@6R?D?SV zD_gv#GZ#`2(89Xrz`T&c2R$Vjce`?6ih8VTe|$Z|qhUf``2W9=I+rE0LtN(NWxnRv z^(ZObl&?B=K1vmmf?{laH`TWY+ShZYrd>{rJ#GuVNlJ*cE=XGQqkmLY;%d}BKbzR< z5vJtB*_JN>F~P4!(QtzQ)6X07{T<2kkMI0KlpMCk!pskKK`IQ;+7zEj1%oeGk>Xua z{lb2pAtcB6`Uj#$`6U@>;vxBz^!kMqIQWV5bwj6OKBw4(RylY_YEO_gq`kcHum460 zBhZo(wEV&s9PJeQ_kH{8Ez%(uiJ(d+T1X>Tkb)|# zJ|GOCiYq9dkr_EqgVFY+*Pv7dDPj^7;h@Df=vY6H&kM5i!K#o?x)Kx_=(`k#pEI99 z36fvQpWu_OBb@;)M?zPHwxOfZeR@xNpcqCAlzb*I{z_Jn;(y{#3Fdwwg;C(RG;z@1UwO;( z8h*~O2j;`v1csA0JdWWO%nzoq>1*OsDpPAaF#6_4^FpLZh!XSOLz;qoLT9*Sy?zuD zI-9oa3&1JG8GoRGg=1fd^iwPF%G76uiI>c*48ja-9)KEF6bTE9z;Cb$uvqYr$i{)* z(WfUr?L3o=!jCeXzD5DOVx}0s5Wh?K-9%U9Q{Qjrz>bpiOuc5;d?0?AUpZvT=oO`r z%(P55k&-{I5VBM5%XDKp)b*7*fnr}~dJ|vy5BrLey?@VlMIRYCfUa1v9marpiyZ<;STe}P> zh`&hgv$liFu~K6Rw9RZ75I9;chSP>_C`wRtNSzc@wq1d;p-^1HJdFj7&25uE3wZ+@ zs+elZ^M4rZi?s52bHFT9o+D!kqPBxH6U8!cCbc{(a` z^Kj>CYcz2%MRec5mP9scNR8pTTYpjZu0UQ8xf7ohC|CnK2X4~zeP82pfS5d^D&5v>!MY57U5!ss1 ztgPVm0P&y+U;_Lx#}W1i7AO&JBNlM;IDcn_;S#+Y+6_G<7L>@%;7U%llG=A?1a*k5 zEpn}?Pgre(V41iE8Ml?BoL)w{%$x3~O#E^nN@G)iA!-~fzua$N{M6u;B*F9E2Y(eD zqT~vvIJ=SN^7g(d-!b`9r@jZWrET*P$6FC$7jilj$aIGM z6tsE~r>a1_h&6tAQ_eP!xsEC%uz$F?EZ`X$XoT%5s1-`5qHvqXEhEYjJ5R+!;zKsc zBa8UlJ(6!I-AI72g}YzTgGAA^nkMMVYjs@(ONl2pK*NiMXaV~Os09}ffCEw<)zgOc z5#SF@74CNE3c`ng4T9=Q)~#Ig+7Fp`DKcTxb&Zk5EVDK7TL&$$8L4 z_Ny6Dr9xv6l3)nJo-S4bHj>IpL=V~ouH?6`%WB5pie*(uNx5+LqGy>v^P#}nNKd$N zRL*6V;j*a1TNgMv=pvzi?Xb*{TSWm)3S zzFlBe3O~!VKd))++G7>5SAPqQ+FtY6JP6za9^VhjRV6oxtH zfh+ka=M_R`!GW~mDJuwy`Jb~uM`~qcn<Vm%^}_V%nC@_Od0&mvQXC=pqW z&Ueddv69}aXi(4iBY#yShAa@Xj8_ncpHhNsR>H2=vOWIAyOtJKlw1e0nj`WRT^pB) z2ckosIP8{lCf1ag$S650wy$`R>&Z$aaX*}v=UPBHH9s5Q-I|{(_+mb=yZ@3GEic7X z>;!as+f^!hB17n9)_t!a(Jf&kwKC^D*i_RBYmt+N^J}rZGk;78c9_uW#$=H9wE8f| z5l5zMGelJ9m19!xvl%;ZC1O5NE4)1HmU)d#0D8t`hk8nql$$o7X^IrQ#m1{n8E~fr zQij=?29AI%L#?>youvVty+y8vawDxAiFtQpkq&1D>n?GUv`LXPOAg!luoEx31@}utd-l+>k_HD^Bt$aux4g-L~vx&ChU|*flxt7N#u(`!2>ejr1P3?1$8^0ide^?!+a;lhekMQ zet}yBhJ{-T{)C~p@CTS;ShLVunOso|*#jaJ0Dn9;?X#`YOtf!%~F4 z{_qfbfNtRh=mne!1TkUV2UuFOP6E|WB=?O_o zxPR09(dJFk!Sn6oTt!>fb`(9G0)0B+DT!rn9`cD-V0GMbs*D;B9> zHs21)0!b#A(vY|?kQPod{1@gFfQR~$Z~k<>F0+HF=!zhk4GKM-aQDA( zqlf%;RQ3GoP=uywyXw*XiYvF+)D=gCyE5q>HqdpyvHvXHKk?!yqn%|eQ;vBnXQa$d zNm~Xyt5)qWCFPi_`?-Kwc}mJ0p0{%MbyHG~`6yRY&rZq3t;XHMz3jSoF`rM|eSdA~ za%DC4_2=nc5}PF#ggkp?uCC}hizWWN{3Eg>yW*7+r_HLC`fWqOk+-+!DzTG?xoZbLl-DpGr{e6hi>vH@)v6<3nT9pV zt(EDaAG#*buIryMZ54Rq|3;Ull7H--EGC>-znC*|F|&K6?0)T~$oH{(70o`aSfNzb zC0@QVAFgCI*UqYDRHr=D!XV26-@pmz%l$t7{u~T_EiKwnyUb@D8<@@cPqt$%YkOGwcp zqA!o*vXe-(>tzAjFbuetctnzZ~8f8IfN62RnyblyraVb+X zbj1lJG>@$WI{ts<3ZNtRHMe5EW=kh8L9 zP}%+Ei?TCmhn#j=%h&$bwAb|a++f>Dj3R) za<_w_lFhR5Hat#C;eRhTewU}1UBXI_56NY}gS-L0q{-+c^EPz|mqyQca`hN>T~Usb zp=oDor!KAW_o&Jpp3nK(V|p1p2Zf{c3nu0=%{TWkS=S8-n zb4Ee#&ELWUV^_dN=0zV)X%78KnN0Vax4u3XJ3|3crFqRy%Hd=E=0%|8GDox1E@&SD zN*9e8HSL)&9e?yh(h6?=S=M0oTfvILYj8hE@M;3li@uqK)a&_6K~lC5QD8uV^U+6U z8U^P^dp(o=Kr65&7+-cit#E~q(%wZ)dnEvedq_O?9|lh%MFDw~hIaCsr1&kI7xvah zG>P#*gRzApnAc7gwu{~`F*;|mv2duJC!$e9H9JT#a~l;2dUaqf7+9u>)J`<<|USAL=MOte@p{RVKc(yBcu zl3jGZ$NOB^YYOj|0${A{)$5K?Ea?4VA6FR-o>eH?fWU|s(_!xu-T4;jbKI|w%M9JK z!>!;!oPP%ogyBCI+*HD4A#Y50naJ{k!wo3?pLNCa%nU6!E9h9IiMb+0(vfBF+b*Pr z6@BX|k>X@OD)y@|tq!DJvEG-8ROQPDOmQ}^6=sepm(w6`de* zDEm%5!Ln3pj`Ff(RzA%x3h2!f>K;r3d&;sxs3+1OF%zV@AT|96mXiKl-;GX8knn~XmN5!R* z0e?}WM+WIKf8xs_(R@B$$u0qgg{U#{E$217aOzp|lie7FP4W6_P<8+*>`XbcBniw? z?Mz0WjY4&S37^T31w0^xTWOO1wgG7;xkO@B9>QjKM(=+#-w3YX>rsA3WnmX1evoHITG zP1_IGx59Y-xLd!o$+_w{uX}}?TBorUXU+ML0dKDIA&c>eB?~moVVxyi!!xv(?ESE%nSHtwBI3M64+;eSWh z?*`z@z4)z7ytuWs7^S%!_^(^vzkUDq{oD6%%lKv(uLJ-8Kj!}i|L@gz%iUvNf5-oS z{n`KT_y(d6uKfCddGz(+{Qm8~?b~>(*q5&7t#y#*c>K9;vs$WwOuzhHU}1#1Ty>Px7z{h+%`FaG-&PjroAzy zzV+3}Nf+2T>;nlb^v&nHPra!`ZbWe5>*79|;Fb<+A+KCT8e(H7YSkj-Rezl5cHs1B zx71F>3so1`d~FnzMl(%7gdrpO=BwKdx3M`uM^Mu@zpg%c?-#=E`ypu#<~e(;n%3C| zF=j6ipvd%K4~#a(H-8vaQ;oWHuOtI7HZ})YmF$6UzOh|9)k-9&q#BjYD_17oCR?Ni z_Ng%o7j6_Ng|L61nPiWVUw^5ld6gIs3MH~p7CJ%~aHDo>Nk=6xl^dnLYZmwO)ec_J zCPT>y(yT#zF+I3?LpWL!gZns$&)}M?frR(rAig25nizvN25_U|LNv@fPGVU8%*rYo3)FgHxkX&cRIL{7%OcD}24<_a^G9aGezhO}`OgBO&Ij!e$CJegGa|K-eHR~-_Tx?a zu^{b>&-a7yC;NZPFSi$i`)WQ;+mCnn@F(+i0h|Av`j49de*T7^jU5&Kw5Py*HU>uf zX(5>)3?B%n_VW|@q<_yzkL}+3PYdf$gBZ4-$>(SC`9bmdg?!@7X^XcFetsgKv<)4V zLPKZr#(&UxzayU%miL)Y+J=rqpXb($_LEyP+U6$ni8G;VKzsbD!Ozdh81&OZ`6*eg z&t#1(?tL_$zmj?Wmb_(0{F%V&*Lq}Zh!-!m+JaJ_hDIxXet-6tJ94A;qhUTq;NE4F z>#V&3?aIdNyl?gE%_WqRlgh#;vC!`26?l2ZrG=)(LifTwykI~mnRqw=*g+&0h`hbd ziggY$mv43w6=6ry?v&JfH?54h%q;lKmv4h!%}=Hm^UXBJM#Kht0eul0&&7Zmaa;rF z7}gX11I`8>8h?vaSPu;v0K)|=BJ>V_W~AyIg+8pPh6ZQ=-mTl(gLA#Gz~-0E@L%5A z6ZkOrP1woB`bT}iET=vT6SYve-mb+?unbe;xD z^MYGWoIoKDWrv@O-WyZdy)(8+M?afys?Kp)4Wj8>L^AW>BD^}p7iWUqIaHYy^1EhH zrDBY-KUsE^Oqez|O3;)YB}${nZZ_u-#-?uzgV{1pL($k$Q*Pj*t6Jdr#?INCB5uws zoYOe2J%7tH_^YC&!SnY+ON6B&3M`#P>R9%=!|NpPS7AhcysTc9?grC)o@774&lSu1 zu*ZYXlIHaFbKo$sD7MORrw|c_KeP9$`e&BFvTt)gXHFRn!;}{qT6*5?bva9`enMn} zkg^HnHX?r$c5fYYs7kEBbYr#e^ewX z{(q`FRG7LdI3QVsC>`YWAL1f3IX`f1j!V172c}_7aY{lQg8sce!qBL$r7vrG7X#DS zhpaBFQ5755kc*&aC#3BDUQviIl}gNjraSz1Sp@p_r3g_T|1_O%?3Q$)U+a8l7cC4* z!FhRk%TTUY!o0Fers{fiw=8jWxH6SR4S&w%ntc5jA0-UeFU#3bzd5u~*79{3Po=pL zz5oHni@(q4d*!58-`vWQfXWNT$;VUH*X6nKl3Z3>)dQM!1r9$Y|EENVtAjF_9r!=x z=q~NCbiY64B57FyMfKq&V3raZm$*)u+Mbj9%4*xhBGzGbl~ouXUzg{zgp!;}Xn!^p zl_>k^4vSTegMc;dVk=9Y&0m+NC(-qSwIZ(`)an$J^H_QHjm!4kO4tunV)N?n<;ll} z#@>noMTw*iT&c1?Y@t}vGmS3gR#usSBTB$pQRRyjlmrRH;O7wESQ5lbps7k|uJ=Wm zA}cOwi@9)00?1r)?`+w&1bU*v9!0$Bjnv7hmcu-`q`YI<@52_5}2-J*o zsgbF@5~Roda>@ZEQWQSx$9>@KJGvwEvCnwH8aD7gUqR>IQO{^> zcb~lLZi?>M_A8%wrAByFE;x~$ud;jRFH`O3Bx4Clh!j@f9r&DW#H?9eeOlT5<5*3{MI`YUd9r7mA%@aTYl%F$O91r(n`AILKGh4huvG<{{? z>973WY5LSDxX0)ZFMFTPrMM234#-@t(YLJg*G);8Uxs`YgJN=&f-lJAAi&rjt7NR{_Ec4 zYUWruW`TA-hX5MT4psyuCb8b6cSRxpcR+Ndy#FXGM6%1R?0!wbi7rd}(jwS5!Jc+A zSJyE^N`tO5YSyNoR(8KK?mgqBo3Ni}#{W)5iKLh*>!eM#zB`Cj@&^#XXHiZNzqm@Xth6sh@%2#8HG>fB_x0E2Af0K5i9t+e@)1xSU zaogWNwmSG;AWjmf4~NfZrGPOca5fa~*xfEU4j@G#`}6*mx_@GBm5!j@D^5bueJ7J4 zgxy`O>%HQH%oS)?guMe5R-mBMz(^6Hnam*wT6MkSdwe7QvIkeYQ@R3Rg zF2kW@P^?+JqEO;8x~MEss0<;|Q2N@)SFT~VzbOv=;T6_5P^>u|r8 z0UOO-MD^mQ@AaL+Z$@?T!vC+TM)SSO%=d5KzkUDqeBVk{ZIW65@W9#ynjk0n#x60- zng&y!DRx53ldKJca)(q6P3#TW?qcE-orgA?kv8D20pm6F*1R621;js2N$3>&0syp|i zT0E&F7M0B_fvMb}%HE%ra#gO((^9TVU@EC@Wpnkxs673ZOPEv*g9mm$jp-5hb6mUP z>gEf6ZH+K&X_ce2a!gv=Car{&)+C2Ugi4HKuBxbwAT|? zQ7I~tHs@v$m6ckxU+qU*Bj@%HD3N0d+f25iLMb!&!?OO|m>HzAOzElZ?+Y9DmbyQGVmX@2bp0* zqE3IKi;;}N?Ey3wv_R%(B$-iu^^ISkrV)~0mGQ*Pf~6uU@nf+Di~i(~vzltk4b?r) zIDbm6q56&>FxIUCYxCo%G-=3=;7wBTixSz*QvlBMw~+sD5EM4J{b&)cJ`=Szy!Hi{ z-JZJt%0$W9j1bS#eXZ->>5q{!Zr-DVMWxgv#-I$XWi5rxDt3BYiJcwYrYLYXBjpB5TLE}7?8l{>{YvNw?I`Jf!# z#qUTSVqfb#XXmC&U^G7~&ut0#riA8J;VzlKftPTPHmcCs)uS?)OIS1|G@8WH-_Cz^ zvn1&ftiZ|IfXL_8X5~$JZI-Z8N@!eITy+X?nT#o1OCJ?sqRTkuMMy^1t}4e@@YpJO zMEzU5pGrOxv0+K@KX@1=s{g!8!F=RGEfUV1Gb>zsjv1Q^CXvD zsfwPKOQ))S+Wvxk(s$|e&&jV)YW#4qdt0qH@*8v5&$mTYzti%g@<+JqQS~3+7O`3Z zd4X7aoNDRtG23<)4(mzVIgT&yEF4HLafe%yC+FiZ`u>JXUc!KCLp}i z6P(Y)s0#Bks~G1Qf_Sx}p9{MD3eJPMBTs|Nmzz6KF0Yh>gfUdhSCR~4wg(@kEKaPN z;-<`Y#Udh$^A#(`Hs!PRsEby{rmjhqVW@y18Z9^nR8+k7@?{yQc*1q75DmCC?x=ZF zM#ryrtpZouf2C?nTZZsix)*;5T70KucUGCT)1jC&CQBK6jJYbuV`P_6DW}{jYFDM# zXkY1QQ<2+_*Y%^ty05Co<=m=GBc|-$C8v>;qiS4HR;4`e8a`V}S*RTU@t}M@O52)e zFM1rJ4H>ZPUTf*XUYWsA&0C%4pfWpd2C(eBmEF5S5?_aSJTXO-Hj{r97FZTfor6J} zkoe$Pc2uGu>RVM25qzz{AoX|(<=CZSJi?kHKU&bhmq(r}F4`vcmRZpcpIU1a8!RgRdw%+&0Zf-b>CT}?n`}#Wd)#4B{(-K!IKGi@)B*}C*qxJ zA5Yqkn*n})B$~h9%;!(!(?0(p_8_)BE^bKQ&3p6x7t;J4`TmJ?`H_5o*PznyZG#|O zH0VieztfpmK`GxdP-JmZ>%Xeg4I?42WCfKj z)fY}n`s>JON%svce%LEJLvYJa82M3Mk8{^EDt;jf0|+G$Fjz8Ia>3?{19}8>hWHGzPJ@qUIhO|<8`5$B z83mUZuo?qgU?P8kKfvw6pU{=@-2%#YLk9+_0u}HSUa@vH$e{t}*^d3hj{7?$$9))J z=JiF`7fitQHQz1g`6zh!26|GhEjm(!I)zYmKGrE?JC^`TZ33*;l;%>VTOhmwpyMkn z6Kb|ZXW=jC{+Xl78%WrO`Wg?>PF-IPaw-7Cza$DHa%_KJ-6^ZBWWx=`>Dl@ zW}2}Hrv}poMNYEmKs3B+JDajSIjjcKQ*VrT<6WrH&)j^NcGx(IubYwr9%v&xCB`1u z8(7Dwzh$sXcpZHgs0zo=?62I+3M#Vwz<6Hp`}Mhz@}|W!-)G(NV11?|BTq?f=BeqQ z<>(@~NPd4<{Q1En(1*oE@?rSn&En6^@W-DQe|{dinGxL}i?!=8DBMEYd!5pv8RuZm z8M-n%TCj=nu|X^|VJ~7gwY$^udWO+h*;Tq4=eQs2DlGds4Gq!}pL0GgyH`%RNB~%Z z{2EQT03&X#1vQ2zv_R2-T=58L4<5OXF8m+p4p4uK*uCIxSbY5z*Z5pf_MG*A;{pg` zHaBk^9{ZBj86BxAou)?=a8!hITH09dY7S!EGF}wuaY5`L!7XO-x7HM`y%ST~nYD&z zSMHa^!(VXwSO3W+0Ze>8W?}FTpr=3f<1$5)=NU6lxY{f;OXL0(Wa%6#rAfu?*rlBk zn#+GeSD@3(;ZbcZhok{VD?6hC$%>oOi~};F#0LMrbNh>k0{1>N35x~5!_dGD%K$AM zH_;gPH8@M*Z=V;p>}Q{W0G0##gwX+$fy|M+AjF634}-GM>#QagBEWd)8U6z>-Kh2t zuo%FTy7%mF@DN~kYh_;m(hYwck+Gx0doX`Xcpd&DCOKBfzIKs$5>E?VhVa3EAaet! z4FAFEz<=QS4)g{7d|K?+r=i<6n5Fagw(0_QjiF_hlYLlMNHp*ppiWL75s5k13hp1U zH$=@4{Ssj`n!p`g^6;1?N0}Q0MyTVMb+<;!)N6GEprY|o+3#gjT0o&P;htOwH_Lxy z*~1J_kUs1+nH|0rwhmL{dJ1{kdp&s7bTQjrIcvP2;}S|qAC z%MS1%Wi?oy1f_Rn`k3|8*B(*8cnA9CtMUPR^FPI6R(3p|) z3Y|fa{AV-k*_%)Z;Kp7M`9qE5+E)^yP=p1ki zC=LeFaQN-=%1P!h#e&G#-rd|DX$)L?D@g$tUNFSHm0i}Wmu1XnRj-{i5WNk*v5MiO zthqLDgxo-Q?Sx7jz*_)`>o&DTKE|I}Pqc#F1_|1HE)MS?&>bJkNcL#ywt0 ziM8C(&qXH)Nr9x3f;xYlmk7I8L17I>+meZuwO8S7Y!}lHNHhS9I~Cj zTEhJe4;h9l#P!gLAT(4v47LOkdJO#~Lhcs2hT{+(BY55EUF|J|xF6Z>9=~K2@mew* zVNX!-spP`om<681X^blSsZoWV@#Ge4Fgm{@7#X(<*x;(JB=9?UHI@>3_Qockj}Ju2erACPRlbbFoKfD zjcG9BB2ZU+vY0w-5ILeT@BM>$*+PelyG)cb$aaHE$CT#oKt;?>?!hu^<_ z|MvXfo-Wq46hWEd}a0ETM&bm!_1Z#*QD6u%-2wxQa1FOskSN9WxPsj z?Y@5m#IkH_yVXJOaZO2Rf(-A(Pv}Za?@>zBaWw?C)#k>)5`D**JK{Y_lJU-0=Ce%g z`=sRFXa2LXxhmif&Ene_ZaMu7a`wI>pR}kS9hv43q3_b{A)hjzv=kui|K|ojf5p$n zX5?s)FaI<&e0e*g#p`~;8nR42*N{yV!Zn<6k+)`X75qx1YF||pEu+T0(7y#b3$4SU7b7&G zz6s=Zh*CMj_s~_+Y>C-izvdXa1!J0i0qx96nD)d@dEpJnFb1_3gbo*`uY|9UgrR@? z`$5hJ4;K!Ly7_B~H9=qP=7Ndz0wm`t5%Bw5gTPqFHArJ*^0=rqG(_g1`R_S`k~mkv zreL8lj@q~&>--tdAKkng3;tX<&x$j*@uDQuvYTB1I}cYZQ{dxxIOe0pH}`5SEH}^w5mumNscv(Ez@k`{U=#C zWh&VF*WK((%I>cf_NC{V>iOYwO!aqjP=8UTWk8FynIf%qjHpuOJCv~$XB_pk7mzkb z^&cQTX4W9P#@eE9dmV56-Z(~lM*;u=nH+$dha!O4`768Ma7M}*ryK2SYrcOPfA3xF zy*h=n(&~LK=h|IX_Zj&!+kME1VD}_U%@`bBh~1m_%GsmvAuAsfZCCzb_Vg-evT`iO z7U!|3(N)8HSq@$1HO>k>b7e)o>Z+rxbY3aH6t&a};HCv{6udk8Lh~T2EdVSL#$6olW#*KKhQnnawdG&V8cB0Als;yYY3_ob>m`!1Ke3!iwoq@z#Zdf!^j}?J3+i4z3<6PeDnM5glJknX85{TnK!=idP-r%#)<#4 zP*!GjJBXm9Zc8MJ22al@tx+wMv|it--P5?#x8z}Sxm`Qer22o4;G=%MQ`>uG^Q4?l zu6lRt)n2{s5Im2~Aqj(>cGD(OLF9emQhJi!8hIzMG-LeBhq&fdJA=SO z;qGEk^1dg7aI3@mf)uQagCLf`S=(okFRsQbHu7G(+NpmEi_S|Ok&1ej4fbvGz3cTX$nb1t$Om(t4qCVw* zW^2x?f9_zLS6X$}ZU<#t>2Q~6ZB{SKo|c7syiR`<$^xu4FdlVt$E?h3BJnjHDXWsV zaYezNm~oSwWqR$S(ko=X-_a2r1 z=?jgM8K8NIv1N^sPe>t@?j$R(#93qykh1&Ly(+{-{yRuWs1ZQ(o-JA|RGtQx7`rwM zLfL=)14!vob&7)Ql3BZ6i=%YVcZC=-&}SD%+5N48(`6Nuz2>guV^_XDmp>`wQkeSq znBGjg>?60V$#y#heX;m1TP$En*S->t%Y#1LZdYx!k{N#N1>CY&amf`hf6>M=P{bcd zDjp7I*fz=2#W_z&C{=*B7se@^aa>^usg!?P0mM?QK|S0+FC@5EkIIPHfjI`u65W@2 zY1FeL1CD4$?m-#YL}e2$+Cw(UDAvgpa#Lo&)b5bN?dooC`EFNck%r&hlm0utl@iz_ zE;fSW(cN}!bDBiEgUM(ApR|{OOWF&Ng*-4zT+yNu3iEsX}Q=5}A@yLG> zoR7{Ke;>i2Y`uCR6Hh3?aq4dUFI`&m$H5S>>Quk z2`p~gskuoXw{w0^&gBU>cGia}&aJXtR-Li+jzNND{j~FD50+(bf~rX_Tm#rm){_K% zx-fwbTFau6fKGsw$}kzQr```8zeWBw5OCpFPj(ZD`E*>I;*zp&!M?_C!QFq7*RIeK zOo1#_w5PKMAnc$BG%eU5{ng=TY~1{pe$67hb%0_d8H`L zNDB2^#|JD?q0TDVXL5FObwAUtC3(K3Z^bO@_AXK>?H<#xQ7Lu$!^j;?m5%SuV>C90 zQ)IqdsRXsoyNUKQmzaOO)s>DMTZ)~7m_sfv)CumU+Dt)Ve#_`e<>rafSy1+KG17t- z`LepX8VAO$1{|@8Da>RDB(8b`TZ#+Y0IBdDJ~WX^bYmNWPAB#-`ab= zKwW@jm6Ee9tktyIsA4gv+1Ri!T{t1=nADj_%fOslWcJ~ha8rLsm19^zSY2c(s&~Jl zsBqWdtJO_|9QxSh+Llxq~M+MC;s0AO>$Jz#A+b#2ITYU4H?2%T19NKSYgyMzAq zyJ5`RH0|@fiA|XCo>*;vCEu-;)nwW@BNpGBEjO|Se{6s7Gf0!s;O7tIlUCKCR^D97 z44SGVS8Isapq(At_V1XnU#x}r!luU9*kRZ)$ArxywQdxkk3ZwBA2B{_yEy_CCH0D| zr$C@wH?G!BYB0cVfb)inJ7EDKk(=i-veDgK`gv$Y$YY>~cb#5mU67+r9d+hmbBiV^ zyYkVIb@qQaP$~MMK`AxKCMscjX2S>z5yAzdXVj2&iRKyxp=&IkN@Hg6<-FY>lpW?! ze9<&0>zI&%W)}{3Y+CP1898XID70@AIl`2{$o))`!q*0o#xe}|Gl7`@eOc>@ntu@=QmgGDi5ygFJsoStd`}{hGqemY;E6EvZW&dVAE( z+@|dQ(yd*sAzm3Ox7pRuU)R4Q(W{~_?*1?+bS=?Enxncff?rFVSX*b zoY#M_=(=|~i6G%FyClImC@c!xrkX1}&l+Xd?8D;!4wXi6 zu#}iO;{eC58Svmwv}PBJ|1X$HeOXNE3r_0x4{=i2HB)wfbyQ~3*`qh(92R>hX2h7i^xNr)D#O8BJh?yV0|3vj1F$ z#`PT)_)vXHrlq*Zx%)daYIfU|-D{F`WUh-$jmI81=ycT*Fd0AK9;2=*0{tpR1r9tJ z74Cb#uLt6&*?m=Z|ETZ*WpxUyl4OBPpBP+%gX70M?B>m>?EY49{;HY1Joj#|P0@eh z=AbN`ES1$_Gi4=ghk}Iw=~0^8y(=Yb56jc@M1|Z@mYhijiihLp@$$iM=8{8yAC;d@ z>=V@0N9e!*TgiVY_Ir7m_rX~mrP;A+FZyB zf4P?$u>=pFJI2FDu&AwUI|iJH9fPdf)*9osB}D(;?$!bWgdLj;;k*w!PCCWrIUlkG zX3xin+Nm=WO|QRrvfcp2#)TaMMf4rs#sTjw8=&)|{nItMAe%_H(ppRHIxJ8bEv-ZB z)5qC<*fCbr_UQuU?v6yKw$y*UE#qFqnRV8-OCE8C=>uM5;uxa^ZwHTz)rBPYUHlUI z(7}HOg2*x%WsSc(<_*KFI|%1*rgoqMO5+B0neXF8DDqkT<*v`#C?B&jUt(z*q$%5 zkq41e0rW@jG3*rXFYgwxm-Dg5PU(R#-_25*wKd;xAI!EOTWy|U&^UB~umBI@VL2{4 zzxDGe1(q!KDV36GvB4ISS81f3%~YqJ)F&K@tmqq{Jq31$2fp#Kutgz|`x#Djes&pU z)mT|C6e9lIl&((8cGQ0uVoUG!x)o4fc|T@Qa!4ujS)3~c=I_&F=tXU@rrvy30U5BmfYlHHYWHv#*gzk3B!33-^0I+|ft41iQs>RYb( zl|X|N<#EPJD2*;*Y2Wd$6sC>B?3YqBXtirn_R>03j$fUErGiUP`WAJ~2CVH~QO_s7 z>}zML4AO9hnc9EiJj(8UHkq42-UP3$6jCB52{2I^r90>GCILfE8pD=M?L!rHD}i&l zzXWh1=kVuR%8g?g_AK6L*G7>Kw)b4M3G(H{(AlXfyT5-?wlTA^C^x1u!Gfmn3(LN+ z4+Dl6xticH%i^1H<+G&CEH2j=%ikS&LAftw-FOztDjI)b)o26td(%^C?=wHktzm~kf!eC)SNN|$SwA1pIwc1p_b zom*5*?z(^Ml)%iMj0qU#Wixrq?39$zB|($;NA*ciGI;mT!#{pQ1Z`Qn z^k08?lS)&Xa_atN&vW&84w&TRkhimDC#Nh*e<{0IWGAQWe%)p8YMxYHmsAiv46fQZ zwvI8`l{bxa4-;vD-uAIb6Q9<)%~9$SuU|cjs+?}Xzzb{Y#vvU^JT3toKdm(=zcleZz?cWb zB_8i7Fj1DQmM$@VG1$dqodMZPkh+v-=K_Ie;z2s?eUR7$G2qz~UyDg9`56Br-==^3 zL1ev!rIC7_4oJHTp|NG&j9aG^UCn#wa$U1d8Im7)n08s+ysE{90*ZP4|1R^e3^tVm zu7NB`W4jXP%9;Xwub|O}%WieN^$n#w{dT{BJ`W?JuUw2(Q~l`c&*uBL@87z_r6&Q> zLU8wbTGv8~Nxt1q%k&CWGp={i48?y!HRYAGR`W}9_ds;F&GJXWyVpj^3r*>Tq;9Z~ zGMTFLnD3@32Vma_LipyZK9x%O`(&Fxlr1+mBDVWR2$sLYOH213eLY9<$T96kj{u1X1k3|-24mH?<6Qaif+FKqlD>KZ&ylXQKiE+ z20ut@NGU+ls&@x$UcgNKJLoPIcMBlqMOk~r_{cfPAZoUt4VR*Z}=y98nQ)T4G=J}w!j3pmfynaerw-Pva-GX=bOO&$a zHY(}!lQ~3@C-*1iIj~N82J*h6-^!VfG%Lv76?uNl!=Zl35@g!F%Wb4I@+h)I`>%$8FN zjN9s4bQR7lqAV65k}WQWQ1+@_!LX23RJ@9&nWI7k6)so-#0nP|R=7Aen6=3j`E+uH zL0vt|#%86+Cr8Pi2}3;`&vpI+LblsJGO5g@R5c|wH92{P(s)X|2iwMvp5;JPov-Xd z=d~qCNWP??cSC=5T<=%oXXsswh*lf8NG_iXM&TN5Ms?(~vU?Zgt-N*RDJfGgxJu}? z9&XC+otL1*nyIIx3_`k-)AMJir0o7&kv&H}B@hUbF@d0Xjz}IeJ0)fJo8$77_-bv) ze;A%gW@j0bg!y^uQ==GUFyBlU6JNa1oROK^Ya&U+ z4o%oAs%L+lbWfF`EQeNb{bTiFoHUkCMyX)DB7LWKXByO1i_xZWdhs0HA5?Q$r2KIh zD>m?fW`-hn<>G4luViqEmuaYt8F+tqqrrQY?(21yvZ4g`SiHA7Ib4|&j(1sdS0#5_ z^uO-Lsr1tTI!&&q{H1f{HKOE>;%~GCl$Rozr&oVSTShu2>MH{|E*odjA?aUSFc|p#ObM{;dC=w#+!MQx&jZUzl6+9Y2~oi_I^CaWWxP^il|S@p}!x59o&!;@&)0%AQQ5qUnHL&u`I$YRw9x50U{qo>kQDk2{hk7 zttUY1EKmg&&GetEML<74kx%+OGl!u6TrCAUE^R|=GSC_eIb|G$jlx6Q=i1Qqp)lu^ zeYD#Ad(u9w0^zG7T#OC<{A{ZtoWB;UA~=64nvxYR*}P$DBYk+}hX9%{QRhBQU9%zm zyXi5L5}eJ-T+rB;^irO9AC|cdmW5`MJtHLMoh%Sh_TbAsk)Jg$&r&CQI!Y#(r|T+# zmcs$KE~~Usg{>~GGLx%2JHITrkf#75EPv8Wj})ENd`0-$NO(1;m;T@uq<=b!VaWzpI}=tR$1 z)^IUFJ88izo|n%#KmZ-R3yv%Ur)oVUxY%c&`OSwwWpstCA|WYlp6A0SX}H=c>$5~= zYSu0Vild6`Ta&09LF(PXw#|n&v5J2b)?}9NGaX-XiXwXb_+cP;5f*VHTDy$XT!NZB z(c;K`4T?m!L99wBp-V~0j;cB7N~*oj$da?KM)~2`m8k=_^NS^Vl?AnYgHqqp{GGwR zYM_c<%woUk%=4kE1O5_;suB^bcEySC1FqrJIX1ivR*Khskp#0Oge45*rjUQR%jo)F zEnceeaM7(9gBbnHdIR9k`OdX>u1mWD^Xl$z$`XAAensA|kX!%A$P&3S0{t9dqbhXH zh9}i62fQ0v~+Zqfp;u} z68&6|K?`peepYk(fmglyw$Oi`^Q%b-582gbZFFX}&9)iph1W@*CUsbkigQuAX3-b8 z9!($runUK#M?rf~ly&1pm1zlZ0bVTGD{F!D`HonwnNcF~yCeB|YxP67$MyQ5C&Qrv z5vb^i5!p}6C%&j|(q5>M{%dX8iOj}0`V{M~)(f~CsDpeRGSwuWmK1;G^;nkS^%Ui( z6DfW!Xe0XPk~RIipp^`I&jnhf!*|KX^V%(TAxn3g>4}p9)%&kqL7#o_Qv$;(mYbp&-+8YL9Zwsra-<3hY{jqp!wK&5uT&XdAD}#5NFFxp|i8 z+st{`&4P=95zm33s|qDT>v8I4%o->@}x0ghhW6nybVv>Bb7vD%zo8 z+w#XtX3|)RwP4#S5SmoiR;5t9{j-dCj72Ui8LW1Jknhn5fgBGif%c5|64^VQ=A?2D zb*3!s;$18Db(yQfI^r&qoLno&NzulVm!|qrp8c}SUxcm1-E#nwTnMyN(@KFeszAp1 z>nepte6xNi`&*V1BTLD|d0 zGH{(XNICwat7}{vL7_sw^RDq3b-lOED#9m-{2FxbO&jLq>^^>xh5VMl>duLozzhTsOKV>2kIE zQPIyhRUs*8r*cM{CuQf<4(qARjB=%@n-+)_91r`#;K*mn_0BjSP%13+fZ3(akz5^1 zl~Ho+EIpV-&qhX$1NZd`1S@fu$!bI?4c31zuLkcYuOPBY7|s<{c2eQAQsv*66qpGp z0Afu2Bv5~<-4=Sl;|l&LOS5Q?w=y||6G^1e*`r!C?bgfnN|0U6A!Ri-?SesG++=iE z887B2YG*z}WP?i0Oj6ycR0FydSpVZ&zmJxTuxV3vwWBDR8o$>hazww!f{vSH9?85+ zPFDPK+4?0o>*lz2d^stliZ2t!n)d*$ak-v_mKJ|}m0Vof7+CgRuS134V#z9Edd#iw z@!ELbi03OW%If-ejDU1}feR#$W1fHrL-HN0gv!Z)FtU2m&`r`ksf9$naWmZu{Aku4 zzXvp$qUm3kewRWplH0QfJeP{(0AE{msMa?t$2?c43OitcQX{gV7@ajGEkzS}rC@lA zI{1H@^jA8j_P(xkWLKF)35|30kZSK05Tu|sZdA2jAC5#g^13-)_iKvsqD4MvE6{CZ zXRJ)#v3ewel%27%`#ZVpbGCb>XmG8lDlLcP0}9D&sf1>w7Zzs@dYw)}iHMu8o(0cA zBk?3Q(F&3X!(WzC(YXr?e!iljQ?}PGBY;QU;NZ$}s0m@O?*j z$6xXgd^X#=GVkX6s0?!luLNz@&%LrT^4V5QsjxhMRfaiGdGKygJs?;+D9cmNwrWbL z%biRK=DZh2-_bW}-AA8t#gtNti=dygQar(>;1C9vZNwPyexaVz$xvVo5x)(&sCZ}B{XXtt(Ur#`ce)&bWLkjJst{=x`VUu+T zr^$v{{f_NW8rxN4Sh_}^Wam2QP8fMKw6jk$dP_WfI*Z*|pRNX3sSO|!o_Oq2Kv)mPTH1NT|VViA8ksBiwb zofM^MuM7)Fobi7F%G4K2APwOAj8?E&8`i>+)R=(>WX8Vv%C=*&60VE9>YHEfq*eNa z67`!qX*nICZo>Jt;~WzqhVb~l`NK|HeFq+pS8*Xd>x|8XBJx~8LV2o{&4DY!=J0^% zH4w?SYkPlMRIglju%?pU?E`;eT*KbSX*~jXK(@>`zum3f)k^ zr>RIZR0Q{Z^J}KSlTdAHV^n)QDp9NwXDVTTT3{;aOeF$Wu6rfyNflOjK&Y|52=90B zCQQq}#D!=EG5)U%;?sOTi0_0)?g^b_TYoh!_;LT*Rtswl%dU(@TU>ubU38Ux{^BYs zEP7b^5b`hh@!9QjH3;i#>l$*yC?Hl~vi`Q7b8lz%rjGiOle*g874!ok|*l<<|Ht$!PKI zFVyV39VP6jRI~G*VT%M#P0^KijF3>jnd;`#d_9tl^`>#6(yXpMhWB_kx>#_{c0=P>wX z0mc^wyo<&23k2`}l?+~X`nvwzIZi4Y0s>+6!n+0@HT03CYeeXY9*x^p(&@WdfO9jX zr|**`KK4M_StDF8etfrh;oXoPzz>$T+JA104CDvj7{`a?N3JN`+!cj;PfDvL1=47N zGjmSh^Aq``ZGwLSWaRT*<3H(vqpj@WYlmHI=^K0cMyje^sR;`6r@?Q)4^6}5=^)BF z9?#WBm#TmP!$kru0z;td>iR`h!WcYEQ*`=4rZqMV#%B>9GEB~t{5<7yc#eH_f{f$C zn5%Ap-J{*75PZlth2t9AbSBE2PZ6JfJF7AVBWPx6^7Ma%Jtnoj%ts=4+3P~t{Vnjnz#*3Qf<4MwCnC5SQl5Fy_!r_* ze=LHOXUTQlyD&CD57mtGjP+v7kIa}*H`Z_Bp*UuCO3LmZ6et`=WA??%xty(KS$HW$ zRduLJ#L|D*#lv42h``y&Q!P2pD?4Fj_nO$cryxVhh#WWj+FVP@?wxZ4XuO}43<1NO zfCM2t9>I@Akg_vYb`N>YUWj6fnht>sl)5!78vjgixF8#4C#CG)|pbElS-{O?CLZAfIO_r@tfinTynx6ICxKCDj{O z>^y%KxUE@dWhe^Vfz+L^rpZ1;A(FN8uvZsL+}TVe+|R`_r~!AxHIPJ8>Z6+QSJAYQ zxGo{hN{~UMZp=U`mu1@-SLX19)3|d#X9lWBI+)i zW~^3HRNX9U&k7SMkh5}ys-6IS!B5vo58zQBp0jm0Z4{V%#X4xnN z$aeU-03JIzTHS$-_5qxUFVrZHUH=PJGSBq9lH=;i9|u*4QpbS`m@B`SNxHx>ReD01 z=ZNZF4Az}_^;C5=vtv%Z#WD}9yc~ZF-^w@4oWGg(q%ZCU*EHa;<)&&#GihWC9JV}o zMW33b*B-aEcTL&5i$~1t?NbWEo`zQNQu8P_mas<}J|wfQNEbWP68=Sn1pWLkmb2An zX-h6$H{SLNqyy!cr}6VandQ;%OBXDvWT=FU_8l22$iVWd+GSPga(mv@CANRI|F&U; z$FMTp)ka5$8Fm{%$P%Za!|aM&fQTSpDxfJ(|Vds>1AURzQu z;?>Js43pvKFdFer&A5N-Nsdacbx8&Uv-0L!yR_&HHcS|9DLu@5l%z8d`17k#>f$G4 ze7R#>{BrpQ+VliW)|8wB;bOVwVtRroUB*=tdkEfgPb_ZwA?|n!wTb`bClgB^&VFMw^aQ3WL>wB@0$RU>sgQ4DgfY z8==oH$mb{WN%aR*XW-jdvT|ef1gAwkK_ZP}z^4%z%vEf#B{E|~`AjZ%%Pvi^lpY(^ z@L}v^scI=}5@2h+>x&{AH4Cqri&CEI2N{sQMB`kMLW6%@*iL?KN>%y#K^Z94*wtf9 z=SK9z>n!2ZwBYeDDcd5H(6~58$;zo-U}dHnm%BGJW_E$K-7BgsvIll1yLRzL{VE%? zGV}R^qAEdr6ywQ|<0vCaWua(EW`D9(?V)74I~L*2^QXG*SN6&poyukDtGv0B%Qq}b zd9&=}McjWEo&}*dLAVg$$1y+qGH?wHl(8D45i+IbgS9p}8w zZW}C`(`+xma~N6#hOx*F81;D$2Af%A4Z)+JNQz_%TFNM-j|du1I^^**N_Bb?`X5A1Zt;SAJY4f!P(zrM)t z%%D$<{QvImr7$3N$GB_oMa##XCaOb?w<~{ptFzD))D!mlmCU*GS5>~cvc3qGQ%opp z4~0;5$n=NC+&^WZ=6RFMK95xw=!i#CAyw^0YMhc%)t)n1@C6C%ijnUGp=WbD!_Js* z(|&-cn~z&TGd9qm3_6I5Aj}7`H1-h7U7JIj#RPK8Pl-r1p~BYZnzSVCsQ!~0dOm;i zpH1+ml}7#NO(>oHVx_Y)bK+Lze4@>d0yyg?waIhU$w)}NFW!_=N#fZmbVY7cjg#frmqQO@SH+N_o? z|4{FfHVE=v0J|-R1msc3tZ!2NHGh8@cD*a3P^r74{|d=V6p9O6$;^WCg6G8Qp4{YV(Sf44R*uuk z27Lx98tzcX^fdZe3REba`ef}Q6XfHc;@V}mM%%r@!dcoH);Tp#=hXx=_O*Yg+tg0J z1j+)#k8ipee3ae0Lc3Dd%F?C;IPF_l`sutYSq-PPOe7#ef1aKliy&rKK-v9D#}(LB zQjCfN{FKC{?=Gypd5&E;)`nF2)p%8?g`+$N=azpv5yxkFUFbPJ{C&&L?j}*UsK1y_yLVSP7#xO08Da3ED zr`5Nl8m4omQm5ed@xYWP7P2m{RX2};5n|6RIACHUl6=Egk8Pt{b|uATT3EBB*xVS| zf=I2_(1o;r3BA*;O7YNW6nD%~z2|~e5@q6UJAuOrZXrW@roKiE`xYw{awI5HU;I!LGF^1n$<>ASA5?45m44AzuEfVv_g|^$R%T*a>6j}` znKEf56Eav}XWNSri%nLs++$$yvve?tDhBK$j>DAiirsmofasMGlT(Oic-z|Ky7<6# zLuB_SU;?JaCqE>GC5f?rSTrzGL-G&glSU6x$KKS8e3QIOP0>FmM(YdruDt->H|7SI z+PLQJ9INQAfs97oGFy%D%=awYPMHH@ZuF@@Zp}kB9BRy!?qF35M3*lxbB&2U@lye> z8>uuK%YU+Je1w&~00kQBV>lHtkp!M(@+u<%(QD=bgA5e@k_9e*PAd48vFp>^2;4|e zEiWN-Kmfgty<>qlW%nyDyIGc$x4`}0b97&S2P+L@S6u_&Yx}RfB$fVzD;;xB)pakL z4P(a&l&SNYN*({=j;1tvCJ}b&XeuFaPR($WYv;coh{UrftUU{9_kI1c96ric9{?GmFZaJ9`!SpMisgU`>JYe#^3s>oAUi>2 zIOFPBH&*klB z?B1o-kYpIWw`)^M|K`0>B>%M;t9OqiC0PK0SxS(sDkA1HcMpnc6K#$wppX(kPJDwq zQYB7C;IKQz3c*?|g(AS>mL7Ja(!d`}=H$)YF8Zks2HGAPt>-c#Ki{{KsRD>_B2N+y z#W%m*O>}O5k{x(G%@!bO^zPFD6v2djJ4&Pf1tasywj-j6>_TRZu&CA$&0yHo$|Kz-h%OYPk zK$rZJwI+bE)iO7cqIPB5TFF6uIzf}zUi)#nWmTSkkbxmkm(my?qH0yg2+>cf+Vv^o ztp8u4>4NBoRr!H~TySmk1Bwb!^_3EC!~RNzhzE{Rn(J%>!;1%d)mzkqwM}tq09Rg(K42QERkBul<(KY!(W+Y0d#ZAvNq|aVpMj& z;u8PV+NPB8dh1;yL~HxELXx_BWm%fXXX##amH%dOp4I)Zd_h4MQ}~%XP)iBDJO8J= z`nghuBtgn)m{?k!(OC)QsvJ=J&EiP!-8n1II|EE6VOtMit`%nDZ}W23+G0-26C@;m znVw3ju<8MU3mlhf$vn>z=LO_O7260;BqylEw25d>(UbK{;yX%%3DT;U=_gg5 zzH9I^S3Q&Z%ToVU+WuqYr#j2~speAHA}KO-Fup?Bhpb~}A#fo>d<&`$?&o3vZQ=bc zKXYLhtW8$FIHK&m*MH?$8?Jguq%Q)|!u91+?#627Nb`j1r)))(NKLf13lVUCnY>ok z%039|n`RPfv7T($3#&ygY*!xH)Vjv~3S}v)sx>d+0_s(D5orCyo1Aql;l zdFR)qq!!W<=)wR*Gtd2;$zH;L%{lP6m7B7LBQ{oo`+0`0HifrkC`iMuT6$$7mHUT5 zH#K%;x||xTUv^GPHCSQHzFM}8aTSq7;+8ovsHG}q5|bRLbjNea#L@*pJ~6RWn&pvL zl9jv|5N4*!o%95xmGN-jXA{DxgLhd?1=sLj!WH+kna`qpgl5~#&-kx@;t*(yoqZW} z3oB6eKks@95bq6YPJBVNc#&9kG|E%E++)yp%{TsdmL-4U+=frwJxul~$!2sx6@Jds zz3v3G19?!RvWBYWxs}HF`ljrJ-4%a@UJS(D%CjrF{x@Eh)yJ_9Rd!BF=Y?~*kb8DY z%I?<`_2|@gGbJnX@bX!II2|dbSI@G{wwSU+8F`Gu`@rIbCzVb@#(ib5;@a=s;)s>q zU%o6y1oh+t3q*xwNjm%-NCuo}sb;LSTbqZ9>$L*6I%OSIhTmM?47vqKX`_b}v{a8! zUDN?jd~THlc=PvXq3@FKTV7L`og84E6e082ErW|ao|wYweCZ*7HUC}Ts#%r0)OEGPMG=59KW0KaxVQr}>8t>%ZoheV98l}kEiyDrBP zkNk>6x3J+y(Q~MWj}KsMLympz9Toe{8~{4@^qU#Cb)<0IaYCIUzZQR6?&1|Ufc?Wp zVHDtEjH@`F@3Mi!YbIRpjsGCweTUwog*c>)B_eo}`TUfB`J~P*)am7YNI-wp)$$ri zp*5V3f-B%P;hbAI2ZcxJg&doDN)%$O77kDafFsmNkdGp`_RAXMKxE@!W0Skn2E+uI zgyuzp2@%+Zrgw5}QRj@-O5Dy*`3 zWiXz4*~hI#1vfBF>}6l{PgVy-m7XhPWdqQlQq7cn3YxoL$tMjJyKp+VnNh(V+L|_v zD!EoZGKQ^fV}73cQi=FBYTFDucj|Q^ApHY>KNty=fD$HJ-`I>+D3hTuk^N6N7 zMq@;`{Umj1qqP^}Ye=o_$T!4c@QTHTfd{!<+%Yeb#f!sS4bzxMEnE$D=X@N}o%4ws zsKN$tBTP%P8lf*E&@;2kfFHQe6V7!~eKJW#6@b znhB!233@jR?s`A(s`sety;3bfTw{XHC(bF_=&yF4zH?`&?!<4Y67MOcBUiXL15aP! z%OwP^^%2qvJI~WS(2A0JO6!6I-AOF)X2$r*GOsOyVZFS+%>NDfKW1j1l({Xjpc8Me zXeWGR%i~%Oaq-g|-}GT4v*zrtBy;Kve9N2x_GkQhoUm*mI|mW}v_6%uVG6PS1LB6VlI7q;=8fXCyA&@+ z;JniADgQ=f^>Aia$>DTx3w+ zT0L@P@P<-9^(D9BhY@2c5MGZadli$`3>+^6dwLuUmQg4_Pyb>RNC6Re zbtks;%yb?d6vY*;;8u{b7!&}1EwQ=^B`mrH7M=5#nOdyG8<%+NC97`-SiacmW3ycDMp_9f%Rskk z!=x}PWm}n20fWE|d~Fc>Vs8#&MtXe^*D!dD+28pP5@{Kp_k+_l0;g+#*SOqBOgXlQtl&y`_RZ*aIT;m=x zGAYZD796}(NreOw=Ac?p$j2osHuY?bId=AiNXshNy*!t>U*fA&>@Dj%kmpC)OLY*W z)^`Es6OHF+LBx>x?ugTW1mEiF&~s&G(=|mwDpuXf^6=cx#T+O-pa+GnGwtdZM^}Jv zZC~s@zT-8%h&`ZrIO-M~piEnOCkNjyt9x(_R(G!~h4--kEZsv4f5~w{Rw~{s_WOp} z?_U;;e<68fkHj(a`d(f4_l_@YOpK>qV~SELd+#)=lF^Tc;^^6b$tk;s(wVOeU8^ju z%Gv7zC)mg(IlC0f>>u+ZV3RYj=5bfo|AS-0YvYxa6`beK(|@ioV77Z@zK!*lV)rp; zgy#Tt-aSTl<)8nXC)XJHq9*H)(qwhNC->iVdb;69psRRB=ci?V17;H~Qgdf{Z|I{m z_)ZazmmSlx{P^mB>L7eHZUsK_uV&dhF`5U~?!HZvBf4q`vvpi?r4xpe8wOzWMn$i8eoSG}$T=J`94Qir3pr z`AFLa{<#?h&RXY8fI6^wRy*1Rl?(58Yn#W`KC8X>$$|5K(;)D_N((Fg$mRTAH*QtO z6NpOuK+J8{#CEpjl77D@dW;D+083mG+4O!TdW_Fl7ZLiN_^+bl7FAtPCCM-N87e^N zXY|Vl{EU8yvWNT6pUEf9PEMcGHTXI6NoVmP^GW-m?TM-< zGwH{Mq`swpiYBKN`m$|wI_+-@e0e+&-Qofzk>nj5FpFFuCY$!9h&5l-|r0VR(a}IEG8vCKboPa2vERaChXxPTA-|9&-4@D)rPq2M3dDAnBEAuc?Zr z>Ptd@-LQi0Yp|uZ&wg{~b9u9uj<XT9 z(X=RqWXM!Ki3g>ALoRu*iPxk4ip`am-32$Ss{ZXCaTy(TW@k z5Gy{>=P0###5B3!dutU^4i0A_l`{6qG^y)Wf>zIO(e>1uCc+%1oHlQef zTThh!z43hQuKii<#Y*%)fgOVc)EPFptCwtT|82tx7h=Lahn@xYfwvDnOZTD)Esq$f zrlZK^tHpMXX_X|7EWUwfK(Z2`y>~0|_-A<~Vqc;7q9K4GBt2kSKPrlxXn8{>xQ15x(^H3Z; zJ2`FlicrOW>3%6oVmKgf0`jrS#cEZZ; z9~3l_tR0;ttxj0jTP5v(eDy4}Q)0A>njDsCXi9mvoBNk#y4}I31Dh$0yaBXGO5x5Z zrOry%p~VSlWXI=AUKE|y8}LI+qNCtIJBSyLTibh*3s@*$eZEuM zdu8)VtWSc_g)s4d+i`94%9W{vJqd9ag3vF=X&rDOW%D|dvRNnwzpTJ`fLp37AOupsFj#N=|`0Cn|GR>QZ( zZAL)z)qb?$@#lw-$m zEpvXe>o$RZeZfd&Vw!X3rt#GM+snG-O^EK#lUC%IglSF-7FByhQ2ru0^Wyb>|aNX!!W+QOZOJoazI^ID^#SN%#f1bjYmIyRVdM z_O^ipE;J*^WD5!|M3jQme56Ny26Cd=pDmY`ApV`Z8!X?*4|E|~} zI{KN_@lBLrCQ(@4##wm*B!9kKpaT7Qned(;m!kK7*o?Yq293PW9o@YWnIe~W(Vpa{ zunJRjXs@oA~P!$&B@dJpV|9owt}tORVQZg(aKk>KBre>SF`9)Mr}N zXKkpzrpz|Sm|~G`5a#)SYCVSZvZ%$9vx18;63%H9&s6KdT)5#TY2YYd{*Y<7AEe>W zc%|3fx_Qbz2x=tVPjgH-N-c2F0#iqP&cQ2x#Yzo6)EbC{lo-W4Gz&p*BPxPoj9OqC77dFC^`F3uDIq4e?79h4ub7D~j289)*OlJ5Cyye2q?8|U} z7G_S^aX$l^!>e%E;5q?dpe6i)v0#?rkfwKc8m(pzuF#)`i$B93e_8zbW$2W%Fa_uX zm{a%<)Q0dnya3v9fZ5Fe9@;O%3Q-JVZ$TLiBRGF$``ZtTKR@^;zzM=YUlzZ889LjRL!AIw z07D%wZGne}0Cl*PxKvS1jn&UhIedw|#f$f35O<@!DPfr$cu<<^pq97(rm_QnJbmtj zr|n-t?GD1PuE%i94}N!d7Tf?A0J`_HYJq8#4*ud@4G|1~SlJ`=VG zgG978NE*ix<6w)}lLKgqi&n^gV$>A90dN2Qv6%3p!2d5P771=vQQ7h8+wyiZ7=*Tk zC$3nhw=%@;KSJ%gm0{vrB-O6Fm9;m6z{z5jdtwP9Lfgb{C6}D#ocam1N~BmXbY)V+ zA5N@Qf#`*1k>W?RkJIGkG&%ajf6z4SZ~R9tsrs*^^+glbu{+Dxu}gJ-MboT?Jl2+) zhp4X4Q{TMGm`ejd8sE({gNkh)^n@cp?i#q>^y|+NMxoj#(=?LhJ{f@ zW67QLdcmS}{7WeJG3AEHK<@si^DH4Bc$s z4e*a`JwGitLq zJ*LV*lrXe{a*Mr&27zyp%iI(5*=YHmdOcmDDDa*;+f}g^GJr&fA12VTyXb|Ry^dp! z`HCCdGPgQar*i8HuPe?hX_{hqQ&B=~7aw@H*#Ibii&CaO15%cIRCRvt)Clhf`GQ$$ zq)>A6n=j;lLHkN7cjHn33cH0JTmXpy?jpIGyn5kf2^@wooD?*Bs*znrE@glN%Q)8& zR%Mc$%Y!mtvQlw^9Aj^2HuvkjWl91>GG>(E$))wI&9JNN9_plv0vEgU&~aX8GE2if z^p5_@a5wP6~`EyRgGZl_`80@puhatq|7 zm2oR1#Ju^BT;1{ckOWp^z_ewD_egZwB^RC6F;<$*rp%oV*eGwX+U*vTs^p|r#?KOy zs)J^K1lhB;^%{lnI5p+tBm_gQk7!R>^tl=U`WPR9GcTQ8kYE(^;MB`$Z&Rm)C@O{4 zNT>DQX&v>T);jsj)q$r1;7{c9J^8fN*MB2#{XimXK9RRRlP7eF`8PT za#uJ;lSoe;IUobiXs8ct9c(F}4)D+L5SqY$Tks#WoOo||U@XG^05?qoGc^1hMuEUN znfeetXhol!*#HQUtQSRTTwM?Npdnm^Qy)=)oD}ENy|SZ{J%p9$ODq4SAs3oCR^?v}cL z&P$43k4Li#*CY;v!p}r}(?S>_=1QhMHliioO8AUQ8osCPvKoQaD6!Gjp$ln7(;(ZT zfiw1ZzrqoOg^$P#Jah$R4l84`@@*5=ZS5E`pv{ae=UrJ^_qDzz+F<49>0eCo%BpDN zhYC!Ez^eo#D6s04DjhSuD!bo+10t1wF<~dis;w4%e`dynU?9KB9gCMJyLaiGrNqSS zCJKIuGH?E20l)_aFo;rffX$CZ!1Bne>)vU1q*U7Myo-uwl?#%M`$~X>kTI|1JrRM- zu7R@qLQeVo8sw{j^*zAn&vSsK@Llx*R;Gu(mdDIaN!k6nTnVVlCZ={YL~bpA6QwLl zx_Z*h2}ard)qa&m85f6jUgiMNrn#4s3T5Z1?B2N0WAv*{&MfdWF7;p9l*Y$_7>FAJP9_8zs7&7Ba_kgSW^r>Y`_45RCmk<{0+%q8?S3q)))XrpY$#Ijb%B<(l=Ql} z;0lo@b9LMiz4S}3nQI^HxjL$6n>ABlJCe^c+-wrGD;=2pe$dt}xMB)_*K&o~rAlTB z3h5lpYWRe%;3(LLmHm!v#PW$*nadc>pTKRo;AJrVI`QP+zjgD$h2J9Z-LU3={rNNEno}{D8^BT8L%vbx-dQM!A z!E?emP3*_M4%Q<9Gk{J4KX-6Fps7GVI(LJ&)`xx15co%_!a;0*Xvb?Oe#o*IdA_5N zd_l@_+2JuL5>#f5L6A9N1rjEjm-3+Mr6>gp5qY@JozGFDFFv2n8aV=lO=?gQkR5dQ zvVErqbdpKf>LdniCZQ_uU2R1v8>!hs^CA0`-0qgVQ_TD3BXV?!uLJu0*pWxs&ZV6$Ics@be&%pRAtUNnA)&)>rU0-1?V{1gSfFQjb4ng5_M z&eZvx=I|r#=QcbVf~4&@H=%6!$;yVug+dPQm}h*FOU$8p7^T8q&A4PEK25orX#hc( zLERh_jtvbG-*WP1F(H4kL7H+mY7iL7^3G>HUI>zZscBvS3{M#6K~#1kd#qtyJ@@>6 zz*DS97K*t4NDNxtE(>R-8w{zTY@_SudM9U4;Udi=U;L=_z|}bCV;q6R$%}Dvy&XZx zlBMdZ2V=p+SESP>bfC_6Qwf8!7uEW1f<`v!9+ac5`vD6Ck z9wLuw1ukhbL0k=h#boy|f39@hUnyc-Sq%<k8FMz=xT)V6$@%0wl4K7>$NY3%Z$sd~|Uf_=E@X4ks z7ZjQo^d>&m8H2O2yC`Yd8b}v$v?@-2A}R}ctEkO|utfo`aWTQ&oJK!dl1N63B5reb zK%7HlYq}eig-TAIjFO9A?UY5Q_~Op+HK`&49|wg_WI-Vgx|fwk=H&_JU~C>1c(o#n zC^eudAv1axT!7Rtoo9NuRf*LTZ_4`DSo0OFN`BGua$`sfTxdhy;e)LLqyZs+_VS3l zlqC#I>#|8^MOlfJZXI7wQ&5cf^ZIAW#=)lW#ntGymh8`L&I7IzRc7(@t~(0#-=nQJ zQXSa-O_d3F`XUNX+rQRhUrRBRN!nHwW^n}-?g4>|Sgo!FNY&llWS(ZONKw~)?Zpyi zFTeh*m9-|cvsP5VTY-_4aqt{}InCd#d1=2XhCr+xmX85Tsb#Sncn5JwoUf3eUM?(2 z{(i~=2JS1Gz!oViijCcsV^QI#iSa0PfubF*?EHnFXDXUv;L781`Am0Vyzu9Y{u>(v ziXu*#*C|J^f~MU6UKK?5@0q&-UpIcQ3ITiWxo4*aYA2Bh)K!rAW~NquE=n<)zy4PB zo&S9iRV7VpT;oBANje`T4n9&$()B3K$(r-kYgLkBuuGJ{b&V^DkhV!ng{A>0_I&v# z8w0qZ{gZhUYlb(uvZU$g>09>L`zI@dAQq~vm)b;n*|lxZ%TnDbDZ}uqFD)wSTz|-X z(l8n7Aw@qwlF!eX&me|>rom4-R@%cCr?vfPwYD=u9#*ymt!o!?()oR*HPxdA z0W@5LnVd*7QzBEH%s2qhJv zq$6NOTIfG7*fl0kP&&S)?%r49usnW%gi#`|zT>a<96z-;aHp(uTIIgeTmQYA1EY5J zTvg~MAM@F1_mt^>;#_)>+MJ@=?)S@Dmm+eoT18or1=^_uJYcN6qW7qq1Fo|Bb%g_N zarPAfAxf|w4y*ivm%Qdza@1XSj0dhf86WN;uQgGOKP!agA-}yWXe8C#GEqe7+Io2; zf|WfO%I@cix>KESKs&yyK3~@KB!fk9Q!CCMwU57X223h2rez%i9{>URpm+A`^} z!h*56j4PtUYAHZlRpi%u3ed{Nk&)#=`}`O(L0C`tedjlfX;VU_WE*B!lKYrC&iMJw~F+&xeK+Uj{6y0T{3IEYbolmrGpnMYK5^x>#H zj|v`tUODQcLg`U4s#3w^0`O~99m?)qI-QKw9SMt|O*5uCd1K*D5GA)4xeOP2NEGR| z6w$MqB9rVnD4d;)o`4Mj7HFxM-us* z&~1hf{%MKTd(z_CDknaWvo>$cRr85Fx;IX(7v#N5Q<(W@@?_00vuF6=59S@F;|0+> z!3VDy0MmgOkmGJ9EmwdK9tX^mH|;4Rz;Nr=o{9HlsOyG#Z9#P>_~5VP|MZRay#7qO zU2B+WrqIM4r!5vpbBGU)m=^I$#eK$q7?bW|`Xt`@bgf$=_JvINkwd9;?_*$30y2B4 z!SD2xsL(szvv{a@9qC@@c%#C z|0A$>+Pedv+?glAe(to~4n8w>Y(b;-NKO(WI`%{QIH(erUfR+Hd>NwwJI= zrnKNWwv40rxcz-`d`*LW6c&wtkiEFajkse|u51|=;?Q($KUx{<@z2NM&f?#3`|PI% zf*RUvx<-sPVW!r!vf$>A(S@abusN_#ylJMnwK6ff%^aTi zaGSPZjqSOC+A_^8wE1Q6K9T)V@`)*iqVV zqb>Uytjbx-ytc2cyVp+I*G_V;wWxly7!2wUS+Ex)p>l6AX8_4;2`JQDmaavAqZd!u z-}`};ks7b7aQ&G@Z_Ssl+}zCwd#zv=cV*Q^6DyFJ%wf)bY%zX+YjB+zhm-yGP}?D< z?KbZlW?|YQ;nb%V_Q6z0CP)737SSN0UKh^T7KG7xou@(Qu{&}Lk~8ryn{F^}3$=z` z*VL-8PJu8&c3)#D1JGKMVI~2(VAGd5XlBLty)m+VW{#I}K81W;_7nkiJq1F$ZPt;j zfP>u5ea!~edOEv*m`~dcBzCsZJ!XCO{3{znzbxDS#Ec2eu@q+PRC{KEr*3P2z`gG26p9;PSF$JRsn0B0f@c- zydkskL7Z)jr+MN_sR0#!LhwHgFdNw+?8^cJTerAh5#E)50fE;Civk>DcV5%gpFj2L zw<{F}^-w+Paf?9?82kT$?|hpav(^nJ&M-LIvd0H5jPL-tQ_-rGj~$)1*Zw*z3fyF% zi3l@)`5cFB;Q=!{gD}KY)&6!5D{=uXOyS0@-}vU>cBFp+Ps`A}gvj0Bd}hWGOF7M%9UDp_6IQB@AGOrg z;>a~bqyZ>Y+BTmP*2Iw66N{i@;3V9|vJa=v z(4#AOcFvZTv2GDrKw1F#?gJBGXg(Kf#vdnUzP zG%c9`-UItFg|}=hxjlK*r)jeP)=a4~F4A1m%Xi zll@RF#HW7A?hJ_5bex3d8{r9|b!&ePd$VAtU)a_+Fy!KE%WfZ-uZC0e=J>OA&svha z=;-~x-W|;@ZRpv|#T=pGg=u)^$2pAp_M{lv8!+D(B|2&4nQmwWZ?zJwyUAXYMe=-q zDMm`bUc&+aPl9}c-M8G1m}T5;yZub$szc)k*>YAE#gDxYoriqS_hvFAyYAq+J=_|b z-LOWaLl4c%76->f1U8*w9((*DbYSrvEVei5VPaGFE-q8sh3DYhxoCk1`bdBPpv~sm zP7t}wS{nz{P%J+3^9Om;3SodJr;gZvJc1BpPMPV;aAF1*oZsdSB0OykP+`*@INjC+ z81MLxH`|K?xlMS}eK70?9ELd@W{!aSW1v*%n=uC;&p@vG%j>4VHFV#1a2|7)iM0n*k8MZ5<|VM=5mOC-P;eJ z_1KUfpsJ2;{_VMcFLSi78>#rr)9|;3@LR3Zx)E&miB}#IO+o9ct znLnCdr1zWVq^dWb#1iuujAabdkH{_VE>e>U$IWJ1KSI#zcdm=&X*j$XUySLQLr93Vw!s6_~2+ia4@uDj6{?GBXs!Ah^g zN(bhVp9fC5rTFrT!v(w2ctq~Ada_e8zXhEOcChuM8(O7t(AC&~bTUmg^VIQZ@IJ06 zL>OgObUq?WfDx1Sm;`*%2fy5F161+ZX)mth3p2;?n5>hjx1016+AwZ#IaZs(8Njet z3)XGSzFh=@UboW=2W{rV^NVNqK{&gXs{-H9F@&BNMcM;3??+YU}VPjlR=aDBJ_QvM73_Rpxg z>`g1kgxW_Gj46vltWU?`?YVDnPh3_;pjjM^1t|Ml5MJkhFaHEljJos?bPc}@+-A3g zi9Chv9yxtN@9iEw#de=rQQi5#=Qi2HxRKh1d>4Mif8q^24mb2P+|bkPh92XF?uQ#X z_8S^+BVJzt1&udxmL7DR=>+*fxGd`J zA@RScY(8#(S>~w^W7Rs>R?J6kfZKTUI6Ic=Pq4}47XJ^P0{=Vg1BQSwr^OF&8xh9cjtXCuhX9dPrWCPc1y57%DnXS0vB6`P=KmTv(G#}H`oZN22TuSGJfoblnJv5ef zBabvj<%{p{e3)61S|n%uLT2rtciHjHv=z+7O)=r?Vq~^`GeRn} zdDWV^!=a?x)CID&jpnxeqn8SEBLw7tV~L)B?l!l>g_dIKdogK$CKblQi)yopdz$!E z2=0JgHCEAxDlO{`XII7g^SSj6R^>QY_vR0}%#LZ=0ITlD2*)jWD|Dh|bg+2zXkGpe z$ZeZ!A}87>Xkyl)@rth1;nGfGatrSVu9g`Y1w>>|P%fz)US}qFzr9$H$cVC$7*Py= zSxDT5EI~*fziA({1mV3~eb187JSfLb2XN-BO6leP$TO|^%l(UIx95ZKAL*tKjI-f?~$ z9~|e{>WY2|ODc>b8t|l@MO+U-b7FT5ZR!sLVk$(NKh==7m(d$< zbKN6sN{g4LUIIV|8F!1U4~VfA^(KxB+k~H^vC%t$(o2ZJ-H(tTx-jgA<9!|HVO~e) z8MB+{yW_=LxTIV31Ba4nxReHeAZKbn1qRQ0L-WxJ?TQ%&3fO*JNPnE*KAMG{P(_5N zO%9M_%Ln1fY7J3no}=cGehf1*?11B`CyUE{s& zO=!g9AS2P7g$HckEFN_-SRjFQ^&*}={to{UeFB`?{Muxc-alv?9q%K59|;$CizNqE zS9R>km(`LV2ljId&l_`)PT*h>Pu2TaZ5~@k2K^ z>*FB$m85JDFe&Kld^tot8!QX1y<6hjA(|dT#&A9$EG7ld4t-7Cj!X!pTW*C_hp}z`pPwvo5BCj|1--ND~&J6aLsx<(W(QLSk#Y)%yT{yzx*zB>nm6&xiC7 z&LG2@4;(|xA>M8jV@|xw9I9qcG6aKl zW3<<_fqmxl+6HHE6_EsexQ+>j5JkC-;9UCUic;a+Vt-p~gj_J!ekLVQe*Qg8MT0iv0)mg@lShOJDZ3_ zyL45YGne(d+Z+-k0`#Y9_Ezpa_BT0-zI(tM9a1`a>e$;)Q76}cF2_J<+qc@lP47a0 zI;hwg(P7boCH+Xi3*6$)ZNa%u14Itf_?KKqnu$*l{I7ch=8MYIU zYHU~5OQjxiJS*-5FR0zkfTf2%5Y6s39{N9QHtYccYIeeUew}%z+7mQa+f|yjS_aRA zZTqEvgA4O5EQ9Ut+#n;1?GaA!}PUHrfua{x&7^0e*E?THDt)_C=r>iqK%LL)2ijznl-A3^3dckDvy5kZVC( z$*Iv3(fFM$@PKv#(tN7N2m9xMMg0u}Lw zHEkck3)@{RhQZ(3LPy!ivPwM5LV0vZU&OmAWSl%Z7-(Ei1f{3}E@owXgIj9`e;e@% zi}!vQ1Qi4~2Fw#1=INh6e)Esin2d@pQi{dT;&LR-BH&K$o_Q)BgGPi^Z&52qoj-Gb zNv(ss12sTq%I&3ezwK^$C%vCiFLcK3qM?>06H$sk{7k5*XRrTbMcRCf$;@V*vnc%q z6DO=16gFATy+g2<$h_l@)s=NzpP*)Q06`vsh8rU%woo}|PNeDOlIg{0 zVIz0Gzf&~d3T;u0h=yvcd4qTf23(9CxNWqE=Y6MtCUoC#nDgbH5qCoLbiW>dkzZ*c z3nvF+gxKxK(3zjZ%Ow=eZ7gBqlcTig3m`98pyrV}svG13fC3rmjwB#KQIu#>i8n)l z@NYSU-)sbgZ!gXhdvQ`ujwCBN2DGI?`DR(|X@Q@d7oE+l>^MEw&G|^6zBaxs@R&O1 z3F(eYZr%3zrvPI>oWGqFioH|sA!MCfe*)yS8BYS8`8AElN_bha0;gWKKk>JC;HI}e zaI;2XH4gtr4R~-)&PT#QN#YTVJR6D+~ZAPBhx&!!^8O#N;?3)wm zreNbw|6?SyXsbf!m_gzklik^gcTyqLt2OrzJp!WF`o0xtQD=BPh;@$llo8x<6-E5d zYoX0_Y;LDW4Vh->pbi!$|8|__f8#OC>^-)by&J#c#%uB>`akdpKMKrcJ5&N${QJtc zvsHCQ#%AXCXq09MUwn?np8b01X?)R>XBujbPh0lv*Wm&sh6JSJ)&(VCqMEJH0qRTB z=2`}RfrifE?gT2k#g*`>34JIT{(VyL-z6+Wa3cQ>Sh}q^*BtlFNSv-ze@NqFP%BpZ zSBIG`QnpF0Z0e9JpmRiQL9C$~^S9ha$Ifd^a`+Zun5}m{^(`wfBw+=p z(%MtU;A^nJ;?JHtTAZXX6089)HE>Y#@mCoXShHTJkpm6qp+`_4@%us)=!6U-8>Ael za2lH%aTqw=tq()%v9V_Cf8k{WxBSd!191=U;h`sl=JEq(Hl*6;xY2ONCV{vX1APkS z$hY2xZjbfVkZ>lbnRAOeZ%7~n8ZzC_;NIt>2;?Zx6+8?`fA43I!K76w?-P@^ zzi`^9yfX~ihixQYYzC>}$>RK5%j-5!L;U~LF?YoI60FKZ>Ka)m5tvQ*D+qDMxv+sN zwms&r$?60X-6i+I6!Z&wB<^I#SJR5F(6g2xTV7zoyy6tXfej}ze!7_93$JK}qcVX^ zFfD&{*ydO@s5^p&e~wMOf`$gVJ!e&0A3`$+!96r{){dW?SN%SM% zDr#Nb3LMhLjx{Ek>`9rF*a6{uz&x4Iu%W*QgRtZ1CtMjjE{uRAN5U(e7!`bjjR8`0 zi^Le^d{6VXVLFvVXKD5F`?Xz|R-Jr>{Iy zFrry;5n1-bbh%@fpxN>p=N5UkmVi9o@4VFqw8whNEZH5s2nrszOh?_vPU3rp!@eI^2wkfZ~H!5(LP+q*`s^m6oBQ`_lyMb zkx68$_7;!!19LoY4#_owf<1oQ^VHfg1)ELWovjbs{`T0FHn_^6r>~tY^$k2N7Og5HFgpvaPtn@ZJX5w8X1g& zJPY324ZU6A8nvcZbn(U;-Z{*nKk)g`@F0iInZ)Jv^xg-lbA)p|xF2}7!DtmfHvu@! z+R&5ke*@$fkTrfS-vjPskf z1OH)z^6oU9aG9trXm32h^!*ZF9?bT1Y!JaboO!1tWcberi{<2QG5{Rb<{t~xVhO#J zH}&`z5UWe-R(%F*L!8LR-kbU|aqRYXk<^(c!*kjw9N8B4&2~H`agJM&#A73hz`*n5ZNX^m_e{-vR2sl< z2H;($InsZ(G!y4g@*gW+zVYy(JMQCv5UURnF8B^&LxVBE`mPU>7vU6AJ-vPFo|tX@ z8e5%M`Tb*je;?EmXPy8+0ZtY8Gb0YTH*eE7v+!S;V7pYp2+aLZZa{Uaj`36-m-nLt z6Mwyek<$WrIt(Gti7qn=;teF4-|cO+8>T1;WUVnhz<)X8c%gkrI{GUtOqDc_~V#pE^ch< zAr0=t$AKdh4HbR?fvM*Qxy|UzY#gMY(UucIMgjaz0Nx`yB5K|}bsjmV;itW8%-Z!|sZR0~orF)fQfJvWexXoFfL=!7=H0=>0v$ek zQVHUp8kQ|OuI6}hTp!`ZX5>6<<;;hUpiL@dFplCyG7#hYIJz7~7L3ul^_gslLlnm$ zyHQ-tgB#RGZh7)~-jICJ7)|GpXPs7f;u_K`e`K>^Qwx7xHb;+%Pm6v<9qcib55&aP zu@w-4GH6I42H_`qxi*-xed{IXyX3=2K%R8JQkH;l{PRKJGfdojOqZYqX&=9Jrf{TB zJ_db2yx{G|jqxf0xwFM0;;gh6QrtI&UgC+F`3e|CyKsP#qZT z%GD4YAQ68~60UEjF(q{?c@pN&uas zK6akLo4=D6fqq7JthF(l*}Vbz{tZFdH|Vf%4B>yfg(;u1};962F?*@UivGEM1@~NvhBYmn!bG($%Cid{XlYYoP#lrTNRws z7&3p`1s5u64nld;se2%G!4^-*8;5~ss7+23jo#O2bp5T~SKhjZM3BB@_K#Tg-uR(T zg6l-MJx+aocXBEs*Q!7v@+RP3tQBWe9xbq*HP=Z$Zk7H_bpCN~$cj%5+k%v03b_%G zg8xof)YFy*AbasVH0l%Ll%V%pB%22P=B8 zX~ti0u|{78m}`vYtgu4n2$UVDKs&{-G(#?$gts9YE{9qWjPf6^&ImzN}o+p_Qi?e+ltMGRBu7pP2j4t8r3v;<)xG%eTVv( z8T%i3YwQy*AGTc5#Lx*Rdu}?}^TdBe-tD5dXZ!Cz_TQ=Z2q*qO_HqqW!k0+Fa93JY zSCI4#jidfb^Nk;<-7Da^UU3YD#kYx921W+^F={SG#IdT|>REP~Xtf_2=)nmNKj2ua z!`_3Dts-WD9Q%dA9fT_k9KtTC1M7tKy|XU2=w}o#nM7%~MO=PpK969$D;j?*6y~ye zs*ON1?-z_wS{pspa4!1x6ApI&WP>?t@<$wOP6s>oj6Pv?_o?i0h7zr9NVk6E;-Ze- z|CVQY&Gs?zNt&WQ?o@s3Z#i!Xu8&JS9N34yJ^r)ha!ZYglMsN0+W6ArZ5 z_%)!F{QQ7#Fyj?{2)tdhF|x0p(I5g)Rgqka?YH;NaD?c3<|VU;$wpU(03R-G1kQwT zo>At-)KC0ytD=}F5vPGEaW`o+pJViVMn4a9q@s?pEioGVV~s{!I6V7aM8yPYk^hE6 z*Hxbg*IE<79+AeLTtR=y;bZRu>g>FK5qrVD)t@ae!%v<#YP$CzwMe~p38kJR@9v3; zuYIq+Gtba-H+mMe!${mcL(WjT-?RBLUD@VS$OQIw;EW)?=Ck?fo!63B2RriHe~d7F z=J_&Es7zeGg`r2l*91G@j)lc@!ATdS;GJKR2c+p+VQl&g44h{A|gEw`4teBo+&v-3^wF=4C71X0P%C=w0OK<4m-y9kvo39pz7j0nw zIBy8D!knTd3EVkjxBPzyw>1va%#2&kpQ65f2C3WwEd0an)QK~=xBuGO@E8Me4gZ72 z65SLrJJjvSHVJc3XZFk{54*W$!Yzlu2=HFAymjPA)auSMsNTQv9 zzuJ&3oLEzID*~N`j?=TP#^|qh?JROV{z%j7INEs!)CqlBoP6b|gjo-7hoKgya3N77 z2Eu#1iFE(0%7juSf2{x(JSB@B~= z$5Wcf#}QBTmyP3JPrUBP`@NdG3p(;Xw!oeqTRzmv;FG}V3+*3nShuN zgdTO6a1oD}YY4^+OA4n>h_N_54V?$wD;v~DD7cYb0D?&iktNdW)RoKRCQsGA0J@IB zcDcgK<4#dEyzdoUiNX-CCHw13&$!O4z|ro;WfMnjoRYj;wzF$2mxLwJk1^)JkFW~2 z9h`sOzz*j~k55%deuH!%G@Apx{>^V(W&@WKg+vs1pw|cf@IZDKJc-DT2e|wQX__3h zculljD7>6FG4sBOG0oelfIvXrJ^FadIZf<)kb+-a+RD_g`EFnhk{P_P3br{=!4Na^ z2%_FnsxFAPjYKv3{x_24-}e_=X8G@7`5k|`I*OOyscNh*jNOE}we%P{{Fec_hut<@ zLHGh1XQS;d=z`dg$-IyCawY6SnU5`(#sx&7;PH9mTvLMWxTb9OPUslm zJ%d}`cVj@jihNc}N2kec6D=cZhroZa2Sa9TlPelpjBP>@hC+#iYGfm*E#aFG6qCfP zttjX%PSoSwvaO~pFi7r_C2AS#BTs>8;h|HXAwSNEJP4`&i`f6b6h+-5xhs&N4NNsI zyZ*k_iUetU_aQ$RT4ESrjw4`>Jut$+XyLkCy!q_or>nbg00QXrd^Uae(SLj8TTds~llhmhhyUAt z09+Rz5B;1bS64TmKaTDvSJ>Y4`F?WS{<)g{V_~^?dv3nGn|;BN7O#Dp;lDSZ?ruNb z1yfBY|NY6o{mJ#G_kY<>YQBmY+W-*86%8(k;OhhYz9CLY{$NpQ}vIKeJ1Hf)mIRl#NW*Tvh5Yun)F=4v*v z_uX`IH$68yd-3=D{ulr4SM%+YMX>ho&%uVyK2GNsf7x|ewS#{xK)SfHUmQZs7KEz( z@)r7m`}q9k<6X-Gn5o^`K^K3`kncW1+xL?x#q{gR_02_iO4`2{AJ0RAxWN94Yr_+K zx`OrrHh+Td|L;9?_W=KUsQppn5HZ}62<<~$OVBKXfnOEr7AxbAHKi8x#Ih$hp-{+r z0OJxY*Pl0kZ(o1RKi(~7eD~$`;^n=IYqRc;H-Dda@?|+a{GTvp+XE0tM^IeHW@xF>NHM+0- zeBDBM7GWU`Y|mkphZi3we_gd8Pu_nd50Kp-U55?q|M-9V$?VR|we9xgZZds0oZa4? zV|)I0e1CB`El$3FKe_(fyfV9=U0ci)f9wx?b9M8P{A~VJLe?yf+I%>>znISUXNxVK zemq=IlKI8oL4Ub66of^ao!QOR&D0RSOfO7}U<(S6(){ir2f&3y8a&|vc~{_1)?ySTa@;IEcIN5P3(SWcGuk8yt|lv#2$a}SwJX~b|*}`Z+48{vkwb_|8D&EGb}M-9S-Lgi>DHEkZs4X2x4ziD?LRU zUoUvxPw!m^gZXUo?)GLOqyz(HTRj^RHj~@CPxINy_2l;B`3-?C`awPOxm6)85c6g} zc{_jGn>`0sE_11=d+V^uIuJoDF+`P&8e(6WDcv%hr=+Y>K=xs;+is^%c}UjL7GllQmJ zKok}%@BHp$G1k?^^;<%0>0@#S-`(7Djqz!4#(mTIO>0*Pj(POkvz@Zt1tYL~@%H?x zH56mB;4y6tj}C4qmk~T>TECi2@0ix@<8OnUJn75dHgDcu7Q2hbS5~QddfmD)EN*`} z?9M;>7YH)le>6utI`Q8I0{pwX7q`ObwVChyOZzu}H^ZX^SAHM4F;D~c_09afVcKo$ z15k@QT{*RL%xBY^xgGC(e)E2|b!&_qx3lZNLBaoda@6aWAK2mk0GFQ42PB6)wgiVfwgtC5 zwgyMhe{bz>BgYZ_o?lVX_L-GBZaJ}&^o+7u-^6iGXD5CfKf31}cSez=a;%B0(yF95 z8L$8QB>+A^609oO?%tlA%-L;=MS>s*f*=ThgGu0M`7Cg>d=@%dJ_{W!Rl%##Nb1dq zq{L^NHU=b>LV8-}`=9gqd_2luj~CYQI`P@1f2p}FKIc{4r)$`ZZKIJR2*cVH^0Yls zO|MX_S&CJIF~oqwa_g!($p>=*dRWdVd{SaI{PFoXA2G`EVpiK|io*l7o#fMDel#|3 zS+K?xwHPcmta&lZ=L_akpZILYX}_t-aBjD@^i2*P({cI9Y&4L{UzKXOzH{m`=A8P> ze>$f=3!PKdDqYPvm6r8t&Z)urU)9|Yx(q-FPJgjLY3Td6+&IVUIS@X~?=R}rfQ{V$ znAB?O$_Y*Sk8QX8C+^P>2M)e+*j7X~9d~&K@TTWO_>WFtG#uzZ&|Oxws-lSPF~qAv zM6Z-aw#jSi;v97hIV%!A^IKk4RSF@-e=)9rh9wL@P^W6O?#HlH|B{P-n~5lU)zFEt zVbVV--TK{N{xN?&Da0&O>1H5TR&TXCo*s;+@ABzK`9Y9$%Y*s(Y7Kt891M?g@Ik(9 zyWLf?9SqXj!7AynO1>wp&`>)$LGa&lwlf)j9P76yZV4jkz$!IP+LS;TR4nsIe@NQB zY6YvEZBzT`_1G>k*HK;c>wH!XHVBQMk3TEAB~~y)WvOQQ$K)H_GVpTzaatdlZIXOW zs+M&kox&ZM=WKPZ(PXI0${)9YSG*^KuPZdHWKhNoRnBRT1v8u1%AUHUzpv6^P-d7P~H7=+nM5P(ww;}}Yv9F7d%koI=RhR{TCEe%s zV07}+$}JA=Ma-5m0as+$1eDr&x^q6U+HtJLZ?)s7Gd%q+*4{jcy?{ES-$7`T`b>WfZB@F6gE$f`TnLULV2}m zN~0`ZFaD+{uEr+gx&sggwEDrvLnB3=dp+oQ_^y1wN#a|3|N9%xZhp%bEBQbx#CGSgL$L-GRo zXFi4x{qZylpcQ>yeuqn~;mGwURvbI`>-oRI0eVC$(!uj%`oBR4Go;3$7SEX1a)9cZ zRBYWRjsHD&qLdmqS4#c0%AwK#b#9gQArH?Qggn?fl_3vdEji@D)~a^btgaL!4X$+E ztgaL$FRpRptgYw6f0JA~rB87p=tL{Y$y53y8<)gTIf4<)8-|4uJ#ePe_5X^?-qr=D{g`O1lDy< z<}QLUEw8A^;GWxYJ-7}VP|WQ4>MUVuqe zpa4Um;!G<=f49lPI6Q;(DmRX*6HKpWTdC6edo`O*rJ~%c-;Zj?Aw z0!`g;LtoaAog2n~n1>ngXiEG>fA7raN=`He^ef`j8!%9KBbrSdDxYNHYX09mAjB&6*5dt?1+Jnj}2D?+>M>)@%u- zVDq~>POJKMvo)6;ef5g=#?aC9$%&e^{ta>S8C1%)EDLS+U;6mINzJuxln! zb5$>(vE9UOW$6#bu?kB_j$GNHy#c@z^pc!1_E$p!P<1SRSDMyD{|om-k4DS zf4T1d1qf-6p!8Q$D?B4W!vb@diQF~)8of^o$ByG%PKYdr4CY^kdGe4DaOxtboMjF5 z+65B&Hh^rr}9v{iZ*g(B7(k%i#BSkEVlJc~LB)a$(pq<#5Hkp67#4vtm3ACTd4* z-Ba*a@r!@RN86V{$zpinmy9R*(bsa3`xSr82cwB1$Ih2oJ|ADg_$Oh7f7!tt*drJ% zCS1)&Z(awbN{&NPO{jdR}_7PKr5|uwBUpQ|rF6nwu^H27Z5p`Jn2 zQL!s^5|F+;^*=EgNZ*}j+5Rq;{E-#-ojhk>j3A^h-}5hw6dM+pPgCa@7f3^DWeMoy zA%57jWJHNbWlvn0l8IDi>EWazeX!({;BQU9krH>YwRQlYNGGacp2r02iC6+W=aAK+T4MV|66)kOy=)~gZu9V46T9OvC zSb7peTH<;u*<$1*C{?#~CmBk$ErF~QrOI|bv>c^UOL`+oe|!2ZZCA5E){++6>ds}5=t8qN*fYN8xl$zQb%IN zr&8fFq41AVMQP+4(#SWY=2ABs5;Zm@YHUi>*pvpjDN$on8u_M#(xx=ZO=*;y(kR8w zrBObWM)_14f8|qYloCQurOu^+KNSllYCM&w@l@JOQPPp2S5PanbX*==->6GcJme*ocwXh>_Tc zk=TgA3zeS6MbDz5KgN~f5pKjI+=v^-z&GMCZ^mQZe~ibx84qVO9`j~A!p#_o&3HVU z@pv}l@dzEp<9Qm7=V?5ir}21V6rRQ%#shpR6vbnH8jty@&|y60xK2D|VFkn(JQEg} zz%s&`iwF2DrrxudR?mcn0$!fbK-(Ee46@YG8Pe!IqZxiN);MbzjE#0ZCw*jdr8?ay z?RZ_Ce@VCB930^fFjrc`9vor=JKgzmIz-pI@w8NDhzW1o{x~Vl29u*DTea zxFnn3P@QWQ+3x-u)u4a0bNJKFVPE~<(cAq!ReR%wt@38)hgT=>j{8(^?@j;s?e5P0 z$#H-8NL752KaH!t+uuKU{c8I!{hhz=Y@Zw}e~|s{{k`LzzaBSe{PPi1-rLze?(ZBP z?jNd7kB{H&_$@b{J&s!*?!W+c`mYb)zWMWx`f1?2Rec}+^y-~%n{UQ#_g)>p{mC}{ zasLR4c6U^DxYq6x$-8Is@#tgTs%yS#&qsG|cy#jmzo6N{;m!|l{|Z=ZjCIagM0tFk ze{rVh61Qx1`+d$gHi!1hmkIXx!yhsU%mt=f-6qCQRf1rIWw|IW@$lWjMKsSB%lTBO z?#6s_aCCgQ^J=%Rrg-nT|N8CTo40#^wo_zA(8nd#Kc5$u{pGA&sI&cLzt84t`{d|& zzZS|6G1S0#^L#oiAm(E_QYWc{!B;qEf2x-4Yo}e1Fd5lrj?^R^fnf3Wl}(6WWn+s;8Wt$&;SzkdJVL}32@kqHTn!JpifoDp)lTApf27juEhMkrUnMGU(S9Bwk(j2S_d)q}I&?V9mS>Z3 zd4X+t?=vd~u5Z?)EuL&<8W0$!Z8BVSKo4}nH^Q=wi zm}jE1;yjRe9ZPA2rTsgzEd(y`89?K%sGSXAkXakOYo0ynFla+E%6IWoyLHOh;=Lx8 z#qoSFrtkm*$oBBS{eKXGe|mb3$))B{fl>5$jp~b{ABt04~%v>TXl{&Q5apNt=anN>AC*EeP)W=MdUM@`d9w`41f z*LY#sHX4s=Gaa>q4OheKSSnUiZ82YJqNV7(hvFqg<|+GnP|O#@JDuT#I?}k=w0lIBD@uoJWDNU>Owo$7mqgP5RFbA%y?=I^da9?`?0^2J za(9V7doon|YF6x4wR#4~syXkiro^2Q*8OR*=xf`O)#GmLfAMUA_mAN5@CpxVHhO|) zYhXVR8Z;H4`~FbO&F%g^c;U_$1_jd2ChFjqPpOrEBGmSb!(zE$C(M>on!4Y%6yhaa zzxJ>2{#8rD7Ri#T8sE}KK)L1jsHN~bMYhSC;&L#aR-HmmTiQ_roR#T*7XETqxUKj0 zpgPUJEZ!Bxe+J7J(utnOe95EEwS@vO=#bHXM}Q)&uXjq1nq|=NrGFM`L&i z42VX^P$^vlPlqrj#8c5je=@cKMU*27f8yg7#L(zJQ!>kl|2BqF1|1qv)9rRO4Y5{t zF*tjx=aL>wY~lF?i+f%jJd)h3CE&$%Vg*B@I=Ej**aAG*Zxf9%8c zzg;XAvvkYrI-dPt)Yd+%SI}@SmvGR@6}w)Qz4i4q^&k2#^n`yXUcz404`gQ3-&*#u zSY+Q^o8LFx4?bseBhqztWh`~(_y_v!jlB{%$H)>5-~)rY{&#gQUH?p1)6_$!3)%15 z?Kxhh&bv^f-C_IiL#eac1sxOTf5+qFgKRV|hlT3@tDYFOrl*BCoR9!|BBiPcW-4a+ z6s`cUy39w_ymNOBfcYjKz}Z&FYfbs&@Lj_xHzG~-u1}(Bu4tKnp#g({Vdi{8)D`GP zc-T4%$8WR((oYwQNj~!JhT6agLp5efr)D_=0^~G0%VE>j%F9|doD^lQe@%@HC953` zC{FNHv7|Q6^6`II%RV@Z^viFqub6@Q=7TkoY4yebLT^LNFf87$jnFA_mE-}K?_2}4#+wwBamhI?r&HQl%{wq8Dl8|Wv zuxy#>y&WJ_gHjr)%KcClP= zGp?ZkOjFy*AiMtBEmVp~tPmcZPRBRb`d8#vW#1fWv3{Q@hUZ(=f4Mp{v&Q#MD&%6B zRE>s+?MLQH-y3QbRyVPNhNrLi0BnPKQR`LO%W|GewYqp0-RAr$bV5tvop0a@)lYUd zooN%8(zpVvSQl0A5^@viN?mcCh0QQ$YFijScmypW9AC0nDe6xKUw2Dyy9`Zg{_=~i zz&#+HJ=fBu`9*X-=+@7@sG(I|wObeDWLYndU1z(K_&Io zoA=)C{n-(M8g)^Gw4dag=B7qcxULg(wU+6b)t50Egger(f2GgH`)au0vPE~Yy2l8N zeYIAO5F-Eb3$o_yOIBh!48sN2MNt}qhG@Aa0@v8IWA~0m99_}CFmxlMw$INqZRQND z^zlFfduX`ZQdMIk)?J4xcU6vPcx_y`9wox>Lvp;33w=NIQ=MU6GVwA-Uof?S)M z#GvOUPod-_>xCFN-Q4(IY1iba+<7@)-^5>?$Ch>gj*bPT=skFyjg{~*P{t#Zeo665 z#~**}_Gv&`WJ1{d*y#5X9?N>(Ne#$2Qb&pJHaGH3|1hOt^kjoFtLo0<)-Q%B8cDY2 z639Tue+Q15^F3ozXj8?c^!-*W3Qhk{G3YFG&#Yk0I?jw?S$tBAD6nCI2^+GYb+>HD zc3PSnUoq?T?KqB0B|fE+h&9cdvWQ^|NZPw$B_ISqdGeIRHD!JTaji>x(ZLAeY@ywc z+He=oi+nOEm>=D*=}t<0x%r!8?wFRn8u?DUe^Pztxl+MDZK&^MPZ*b&W_{oz9_%%| zm=~A%R#yk^m^(to={M|zCzF4ucws!kLqt|XLgOW?=0MkEmt&k!P{(nAo$PUC5BZ!5 z6)FUnt5YGw_;5pSW(y#tKl~mg)&GX~Gx$EHC3G?5HBG61Ci)Jh70_(T6 ze;;%L>CFfw+e&)we$&>pC*YnKUs8#@p&~N1W|eJ5-e~T&)d)&&r-IaW=}K28c<8J-6Jo0_ zYRC<`)Au#O)FxIGGU8R)sWo6`bvE@nf1gwDoGDvRRy9*pQ9)nD{OeGm#*^IYMg@uO;8f$NtdhSP1yOmcQ{3DeW-Lij&r$Zb=G1Vi0ox^S#He}WJZD3n;+I|&AyG9+pv3D7M zpMp{?W zhwsq$#Y!#3P=jen(xQ=f5`+`|!GVpV;1t&CYj7Oc3suMIW4 z+nM|Kf_5O-8i=*K3bky=-G-Y&O^(@a7Migq~5gdPHXjq8y(rPe#} zpB1C8<~A(OlcU+g4o4&N;Q*zOh77LpAd%q>u^mk1FmHFdl+>XO@H^eJuZx@l`ar&Y za}A~Nmk#VO_(w4|(&7tAnsSinNW%URzYNB-7yts>vQVm5@CM&&e{3Pq-@!7&ev_MF zkMOTHlMS{P2DLjbe;Vgk+Gpeby3n+Etwbf=E-j}c#lKTXzSO%BV#$|$N^Np6Lh_C{a z7rt0^TB3^tL+vd{vtY8yKxnpHiL%8uIPSNoy=|I}f6I*7^l?8im!tU?rSqXzLzY7z z3q5)qgl~KC1pEOQ3Vj$Z=X1z78hkOE08ge=T6YbJ>l_)RwqWt4uU)mt+e_KDbrd0P zwtgoV!13~Bgz*D5GMp2F3dgGY@Y(HRIf2;NMFu!%bC>BNql2DZ*eBe^7Ax3yyu-MnELI%K|56Vr#qgq`MiNf9|rFADTvx-OFFTiqzBLWI4)}cz>m6 zdBJI>m~}A0Q-aNp-0JunC9U;X1~e5KTr6Z^GMJIKzV*WAg}(Nd;{DadwswFTOvmSW z>0hj{v%g}5U0uZm7I;fjr~b-bI#|wG&w=Nze_iT(>&!mk)>2xttGH$V?7Avj-Jmn> z=O(-AfMVqwAjqwPGK);JAvx609)F$dZW#U6EE;>tJWG?`c1E{L8avk ze^(A2qoW{1EjD=KIzyG$Uw?vtMw^|^Po_+Wb?uwjZ}NrOR?6^Xl7B%*MX~OSIw6~X zacy7&gm6>*fuiIKp3N{!TaTOVTqc9Cw13&yF2sudvqjOH%5kB`+>QWxX=QJsBbwe&1<(-&xOn}VT%5X^I^j{Kka5$+yVews^CR)}Mzj*~ zqoJnaK}d>jlIr*T^iDUOHtjPXQli6z1pj;#UHh12G%gpEc`wMAh?%*9y8z10e?={7 zlL*`VT~wb79~0{wc4{&%rux?HENuOogNB@t);B4U2t+470Rt;z@o@YlYXS*fT>cCh z=TSb%7kQj+V|7!xT{PuK-?Kh4l)Jj)k=y%JJDU;8Wf9V)z2Ht9lLbR%FW0`fb{Tk6 z7UYg{U&3y*%4Rq@&fXB3Apn+Me+5jraD}0I@eu8S-EoQkZM&KsjhJrN({ebHHe86Z z?pQwRc(CqcJYH`=hv+EpOg(W$t&C643s;L;b=fB#6p^S>Lzq;%PPUbXnHrtZp9R|a zu#!|vRjcdq*e19#9XfQklIgEp9alx>RLkb3f02DCt+FhU zI~FBS2x2Yn(Mu$gC6dW{z}%}B5sDtL8)pg^=rPKv=?_W*YKnvdGn(nI$0bsVc&YE0 zUqoiF>6tN&Fep9obaASxBxV9Ox2U!EdWz4A(GUz5c{P(#LKCkf`J7+ zr5N-sU2W_1#?AUl@UK11e|*V@%Y}ow4Y^VE-Hx{*B$ln-I;e3ZwRO3~l=>6BaiE(! z$!-CL2k0>!oRcktO`m;<<(y81Wsyk?Gd&3)Q@lrX+{l7CxBezJ!?c`w8W)H71Pn)6 zLx~a1QeZW^R6_RB@n{4`5^lybYIP!GyI*Ee2A0%*ReCvvq^`co(+U;y3~UXDS?nO?9@>jjZmrQu4BnwIzuSO|-=m zO)7#<^a{Ra+TWqdUSd4B7`emxDSJUukz@JX0*JmER#(q%f8S9>IcJ@t{D&~(pqIt7 z)0C>#6;3jJ{7aFRjX^L|!@mzv21HKt%*#=lyY!@4kcBjl6Od+6p3yu=G0Fvp{W~2_ zV4Q-@hlHKXx2rjOo$rO{$`hu|;b1a(=ggaeW5Zg;-xA}RElMkY*9{Z;rY>qf>=jv9 z7v$yn_~UY}e>badt_ho)u5lA)&epWSFvDyO9vlD~`TSRJ9zF8z_H1$kv!Gm@yPuJO z=tT4746LO)j!N&bmHtUPk=G}X%D2m7taFl9C9l%+nBH6BeMs*m4VImqL&Rj10WO1c zbq-Lo>(3ZW6p(?XQN6h=>lV*iRtqIEIGYicxchS7e{oIEUS{582+kB<+C1GupbOAO zNzIu~uolp+m&zC1s1q?eu#g=gb)Vth95O3Fk+8kWvKBIe++kUw@jUqsl2YYMxMlD= z)!r$-_%dg_l0OHgwn+Jfuud~bZ*tJn1@nxa}T>;n{C*`dzrms)ed?D0cSp~Z<=nG|_q4T>dXX((wNed>cFPe(K zz6kToA{*6qk#I=x&$QgKCXV8A27d&awW~*-txAV_+^MmaNc}aJpvP8jLf=4j*c)qX zZ&*k7i(X9{1Lw{J|73w`xh(J@HWYyiT4%ZmrlDGPrGG6yK~D8X_N|z%o>5ExfeSC1 zO+4QuV3)bK>XJ|F8KCbwb@Dcy1pBt$NA_8%!2QUUyVd&8)eU_XxwF#A;kzj69bLht zcNr~6F9(7DzP7ESoez^fJn}PKnx=6&DI-*jm`cL76}DnmMxk2UlO|Af{B@R>z3jBL z|HBVQ+kb~UJA3^%``ahGJA22i_ijfY6~pDFQu)<5p*A1)d%GiN>WlYGX*dk#Jk=3q zfRf9aMtUyLKVTZz=_$$lT#ZZ}|3P((m)~pNy;f?*1E9*gx7i{AuT~ z53eu2-QT0RLK>Hli>%x2`p=kZEj3iqddwNh#a@1bhf&=JIfF$ndn|o+0p@8Cax}M~ z-+%Y)`-C*)y*K^ix4S$0C&&HWqhLf;>XC!v06R{w)Xx_UEI%c{6e6@NoZ7;d*@hZYP4dAhF{JV-^H2LnDJ%l8F9gALV>#Ym8lm z=*DcdcRclq;1Llk#l}~-8)opl4SB=Q=6}VPuMH#Q(~Y2O85lMen?m8-gw0Hh|OvAB}bpVY{zyF}DClT^1&7jnO%EOo@AuXG-S zYfn5=w3&)X2a!H*`U*2Ni=fgT8h=xazbz6P&1L<66r+uHXDw6zRjLi7eJMM-n#I0- zS-?C*X2u2hVPmi0C5mMz5!hZJ zw1vRT@C_D9k*#WVZHbL8aJ5TRtX*CGTd2u+AM5m^`;C`Gq_BJ~Y)C44RDbO0-UgUg z7&Q^pWz$gj6g6+8H%G&&svLDuuRt64jh|h+$zE#csRKFysV@LA(YsAEcQ?M!$v&R$&^igGM~i zm|wV&#jI?*#QRF{X#XtO5`WP5E3Ra=6#rPFFb%b)bkj9Y*j8tFNk9qqdnIz}buK4L zqoWO7Ofmt}p)t`9jARWh0&7s>wQ(jVw4es$sQ{I+XaQn=Y+>$EynCn+bLLN|mn`@b z28+1kqcRwcwy}co0Mqp>a0Zl|f*eR%`6+r-5F4F;g@;4UF?tdV+y*VMmPf_&J zSuwvvDv;F+jx`(YDNk9dO%11i>%M>VOBet1jaL7$URup>VIRhnFrH>_ip#-xY9eve z6km4zR4v+VSffm-ZGT)On)55>gY{AYx#eSEywsXZ+jGE>ViQ?hBIZjD)H}@)#66Xf zk>+0(( z2E$Eg@-#(5VMGcn+kqq?(I?3P6o>v&{~ax167aza#=_TQ^aW`$&wPkAGs3HO?oNE) z@6R}|I?Cq!J6(9%N>Qit{IWn77Ze#mQ+;FYx`=RLn^iEet#4g=or{6X&-3ew`qS1t z|L>*Zjn*0@{eLcJY7+*h$QF*Q_1G`jG#bVKg__iz6lI@BDDpMLW#NIPnStDKEV(P!$=X^98q^eNh= zc~p)Kuvsar)bFk9SMtNps;Z_!B!kori7G5_=_3i=mlE44SDs@vat zA^;A(Njd-zn+8b%c>O62U6UDp{iKrx*jLuTDt2uzM48InhwA;lxkLX7U7P30-8*Y(J?Fw^>lo)ge6%Tzrha!_b zBy?kR4S%Z$tx1fBM>yN5qcR*WY@!h#9*lCImgT4XYuUCfI>sYHJ6SQ0=0gEa^qEI+ zF}j%HR)=@Hnh?;9$5~etjjWg1UmPhO65}N`xsyiR@T$~p)J7lfeRGXl-0c)&gCIM~ zo+7yS-Py9dXd88g_I`evumee|K)OwxCWMQBzJHuD9YnX(U~FWOw^jM(-%GfzAiu|U zJQmosPv3)+$wVQ-t?2G#4wA#>{0e)&21gh(bn#8 zi!XOqfXr=)8?xD6w1}n61?7|KaE-4gZUPL}ogLI;yJ$MXQu9M7#n2GJG7&B~tw^I) zFicG8H4pAn+@KFkkIZoBivde8cN(xo;eQj7p*`c;w`N#;qsu6atc#Ee2%A! zOsf;ZYz4O+AWZxnjw0i!xgTi3bq-yl>vX4>JtEX2C<0&b6QLQ+T<_uD@g-r;(to_5 zz2)qYP*d&3uSz}j@Qm%f>ggN7tg8l&nKX(Tf}8ZMTU!BnZy4d(y{1kq+BfOw>>D`D zPJKE9C%ySpn}XkiwOZ?8>WDiZtMe+i4O6@)pF_+fMKJXC*Znq7GZ{((l+sKoPBo4Pg&_J4OzI-TaIoT(3=YVg1znzT!I1k80k*BnSVST2fI zNMzB1?<2vzqz#wFYXdI%%=JOLN)!j#Km3=ctKn}W=jmjL^Pm?WuA@tMnRIvXmeekF ziBD-xPw%bv`ygAQ&u~@NciU{Z*qsz%sZZr*b6_gJ9A9~VB2^Zsjm2q&Fn^5>5mkZ| zx8@otYE+)U4pOPvMBYd?UZj^8I;0m~1in8Ek{`|$y2bcl%#CLgNU^6*0F3TBn}7;^ zc^DvI)m|oPhm4vSM_!%z%4)ugu0bE}j_Eg;jfaY2*T``2} zmv_gYAKBfDY}j;{94ZKWLVvJE&$ahn8CIxEkDjr|FzG&GS}gib1hm{lI%Uud8XE|A z8blnz*J*>=0Jmk+doPg+b2iI`@8*}pLX_+`>)^by?ML$XLQWDQdTGa4~YAik3_nTYde(tmmKtShyPLRbu< zQ-<$&8@nOJ1V{yvz>5sy^KtMru;Uk169QaX7mLNLx4!;l*KW%JmwEVg= zHRt1ESsGMN(r$KsL&*FBCLsMf#71DkNcn9^{Y4q)1P-W*siA)XQTQjdR~j_Y7-?U$ zu%$O>H;6gH{^2W#M1KO?+U)k{ImoOJ-(15C+^qjyao@VG^dWRBr4;tKNh9gZk8bga zmZJU%K-xl}spcbt!&djoKBuI$of8*kjib%!DyNPD* zG?i3ZqWelr)NnfVl@Gdfz_x2FS@?h&c!!)mevj{3TYoJFhM<}Dol@l{3TLwqwCK!67d=A!Xj)<`Q${}tpYcf2)%oI*! z^AG?((0}_KoTZ?j#h|0Mq{qam?;m>brS$iws)P5Lm#aaQlv~~ZUgk>DdXZjj= zs#5-dSQf!saHZN))j2UA{j9X5;wl!=ekKNDbe}Y;UwpbZqD2-{0_%c^z%;PxZ=Eyo zgo^z3%orI_0TsEJYU*Pqyu^j1fgC74*}Ygilz)Zyh#hHjZZ>^J7bD z|3Kk8IizTnrbNw@u&!&SCE(5YwBlFrXM+ny)}`7^w~|8hR`WH~*_CRJHB?PJ)aXPj zt$)E;v0U`dCWGmxf1@|BTAq-qA*@EE!RYv1Q#{6`8pOK)z||q0qQ$?!9@@9|OuFv@ z&V!jl(aoNx^5H66;=JYyyWo_?^Xc4Dlkv2MwHUJibDK!{_9t9-z75Ca_B82u8)_Lm zv!p@GrJJ-$M*0{WbuXM9o1KD_6I3nM5`S6y0!oG1`}p;Pf6|g;(xZ!`Rrn#KNOVl8 zyr~l%(Hd%p6|a%9$6qVF%Bvq4W&Y&t^c<^RIK7c%S@@QGfPK z&=%D3RKoKLNqLW`p3@Z7;%X?T5ZKZxztT?<{t)ua@Oi27q5Kf|8Px3A_&)AnYO=Da z-uxty+?FJs8Sx;Y5cCZ>W+K#j%Jl1N&KMW1FHhQ;UCewXbB6-t=ZOkVM27Rk1wdtStuzz+GU?5LrI%l1o1u-|B3uf{UC5>JO=BP+M!MYPk zMX#LPTfLU<^&d^Pc;rgyCpdx{9R>0Hr{WwwTd@M~9y@WX6ao)nm4<>K{m%W}=dNnz zLeJkU(CPvfLg%1pf^I)OcbXh;YBX~4Zeb?JXr>Re>7A>THayF7>493lkAIIC=?gyP zYFAV>yR%~Y5tcFSZHcyiz5w1DqVb68+S9jZLJH=CtA4#=D+u6_-Ta+?82;xpz05NOaxwg~Y+xd5NQ29Y#DIDakM)@6Cai|G+~ z;V)-f(49?DkVr*K>CxGt?WREoZ;iv-J$FH8uwtq+=Kp#F*rs${959{&4bT_xmT!q)UK4gwC#LL6toBH>&{-ZUe1T>zE@RuQ6gOO z6AiSh7x+mh{wDRKEj=XwI!PO{HWqJ>_O)2=P~#x)^3O;8lf!r58HrhronPd}pVa?a zmodNx6Mq$#U9x<1X_PIoO>G~e;%cgMo0(+qFEP>)KH9WrlxmEBqRRd8sDJjgPs%~x zyle4Ne41f*Ff;Tci$*`{yFVUThJ$(-ww|c^TD*l)SC=#{6g-^ z829Khc&A>I=&ae4-pMK%hpv#xUgAwQ(upje=zr1bMdUi^q*n%7V#sqlFv^evlJ;ip zcuOxd69isG%c+_<^m_r5vTw`OY2M8N3K!jU2r3AkgOs`voP;u`-RMq979c(kGznCN z%XdhDwjuXONz4<{PIg8EVJ-mp5tdfqy_Z zQ)m=0$9J~@Joevj&_DH1;9ZUzlLUW=K_i%4mc#;f++EH_1FKRD7VL{ZB>gx0&IVz3 zEnaoYCLrAk5~jkkT~0qu6@V54i2SZ+CNq>UEqfAR5^|a*2*j(V>CGz967eeW6wHP; z=u=fSN?7dnO#>TZs~3CtuE18eZGS4WnKy~R^HEE0j@F&a2=e&h0tKqWoO+{fz2^_0 z-)S-Zu0h{U=+LmO)NyT`sJMR-!B^FtBt_MNg$GubQ?{a_TCHYF)q?a_Y|kNk_f<;2 z&&Ts}p~ee78)og}Yd5CIE@n~E!ieWZ!N=vaUCrMHiKGCk9z$act!;1s>3^#%q4b}2 z-+{`S_0*1jue3dvJy3^$%~3nI zcxpXD+oiw`W;xO2Xm-sPMP*})0OPVix$7%c3zSttM2gx0$IL?hw3VGgyERqeJ-D>e zkFXkkcHM%?_%-7z-~$|L^ncz==Ns6KO-MBT*UcpUB$ctp(qrnG?XiuNVnX#Iv4hp{ z1PR@%+@$#aquCsjmYa$1@kOLhFoutVDWbfPc6N1G^P@+0o@~rCy$PIZZe$v3Z;Dm} zK#yVR@L@Fm^!#rwx64#N7^4xj%hoCaUOVrLX`;?dAT!Jcj^Ya_Mt?5Ru2xr_=`P0S z@J5qjnGTr(@yykBl{%cWD1kj4%KW?sG3(kBY%kD~ZN`KSzz6UQa0O1R7B>T7MU+o& zm+mlu;{~O=1DRL6)rI(5)7U5*UX@^9520#vZ5T8mh(TjUGr66Cdj6$KCprsA2Lb;Q z%&dARpW9YatwlMR1b;A6^k@(YRvq3iz|07(u7zV{M|9aq^~`IVx3HxdKw=KQDo+UN z89%5l?_$FE6-FcaOx$o=iDk$zhp^H!$x47?XD#cewr0*TB)GJhD$(YFzFXvZh72!! z%D-Zgp;PSov=u)|M=5-!}^N@B@*n$-8XF89pac9r`>&xJ%5T9DR5+c5!4Egsp8dy z@opF2)9N+7ns{LDeR%)D={$91(GY{GTMOO2qHU6vKpyQ?ZCrrZJ!O26D8Z0G=)2V0 z0}$`_^q!<7Hn>pb^ELEWKjg_9oZ%a*Zc)e&CRovzKYzt+LGc2M!D3mqSah<^7HSTw zlXLHQ(Sj1KvTHnhE^ocLTSE;#7|qx^Zu#mXMJxxE^-Izk+whw1?+Rf9Ob?_IiW%(1 z;&S3zx~n`|b-sPdj4AOTujXa(tLeZz$>QA#n2&MLcEV7-X62FhQm?M<2g+~3{483T zpN&L(V}Dn-uXr`A;Ul{t+D%>yYx2sjhFf3N08PDEtO3cN<;K=HmuPLj%gy<7$YOg} zfwP|44tUH$paR&C1;`lVihI$mCFPFMr)u1h95*{-(kZ?KWj8H*#n5 z#PM>&90AQSoeL%74g*0C%@qx^ASdUMnL!%@see4YesRN9sD~fd+^6)-klWYI$DXHp z32-eKu3(|Ww6{#2>eXPyThb=`+S2EL_hKE-l-OgwZ02^0k3$-TspoLOG1$wowFlLh zxnQOcvm2+|@Dsh>aBkf8H$dYGdfH6J!%x8m?35mQ$TZk8XZduWr2PT7xpxTi`ue|R zWg4-Z5A)r@47^s=w(v6ARJxag*@OQNP)h>@mmJOq8n@EN2e1VS_bzc3*RlivNVb=Z z%?C;yU`CKwND>182ND+mA^-pY000000RR91q=9I+1ec%92P2mj&Ic+3@W}_4(Z>fE dms`#UDg({T2bZqO2N##0&Ib?%3(f}s005G5;I04w diff --git a/python/tests/test_ReverseWebSocketUpstreamTransport.py b/python/tests/test_ReverseWebSocketUpstreamTransport.py index 524bc5a..734ad29 100644 --- a/python/tests/test_ReverseWebSocketUpstreamTransport.py +++ b/python/tests/test_ReverseWebSocketUpstreamTransport.py @@ -147,7 +147,6 @@ def test_accepts_real_extension_reverse_connection_and_routes_cdp_through_chrome "launcher_mode": "local", "launcher_options": { "headless": sys.platform.startswith("linux") and not os.environ.get("DISPLAY"), - "sandbox": not sys.platform.startswith("linux"), # Reversews is browser -> client only. After explicit CHROME_PATH and # CI /usr/bin/chromium, these tests use Chrome for Testing because # Canary rejects --load-extension in this local test path. From bf4ec49ea4a34c61603927e2d4292834959e7ae2 Mon Sep 17 00:00:00 2001 From: Nick Sweeting Date: Sat, 16 May 2026 13:06:30 -0700 Subject: [PATCH 32/33] Make pipe demos deterministic in headless CI --- extension/src/service_worker.ts | 54 +- go/examples/demo/main.go | 83 +- go/modcdp/injector/extension.zip | Bin 511669 -> 510882 bytes js/examples/demo.ts | 73 +- js/src/client/ModCDPClient.ts | 737 +++++------------- js/src/injector/ExtensionInjector.ts | 188 ++--- .../LocalBrowserLaunchExtensionInjector.ts | 13 +- js/src/launcher/LocalBrowserLauncher.ts | 141 +--- js/src/server/ModCDPServer.ts | 656 ++++------------ ...est.LocalBrowserLaunchExtensionInjector.ts | 38 +- js/test/test.ModCDPClient.ts | 119 +-- python/examples/demo.py | 53 +- python/modcdp/extension.zip | Bin 511669 -> 510882 bytes 13 files changed, 595 insertions(+), 1560 deletions(-) diff --git a/extension/src/service_worker.ts b/extension/src/service_worker.ts index b6f0aff..954b81c 100644 --- a/extension/src/service_worker.ts +++ b/extension/src/service_worker.ts @@ -29,23 +29,18 @@ const compact = (value: unknown) => { }; const trimLog = (log: any[]) => (log.length = Math.min(log.length, 80)); const routeFor = (method: string) => { - if (method.startsWith("Mod.") || method.startsWith("Custom.")) - return "service_worker"; + if (method.startsWith("Mod.") || method.startsWith("Custom.")) return "service_worker"; const routes = (bridge.routes ?? {}) as Record; const route = routes[method] ?? Object.entries(routes) - .filter( - ([pattern]) => - pattern.endsWith(".*") && method.startsWith(pattern.slice(0, -1)), - ) + .filter(([pattern]) => pattern.endsWith(".*") && method.startsWith(pattern.slice(0, -1))) .sort((a, b) => b[0].length - a[0].length)[0]?.[1] ?? routes["*.*"] ?? "chrome_debugger"; if (route === "loopback_cdp") return "loopback"; if (route === "chrome_debugger") return "debugger"; - if (route === "auto") - return bridge.loopback_cdp_url ? "loopback" : "debugger"; + if (route === "auto") return bridge.loopback_cdp_url ? "loopback" : "debugger"; return route; }; const upstreamServer = (id: string) => @@ -56,8 +51,7 @@ const upstreamServer = (id: string) => const configuredClient = (params: unknown, session_id?: string | null) => { const at = new Date().toISOString(); const id = - (session_id && client_id_by_config_session.get(session_id)) || - `downstream_client_${next_downstream_client_id++}`; + (session_id && client_id_by_config_session.get(session_id)) || `downstream_client_${next_downstream_client_id++}`; if (session_id) client_id_by_config_session.set(session_id, id); active_downstream_client_id = id; const configure = compact(params); @@ -107,20 +101,12 @@ const downstreamClient = (session_id?: string | null) => { }); return { at, client_id, client, session }; }; -const logTraffic = ( - direction: "command" | "event", - name: string, - payload: unknown, - session_id?: string | null, -) => { +const logTraffic = (direction: "command" | "event", name: string, payload: unknown, session_id?: string | null) => { const { at, client_id, client, session } = downstreamClient(session_id); const upstream = routeFor(name); const from = direction === "command" ? client_id : upstream; const to = direction === "command" ? upstream : client_id; - const route_path = - from === "service_worker" || to === "service_worker" - ? [from, to] - : [from, "service_worker", to]; + const route_path = from === "service_worker" || to === "service_worker" ? [from, to] : [from, "service_worker", to]; const entry: any = { id: `log_${next_log_id++}`, at, @@ -133,16 +119,13 @@ const logTraffic = ( }; direction === "event" ? client.events++ : client.commands++; direction === "event" ? session.events++ : session.commands++; - direction === "event" - ? (session.last_event = name) - : (session.last_command = name); + direction === "event" ? (session.last_event = name) : (session.last_command = name); client.last_seen = at; session.last_seen = at; client.log ??= client.recent ?? []; client.log.unshift(entry); trimLog(client.log); - const endpointLog = - upstream === "service_worker" ? self_log : upstreamServer(upstream).log; + const endpointLog = upstream === "service_worker" ? self_log : upstreamServer(upstream).log; endpointLog.unshift(entry); trimLog(endpointLog); return entry; @@ -151,11 +134,7 @@ const logTraffic = ( if (bridge) { const handleCommand = bridge.handleCommand?.bind(bridge); if (handleCommand) { - bridge.handleCommand = async ( - method: string, - params?: unknown, - session_id?: string | null, - ) => { + bridge.handleCommand = async (method: string, params?: unknown, session_id?: string | null) => { if (method === "Mod.configure") configuredClient(params, session_id); const entry = logTraffic("command", method, params, session_id); try { @@ -170,9 +149,8 @@ if (bridge) { } }; } - bridge.addEventListener?.( - (event: string, _payload: unknown, session_id?: string | null) => - logTraffic("event", event, _payload, session_id), + bridge.addEventListener?.((event: string, _payload: unknown, session_id?: string | null) => + logTraffic("event", event, _payload, session_id), ); for (const [method, key] of [ ["startReverseBridge", "reverse"], @@ -237,17 +215,13 @@ chrome.runtime.onMessage.addListener((message, _sender, sendResponse) => { loopback_cdp_url: bridge.loopback_cdp_url, browser_token: bridge.browser_token ? "set" : null, cdp_send_timeout_ms: bridge.cdp_send_timeout_ms, - loopback_execution_context_timeout_ms: - bridge.loopback_execution_context_timeout_ms, - ws_connect_error_settle_timeout_ms: - bridge.ws_connect_error_settle_timeout_ms, + loopback_execution_context_timeout_ms: bridge.loopback_execution_context_timeout_ms, + ws_connect_error_settle_timeout_ms: bridge.ws_connect_error_settle_timeout_ms, native_bridge_attempts: bridge.native_bridge_attempts, native_bridge_connected: bridge.native_bridge_connected, native_bridge_last_error: bridge.native_bridge_last_error, }, - ...(Object.keys(self_transports).length - ? { transports: self_transports } - : {}), + ...(Object.keys(self_transports).length ? { transports: self_transports } : {}), custom: { commands: [...self_custom.commands], events: [...self_custom.events], diff --git a/go/examples/demo/main.go b/go/examples/demo/main.go index a60af8c..27b010d 100644 --- a/go/examples/demo/main.go +++ b/go/examples/demo/main.go @@ -222,7 +222,7 @@ func main() { var ( eventsMu sync.Mutex targetCreatedEvents []modcdp.TargetTargetCreatedEvent - foregroundEvents []map[string]any + pageTargetEvents []map[string]any ) cdp.Target.On.TargetCreated(func(event modcdp.TargetTargetCreatedEvent) { fmt.Printf("Target.targetCreated -> %s\n", event.TargetID()) @@ -434,34 +434,21 @@ func main() { }) fmt.Println("Custom.demoEvent ->", demoEvent) - foregroundEventRegistrationRaw, err := cdp.Mod.AddCustomEvent(modcdp.CustomEvent{Name: "Custom.foregroundTargetChanged"}) + pageTargetEventRegistrationRaw, err := cdp.Mod.AddCustomEvent(modcdp.CustomEvent{Name: "Custom.pageTargetUpdated"}) if err != nil { - log.Fatalf("Mod.addCustomEvent Custom.foregroundTargetChanged: %v", err) + log.Fatalf("Mod.addCustomEvent Custom.pageTargetUpdated: %v", err) } - foregroundEventRegistration := mustMap(foregroundEventRegistrationRaw, "Mod.addCustomEvent Custom.foregroundTargetChanged") - if foregroundEventRegistration["registered"] != true { - log.Fatalf("unexpected foreground event registration: %v", foregroundEventRegistration) + pageTargetEventRegistration := mustMap(pageTargetEventRegistrationRaw, "Mod.addCustomEvent Custom.pageTargetUpdated") + if pageTargetEventRegistration["registered"] != true { + log.Fatalf("unexpected page target event registration: %v", pageTargetEventRegistration) } - cdp.On("Custom.foregroundTargetChanged", func(p any) { + cdp.On("Custom.pageTargetUpdated", func(p any) { event, _ := p.(map[string]any) - fmt.Printf("Custom.foregroundTargetChanged -> %v\n", event) + fmt.Printf("Custom.pageTargetUpdated -> %v\n", event) eventsMu.Lock() - foregroundEvents = append(foregroundEvents, event) + pageTargetEvents = append(pageTargetEvents, event) eventsMu.Unlock() }) - if _, err := cdp.Mod.Evaluate(map[string]any{ - "expression": `async () => { - chrome.tabs.onActivated.addListener(async ({ tabId }) => { - const targets = await chrome.debugger.getTargets(); - const target = targets.find(target => target.type === "page" && target.tabId === tabId); - const tab = await chrome.tabs.get(tabId).catch(() => null); - await cdp.emit("Custom.foregroundTargetChanged", { tabId, targetId: target?.id ?? null, url: target?.url ?? tab?.url ?? null }); - }); - return true; - }`, - }); err != nil { - log.Fatal(err) - } if _, err := cdp.Target.SetDiscoverTargets(modcdp.TargetSetDiscoverTargetsParams{Discover: true}); err != nil { log.Fatal(err) @@ -498,49 +485,67 @@ func main() { } fmt.Println("normal event matched ->", createdTargetID) + tabFromTargetRaw, err := cdp.Send("Custom.TabIdFromTargetId", map[string]any{"targetId": createdTargetID}) + if err != nil { + log.Fatalf("Custom.TabIdFromTargetId: %v", err) + } + tabFromTarget, _ := tabFromTargetRaw.(map[string]any) + b, _ = json.Marshal(tabFromTarget) + fmt.Println("Custom.TabIdFromTargetId ->", string(b)) + if _, err := cdp.Target.ActivateTarget(modcdp.TargetActivateTargetParams{TargetID: modcdp.TargetTargetID(createdTargetID)}); err != nil { log.Fatalf("Target.activateTarget: %v", err) } + pageTargetEmitRaw, err := cdp.Mod.Evaluate(map[string]any{ + "params": map[string]any{"targetId": createdTargetID}, + "expression": `async ({ targetId }) => { + const targets = await chrome.debugger.getTargets(); + const target = targets.find(target => target.id === targetId); + if (!target?.id) throw new Error(` + "`target ${targetId} not found`" + `); + await cdp.emit("Custom.pageTargetUpdated", { targetId: target.id, url: target.url ?? null }); + return { emitted: true, targetId: target.id }; + }`, + }) + if err != nil { + log.Fatalf("Custom.pageTargetUpdated emit: %v", err) + } + pageTargetEmit := mustMap(pageTargetEmitRaw, "Custom.pageTargetUpdated emit") + if pageTargetEmit["emitted"] != true || pageTargetEmit["targetId"] != createdTargetID { + log.Fatalf("unexpected Custom.pageTargetUpdated emit result: %v", pageTargetEmit) + } deadline = time.Now().Add(3 * time.Second) - var foreground map[string]any + var pageTarget map[string]any for time.Now().Before(deadline) { eventsMu.Lock() - for _, event := range foregroundEvents { + for _, event := range pageTargetEvents { if event["targetId"] == createdTargetID { - foreground = event + pageTarget = event break } } eventsMu.Unlock() - if foreground != nil { + if pageTarget != nil { break } time.Sleep(20 * time.Millisecond) } - if foreground == nil { - log.Fatalf("expected Custom.foregroundTargetChanged for %s", createdTargetID) + if pageTarget == nil { + log.Fatalf("expected Custom.pageTargetUpdated for %s", createdTargetID) } - tabFromTargetRaw, err := cdp.Send("Custom.TabIdFromTargetId", map[string]any{"targetId": createdTargetID}) - if err != nil { - log.Fatalf("Custom.TabIdFromTargetId: %v", err) - } - tabFromTarget, _ := tabFromTargetRaw.(map[string]any) - foregroundTabID, _ := foreground["tabId"].(float64) + pageTargetTabID, _ := pageTarget["tabId"].(float64) tabID, _ := tabFromTarget["tabId"].(float64) - if tabID != foregroundTabID { + if tabID != pageTargetTabID { log.Fatalf("unexpected Custom.TabIdFromTargetId result: %v", tabFromTarget) } - b, _ = json.Marshal(tabFromTarget) - fmt.Println("Custom.TabIdFromTargetId ->", string(b)) - targetFromTabRaw, err := cdp.Send("Custom.targetIdFromTabId", map[string]any{"tabId": foreground["tabId"]}) + targetFromTabRaw, err := cdp.Send("Custom.targetIdFromTabId", map[string]any{"tabId": pageTarget["tabId"]}) if err != nil { log.Fatalf("Custom.targetIdFromTabId: %v", err) } targetFromTab, _ := targetFromTabRaw.(map[string]any) middlewareTabID, _ := targetFromTab["tabId"].(float64) - if targetFromTab["targetId"] != createdTargetID || middlewareTabID != foregroundTabID { + if targetFromTab["targetId"] != createdTargetID || middlewareTabID != pageTargetTabID { log.Fatalf("unexpected Custom.targetIdFromTabId/middleware result: %v", targetFromTab) } b, _ = json.Marshal(targetFromTab) diff --git a/go/modcdp/injector/extension.zip b/go/modcdp/injector/extension.zip index 70c7786a55bf45083409df93f3c0ffde78c3cca0..2f87949707d27bd89b4767fa1542cdfacc3c48ef 100644 GIT binary patch delta 134375 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

      GtMFR;jSqDl+F>+*IU*71>UzK8tX0pAC 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 &iuIM5 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 F002UFavJ~u delta 135203 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�e%OmTm` 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 ({?Y{Z?%d}h7aZ_R2yBHU~ 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 IlUQAxx1v|Uys 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�yUz=aphCZ2B+u#4PVb;&oX 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", demoEvent); - const ForegroundTargetChanged = z + const PageTargetUpdated = z .object({ - targetId: cdp.types.zod.Target.TargetID.nullable(), - tabId: z.number(), + targetId: cdp.types.zod.Target.TargetID, + tabId: z.number().optional(), url: z.string().nullable().optional(), }) .passthrough() - .meta({ id: "Custom.foregroundTargetChanged" }); - const foregroundEventRegistration = assertObject( - await cdp.Mod.addCustomEvent(ForegroundTargetChanged), - "Mod.addCustomEvent Custom.foregroundTargetChanged", + .meta({ id: "Custom.pageTargetUpdated" }); + const pageTargetEventRegistration = assertObject( + await cdp.Mod.addCustomEvent(PageTargetUpdated), + "Mod.addCustomEvent Custom.pageTargetUpdated", ); - if (foregroundEventRegistration.registered !== true) { - throw new Error(`unexpected foreground event registration ${JSON.stringify(foregroundEventRegistration)}`); + if (pageTargetEventRegistration.registered !== true) { + throw new Error(`unexpected page target event registration ${JSON.stringify(pageTargetEventRegistration)}`); } - cdp.on(ForegroundTargetChanged, (event) => { - console.log("Custom.foregroundTargetChanged ->", event); - foregroundEvents.push(event); - }); - await cdp.Mod.evaluate({ - expression: `async () => { - chrome.tabs.onActivated.addListener(async ({ tabId }) => { - const targets = await chrome.debugger.getTargets(); - const target = targets.find(target => target.type === "page" && target.tabId === tabId); - const tab = await chrome.tabs.get(tabId).catch(() => null); - await cdp.emit("Custom.foregroundTargetChanged", { tabId, targetId: target?.id ?? null, url: target?.url ?? tab?.url ?? null }); - }); - return true; - }`, + cdp.on(PageTargetUpdated, (event) => { + console.log("Custom.pageTargetUpdated ->", event); + pageTargetEvents.push(event); }); await cdp.Target.setDiscoverTargets({ discover: true }); @@ -535,22 +524,38 @@ async function main() { console.log("Custom.TabIdFromTargetId ->", tabFromTarget); await cdp.Target.activateTarget({ targetId: createdTarget.targetId }); - const foregroundDeadline = Date.now() + DEFAULT_FOREGROUND_EVENT_TIMEOUT_MS; + const pageTargetEmitResult = assertObject( + await cdp.Mod.evaluate({ + params: { targetId: createdTarget.targetId }, + expression: `async ({ targetId }) => { + const targets = await chrome.debugger.getTargets(); + const target = targets.find(target => target.id === targetId); + if (!target?.id) throw new Error(\`target \${targetId} not found\`); + await cdp.emit("Custom.pageTargetUpdated", { targetId: target.id, url: target.url ?? null }); + return { emitted: true, targetId: target.id }; + }`, + }), + "Custom.pageTargetUpdated emit", + ); + if (pageTargetEmitResult.emitted !== true || pageTargetEmitResult.targetId !== createdTarget.targetId) { + throw new Error(`unexpected Custom.pageTargetUpdated emit result ${JSON.stringify(pageTargetEmitResult)}`); + } + const pageTargetDeadline = Date.now() + DEFAULT_PAGE_TARGET_EVENT_TIMEOUT_MS; while ( - !foregroundEvents.some((event) => event.targetId === createdTarget.targetId) && - Date.now() < foregroundDeadline + !pageTargetEvents.some((event) => event.targetId === createdTarget.targetId) && + Date.now() < pageTargetDeadline ) { await sleep(DEFAULT_DEMO_EVENT_POLL_INTERVAL_MS); } - const foreground = foregroundEvents.find((event) => event.targetId === createdTarget.targetId); - if (!foreground) throw new Error(`expected Custom.foregroundTargetChanged for ${createdTarget.targetId}`); - if (foreground.tabId !== tabFromTargetId) - throw new Error(`unexpected Custom.foregroundTargetChanged result ${JSON.stringify(foreground)}`); + const pageTarget = pageTargetEvents.find((event) => event.targetId === createdTarget.targetId); + if (!pageTarget) throw new Error(`expected Custom.pageTargetUpdated for ${createdTarget.targetId}`); + if (pageTarget.tabId !== tabFromTargetId) + throw new Error(`unexpected Custom.pageTargetUpdated result ${JSON.stringify(pageTarget)}`); const targetFromTab = await cdp.send("Custom.targetIdFromTabId", { - tabId: foreground.tabId, + tabId: pageTarget.tabId, }); - if (targetFromTab.targetId !== createdTarget.targetId || targetFromTab.tabId !== foreground.tabId) { + if (targetFromTab.targetId !== createdTarget.targetId || targetFromTab.tabId !== pageTarget.tabId) { throw new Error(`unexpected Custom.targetIdFromTabId/middleware result ${JSON.stringify(targetFromTab)}`); } console.log("Custom.targetIdFromTabId ->", targetFromTab); diff --git a/js/src/client/ModCDPClient.ts b/js/src/client/ModCDPClient.ts index aa5cad4..01462f0 100644 --- a/js/src/client/ModCDPClient.ts +++ b/js/src/client/ModCDPClient.ts @@ -12,15 +12,9 @@ // oxlint-disable typescript-eslint/no-unsafe-declaration-merging -- alias members are assigned by connect(). import type { z } from "zod"; -import { - createCdpAliases, - type CdpAliases, -} from "../types/generated/aliases.js"; +import { createCdpAliases, type CdpAliases } from "../types/generated/aliases.js"; export type { CdpAliases } from "../types/generated/aliases.js"; -import { - commands as nativeCommandSchemas, - events as nativeEventSchemas, -} from "../types/generated/zod.js"; +import { commands as nativeCommandSchemas, events as nativeEventSchemas } from "../types/generated/zod.js"; import { CUSTOM_EVENT_BINDING_NAME, DEFAULT_CLIENT_ROUTES, @@ -35,16 +29,8 @@ import { type UpstreamMode, type UpstreamTransport, } from "../transport/UpstreamTransport.js"; -import type { - BrowserLauncher, - BrowserLaunchOptions, - LaunchedBrowser, -} from "../launcher/BrowserLauncher.js"; -import { - type ExtensionInjectorConfig, - type ExtensionInjector, - type SendCDP, -} from "../injector/ExtensionInjector.js"; +import type { BrowserLauncher, BrowserLaunchOptions, LaunchedBrowser } from "../launcher/BrowserLauncher.js"; +import { type ExtensionInjectorConfig, type ExtensionInjector, type SendCDP } from "../injector/ExtensionInjector.js"; import { AutoSessionRouter } from "../router/AutoSessionRouter.js"; import type { CdpCommandMessage, @@ -83,9 +69,7 @@ export const DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS = 60_000; export const DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS = 100; export const DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS = 20; export const DEFAULT_WS_CONNECT_ERROR_SETTLE_TIMEOUT_MS = 250; -export const DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = [ - "/modcdp/service_worker.js", -]; +export const DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = ["/modcdp/service_worker.js"]; export const DEFAULT_UPSTREAM_REVERSEWS_BIND = "127.0.0.1:29292"; export const DEFAULT_UPSTREAM_REVERSEWS_WAIT_TIMEOUT_MS = 10_000; export const DEFAULT_UPSTREAM_NATIVEMESSAGING_WAIT_TIMEOUT_MS = 10_000; @@ -133,10 +117,7 @@ export type InjectorOptions = { injector_service_worker_poll_interval_ms?: number; injector_target_session_poll_interval_ms?: number; }; -type InjectorConfig = Omit< - Required, - "injector_service_worker_url_suffixes" -> & { +type InjectorConfig = Omit, "injector_service_worker_url_suffixes"> & { injector_service_worker_url_suffixes: string[]; }; export type ClientConfigOptions = { @@ -172,12 +153,8 @@ type NormalizedClientOptions = { upstream_endpoint_kind: UpstreamEndpointKind; }; type ModCDPEventNameInput = string | symbol | (z.ZodType & ModCDPNamedValue); -type ModCDPEventPayload = - TEvent extends z.ZodType ? TPayload : never; -type ModCDPClientCustomCommandParams = Omit< - ModCDPAddCustomCommandParams, - "expression" -> & { +type ModCDPEventPayload = TEvent extends z.ZodType ? TPayload : never; +type ModCDPClientCustomCommandParams = Omit & { expression?: string | null; }; type ProtocolCommandSchema = { @@ -191,32 +168,20 @@ export type ModCDPCommandSpec = { }; export type ModCDPCommandMap = Record; export type ModCDPEventMap = Record; -type MethodName = - TName extends `${string}.${infer TMethod}` ? TMethod : never; -type DomainName = - TName extends `${infer TDomain}.${string}` ? TDomain : never; -type CommandsForDomain< - TCommands extends ModCDPCommandMap, - TDomain extends string, -> = { +type MethodName = TName extends `${string}.${infer TMethod}` ? TMethod : never; +type DomainName = TName extends `${infer TDomain}.${string}` ? TDomain : never; +type CommandsForDomain = { [TName in keyof TCommands as TName extends `${TDomain}.${string}` ? MethodName> : never]: undefined extends TCommands[TName]["params"] - ? ( - params?: TCommands[TName]["params"], - ) => Promise - : ( - params: TCommands[TName]["params"], - ) => Promise; + ? (params?: TCommands[TName]["params"]) => Promise + : (params: TCommands[TName]["params"]) => Promise; }; export type ModCDPClientInstance< TCommands extends ModCDPCommandMap = Record, TEvents extends ModCDPEventMap = Record, > = ModCDPClient & { - [TDomain in DomainName>]: CommandsForDomain< - TCommands, - TDomain - >; + [TDomain in DomainName>]: CommandsForDomain; } & { on>( eventName: TName, @@ -229,10 +194,7 @@ export type ModCDPClientInstance< }; class ModCDPEventEmitter { - private listeners = new Map< - string | symbol, - Set<(...args: unknown[]) => void> - >(); + private listeners = new Map void>>(); on(event_name: string | symbol, listener: (...args: unknown[]) => void) { const listeners = this.listeners.get(event_name); @@ -255,11 +217,9 @@ class ModCDPEventEmitter { } emit(event_name: string | symbol, ...args: unknown[]) { - for (const listener of this.listeners.get(event_name) ?? []) - listener(...args); + for (const listener of this.listeners.get(event_name) ?? []) listener(...args); if (event_name !== "*") { - for (const listener of this.listeners.get("*") ?? []) - listener(event_name, ...args); + for (const listener of this.listeners.get("*") ?? []) listener(event_name, ...args); } return true; } @@ -276,16 +236,9 @@ function normalizeClientOptions({ const upstream_endpoint_kind = endpointKindForUpstream(upstream_mode); const launcher_mode = launcher.launcher_mode ?? - (upstream_endpoint_kind === "modcdp_server" - ? "none" - : upstream.upstream_cdp_url - ? "remote" - : "local"); + (upstream_endpoint_kind === "modcdp_server" ? "none" : upstream.upstream_cdp_url ? "remote" : "local"); const injector_mode = - injector.injector_mode ?? - (upstream_endpoint_kind === "raw_cdp" || launcher_mode !== "none" - ? "auto" - : "none"); + injector.injector_mode ?? (upstream_endpoint_kind === "raw_cdp" || launcher_mode !== "none" ? "auto" : "none"); return { launcher: { launcher_mode, @@ -297,59 +250,39 @@ function normalizeClientOptions({ upstream_mode, upstream_cdp_url: upstream.upstream_cdp_url ?? null, upstream_nats_url: upstream.upstream_nats_url ?? null, - upstream_nats_subject_prefix: - upstream.upstream_nats_subject_prefix ?? null, - upstream_nats_wait_timeout_ms: - upstream.upstream_nats_wait_timeout_ms ?? - DEFAULT_UPSTREAM_NATS_WAIT_TIMEOUT_MS, - upstream_reversews_bind: - upstream.upstream_reversews_bind ?? DEFAULT_UPSTREAM_REVERSEWS_BIND, + upstream_nats_subject_prefix: upstream.upstream_nats_subject_prefix ?? null, + upstream_nats_wait_timeout_ms: upstream.upstream_nats_wait_timeout_ms ?? DEFAULT_UPSTREAM_NATS_WAIT_TIMEOUT_MS, + upstream_reversews_bind: upstream.upstream_reversews_bind ?? DEFAULT_UPSTREAM_REVERSEWS_BIND, upstream_reversews_wait_timeout_ms: - upstream.upstream_reversews_wait_timeout_ms ?? - DEFAULT_UPSTREAM_REVERSEWS_WAIT_TIMEOUT_MS, - upstream_nativemessaging_manifest: - upstream.upstream_nativemessaging_manifest ?? null, - upstream_nativemessaging_manifests: - upstream.upstream_nativemessaging_manifests ?? null, - upstream_nativemessaging_host_name: - upstream.upstream_nativemessaging_host_name ?? null, + upstream.upstream_reversews_wait_timeout_ms ?? DEFAULT_UPSTREAM_REVERSEWS_WAIT_TIMEOUT_MS, + upstream_nativemessaging_manifest: upstream.upstream_nativemessaging_manifest ?? null, + upstream_nativemessaging_manifests: upstream.upstream_nativemessaging_manifests ?? null, + upstream_nativemessaging_host_name: upstream.upstream_nativemessaging_host_name ?? null, upstream_nativemessaging_wait_timeout_ms: - upstream.upstream_nativemessaging_wait_timeout_ms ?? - DEFAULT_UPSTREAM_NATIVEMESSAGING_WAIT_TIMEOUT_MS, + upstream.upstream_nativemessaging_wait_timeout_ms ?? DEFAULT_UPSTREAM_NATIVEMESSAGING_WAIT_TIMEOUT_MS, upstream_ws_connect_error_settle_timeout_ms: - upstream.upstream_ws_connect_error_settle_timeout_ms ?? - DEFAULT_WS_CONNECT_ERROR_SETTLE_TIMEOUT_MS, + upstream.upstream_ws_connect_error_settle_timeout_ms ?? DEFAULT_WS_CONNECT_ERROR_SETTLE_TIMEOUT_MS, }, injector: { injector_mode, injector_extension_path: injector.injector_extension_path ?? null, injector_extension_id: injector.injector_extension_id ?? null, - injector_service_worker_url_includes: - injector.injector_service_worker_url_includes ?? [], + injector_service_worker_url_includes: injector.injector_service_worker_url_includes ?? [], injector_service_worker_url_suffixes: - injector.injector_service_worker_url_suffixes ?? - DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES, - injector_trust_service_worker_target: - injector.injector_trust_service_worker_target ?? false, - injector_require_service_worker_target: - injector.injector_require_service_worker_target ?? false, - injector_service_worker_ready_expression: - injector.injector_service_worker_ready_expression ?? null, + injector.injector_service_worker_url_suffixes ?? DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES, + injector_trust_service_worker_target: injector.injector_trust_service_worker_target ?? false, + injector_require_service_worker_target: injector.injector_require_service_worker_target ?? false, + injector_service_worker_ready_expression: injector.injector_service_worker_ready_expression ?? null, injector_execution_context_timeout_ms: - injector.injector_execution_context_timeout_ms ?? - DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, + injector.injector_execution_context_timeout_ms ?? DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, injector_service_worker_probe_timeout_ms: - injector.injector_service_worker_probe_timeout_ms ?? - DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, + injector.injector_service_worker_probe_timeout_ms ?? DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, injector_service_worker_ready_timeout_ms: - injector.injector_service_worker_ready_timeout_ms ?? - DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, + injector.injector_service_worker_ready_timeout_ms ?? DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, injector_service_worker_poll_interval_ms: - injector.injector_service_worker_poll_interval_ms ?? - DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, + injector.injector_service_worker_poll_interval_ms ?? DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, injector_target_session_poll_interval_ms: - injector.injector_target_session_poll_interval_ms ?? - DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, + injector.injector_target_session_poll_interval_ms ?? DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, }, client: { client_routes: { @@ -357,20 +290,15 @@ function normalizeClientOptions({ ...(client.client_routes ?? {}), }, client_hydrate_aliases: client.client_hydrate_aliases ?? true, - client_mirror_upstream_events: - client.client_mirror_upstream_events ?? true, - client_cdp_send_timeout_ms: - client.client_cdp_send_timeout_ms ?? DEFAULT_CDP_SEND_TIMEOUT_MS, - client_event_wait_timeout_ms: - client.client_event_wait_timeout_ms ?? DEFAULT_EVENT_WAIT_TIMEOUT_MS, + client_mirror_upstream_events: client.client_mirror_upstream_events ?? true, + client_cdp_send_timeout_ms: client.client_cdp_send_timeout_ms ?? DEFAULT_CDP_SEND_TIMEOUT_MS, + client_event_wait_timeout_ms: client.client_event_wait_timeout_ms ?? DEFAULT_EVENT_WAIT_TIMEOUT_MS, }, server: server === null ? null : { - ...(upstream_endpoint_kind === "modcdp_server" - ? { server_routes: { "*.*": "chrome_debugger" } } - : {}), + ...(upstream_endpoint_kind === "modcdp_server" ? { server_routes: { "*.*": "chrome_debugger" } } : {}), ...(server ?? {}), }, upstream_endpoint_kind, @@ -380,22 +308,17 @@ function normalizeClientOptions({ function defineCustomCommandMethod(client: ModCDPClient, name: string) { const parts = name.split("."); if (parts.length !== 2 || !parts[0] || !parts[1]) { - throw new Error( - `Custom command must use Domain.method format, got ${name}`, - ); + throw new Error(`Custom command must use Domain.method format, got ${name}`); } const [domain, method] = parts; const target = client as unknown as Record>; if (method === "*") { target[domain] = new Proxy(target[domain] ?? {}, { get(existing, property, receiver) { - if (typeof property !== "string") - return Reflect.get(existing, property, receiver); - if (property in existing) - return Reflect.get(existing, property, receiver); + if (typeof property !== "string") return Reflect.get(existing, property, receiver); + if (property in existing) return Reflect.get(existing, property, receiver); const command_name = `${domain}.${property}`; - const alias = (params?: unknown) => - client.send(command_name, params ?? {}); + const alias = (params?: unknown) => client.send(command_name, params ?? {}); Object.defineProperties(alias, { cdp_command_name: { value: command_name, @@ -444,9 +367,7 @@ function defineCustomCommandMethod(client: ModCDPClient, name: string) { function hasCommandExpression( command: ModCDPClientCustomCommandParams, ): command is ModCDPClientCustomCommandParams & { expression: string } { - return ( - typeof command.expression === "string" && command.expression.length > 0 - ); + return typeof command.expression === "string" && command.expression.length > 0; } export class ModCDPClient extends ModCDPEventEmitter { @@ -480,19 +401,9 @@ export class ModCDPClient extends ModCDPEventEmitter { auto_sessions: AutoSessionRouter; _injectors: ExtensionInjector[]; _cdp: { - send: ( - method: string, - params?: ProtocolParams, - sessionId?: string | null, - ) => Promise; - on: ( - eventName: string | symbol, - listener: (...args: unknown[]) => void, - ) => ModCDPClient; - once: ( - eventName: string | symbol, - listener: (...args: unknown[]) => void, - ) => ModCDPClient; + send: (method: string, params?: ProtocolParams, sessionId?: string | null) => Promise; + on: (eventName: string | symbol, listener: (...args: unknown[]) => void) => ModCDPClient; + once: (eventName: string | symbol, listener: (...args: unknown[]) => void) => ModCDPClient; }; _launched: LaunchedBrowser | null; @@ -544,33 +455,19 @@ export class ModCDPClient extends ModCDPEventEmitter { this.event_wait_cleanups = new Set(); this.auto_sessions = new AutoSessionRouter( (method, params = {}, session_id = null) => - this._sendMessage( - method, - params, - session_id, - ) as Promise, + this._sendMessage(method, params, session_id) as Promise, () => this.injector.injector_execution_context_timeout_ms, ); this._injectors = []; this._launched = null; this._cdp = { - send: ( - method: string, - params: ProtocolParams = {}, - session_id: string | null = null, - ) => + send: (method: string, params: ProtocolParams = {}, session_id: string | null = null) => this._sendMessage(method, params, session_id, { record_raw_timing: true, }) as Promise, - on: ( - event_name: string | symbol, - listener: (...args: unknown[]) => void, - ) => this.on(event_name, listener), - once: ( - event_name: string | symbol, - listener: (...args: unknown[]) => void, - ) => this.once(event_name, listener), + on: (event_name: string | symbol, listener: (...args: unknown[]) => void) => this.on(event_name, listener), + once: (event_name: string | symbol, listener: (...args: unknown[]) => void) => this.once(event_name, listener), }; this._hydrateNativeProtocolSchemas(); void this._hydrateCdpAliases(); @@ -593,11 +490,7 @@ export class ModCDPClient extends ModCDPEventEmitter { await this.transport?.waitForPeer?.(); this.event_schemas.set("Mod.pong", Mod.PongEvent); if (this.server !== null) { - await this._sendMessage( - "Mod.configure", - this._serverConfigureParams(), - null, - ); + await this._sendMessage("Mod.configure", this._serverConfigureParams(), null); } void this._measurePingLatency().catch(() => {}); const connected_at = Date.now(); @@ -618,45 +511,26 @@ export class ModCDPClient extends ModCDPEventEmitter { const injector_started_at = Date.now(); if (this.injector.injector_mode === "none") { - throw new Error( - "injector.injector_mode=none cannot be used with a raw_cdp upstream.", - ); + throw new Error("injector.injector_mode=none cannot be used with a raw_cdp upstream."); } const ext = await this._runInjectors( - (method, params, session_id) => - this._sendMessage( - method, - params, - session_id, - ) as Promise, + (method, params, session_id) => this._sendMessage(method, params, session_id) as Promise, ); const injector_completed_at = Date.now(); - this.extension_id = - typeof ext.extension_id === "string" ? ext.extension_id : null; + this.extension_id = typeof ext.extension_id === "string" ? ext.extension_id : null; this.ext_target_id = ext.target_id as string; this.ext_session_id = ext.session_id as string; this.event_schemas.set("Mod.pong", Mod.PongEvent); - const ext_context = this.auto_sessions.waitForExecutionContext( - this.ext_session_id, - { - timeout_ms: this.injector.injector_execution_context_timeout_ms, - }, - ); + const ext_context = this.auto_sessions.waitForExecutionContext(this.ext_session_id, { + timeout_ms: this.injector.injector_execution_context_timeout_ms, + }); await this._sendMessage("Runtime.enable", {}, this.ext_session_id); this.ext_execution_context_id = await ext_context; await Promise.all([ - this._sendMessage( - "Runtime.addBinding", - { name: CUSTOM_EVENT_BINDING_NAME }, - this.ext_session_id, - ), + this._sendMessage("Runtime.addBinding", { name: CUSTOM_EVENT_BINDING_NAME }, this.ext_session_id), this.client.client_mirror_upstream_events - ? this._sendMessage( - "Runtime.addBinding", - { name: UPSTREAM_EVENT_BINDING_NAME }, - this.ext_session_id, - ) + ? this._sendMessage("Runtime.addBinding", { name: UPSTREAM_EVENT_BINDING_NAME }, this.ext_session_id) : Promise.resolve(), ]); if (this.server !== null) { @@ -687,16 +561,9 @@ export class ModCDPClient extends ModCDPEventEmitter { return this; } - async send( - method: string, - params: unknown = {}, - session_id: string | null = null, - ) { + async send(method: string, params: unknown = {}, session_id: string | null = null) { const started_at = Date.now(); - let command_params = - this.command_params_schemas.get(method)?.parse(params ?? {}) ?? - params ?? - {}; + let command_params = this.command_params_schemas.get(method)?.parse(params ?? {}) ?? params ?? {}; if (method === "Mod.addCustomCommand") { const parsed = Mod.AddCustomCommandParams.parse(command_params); const name = normalizeModCDPName(parsed.name); @@ -716,11 +583,7 @@ export class ModCDPClient extends ModCDPEventEmitter { completed_at: Date.now(), duration_ms: Date.now() - started_at, }; - return ( - this.command_result_schemas - .get(method) - ?.parse({ name, registered: true }) ?? { name, registered: true } - ); + return this.command_result_schemas.get(method)?.parse({ name, registered: true }) ?? { name, registered: true }; } command_params = { ...parsed, @@ -733,10 +596,7 @@ export class ModCDPClient extends ModCDPEventEmitter { const name = normalizeModCDPName(parsed.name); const event_schema = normalizeModCDPPayloadSchema(parsed.event_schema); if (event_schema) this.event_schemas.set(name, event_schema); - if ( - !this.ext_session_id && - this.upstream_endpoint_kind !== "modcdp_server" - ) { + if (!this.ext_session_id && this.upstream_endpoint_kind !== "modcdp_server") { this.last_command_timing = { method, target: "client", @@ -744,19 +604,12 @@ export class ModCDPClient extends ModCDPEventEmitter { completed_at: Date.now(), duration_ms: Date.now() - started_at, }; - return ( - this.command_result_schemas - .get(method) - ?.parse({ name, registered: true }) ?? { name, registered: true } - ); + return this.command_result_schemas.get(method)?.parse({ name, registered: true }) ?? { name, registered: true }; } command_params = { ...parsed, name, event_schema: null }; } if (this.upstream_endpoint_kind === "modcdp_server") { - const result = await this._sendMessage( - method, - command_params as ProtocolParams, - ); + const result = await this._sendMessage(method, command_params as ProtocolParams); const completed_at = Date.now(); this.last_command_timing = { method, @@ -767,14 +620,10 @@ export class ModCDPClient extends ModCDPEventEmitter { }; return result; } - const command = wrapCommandIfNeeded( - method, - command_params as ProtocolParams, - { - routes: this.client.client_routes, - targetCdpSessionId: session_id, - }, - ); + const command = wrapCommandIfNeeded(method, command_params as ProtocolParams, { + routes: this.client.client_routes, + targetCdpSessionId: session_id, + }); const result = await this._sendRaw(command); const completed_at = Date.now(); this.last_command_timing = { @@ -793,23 +642,17 @@ export class ModCDPClient extends ModCDPEventEmitter { : parsed_result; } - async sendRaw( - method: string, - params: ProtocolParams = {}, - session_id: string | null = null, - ) { + async sendRaw(method: string, params: ProtocolParams = {}, session_id: string | null = null) { return await this._sendMessage(method, params, session_id); } async _hydrateCdpAliases() { - if (!this.client.client_hydrate_aliases || this.cdp_aliases_hydrated) - return; + if (!this.client.client_hydrate_aliases || this.cdp_aliases_hydrated) return; Object.assign( this, createCdpAliases((method, params) => this.send(method, params), { onCustomCommand: (name, params_schema, result_schema) => { - if (params_schema) - this.command_params_schemas.set(name, params_schema); + if (params_schema) this.command_params_schemas.set(name, params_schema); if (result_schema) { this.command_result_schemas.set(name, result_schema); this._setResultUnwrapKey(name, result_schema); @@ -827,22 +670,11 @@ export class ModCDPClient extends ModCDPEventEmitter { _hydrateCustomSurface() { for (const command of this.custom_commands) { const name = normalizeModCDPName(command.name); - const params_schema = command.params_schema - ? Mod.PayloadSchemaSpec.parse(command.params_schema) - : null; - const result_schema = command.result_schema - ? Mod.PayloadSchemaSpec.parse(command.result_schema) - : null; - const normalized_params_schema = - params_schema == null - ? null - : this._normalizePayloadSchema(params_schema); - const normalized_result_schema = - result_schema == null - ? null - : this._normalizePayloadSchema(result_schema); - if (normalized_params_schema) - this.command_params_schemas.set(name, normalized_params_schema); + const params_schema = command.params_schema ? Mod.PayloadSchemaSpec.parse(command.params_schema) : null; + const result_schema = command.result_schema ? Mod.PayloadSchemaSpec.parse(command.result_schema) : null; + const normalized_params_schema = params_schema == null ? null : this._normalizePayloadSchema(params_schema); + const normalized_result_schema = result_schema == null ? null : this._normalizePayloadSchema(result_schema); + if (normalized_params_schema) this.command_params_schemas.set(name, normalized_params_schema); if (normalized_result_schema) { this.command_result_schemas.set(name, normalized_result_schema); this._setResultUnwrapKey(name, normalized_result_schema); @@ -851,56 +683,30 @@ export class ModCDPClient extends ModCDPEventEmitter { } for (const event of this.custom_events) { const name = normalizeModCDPName(event.name); - const event_schema = event.event_schema - ? this._normalizePayloadSchema(event.event_schema) - : null; + const event_schema = event.event_schema ? this._normalizePayloadSchema(event.event_schema) : null; if (event_schema) this.event_schemas.set(name, event_schema); } } _hydrateNativeProtocolSchemas() { - for (const [method, schema] of Object.entries(nativeCommandSchemas) as [ - string, - ProtocolCommandSchema, - ][]) { + for (const [method, schema] of Object.entries(nativeCommandSchemas) as [string, ProtocolCommandSchema][]) { this.command_params_schemas.set(method, schema.params); this.command_result_schemas.set(method, schema.result); } this.command_params_schemas.set("Mod.evaluate", Mod.EvaluateParams); this.command_result_schemas.set("Mod.evaluate", Mod.EvaluateResponse); - this.command_params_schemas.set( - "Mod.addCustomCommand", - Mod.AddCustomCommandParams, - ); - this.command_result_schemas.set( - "Mod.addCustomCommand", - Mod.AddCustomCommandResponse, - ); - this.command_params_schemas.set( - "Mod.addCustomEvent", - Mod.AddCustomEventParams, - ); - this.command_result_schemas.set( - "Mod.addCustomEvent", - Mod.AddCustomEventResponse, - ); - this.command_params_schemas.set( - "Mod.addMiddleware", - Mod.AddMiddlewareParams, - ); - this.command_result_schemas.set( - "Mod.addMiddleware", - Mod.AddMiddlewareResponse, - ); + this.command_params_schemas.set("Mod.addCustomCommand", Mod.AddCustomCommandParams); + this.command_result_schemas.set("Mod.addCustomCommand", Mod.AddCustomCommandResponse); + this.command_params_schemas.set("Mod.addCustomEvent", Mod.AddCustomEventParams); + this.command_result_schemas.set("Mod.addCustomEvent", Mod.AddCustomEventResponse); + this.command_params_schemas.set("Mod.addMiddleware", Mod.AddMiddlewareParams); + this.command_result_schemas.set("Mod.addMiddleware", Mod.AddMiddlewareResponse); this.command_params_schemas.set("Mod.configure", Mod.ConfigureParams); this.command_result_schemas.set("Mod.configure", Mod.ConfigureResponse); this.command_params_schemas.set("Mod.ping", Mod.PingParams); this.command_result_schemas.set("Mod.ping", Mod.PingResponse); - for (const [event, schema] of Object.entries(nativeEventSchemas) as [ - string, - z.ZodType, - ][]) { + for (const [event, schema] of Object.entries(nativeEventSchemas) as [string, z.ZodType][]) { this.event_schemas.set(event, schema); } this.event_schemas.set("Mod.pong", Mod.PongEvent); @@ -911,10 +717,7 @@ export class ModCDPClient extends ModCDPEventEmitter { } _setResultUnwrapKey(name: string, schema: z.ZodType) { - const shape = - "shape" in schema && schema.shape && typeof schema.shape === "object" - ? schema.shape - : null; + const shape = "shape" in schema && schema.shape && typeof schema.shape === "object" ? schema.shape : null; const keys = shape ? Object.keys(shape) : []; if (keys.length === 1) this.command_result_unwrap_keys.set(name, keys[0]); else this.command_result_unwrap_keys.delete(name); @@ -932,13 +735,10 @@ export class ModCDPClient extends ModCDPEventEmitter { return { upstream: { upstream_mode: this.upstream.upstream_mode, - ...(this.upstream.upstream_nats_url - ? { upstream_nats_url: this.upstream.upstream_nats_url } - : {}), + ...(this.upstream.upstream_nats_url ? { upstream_nats_url: this.upstream.upstream_nats_url } : {}), ...(this.upstream.upstream_nats_subject_prefix ? { - upstream_nats_subject_prefix: - this.upstream.upstream_nats_subject_prefix, + upstream_nats_subject_prefix: this.upstream.upstream_nats_subject_prefix, } : {}), }, @@ -949,35 +749,29 @@ export class ModCDPClient extends ModCDPEventEmitter { ...this._serverDefaults(), ...(this.server ?? {}), }, - custom_commands: this.custom_commands - .filter(hasCommandExpression) - .map((command) => ({ - name: normalizeModCDPName(command.name), - expression: command.expression, - params_schema: null as null, - result_schema: null as null, - })), + custom_commands: this.custom_commands.filter(hasCommandExpression).map((command) => ({ + name: normalizeModCDPName(command.name), + expression: command.expression, + params_schema: null as null, + result_schema: null as null, + })), custom_events: this.custom_events.map((event) => ({ name: normalizeModCDPName(event.name), event_schema: null as null, })), - custom_middlewares: this.custom_middlewares.map( - ({ name, phase, expression }) => ({ - ...(name == null ? {} : { name: normalizeModCDPName(name) }), - phase, - expression, - }), - ), + custom_middlewares: this.custom_middlewares.map(({ name, phase, expression }) => ({ + ...(name == null ? {} : { name: normalizeModCDPName(name) }), + phase, + expression, + })), }; } _serverDefaults(): ModCDPServerOptions { return { server_cdp_send_timeout_ms: this.client.client_cdp_send_timeout_ms, - server_loopback_execution_context_timeout_ms: - this.injector.injector_execution_context_timeout_ms, - server_ws_connect_error_settle_timeout_ms: - this.upstream.upstream_ws_connect_error_settle_timeout_ms, + server_loopback_execution_context_timeout_ms: this.injector.injector_execution_context_timeout_ms, + server_ws_connect_error_settle_timeout_ms: this.upstream.upstream_ws_connect_error_settle_timeout_ms, }; } @@ -990,17 +784,12 @@ export class ModCDPClient extends ModCDPEventEmitter { const initial_transport_config = this._upstreamTransportConfig(); transport.update(initial_transport_config); launcher.update(this._launcherOptions()); - for (const injector of injectors) - injector.update(this._baseInjectorConfig()); - for (const injector of injectors) - injector.update(launcher.getInjectorConfig()); - for (const injector of injectors) - injector.update(transport.getInjectorConfig()); + for (const injector of injectors) injector.update(this._baseInjectorConfig()); + for (const injector of injectors) injector.update(launcher.getInjectorConfig()); + for (const injector of injectors) injector.update(transport.getInjectorConfig()); for (const injector of injectors) await injector.prepare(); - for (const injector of injectors) - launcher.update(injector.getLauncherConfig()); - for (const injector of injectors) - transport.update(injector.getTransportConfig()); + for (const injector of injectors) launcher.update(injector.getLauncherConfig()); + for (const injector of injectors) transport.update(injector.getTransportConfig()); launcher.update(transport.getLauncherConfig()); launcher.update({ loopback_cdp: this._serverNeedsLoopbackCdp() }); transport.update(launcher.getTransportConfig()); @@ -1009,26 +798,19 @@ export class ModCDPClient extends ModCDPEventEmitter { if (this.launcher.launcher_mode !== "none") { this._launched = await launcher.launch(); transport.update(launcher.getTransportConfig()); - for (const injector of injectors) - injector.update(launcher.getInjectorConfig()); - for (const injector of injectors) - transport.update(injector.getTransportConfig()); + for (const injector of injectors) injector.update(launcher.getInjectorConfig()); + for (const injector of injectors) transport.update(injector.getTransportConfig()); } const launched_cdp_url = this._launched?.cdp_url ?? null; if (transport.endpoint_kind === "raw_cdp") await transport.connect(); this.transport = transport; this.cdp_url = - transport.endpoint_kind === "raw_cdp" - ? ((transport.url || launched_cdp_url) ?? null) - : launched_cdp_url; + transport.endpoint_kind === "raw_cdp" ? ((transport.url || launched_cdp_url) ?? null) : launched_cdp_url; // For ws mode, cdp_url has been resolved to the concrete WebSocket CDP endpoint after connect(). - if (transport.mode === "ws" && transport.url) - this.upstream.upstream_cdp_url = transport.url; + if (transport.mode === "ws" && transport.url) this.upstream.upstream_cdp_url = transport.url; const server_config = { - ...(transport.endpoint_kind === "modcdp_server" && - launched_cdp_url && - !launched_cdp_url.startsWith("pipe://") + ...(transport.endpoint_kind === "modcdp_server" && launched_cdp_url && !launched_cdp_url.startsWith("pipe://") ? { server_loopback_cdp_url: launched_cdp_url } : {}), ...launcher.getServerConfig(), @@ -1049,14 +831,11 @@ export class ModCDPClient extends ModCDPEventEmitter { async _upstreamTransport(): Promise { switch (this.upstream.upstream_mode as UpstreamMode) { case "ws": { - const { WebSocketUpstreamTransport } = - await import("../transport/WebSocketUpstreamTransport.js"); + const { WebSocketUpstreamTransport } = await import("../transport/WebSocketUpstreamTransport.js"); return new WebSocketUpstreamTransport(); } case "pipe": { - const { PipeUpstreamTransport } = await import( - /* @vite-ignore */ "../transport/PipeUpstreamTransport.js" - ); + const { PipeUpstreamTransport } = await import(/* @vite-ignore */ "../transport/PipeUpstreamTransport.js"); return new PipeUpstreamTransport(); } case "reversews": { @@ -1072,33 +851,23 @@ export class ModCDPClient extends ModCDPEventEmitter { return new NativeMessagingUpstreamTransport(); } case "nats": { - const { NatsUpstreamTransport } = await import( - /* @vite-ignore */ "../transport/NatsUpstreamTransport.js" - ); + const { NatsUpstreamTransport } = await import(/* @vite-ignore */ "../transport/NatsUpstreamTransport.js"); return new NatsUpstreamTransport(); } default: - throw new Error( - `unknown upstream.upstream_mode=${this.upstream.upstream_mode}`, - ); + throw new Error(`unknown upstream.upstream_mode=${this.upstream.upstream_mode}`); } } async _browserLauncher(): Promise { switch (this.launcher.launcher_mode as LauncherMode) { case "local": { - const { LocalBrowserLauncher } = await import( - /* @vite-ignore */ "../launcher/LocalBrowserLauncher.js" - ); + const { LocalBrowserLauncher } = await import(/* @vite-ignore */ "../launcher/LocalBrowserLauncher.js"); return new LocalBrowserLauncher(this.launcher.launcher_options); } case "remote": { - const { RemoteBrowserLauncher } = - await import("../launcher/RemoteBrowserLauncher.js"); - return new RemoteBrowserLauncher( - this.launcher.launcher_options, - this.upstream.upstream_cdp_url, - ); + const { RemoteBrowserLauncher } = await import("../launcher/RemoteBrowserLauncher.js"); + return new RemoteBrowserLauncher(this.launcher.launcher_options, this.upstream.upstream_cdp_url); } case "bb": { const { BrowserbaseBrowserLauncher } = await import( @@ -1107,34 +876,25 @@ export class ModCDPClient extends ModCDPEventEmitter { return new BrowserbaseBrowserLauncher(this.launcher.launcher_options); } case "none": { - const { NoopBrowserLauncher } = - await import("../launcher/NoopBrowserLauncher.js"); + const { NoopBrowserLauncher } = await import("../launcher/NoopBrowserLauncher.js"); return new NoopBrowserLauncher(this.launcher.launcher_options); } default: - throw new Error( - `unknown launcher.launcher_mode=${this.launcher.launcher_mode}`, - ); + throw new Error(`unknown launcher.launcher_mode=${this.launcher.launcher_mode}`); } } _launcherOptions(): BrowserLaunchOptions { return { ...this.launcher.launcher_options, - ...(this.launcher.launcher_executable_path - ? { executable_path: this.launcher.launcher_executable_path } - : {}), - ...(this.launcher.launcher_user_data_dir - ? { user_data_dir: this.launcher.launcher_user_data_dir } - : {}), + ...(this.launcher.launcher_executable_path ? { executable_path: this.launcher.launcher_executable_path } : {}), + ...(this.launcher.launcher_user_data_dir ? { user_data_dir: this.launcher.launcher_user_data_dir } : {}), }; } _serverNeedsLoopbackCdp() { if (!this.server || this.server.server_loopback_cdp_url) return false; - return Object.values(this.server.server_routes ?? {}).includes( - "loopback_cdp", - ); + return Object.values(this.server.server_routes ?? {}).includes("loopback_cdp"); } _upstreamTransportConfig() { @@ -1142,19 +902,13 @@ export class ModCDPClient extends ModCDPEventEmitter { cdp_url: this.upstream.upstream_cdp_url, upstream_nats_url: this.upstream.upstream_nats_url, upstream_nats_subject_prefix: this.upstream.upstream_nats_subject_prefix, - upstream_nats_wait_timeout_ms: - this.upstream.upstream_nats_wait_timeout_ms, + upstream_nats_wait_timeout_ms: this.upstream.upstream_nats_wait_timeout_ms, upstream_reversews_bind: this.upstream.upstream_reversews_bind, - upstream_reversews_wait_timeout_ms: - this.upstream.upstream_reversews_wait_timeout_ms, - upstream_nativemessaging_manifest: - this.upstream.upstream_nativemessaging_manifest, - upstream_nativemessaging_manifests: - this.upstream.upstream_nativemessaging_manifests, - upstream_nativemessaging_host_name: - this.upstream.upstream_nativemessaging_host_name, - upstream_nativemessaging_wait_timeout_ms: - this.upstream.upstream_nativemessaging_wait_timeout_ms, + upstream_reversews_wait_timeout_ms: this.upstream.upstream_reversews_wait_timeout_ms, + upstream_nativemessaging_manifest: this.upstream.upstream_nativemessaging_manifest, + upstream_nativemessaging_manifests: this.upstream.upstream_nativemessaging_manifests, + upstream_nativemessaging_host_name: this.upstream.upstream_nativemessaging_host_name, + upstream_nativemessaging_wait_timeout_ms: this.upstream.upstream_nativemessaging_wait_timeout_ms, injector_extension_id: this.injector.injector_extension_id, }; } @@ -1162,22 +916,15 @@ export class ModCDPClient extends ModCDPEventEmitter { async _injectorsForConfig() { if (this.injector.injector_mode === "none") return []; const injectors: ExtensionInjector[] = []; - const prefer_launch_injection = - this.injector.injector_mode === "auto" && - this.launcher.launcher_mode === "local"; + const prefer_launch_injection = this.injector.injector_mode === "auto" && this.launcher.launcher_mode === "local"; if ( - (this.injector.injector_mode === "auto" || - this.injector.injector_mode === "discover") && + (this.injector.injector_mode === "auto" || this.injector.injector_mode === "discover") && !prefer_launch_injection ) { - const { DiscoveredExtensionInjector } = - await import("../injector/DiscoveredExtensionInjector.js"); + const { DiscoveredExtensionInjector } = await import("../injector/DiscoveredExtensionInjector.js"); injectors.push(new DiscoveredExtensionInjector()); } - if ( - this.injector.injector_mode === "auto" || - this.injector.injector_mode === "inject" - ) { + if (this.injector.injector_mode === "auto" || this.injector.injector_mode === "inject") { if (this.launcher.launcher_mode === "bb") { const { BBBrowserExtensionInjector } = await import( /* @vite-ignore */ "../injector/BBBrowserExtensionInjector.js" @@ -1196,23 +943,14 @@ export class ModCDPClient extends ModCDPEventEmitter { injectors.push(new ExtensionsLoadUnpackedInjector()); } if (prefer_launch_injection) { - const { DiscoveredExtensionInjector } = - await import("../injector/DiscoveredExtensionInjector.js"); + const { DiscoveredExtensionInjector } = await import("../injector/DiscoveredExtensionInjector.js"); injectors.push(new DiscoveredExtensionInjector()); } - if ( - this.injector.injector_mode === "auto" || - this.injector.injector_mode === "borrow" - ) { - const { BorrowedExtensionInjector } = await import( - /* @vite-ignore */ "../injector/BorrowedExtensionInjector.js" - ); + if (this.injector.injector_mode === "auto" || this.injector.injector_mode === "borrow") { + const { BorrowedExtensionInjector } = await import(/* @vite-ignore */ "../injector/BorrowedExtensionInjector.js"); injectors.push(new BorrowedExtensionInjector()); } - if (injectors.length === 0) - throw new Error( - `unknown injector.injector_mode=${this.injector.injector_mode}`, - ); + if (injectors.length === 0) throw new Error(`unknown injector.injector_mode=${this.injector.injector_mode}`); return injectors; } @@ -1221,47 +959,31 @@ export class ModCDPClient extends ModCDPEventEmitter { const trust_service_worker_target = this.injector.injector_trust_service_worker_target || this.injector.injector_service_worker_url_includes.length > 0 || - service_worker_url_suffixes.some( - (suffix) => suffix.split("/").filter(Boolean).length > 1, - ); + service_worker_url_suffixes.some((suffix) => suffix.split("/").filter(Boolean).length > 1); return { send, - sessionIdForTarget: (target_id) => - this.auto_sessions.sessionIdForTarget(target_id), - attachToTarget: send - ? (target_id) => this.auto_sessions.attachToTarget(target_id) - : null, + sessionIdForTarget: (target_id) => this.auto_sessions.sessionIdForTarget(target_id), + attachToTarget: send ? (target_id) => this.auto_sessions.attachToTarget(target_id) : null, waitForExecutionContext: (session_id, timeout_ms) => this.auto_sessions.waitForExecutionContext(session_id, { timeout_ms }), injector_extension_path: this.injector.injector_extension_path, injector_extension_id: this.injector.injector_extension_id, - injector_service_worker_url_includes: - this.injector.injector_service_worker_url_includes, + injector_service_worker_url_includes: this.injector.injector_service_worker_url_includes, injector_service_worker_url_suffixes: service_worker_url_suffixes, injector_trust_service_worker_target: trust_service_worker_target, injector_require_service_worker_target: - this.injector.injector_require_service_worker_target || - this.injector.injector_mode === "discover", - injector_service_worker_ready_expression: - this.injector.injector_service_worker_ready_expression, + this.injector.injector_require_service_worker_target || this.injector.injector_mode === "discover", + injector_service_worker_ready_expression: this.injector.injector_service_worker_ready_expression, injector_cdp_send_timeout_ms: this.client.client_cdp_send_timeout_ms, - injector_execution_context_timeout_ms: - this.injector.injector_execution_context_timeout_ms, - injector_service_worker_probe_timeout_ms: - this.injector.injector_service_worker_probe_timeout_ms, - injector_service_worker_ready_timeout_ms: - this.injector.injector_service_worker_ready_timeout_ms, - injector_service_worker_poll_interval_ms: - this.injector.injector_service_worker_poll_interval_ms, - injector_target_session_poll_interval_ms: - this.injector.injector_target_session_poll_interval_ms, + injector_execution_context_timeout_ms: this.injector.injector_execution_context_timeout_ms, + injector_service_worker_probe_timeout_ms: this.injector.injector_service_worker_probe_timeout_ms, + injector_service_worker_ready_timeout_ms: this.injector.injector_service_worker_ready_timeout_ms, + injector_service_worker_poll_interval_ms: this.injector.injector_service_worker_poll_interval_ms, + injector_target_session_poll_interval_ms: this.injector.injector_target_session_poll_interval_ms, }; } - async _runInjectors( - send: SendCDP, - injectors: ExtensionInjector[] | null = null, - ) { + async _runInjectors(send: SendCDP, injectors: ExtensionInjector[] | null = null) { injectors ??= await this._injectorsForConfig(); const errors: string[] = []; for (const injector of injectors) { @@ -1272,8 +994,7 @@ export class ModCDPClient extends ModCDPEventEmitter { if (result) return result; } catch (error) { const message = error instanceof Error ? error.message : String(error); - injector.last_error = - error instanceof Error ? error : new Error(message); + injector.last_error = error instanceof Error ? error : new Error(message); errors.push(`${injector.constructor.name}: ${message}`); } } @@ -1310,86 +1031,46 @@ export class ModCDPClient extends ModCDPEventEmitter { listener: (event: ModCDPEventPayload) => void, ): this; on(event_name: string | symbol, listener: (...args: unknown[]) => void): this; - on( - event_name: ModCDPEventNameInput, - listener: (...args: unknown[]) => void, - ): this; + on(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void): this; on(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void) { if (typeof event_name !== "string" && typeof event_name !== "symbol") { const name = normalizeModCDPName(event_name); this.event_schemas.set(name, event_name); return super.on(name, listener); } - return super.on( - typeof event_name === "symbol" - ? event_name - : normalizeModCDPName(event_name), - listener, - ); + return super.on(typeof event_name === "symbol" ? event_name : normalizeModCDPName(event_name), listener); } once( event_name: TEvent, listener: (event: ModCDPEventPayload) => void, ): this; - once( - event_name: string | symbol, - listener: (...args: unknown[]) => void, - ): this; - once( - event_name: ModCDPEventNameInput, - listener: (...args: unknown[]) => void, - ): this; - once( - event_name: ModCDPEventNameInput, - listener: (...args: unknown[]) => void, - ) { + once(event_name: string | symbol, listener: (...args: unknown[]) => void): this; + once(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void): this; + once(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void) { if (typeof event_name !== "string" && typeof event_name !== "symbol") { const name = normalizeModCDPName(event_name); this.event_schemas.set(name, event_name); return super.once(name, listener); } - return super.once( - typeof event_name === "symbol" - ? event_name - : normalizeModCDPName(event_name), - listener, - ); + return super.once(typeof event_name === "symbol" ? event_name : normalizeModCDPName(event_name), listener); } off( event_name: TEvent, listener: (event: ModCDPEventPayload) => void, ): this; - off( - event_name: string | symbol, - listener: (...args: unknown[]) => void, - ): this; - off( - event_name: ModCDPEventNameInput, - listener: (...args: unknown[]) => void, - ): this; - off( - event_name: ModCDPEventNameInput, - listener: (...args: unknown[]) => void, - ) { + off(event_name: string | symbol, listener: (...args: unknown[]) => void): this; + off(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void): this; + off(event_name: ModCDPEventNameInput, listener: (...args: unknown[]) => void) { if (typeof event_name !== "string" && typeof event_name !== "symbol") { return super.off(normalizeModCDPName(event_name), listener); } - return super.off( - typeof event_name === "symbol" - ? event_name - : normalizeModCDPName(event_name), - listener, - ); + return super.off(typeof event_name === "symbol" ? event_name : normalizeModCDPName(event_name), listener); } - _waitForEvent( - event_name: ModCDPEventNameInput, - { timeout_ms }: { timeout_ms?: number } = {}, - ) { - const effective_timeout_ms = - timeout_ms ?? this.client.client_event_wait_timeout_ms; + _waitForEvent(event_name: ModCDPEventNameInput, { timeout_ms }: { timeout_ms?: number } = {}) { + const effective_timeout_ms = timeout_ms ?? this.client.client_event_wait_timeout_ms; let settled = false; let timeout: ReturnType | null = null; let cancel: () => void = () => {}; @@ -1429,14 +1110,8 @@ export class ModCDPClient extends ModCDPEventEmitter { received_at: payload.received_at ?? null, returned_at, round_trip_ms: returned_at - sent_at, - service_worker_ms: - typeof payload.received_at === "number" - ? payload.received_at - sent_at - : null, - return_path_ms: - typeof payload.received_at === "number" - ? returned_at - payload.received_at - : null, + service_worker_ms: typeof payload.received_at === "number" ? payload.received_at - sent_at : null, + return_path_ms: typeof payload.received_at === "number" ? returned_at - payload.received_at : null, }; return this.latency; } finally { @@ -1447,11 +1122,7 @@ export class ModCDPClient extends ModCDPEventEmitter { async _sendRaw(command: TranslatedCommand) { if (command.target === "direct_cdp") { const [step] = command.steps; - return this._sendMessage( - step.method, - step.params ?? {}, - step.sessionId ?? null, - ) as Promise; + return this._sendMessage(step.method, step.params ?? {}, step.sessionId ?? null) as Promise; } if (command.target !== "service_worker") { throw new Error(`Unsupported command target "${command.target}"`); @@ -1461,27 +1132,17 @@ export class ModCDPClient extends ModCDPEventEmitter { let unwrap = null; for (const step of command.steps) { const step_params = - step.method === "Runtime.callFunctionOn" && - step.params && - !Object.hasOwn(step.params, "executionContextId") + step.method === "Runtime.callFunctionOn" && step.params && !Object.hasOwn(step.params, "executionContextId") ? { ...step.params, executionContextId: this.ext_execution_context_id ?? - (await this.auto_sessions.waitForExecutionContext( - this.ext_session_id, - { - timeout_ms: - this.injector.injector_execution_context_timeout_ms, - }, - )), + (await this.auto_sessions.waitForExecutionContext(this.ext_session_id, { + timeout_ms: this.injector.injector_execution_context_timeout_ms, + })), } : (step.params ?? {}); - result = (await this._sendMessage( - step.method, - step_params, - this.ext_session_id, - )) as ProtocolResult; + result = (await this._sendMessage(step.method, step_params, this.ext_session_id)) as ProtocolResult; unwrap = step.unwrap ?? null; } return unwrapResponseIfNeeded(result, unwrap); @@ -1493,15 +1154,13 @@ export class ModCDPClient extends ModCDPEventEmitter { session_id: string | null = null, options: { record_raw_timing?: boolean; timeout_ms?: number | null } = {}, ) { - if (!this.transport) - return Promise.reject(new Error("ModCDP upstream is not connected.")); + if (!this.transport) return Promise.reject(new Error("ModCDP upstream is not connected.")); const id = this.next_id++; const started_at = Date.now(); const message: CdpCommandMessage = { id, method, params }; if (session_id) message.sessionId = session_id; return new Promise((resolve, reject) => { - const timeout_ms = - options.timeout_ms ?? this.client.client_cdp_send_timeout_ms; + const timeout_ms = options.timeout_ms ?? this.client.client_cdp_send_timeout_ms; let timeout: ReturnType | null = null; const finish = (callback: () => void) => { if (timeout != null) clearTimeout(timeout); @@ -1536,25 +1195,19 @@ export class ModCDPClient extends ModCDPEventEmitter { } void (async () => { try { - if (this.upstream_endpoint_kind === "modcdp_server") - await this.transport?.waitForPeer?.(); + if (this.upstream_endpoint_kind === "modcdp_server") await this.transport?.waitForPeer?.(); this.transport?.send(message); } catch (error) { - if (this.pending.delete(id)) - reject(error instanceof Error ? error : new Error(String(error))); + if (this.pending.delete(id)) reject(error instanceof Error ? error : new Error(String(error))); } })(); }); } _rejectAll(error: Error) { - const pending_methods = [...this.pending.values()].map( - (pending) => pending.method, - ); + const pending_methods = [...this.pending.values()].map((pending) => pending.method); const reject_error = - pending_methods.length === 0 - ? error - : new Error(`${error.message}; pending=${pending_methods.join(",")}`); + pending_methods.length === 0 ? error : new Error(`${error.message}; pending=${pending_methods.join(",")}`); for (const pending of this.pending.values()) pending.reject(reject_error); this.pending.clear(); } @@ -1566,28 +1219,18 @@ export class ModCDPClient extends ModCDPEventEmitter { if (!pending) return; this.pending.delete(response.id); if (response.error) { - const err = new Error( - `${pending.method} failed: ${response.error.message}`, - ) as Error & { cdp?: CdpError }; + const err = new Error(`${pending.method} failed: ${response.error.message}`) as Error & { cdp?: CdpError }; err.cdp = response.error; pending.reject(err); } else { - pending.resolve( - (response.result === undefined - ? {} - : response.result) as ProtocolResult, - ); + pending.resolve((response.result === undefined ? {} : response.result) as ProtocolResult); } return; } const event = CdpEventMessageSchema.parse(msg); if (event.sessionId === this.ext_session_id) { if (event.method === "Runtime.executionContextCreated") { - this.auto_sessions.recordProtocolEvent( - event.method, - event.params || {}, - event.sessionId || null, - ); + this.auto_sessions.recordProtocolEvent(event.method, event.params || {}, event.sessionId || null); } if (event.method !== "Runtime.bindingCalled") return; const u = unwrapEventIfNeeded( @@ -1598,11 +1241,7 @@ export class ModCDPClient extends ModCDPEventEmitter { ); if (u) { const payload = this._parseEventPayload(u.event, u.data); - this.auto_sessions.recordProtocolEvent( - u.event, - payload as ProtocolPayload, - u.sessionId, - ); + this.auto_sessions.recordProtocolEvent(u.event, payload as ProtocolPayload, u.sessionId); this.emit(u.event, payload, u.sessionId); } return; @@ -1610,11 +1249,7 @@ export class ModCDPClient extends ModCDPEventEmitter { if (event.method) { const data = event.params || {}; const payload = this._parseEventPayload(event.method, data); - this.auto_sessions.recordProtocolEvent( - event.method, - payload as ProtocolPayload, - event.sessionId || null, - ); + this.auto_sessions.recordProtocolEvent(event.method, payload as ProtocolPayload, event.sessionId || null); this.emit(event.method, payload, event.sessionId || null); } } diff --git a/js/src/injector/ExtensionInjector.ts b/js/src/injector/ExtensionInjector.ts index 40943a8..5acf392 100644 --- a/js/src/injector/ExtensionInjector.ts +++ b/js/src/injector/ExtensionInjector.ts @@ -9,9 +9,7 @@ import { commands as TargetCommands } from "../types/generated/zod/Target.js"; const EXT_ID_FROM_URL = /^chrome-extension:\/\/([a-z]+)\//; export const DEFAULT_MODCDP_EXTENSION_ID = "mdedooklbnfejodmnhmkdpkaedafkehf"; -export const DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = [ - "/modcdp/service_worker.js", -]; +export const DEFAULT_MODCDP_SERVICE_WORKER_URL_SUFFIXES = ["/modcdp/service_worker.js"]; const MODCDP_READY_EXPRESSION = "Boolean(globalThis.ModCDP?.__ModCDPServerVersion >= 1 && globalThis.ModCDP?.handleCommand && globalThis.ModCDP?.addCustomEvent)"; export const DEFAULT_CDP_SEND_TIMEOUT_MS = 10_000; @@ -21,24 +19,14 @@ export const DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS = 60_000; export const DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS = 100; export const DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS = 20; -export type SendCDP = ( - method: string, - params?: ProtocolParams, - session_id?: string | null, -) => Promise; +export type SendCDP = (method: string, params?: ProtocolParams, session_id?: string | null) => Promise; export type TargetInfo = { targetId: string; type?: string; url?: string }; export type ExtensionInjectorConfig = { send?: SendCDP | null; - sessionIdForTarget?: - | ((target_id: string) => string | null | undefined) - | null; - attachToTarget?: - | ((target_id: string) => Promise) - | null; - waitForExecutionContext?: - | ((session_id: string, timeout_ms: number) => Promise) - | null; + sessionIdForTarget?: ((target_id: string) => string | null | undefined) | null; + attachToTarget?: ((target_id: string) => Promise) | null; + waitForExecutionContext?: ((session_id: string, timeout_ms: number) => Promise) | null; injector_extension_path?: string | null; injector_extension_id?: string | null; injector_service_worker_url_includes?: string[]; @@ -79,17 +67,11 @@ function delay(ms: number) { } export function defaultModCDPExtensionPath() { - if ( - typeof process === "object" && - process?.versions?.node && - import.meta.url.startsWith("file:") - ) { + if (typeof process === "object" && process?.versions?.node && import.meta.url.startsWith("file:")) { const relative_path = import.meta.url.includes("/dist/js/src/") ? "../../../../dist/extension.zip" : "../../../dist/extension.zip"; - return decodeURIComponent( - new URL(/* @vite-ignore */ relative_path, import.meta.url).pathname, - ); + return decodeURIComponent(new URL(/* @vite-ignore */ relative_path, import.meta.url).pathname); } return "../../../dist/extension.zip"; } @@ -101,14 +83,9 @@ function firstString(...values: unknown[]) { return null; } -export async function prepareUnpackedExtension( - extension_path: string, -): Promise { - const unpacked_path = fs.mkdtempSync( - path.join(os.tmpdir(), "modcdp-extension-"), - ); - const cleanup = async () => - fs.rmSync(unpacked_path, { recursive: true, force: true }); +export async function prepareUnpackedExtension(extension_path: string): Promise { + const unpacked_path = fs.mkdtempSync(path.join(os.tmpdir(), "modcdp-extension-")); + const cleanup = async () => fs.rmSync(unpacked_path, { recursive: true, force: true }); try { if (extension_path.endsWith(".zip")) { await extractZip(extension_path, unpacked_path); @@ -123,36 +100,21 @@ export async function prepareUnpackedExtension( } export async function extensionIdFromManifestKey(extension_path: string) { - const [crypto, fs, path] = await Promise.all([ - import("node:crypto"), - import("node:fs"), - import("node:path"), - ]); + const [crypto, fs, path] = await Promise.all([import("node:crypto"), import("node:fs"), import("node:path")]); const manifest_path = path.join(extension_path, "manifest.json"); if (!fs.existsSync(manifest_path)) return null; - const manifest = JSON.parse(fs.readFileSync(manifest_path, "utf8")) as Record< - string, - unknown - >; + const manifest = JSON.parse(fs.readFileSync(manifest_path, "utf8")) as Record; const key = firstString(manifest.key); if (!key) return null; - const digest = crypto - .createHash("sha256") - .update(Buffer.from(key, "base64")) - .digest() - .subarray(0, 16); + const digest = crypto.createHash("sha256").update(Buffer.from(key, "base64")).digest().subarray(0, 16); const alphabet = "abcdefghijklmnop"; - return [...digest] - .map((byte) => alphabet[byte >> 4] + alphabet[byte & 0x0f]) - .join(""); + return [...digest].map((byte) => alphabet[byte >> 4] + alphabet[byte & 0x0f]).join(""); } function extensionRoot(unpacked_path: string) { - if (fs.existsSync(path.join(unpacked_path, "manifest.json"))) - return unpacked_path; + if (fs.existsSync(path.join(unpacked_path, "manifest.json"))) return unpacked_path; const nested_path = path.join(unpacked_path, "extension"); - if (fs.existsSync(path.join(nested_path, "manifest.json"))) - return nested_path; + if (fs.existsSync(path.join(nested_path, "manifest.json"))) return nested_path; return unpacked_path; } @@ -171,9 +133,7 @@ async function extractZip(zip_path: string, destination: string) { normalized === ".." || normalized.startsWith("../") ) { - throw new Error( - `zip entry ${JSON.stringify(raw_name)} escapes extension extraction directory`, - ); + throw new Error(`zip entry ${JSON.stringify(raw_name)} escapes extension extraction directory`); } } execFileSync("unzip", ["-q", zip_path, "-d", destination]); @@ -198,16 +158,11 @@ export class ExtensionInjector { injector_require_service_worker_target: false, injector_service_worker_ready_expression: null, injector_cdp_send_timeout_ms: DEFAULT_CDP_SEND_TIMEOUT_MS, - injector_execution_context_timeout_ms: - DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, - injector_service_worker_probe_timeout_ms: - DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, - injector_service_worker_ready_timeout_ms: - DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, - injector_service_worker_poll_interval_ms: - DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, - injector_target_session_poll_interval_ms: - DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, + injector_execution_context_timeout_ms: DEFAULT_EXECUTION_CONTEXT_TIMEOUT_MS, + injector_service_worker_probe_timeout_ms: DEFAULT_SERVICE_WORKER_PROBE_TIMEOUT_MS, + injector_service_worker_ready_timeout_ms: DEFAULT_SERVICE_WORKER_READY_TIMEOUT_MS, + injector_service_worker_poll_interval_ms: DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, + injector_target_session_poll_interval_ms: DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, injector_browserbase_api_key: null, injector_browserbase_base_url: null, upstream_nativemessaging_host_name: null, @@ -222,13 +177,9 @@ export class ExtensionInjector { ...this.options, ...config, injector_service_worker_url_includes: - config.injector_service_worker_url_includes ?? - this.options.injector_service_worker_url_includes ?? - [], + config.injector_service_worker_url_includes ?? this.options.injector_service_worker_url_includes ?? [], injector_service_worker_url_suffixes: - config.injector_service_worker_url_suffixes ?? - this.options.injector_service_worker_url_suffixes ?? - [], + config.injector_service_worker_url_suffixes ?? this.options.injector_service_worker_url_suffixes ?? [], }; return this; } @@ -242,9 +193,7 @@ export class ExtensionInjector { } getTransportConfig(): UpstreamTransportConfig { - return this.options.injector_extension_id - ? { injector_extension_id: this.options.injector_extension_id } - : {}; + return this.options.injector_extension_id ? { injector_extension_id: this.options.injector_extension_id } : {}; } async prepare() {} @@ -272,17 +221,13 @@ export class ExtensionInjector { method: string, params: ProtocolParams = {}, session_id: string | null = null, - timeout_ms = this.options.injector_cdp_send_timeout_ms ?? - DEFAULT_CDP_SEND_TIMEOUT_MS, + timeout_ms = this.options.injector_cdp_send_timeout_ms ?? DEFAULT_CDP_SEND_TIMEOUT_MS, ) { let timeout: ReturnType | null = null; return Promise.race([ this.send(method, params, session_id), new Promise((_, reject) => { - timeout = setTimeout( - () => reject(new Error(`${method} timed out after ${timeout_ms}ms`)), - timeout_ms, - ); + timeout = setTimeout(() => reject(new Error(`${method} timed out after ${timeout_ms}ms`)), timeout_ms); }), ]).finally(() => { if (timeout != null) clearTimeout(timeout); @@ -293,40 +238,24 @@ export class ExtensionInjector { const deadline = Date.now() + timeout_ms; while (true) { const session_id = this.options.sessionIdForTarget?.(target_id); - if (typeof session_id === "string" && session_id.length > 0) - return session_id; + if (typeof session_id === "string" && session_id.length > 0) return session_id; if (Date.now() >= deadline) return null; - await delay( - this.options.injector_target_session_poll_interval_ms ?? - DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS, - ); + await delay(this.options.injector_target_session_poll_interval_ms ?? DEFAULT_TARGET_SESSION_POLL_INTERVAL_MS); } } - protected async ensureSessionIdForTarget( - target_id: string, - timeout_ms = 0, - allow_attach = false, - ) { + protected async ensureSessionIdForTarget(target_id: string, timeout_ms = 0, allow_attach = false) { const session_id = this.options.sessionIdForTarget?.(target_id); - if (typeof session_id === "string" && session_id.length > 0) - return session_id; + if (typeof session_id === "string" && session_id.length > 0) return session_id; if (allow_attach) { - const attached_session_id = - await this.options.attachToTarget?.(target_id); - if ( - typeof attached_session_id === "string" && - attached_session_id.length > 0 - ) - return attached_session_id; + const attached_session_id = await this.options.attachToTarget?.(target_id); + if (typeof attached_session_id === "string" && attached_session_id.length > 0) return attached_session_id; } return await this.sessionIdForTarget(target_id, timeout_ms); } protected async targetInfos() { - return TargetCommands["Target.getTargets"].result.parse( - await this.send("Target.getTargets"), - ).targetInfos; + return TargetCommands["Target.getTargets"].result.parse(await this.send("Target.getTargets")).targetInfos; } protected async probeTarget( @@ -335,11 +264,7 @@ export class ExtensionInjector { { allow_attach = false }: { allow_attach?: boolean } = {}, ): Promise { if (this.unusable_target_ids.has(target.targetId)) return null; - const session_id = await this.ensureSessionIdForTarget( - target.targetId, - session_timeout_ms, - allow_attach, - ); + const session_id = await this.ensureSessionIdForTarget(target.targetId, session_timeout_ms, allow_attach); if (session_id == null) return null; await this.sendWithTimeout("Runtime.enable", {}, session_id); const probe = RuntimeCommands["Runtime.evaluate"].result.parse( @@ -362,27 +287,20 @@ export class ExtensionInjector { }; } - protected async discoverReadyServiceWorker({ - matched_only = false, - }: { matched_only?: boolean } = {}) { + protected async discoverReadyServiceWorker({ matched_only = false }: { matched_only?: boolean } = {}) { const target_infos = await this.targetInfos(); if (this.options.injector_trust_service_worker_target) { - const trusted_target = target_infos.find((candidate) => - this.serviceWorkerTargetMatches(candidate), - ) as TargetInfo | undefined; + const trusted_target = target_infos.find((candidate) => this.serviceWorkerTargetMatches(candidate)) as + | TargetInfo + | undefined; if (trusted_target) { - const probed = await this.probeTarget( - trusted_target, - this.options.injector_service_worker_probe_timeout_ms, - { - allow_attach: true, - }, - ); + const probed = await this.probeTarget(trusted_target, this.options.injector_service_worker_probe_timeout_ms, { + allow_attach: true, + }); if (probed) return { ...probed, source: "trusted" }; } } - if (this.options.injector_trust_service_worker_target || matched_only) - return null; + if (this.options.injector_trust_service_worker_target || matched_only) return null; for (const candidate of target_infos) { if (candidate.type !== "service_worker") continue; if (!candidate.url.startsWith("chrome-extension://")) continue; @@ -409,35 +327,25 @@ export class ExtensionInjector { matched_only, }); if (discovered) return discovered; - await delay( - this.options.injector_service_worker_poll_interval_ms ?? - DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS, - ); + await delay(this.options.injector_service_worker_poll_interval_ms ?? DEFAULT_SERVICE_WORKER_POLL_INTERVAL_MS); } return null; } - protected serviceWorkerTargetMatches(candidate: { - type?: string; - url?: string; - }) { + protected serviceWorkerTargetMatches(candidate: { type?: string; url?: string }) { const url = candidate.url ?? ""; if (candidate.type !== "service_worker") return false; if (!url.startsWith("chrome-extension://")) return false; const has_extension_id = Boolean(this.options.injector_extension_id); if ( this.options.injector_extension_id && - !url.startsWith( - `chrome-extension://${this.options.injector_extension_id}/`, - ) + !url.startsWith(`chrome-extension://${this.options.injector_extension_id}/`) ) return false; const includes = this.options.injector_service_worker_url_includes ?? []; const suffixes = this.options.injector_service_worker_url_suffixes ?? []; - if (includes.length > 0 && !includes.every((part) => url.includes(part))) - return false; - if (suffixes.length > 0 && !suffixes.some((suffix) => url.endsWith(suffix))) - return false; + if (includes.length > 0 && !includes.every((part) => url.includes(part))) return false; + if (suffixes.length > 0 && !suffixes.some((suffix) => url.endsWith(suffix))) return false; return has_extension_id || includes.length > 0 || suffixes.length > 0; } } diff --git a/js/src/injector/LocalBrowserLaunchExtensionInjector.ts b/js/src/injector/LocalBrowserLaunchExtensionInjector.ts index 4c4ca15..b1ff853 100644 --- a/js/src/injector/LocalBrowserLaunchExtensionInjector.ts +++ b/js/src/injector/LocalBrowserLaunchExtensionInjector.ts @@ -12,8 +12,7 @@ export class LocalBrowserLaunchExtensionInjector extends ExtensionInjector { private cleanup: (() => Promise) | null = null; async prepare() { - const extension_path = - this.options.injector_extension_path ?? defaultModCDPExtensionPath(); + const extension_path = this.options.injector_extension_path ?? defaultModCDPExtensionPath(); if (this.unpacked_extension_path) { await super.prepare(); return; @@ -47,17 +46,13 @@ export class LocalBrowserLaunchExtensionInjector extends ExtensionInjector { private async resolveExtensionId() { if (this.extension_id) return this.extension_id; this.extension_id = - typeof this.options.injector_extension_id === "string" && - this.options.injector_extension_id.trim() + typeof this.options.injector_extension_id === "string" && this.options.injector_extension_id.trim() ? this.options.injector_extension_id.trim() : null; if (!this.extension_id && this.unpacked_extension_path) { - this.extension_id = await extensionIdFromManifestKey( - this.unpacked_extension_path, - ); + this.extension_id = await extensionIdFromManifestKey(this.unpacked_extension_path); } - if (this.extension_id) - this.options.injector_extension_id = this.extension_id; + if (this.extension_id) this.options.injector_extension_id = this.extension_id; return this.extension_id; } } diff --git a/js/src/launcher/LocalBrowserLauncher.ts b/js/src/launcher/LocalBrowserLauncher.ts index 22be07a..b31f9ce 100644 --- a/js/src/launcher/LocalBrowserLauncher.ts +++ b/js/src/launcher/LocalBrowserLauncher.ts @@ -16,9 +16,7 @@ import { } from "./BrowserLauncher.js"; function wildcardToRegExp(value: string) { - return new RegExp( - `^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`, - ); + return new RegExp(`^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`); } function expandGlob(pattern: string) { @@ -61,11 +59,7 @@ function newestFirst(candidates: string[]) { return [...new Set(candidates)].sort((a, b) => { const left = score(a); const right = score(b); - return ( - right.version - left.version || - right.mtime - left.mtime || - a.localeCompare(b) - ); + return right.version - left.version || right.mtime - left.mtime || a.localeCompare(b); }); } @@ -78,10 +72,7 @@ function chromeForTestingCandidates() { home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", ), - path.join( - home, - "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium", - ), + path.join(home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium"), path.join( home, "Library/Caches/puppeteer/chrome/mac*-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", @@ -93,80 +84,47 @@ function chromeForTestingCandidates() { process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), "ms-playwright/chromium-*/chrome-win*/chrome.exe", ), - path.join( - home, - ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe", - ), + path.join(home, ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe"), ] : [ - path.join( - home, - ".cache/ms-playwright/chromium-*/chrome-linux*/chrome", - ), + path.join(home, ".cache/ms-playwright/chromium-*/chrome-linux*/chrome"), "/opt/pw-browsers/chromium-*/chrome-linux*/chrome", - path.join( - home, - ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome", - ), + path.join(home, ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome"), ]; return newestFirst(patterns.flatMap(expandGlob)); } function candidatePaths() { const home = homedir(); - const programFiles = [ - process.env.PROGRAMFILES, - process.env["PROGRAMFILES(X86)"], - ].filter(Boolean) as string[]; + const programFiles = [process.env.PROGRAMFILES, process.env["PROGRAMFILES(X86)"]].filter(Boolean) as string[]; const canary = platform() === "darwin" - ? [ - "/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary", - ] + ? ["/Applications/Google Chrome Canary.app/Contents/MacOS/Google Chrome Canary"] : platform() === "win32" ? [ path.join( process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), "Google/Chrome SxS/Application/chrome.exe", ), - ...programFiles.map((base) => - path.join(base, "Google/Chrome SxS/Application/chrome.exe"), - ), + ...programFiles.map((base) => path.join(base, "Google/Chrome SxS/Application/chrome.exe")), ] - : [ - "/usr/bin/google-chrome-canary", - "/usr/bin/google-chrome-unstable", - "/opt/google/chrome-unstable/chrome", - ]; + : ["/usr/bin/google-chrome-canary", "/usr/bin/google-chrome-unstable", "/opt/google/chrome-unstable/chrome"]; const stock = platform() === "darwin" ? ["/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"] : platform() === "win32" ? [ - ...programFiles.map((base) => - path.join(base, "Google/Chrome/Application/chrome.exe"), - ), + ...programFiles.map((base) => path.join(base, "Google/Chrome/Application/chrome.exe")), path.join( process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), "Google/Chrome/Application/chrome.exe", ), ] - : [ - "/usr/bin/google-chrome-stable", - "/usr/bin/google-chrome", - "/opt/google/chrome/chrome", - ]; - const chromium = - platform() === "linux" - ? ["/usr/bin/chromium", "/usr/bin/chromium-browser"] - : []; - return [ - process.env.CHROME_PATH, - ...chromium, - ...canary, - ...chromeForTestingCandidates(), - ...stock, - ].filter((candidate): candidate is string => Boolean(candidate)); + : ["/usr/bin/google-chrome-stable", "/usr/bin/google-chrome", "/opt/google/chrome/chrome"]; + const chromium = platform() === "linux" ? ["/usr/bin/chromium", "/usr/bin/chromium-browser"] : []; + return [process.env.CHROME_PATH, ...chromium, ...canary, ...chromeForTestingCandidates(), ...stock].filter( + (candidate): candidate is string => Boolean(candidate), + ); } const DEFAULT_FLAGS = [ @@ -248,37 +206,22 @@ async function waitForPipeReady( const message = JSON.parse(raw); if (message.id !== readyId) continue; cleanup(); - if (message.error) - reject( - new Error( - message.error.message ?? "Browser.getVersion failed over pipe", - ), - ); + if (message.error) reject(new Error(message.error.message ?? "Browser.getVersion failed over pipe")); else resolve(); } }; const timeout = setTimeout(() => { cleanup(); - reject( - new Error( - `Chrome remote-debugging pipe did not respond within ${timeoutMs}ms`, - ), - ); + reject(new Error(`Chrome remote-debugging pipe did not respond within ${timeoutMs}ms`)); }, timeoutMs); pipe_read.on("data", onData); pipe_read.on("error", onError); pipe_write.on("error", onError); - pipe_write.write( - `${JSON.stringify({ id: readyId, method: "Browser.getVersion" })}\0`, - ); + pipe_write.write(`${JSON.stringify({ id: readyId, method: "Browser.getVersion" })}\0`); }); } -async function waitForCdpWebSocketUrl( - cdp_url: string, - timeout_ms: number, - poll_interval_ms: number, -) { +async function waitForCdpWebSocketUrl(cdp_url: string, timeout_ms: number, poll_interval_ms: number) { const deadline = Date.now() + timeout_ms; let lastError: unknown = null; while (Date.now() < deadline) { @@ -294,9 +237,7 @@ async function waitForCdpWebSocketUrl( `Chrome at ${cdp_url} did not expose a WebSocket CDP URL within ${timeout_ms}ms: ${lastError.message}`, ); } - throw new Error( - `Chrome at ${cdp_url} did not expose a WebSocket CDP URL within ${timeout_ms}ms`, - ); + throw new Error(`Chrome at ${cdp_url} did not expose a WebSocket CDP URL within ${timeout_ms}ms`); } async function readDevToolsActivePort(profile_dir: string) { @@ -311,8 +252,7 @@ async function readDevToolsActivePort(profile_dir: string) { const [rawPort, websocketPath] = body.trim().split(/\r?\n/); if (!rawPort || !websocketPath) return null; const port = Number(rawPort); - if (!Number.isInteger(port) || port <= 0) - throw new Error(`Invalid DevToolsActivePort port: ${rawPort}`); + if (!Number.isInteger(port) || port <= 0) throw new Error(`Invalid DevToolsActivePort port: ${rawPort}`); return { port, cdp_url: `http://127.0.0.1:${port}`, websocketPath }; } @@ -344,16 +284,12 @@ async function waitForBrowserSelectedCdpWebSocketUrl( `Chrome did not expose DevToolsActivePort from ${profile_dir} within ${timeout_ms}ms: ${lastError.message}`, ); } - throw new Error( - `Chrome did not expose DevToolsActivePort from ${profile_dir} within ${timeout_ms}ms`, - ); + throw new Error(`Chrome did not expose DevToolsActivePort from ${profile_dir} within ${timeout_ms}ms`); } export class LocalBrowserLauncher extends BrowserLauncher { static findChromeBinary(explicit?: string | null) { - const candidates = [explicit, ...candidatePaths()].filter( - (candidate): candidate is string => Boolean(candidate), - ); + const candidates = [explicit, ...candidatePaths()].filter((candidate): candidate is string => Boolean(candidate)); for (const candidate of candidates) { if (candidate && existsSync(candidate)) return candidate; } @@ -392,8 +328,7 @@ export class LocalBrowserLauncher extends BrowserLauncher { const usePipe = remote_debugging === "pipe"; const useLoopbackCdp = !usePipe || loopback_cdp || port != null; const usePort = useLoopbackCdp ? (port ?? 0) : null; - const profile_dir = - user_data_dir || (await mkdtemp(path.join(tmpdir(), "modcdp."))); + const profile_dir = user_data_dir || (await mkdtemp(path.join(tmpdir(), "modcdp."))); const flags = [ ...DEFAULT_FLAGS, headless ? "--headless=new" : null, @@ -408,9 +343,7 @@ export class LocalBrowserLauncher extends BrowserLauncher { "about:blank", ].filter(Boolean); - const useStdio = ( - usePipe ? ["ignore", "ignore", "ignore", "pipe", "pipe"] : "ignore" - ) as + const useStdio = (usePipe ? ["ignore", "ignore", "ignore", "pipe", "pipe"] : "ignore") as | "ignore" | "inherit" | "pipe" @@ -428,15 +361,12 @@ export class LocalBrowserLauncher extends BrowserLauncher { if (closed) return; closed = true; await terminateProcess(proc); - if (!user_data_dir || cleanup_user_data_dir) - await removeProfileDir(profile_dir); + if (!user_data_dir || cleanup_user_data_dir) await removeProfileDir(profile_dir); }; const assertChromeRunning = () => { if (spawnError) throw spawnError; if (proc.exitCode !== null || proc.signalCode !== null) { - throw new Error( - `Chrome exited before CDP became ready (exit=${proc.exitCode}, signal=${proc.signalCode}).`, - ); + throw new Error(`Chrome exited before CDP became ready (exit=${proc.exitCode}, signal=${proc.signalCode}).`); } }; @@ -445,9 +375,7 @@ export class LocalBrowserLauncher extends BrowserLauncher { const pipe_read = proc.stdio[4] as NodeJS.ReadableStream | null; if (!pipe_write || !pipe_read) { await close(); - throw new Error( - "Chrome remote-debugging pipe stdio handles were not created.", - ); + throw new Error("Chrome remote-debugging pipe stdio handles were not created."); } assertChromeRunning(); await waitForPipeReady(pipe_read, pipe_write, chrome_ready_timeout_ms); @@ -507,21 +435,16 @@ export class LocalBrowserLauncher extends BrowserLauncher { proc, port: activePort.port, cdp_url: version.webSocketDebuggerUrl ?? activePort.cdp_url, - loopback_cdp_url: - version.webSocketDebuggerUrl ?? activePort.cdp_url, + loopback_cdp_url: version.webSocketDebuggerUrl ?? activePort.cdp_url, profile_dir, close, }; return this.launched; } } catch {} - await new Promise((resolve) => - setTimeout(resolve, chrome_ready_poll_interval_ms), - ); + await new Promise((resolve) => setTimeout(resolve, chrome_ready_poll_interval_ms)); } await close(); - throw new Error( - `Chrome did not become ready within ${chrome_ready_timeout_ms}ms`, - ); + throw new Error(`Chrome did not become ready within ${chrome_ready_timeout_ms}ms`); } } diff --git a/js/src/server/ModCDPServer.ts b/js/src/server/ModCDPServer.ts index 7742856..6ceac32 100644 --- a/js/src/server/ModCDPServer.ts +++ b/js/src/server/ModCDPServer.ts @@ -7,10 +7,7 @@ // when Chrome refuses Extensions.loadUnpacked. import type { cdp } from "../types/generated/cdp.js"; -import { - commands as nativeCommandSchemas, - events as nativeEventSchemas, -} from "../types/generated/zod.js"; +import { commands as nativeCommandSchemas, events as nativeEventSchemas } from "../types/generated/zod.js"; import { normalizeModCDPPayloadSchema } from "../types/modcdp.js"; import type { CdpCommandMessage, @@ -53,9 +50,7 @@ type ModCDPGlobalScope = typeof globalThis & }; }; -export function installModCDPServer( - globalScope: ModCDPGlobalScope = globalThis as ModCDPGlobalScope, -) { +export function installModCDPServer(globalScope: ModCDPGlobalScope = globalThis as ModCDPGlobalScope) { const MODCDP_SERVER_VERSION = 2; const DEFAULT_CDP_SEND_TIMEOUT_MS = 10_000; const DEFAULT_LOOPBACK_EXECUTION_CONTEXT_TIMEOUT_MS = 10_000; @@ -86,9 +81,7 @@ export function installModCDPServer( const commandHandlers = new Map(); const eventBindings = new Map(); - const eventListeners = new Set< - (event: string, data: ProtocolPayload, cdpSessionId: string | null) => void - >(); + const eventListeners = new Set<(event: string, data: ProtocolPayload, cdpSessionId: string | null) => void>(); const middlewares: Record = { request: [], response: [], @@ -98,61 +91,35 @@ export function installModCDPServer( let runtime_types_promise: Promise | null = null; function nativeCommandSchema(method: string) { - return (nativeCommandSchemas as Record)[ - method - ]; + return (nativeCommandSchemas as Record)[method]; } function nativeEventSchema(eventName: string) { - return (nativeEventSchemas as Record)[ - eventName - ]; + return (nativeEventSchemas as Record)[eventName]; } - function commandParamsSchema( - method: string, - command: ModCDPCustomCommandRegistration | null, - ) { + function commandParamsSchema(method: string, command: ModCDPCustomCommandRegistration | null) { return ( - (command?.params_schema as ProtocolCommandSchema["params"] | null) ?? - nativeCommandSchema(method)?.params ?? - null + (command?.params_schema as ProtocolCommandSchema["params"] | null) ?? nativeCommandSchema(method)?.params ?? null ); } - function commandResultSchema( - method: string, - command: ModCDPCustomCommandRegistration | null, - ) { + function commandResultSchema(method: string, command: ModCDPCustomCommandRegistration | null) { return ( - (command?.result_schema as ProtocolCommandSchema["result"] | null) ?? - nativeCommandSchema(method)?.result ?? - null + (command?.result_schema as ProtocolCommandSchema["result"] | null) ?? nativeCommandSchema(method)?.result ?? null ); } - function eventPayloadSchema( - eventName: string, - event: ModCDPCustomEventRegistration | null, - ) { - return ( - (event?.event_schema as ProtocolEventSchema | null) ?? - nativeEventSchema(eventName) ?? - null - ); + function eventPayloadSchema(eventName: string, event: ModCDPCustomEventRegistration | null) { + return (event?.event_schema as ProtocolEventSchema | null) ?? nativeEventSchema(eventName) ?? null; } - async function publishEvent( - eventName: string, - payload: ProtocolPayload = {}, - cdpSessionId: string | null = null, - ) { + async function publishEvent(eventName: string, payload: ProtocolPayload = {}, cdpSessionId: string | null = null) { payload = await ModCDPServer.runMiddleware("event", eventName, payload, { cdpSessionId, event: { name: eventName, payload }, }); - if (payload === undefined) - return { event: eventName, emitted: false, reason: "middleware_dropped" }; + if (payload === undefined) return { event: eventName, emitted: false, reason: "middleware_dropped" }; const event = registryMatch(eventBindings, eventName); payload = eventPayloadSchema(eventName, event)?.parse(payload) ?? payload; @@ -252,10 +219,7 @@ export function installModCDPServer( const loopbackTargetSessions = new Map(); const loopbackSessionTargets = new Map(); const loopbackSessionContexts = new Map(); - const loopbackContextWaiters = new Map< - string, - Set<(contextId: number) => void> - >(); + const loopbackContextWaiters = new Map void>>(); const initializedLoopbackSockets = new WeakSet(); const loopbackPending = new Map< number, @@ -263,19 +227,16 @@ export function installModCDPServer( >(); let reverseBridgeSocket: WebSocket | null = null; let reverseBridgeUrl: string | null = null; - let reverseBridgeReconnectIntervalMs = - DEFAULT_REVERSE_BRIDGE_RECONNECT_INTERVAL_MS; + let reverseBridgeReconnectIntervalMs = DEFAULT_REVERSE_BRIDGE_RECONNECT_INTERVAL_MS; let reverseBridgeReconnectTimer: ReturnType | null = null; let nativeBridgePort: chrome.runtime.Port | null = null; let nativeBridgeHostName: string | null = null; - let nativeBridgeReconnectIntervalMs = - DEFAULT_NATIVE_BRIDGE_RECONNECT_INTERVAL_MS; + let nativeBridgeReconnectIntervalMs = DEFAULT_NATIVE_BRIDGE_RECONNECT_INTERVAL_MS; let nativeBridgeReconnectTimer: ReturnType | null = null; let nats_bridge_socket: WebSocket | null = null; let nats_bridge_url: string | null = null; let nats_bridge_subject_prefix = DEFAULT_NATS_BRIDGE_SUBJECT_PREFIX; - let nats_bridge_reconnect_interval_ms = - DEFAULT_NATS_BRIDGE_RECONNECT_INTERVAL_MS; + let nats_bridge_reconnect_interval_ms = DEFAULT_NATS_BRIDGE_RECONNECT_INTERVAL_MS; let nats_bridge_reconnect_timer: ReturnType | null = null; let nats_bridge_buffer = ""; let selfDebuggee: chrome.debugger.Debuggee | null = null; @@ -292,8 +253,7 @@ export function installModCDPServer( for (const [pattern, value] of registry) { if (!pattern.endsWith(".*")) continue; const prefix = pattern.slice(0, -1); - if (!name.startsWith(prefix) || prefix.length <= matchPrefixLength) - continue; + if (!name.startsWith(prefix) || prefix.length <= matchPrefixLength) continue; match = value; matchPrefixLength = prefix.length; } @@ -323,20 +283,13 @@ export function installModCDPServer( const name = value?.cdp_command_name ?? value?.cdp_event_name ?? - (typeof meta?.cdp_command_name === "string" - ? meta.cdp_command_name - : undefined) ?? - (typeof meta?.cdp_event_name === "string" - ? meta.cdp_event_name - : undefined) ?? + (typeof meta?.cdp_command_name === "string" ? meta.cdp_command_name : undefined) ?? + (typeof meta?.cdp_event_name === "string" ? meta.cdp_event_name : undefined) ?? value?.id ?? (typeof meta?.id === "string" ? meta.id : undefined) ?? (typeof meta?.name === "string" ? meta.name : undefined) ?? value?.name; - if (typeof name !== "string" || !name) - throw new Error( - "Expected a CDP name string or a named CDP schema/alias.", - ); + if (typeof name !== "string" || !name) throw new Error("Expected a CDP name string or a named CDP schema/alias."); return name; } @@ -345,43 +298,28 @@ export function installModCDPServer( } function compactDebuggee(input: { - [Key in keyof chrome.debugger.Debuggee]?: - | chrome.debugger.Debuggee[Key] - | null; + [Key in keyof chrome.debugger.Debuggee]?: chrome.debugger.Debuggee[Key] | null; }): chrome.debugger.Debuggee { return { ...(typeof input.tabId === "number" ? { tabId: input.tabId } : {}), - ...(typeof input.targetId === "string" - ? { targetId: input.targetId } - : {}), - ...(typeof input.extensionId === "string" - ? { extensionId: input.extensionId } - : {}), + ...(typeof input.targetId === "string" ? { targetId: input.targetId } : {}), + ...(typeof input.extensionId === "string" ? { extensionId: input.extensionId } : {}), }; } async function resolveCDPEndpoint(endpoint: string | null) { if (!endpoint || /^wss?:\/\//i.test(endpoint)) return endpoint; if (!/^https?:\/\//i.test(endpoint)) { - throw new Error( - `loopback_cdp_url must be a ws://, wss://, http://, or https:// CDP endpoint, got ${endpoint}.`, - ); + throw new Error(`loopback_cdp_url must be a ws://, wss://, http://, or https:// CDP endpoint, got ${endpoint}.`); } - const { webSocketDebuggerUrl } = await fetch( - `${endpoint}/json/version`, - ).then((r) => r.json()); - if (!webSocketDebuggerUrl) - throw new Error( - `loopback_cdp_url HTTP discovery returned no webSocketDebuggerUrl.`, - ); + const { webSocketDebuggerUrl } = await fetch(`${endpoint}/json/version`).then((r) => r.json()); + if (!webSocketDebuggerUrl) throw new Error(`loopback_cdp_url HTTP discovery returned no webSocketDebuggerUrl.`); return webSocketDebuggerUrl; } async function openCDPSocket(endpoint: string): Promise { if (!/^wss?:\/\//i.test(endpoint)) { - throw new Error( - `loopback_cdp_url must be a ws:// or wss:// CDP websocket URL, got ${endpoint}.`, - ); + throw new Error(`loopback_cdp_url must be a ws:// or wss:// CDP websocket URL, got ${endpoint}.`); } return new Promise((resolve, reject) => { const w = new WebSocket(endpoint); @@ -422,11 +360,7 @@ export function installModCDPServer( }, { once: true }, ); - w.addEventListener( - "close", - (event) => fail(new Error(describe("CDP socket closed", event))), - { once: true }, - ); + w.addEventListener("close", (event) => fail(new Error(describe("CDP socket closed", event))), { once: true }); }); } @@ -457,10 +391,7 @@ export function installModCDPServer( } const socket = reverseBridgeSocket; reverseBridgeSocket = null; - if ( - socket?.readyState === WebSocket.OPEN || - socket?.readyState === WebSocket.CONNECTING - ) { + if (socket?.readyState === WebSocket.OPEN || socket?.readyState === WebSocket.CONNECTING) { socket.close(1000, reason); } return { upstream_reversews_url, stopped: true, reason }; @@ -488,19 +419,14 @@ export function installModCDPServer( let message: CdpCommandMessage; try { const parsed = JSON.parse(typeof data === "string" ? data : String(data)); - if (typeof parsed?.id !== "number" || typeof parsed?.method !== "string") - return; + if (typeof parsed?.id !== "number" || typeof parsed?.method !== "string") return; message = parsed as CdpCommandMessage; } catch { return; } try { - const result = await ModCDPServer.handleCommand( - message.method, - message.params ?? {}, - message.sessionId ?? null, - ); + const result = await ModCDPServer.handleCommand(message.method, message.params ?? {}, message.sessionId ?? null); ws.send(JSON.stringify({ id: message.id, result })); } catch (error) { ws.send( @@ -515,10 +441,7 @@ export function installModCDPServer( } } - async function handleNativeBridgeMessage( - port: chrome.runtime.Port, - data: unknown, - ) { + async function handleNativeBridgeMessage(port: chrome.runtime.Port, data: unknown) { let message: CdpCommandMessage; try { if ( @@ -532,11 +455,7 @@ export function installModCDPServer( } try { - const result = await ModCDPServer.handleCommand( - message.method, - message.params ?? {}, - message.sessionId ?? null, - ); + const result = await ModCDPServer.handleCommand(message.method, message.params ?? {}, message.sessionId ?? null); port.postMessage({ id: message.id, result }); } catch (error) { port.postMessage({ @@ -556,10 +475,7 @@ export function installModCDPServer( } catch { return; } - const record = - parsed && typeof parsed === "object" - ? (parsed as Record) - : null; + const record = parsed && typeof parsed === "object" ? (parsed as Record) : null; if (record?.type === "modcdp.nats.hello") { publishNats(`${nats_bridge_subject_prefix}.browser_to_client`, { type: "modcdp.nats.hello", @@ -569,8 +485,7 @@ export function installModCDPServer( }); return; } - const candidate = - record?.type === "modcdp.nats.message" ? record.message : parsed; + const candidate = record?.type === "modcdp.nats.message" ? record.message : parsed; if ( !candidate || typeof candidate !== "object" || @@ -580,11 +495,7 @@ export function installModCDPServer( return; const message = candidate as CdpCommandMessage; try { - const result = await ModCDPServer.handleCommand( - message.method, - message.params ?? {}, - message.sessionId ?? null, - ); + const result = await ModCDPServer.handleCommand(message.method, message.params ?? {}, message.sessionId ?? null); publishNats(`${nats_bridge_subject_prefix}.browser_to_client`, { type: "modcdp.nats.message", message: { id: message.id, result }, @@ -651,8 +562,7 @@ export function installModCDPServer( reason: "native_messaging_unavailable", }; } - if (nativeBridgePort) - return { upstream_nativemessaging_host_name: hostName, connected: true }; + if (nativeBridgePort) return { upstream_nativemessaging_host_name: hostName, connected: true }; try { ModCDPServer.native_bridge_attempts += 1; ModCDPServer.native_bridge_last_error = null; @@ -673,8 +583,7 @@ export function installModCDPServer( if (nativeBridgePort === port) nativeBridgePort = null; ModCDPServer.native_bridge_connected = false; ModCDPServer.native_bridge_last_error = - chromeApi.runtime.lastError?.message ?? - "Native messaging port disconnected."; + chromeApi.runtime.lastError?.message ?? "Native messaging port disconnected."; scheduleNativeBridgeReconnect(nativeBridgeReconnectIntervalMs); }); return { upstream_nativemessaging_host_name: hostName, connected: true }; @@ -693,14 +602,9 @@ export function installModCDPServer( async function connectNatsBridge(endpoint: string) { if (!/^wss?:\/\//i.test(endpoint)) { - throw new Error( - `nats bridge endpoint must be a ws:// or wss:// URL for extension transport, got ${endpoint}.`, - ); + throw new Error(`nats bridge endpoint must be a ws:// or wss:// URL for extension transport, got ${endpoint}.`); } - if ( - nats_bridge_socket?.readyState === WebSocket.OPEN || - nats_bridge_socket?.readyState === WebSocket.CONNECTING - ) { + if (nats_bridge_socket?.readyState === WebSocket.OPEN || nats_bridge_socket?.readyState === WebSocket.CONNECTING) { return { upstream_nats_url: endpoint, upstream_nats_subject_prefix: nats_bridge_subject_prefix, @@ -740,25 +644,19 @@ export function installModCDPServer( } function writeNats(data: string) { - if (nats_bridge_socket?.readyState === WebSocket.OPEN) - nats_bridge_socket.send(data); + if (nats_bridge_socket?.readyState === WebSocket.OPEN) nats_bridge_socket.send(data); } function publishNats(subject: string, message: unknown) { const body = JSON.stringify(message); - writeNats( - `PUB ${subject} ${new TextEncoder().encode(body).byteLength}\r\n${body}\r\n`, - ); + writeNats(`PUB ${subject} ${new TextEncoder().encode(body).byteLength}\r\n${body}\r\n`); } async function readNatsWebSocketData(data: unknown) { if (typeof data === "string") nats_bridge_buffer += data; - else if (data instanceof ArrayBuffer) - nats_bridge_buffer += new TextDecoder().decode(data); - else if (ArrayBuffer.isView(data)) - nats_bridge_buffer += new TextDecoder().decode(data); - else if (typeof Blob !== "undefined" && data instanceof Blob) - nats_bridge_buffer += await data.text(); + else if (data instanceof ArrayBuffer) nats_bridge_buffer += new TextDecoder().decode(data); + else if (ArrayBuffer.isView(data)) nats_bridge_buffer += new TextDecoder().decode(data); + else if (typeof Blob !== "undefined" && data instanceof Blob) nats_bridge_buffer += await data.text(); else return; nats_bridge_buffer = consumeNatsProtocol(nats_bridge_buffer); } @@ -774,8 +672,7 @@ export function installModCDPServer( const size = Number(parts[parts.length - 1]); const payloadStart = lineEnd + 2; const payloadEnd = payloadStart + size; - if (!Number.isInteger(size) || buffer.length < payloadEnd + 2) - return buffer; + if (!Number.isInteger(size) || buffer.length < payloadEnd + 2) return buffer; const payload = buffer.slice(payloadStart, payloadEnd); buffer = buffer.slice(payloadEnd + 2); void handleNatsBridgePayload(payload); @@ -815,28 +712,17 @@ export function installModCDPServer( if (selfDebuggee) return selfDebuggee; const chromeApi = globalScope.chrome; if (!chromeApi?.debugger?.getTargets || !chromeApi?.debugger?.attach) { - throw new Error( - "chrome.debugger is unavailable for reverse expression evaluation.", - ); + throw new Error("chrome.debugger is unavailable for reverse expression evaluation."); } const serviceWorkerUrl = currentServiceWorkerUrl(); const targets = await chromeApi.debugger.getTargets(); - const target = targets.find( - (candidate) => candidate.url === serviceWorkerUrl, - ); - if (!target?.id) - throw new Error( - `Could not find ModCDP service worker debugger target ${serviceWorkerUrl}.`, - ); + const target = targets.find((candidate) => candidate.url === serviceWorkerUrl); + if (!target?.id) throw new Error(`Could not find ModCDP service worker debugger target ${serviceWorkerUrl}.`); const debuggee = { targetId: target.id }; await new Promise((resolve, reject) => chromeApi.debugger.attach(debuggee, "1.3", () => { const error = chromeApi.runtime.lastError; - if ( - !error || - error.message?.includes("Another debugger is already attached") - ) - resolve(); + if (!error || error.message?.includes("Another debugger is already attached")) resolve(); else reject(new Error(error.message)); }), ); @@ -849,8 +735,7 @@ export function installModCDPServer( const manifest = chromeApi?.runtime?.getManifest?.(); const service_worker = manifest && typeof manifest === "object" && "background" in manifest - ? (manifest.background as { service_worker?: unknown } | undefined) - ?.service_worker + ? (manifest.background as { service_worker?: unknown } | undefined)?.service_worker : null; const service_worker_path = typeof service_worker === "string" && service_worker.length > 0 @@ -868,9 +753,7 @@ export function installModCDPServer( })) as cdp.types.ts.Runtime.EvaluateResult; if (result.exceptionDetails) { const ex = result.exceptionDetails; - throw new Error( - ex.exception?.description || ex.text || "Runtime evaluation failed", - ); + throw new Error(ex.exception?.description || ex.text || "Runtime evaluation failed"); } return (result.result?.value ?? {}) as ProtocolResult; } @@ -915,13 +798,10 @@ export function installModCDPServer( const method = typeof msg.method === "string" ? msg.method : null; if (!method) return; const payload = - msg.params && - typeof msg.params === "object" && - !Array.isArray(msg.params) + msg.params && typeof msg.params === "object" && !Array.isArray(msg.params) ? (msg.params as ProtocolPayload) : {}; - const cdpSessionId = - typeof msg.sessionId === "string" ? msg.sessionId : null; + const cdpSessionId = typeof msg.sessionId === "string" ? msg.sessionId : null; const payloadRecord = payload as Record; const targetInfo = payloadRecord.targetInfo && @@ -929,48 +809,27 @@ export function installModCDPServer( !Array.isArray(payloadRecord.targetInfo) ? (payloadRecord.targetInfo as Record) : null; - const attachedSessionId = - typeof payloadRecord.sessionId === "string" - ? payloadRecord.sessionId - : null; - const attachedTargetId = - typeof targetInfo?.targetId === "string" - ? targetInfo.targetId - : null; - if ( - method === "Target.attachedToTarget" && - attachedSessionId != null && - attachedTargetId != null - ) { + const attachedSessionId = typeof payloadRecord.sessionId === "string" ? payloadRecord.sessionId : null; + const attachedTargetId = typeof targetInfo?.targetId === "string" ? targetInfo.targetId : null; + if (method === "Target.attachedToTarget" && attachedSessionId != null && attachedTargetId != null) { loopbackTargetSessions.set(attachedTargetId, attachedSessionId); loopbackSessionTargets.set(attachedSessionId, attachedTargetId); } else if (method === "Target.detachedFromTarget") { const detachedSessionId = - typeof payloadRecord.sessionId === "string" - ? payloadRecord.sessionId - : cdpSessionId; + typeof payloadRecord.sessionId === "string" ? payloadRecord.sessionId : cdpSessionId; const detachedTargetId = typeof payloadRecord.targetId === "string" ? payloadRecord.targetId : detachedSessionId == null ? null : (loopbackSessionTargets.get(detachedSessionId) ?? null); - if (detachedTargetId != null) - loopbackTargetSessions.delete(detachedTargetId); - if (detachedSessionId != null) - loopbackSessionTargets.delete(detachedSessionId); - if (detachedSessionId != null) - loopbackSessionContexts.delete(detachedSessionId); - } else if ( - method === "Runtime.executionContextCreated" && - cdpSessionId != null - ) { + if (detachedTargetId != null) loopbackTargetSessions.delete(detachedTargetId); + if (detachedSessionId != null) loopbackSessionTargets.delete(detachedSessionId); + if (detachedSessionId != null) loopbackSessionContexts.delete(detachedSessionId); + } else if (method === "Runtime.executionContextCreated" && cdpSessionId != null) { const context = payloadRecord.context; const contextId = - context && - typeof context === "object" && - "id" in context && - typeof context.id === "number" + context && typeof context === "object" && "id" in context && typeof context.id === "number" ? context.id : null; if (contextId != null) { @@ -988,34 +847,19 @@ export function installModCDPServer( attachedSessionId != null && (targetInfo?.type === "page" || targetInfo?.type === "iframe") ) { - await ModCDPServer.handleCommand( - "Page.enable", - {}, - attachedSessionId, - ).catch((error) => - console.error( - "[ModCDPServer] Page.enable failed for attached target", - error, - ), + await ModCDPServer.handleCommand("Page.enable", {}, attachedSessionId).catch((error) => + console.error("[ModCDPServer] Page.enable failed for attached target", error), ); await ModCDPServer.handleCommand( "Page.setLifecycleEventsEnabled", { enabled: true }, attachedSessionId, ).catch((error) => - console.error( - "[ModCDPServer] Page.setLifecycleEventsEnabled failed for attached target", - error, - ), + console.error("[ModCDPServer] Page.setLifecycleEventsEnabled failed for attached target", error), ); } await publishEvent(method, payload, cdpSessionId); - })().catch((error) => - console.error( - "[ModCDPServer] loopback event listener failed", - error, - ), - ); + })().catch((error) => console.error("[ModCDPServer] loopback event listener failed", error)); return; } const pending = loopbackPending.get(id); @@ -1025,16 +869,14 @@ export function installModCDPServer( else pending.resolve(msg.result || {}); }); ws.addEventListener("error", () => { - if (loopbackSockets.get(endpoint) === ws) - loopbackSockets.delete(endpoint); + if (loopbackSockets.get(endpoint) === ws) loopbackSockets.delete(endpoint); loopbackTargetSessions.clear(); loopbackSessionTargets.clear(); loopbackSessionContexts.clear(); rejectLoopbackPending(new Error(`CDP socket error ${endpoint}`)); }); ws.addEventListener("close", (event) => { - if (loopbackSockets.get(endpoint) === ws) - loopbackSockets.delete(endpoint); + if (loopbackSockets.get(endpoint) === ws) loopbackSockets.delete(endpoint); loopbackTargetSessions.clear(); loopbackSessionTargets.clear(); loopbackSessionContexts.clear(); @@ -1052,13 +894,8 @@ export function installModCDPServer( return nextSocket; } - async function callLoopbackWS( - method: string, - params: ProtocolParams = {}, - sessionId: string | null = null, - ) { - if (!ModCDPServer.loopback_cdp_url) - throw new Error(`No loopback_cdp_url configured for ${method}.`); + async function callLoopbackWS(method: string, params: ProtocolParams = {}, sessionId: string | null = null) { + if (!ModCDPServer.loopback_cdp_url) throw new Error(`No loopback_cdp_url configured for ${method}.`); const ws = await loopbackWS(ModCDPServer.loopback_cdp_url); const id = nextLoopbackId++; const message: { @@ -1076,11 +913,7 @@ export function installModCDPServer( return new Promise((resolve, reject) => { const timeout = setTimeout(() => { if (!loopbackPending.delete(id)) return; - reject( - new Error( - `${method} timed out after ${ModCDPServer.cdp_send_timeout_ms}ms`, - ), - ); + reject(new Error(`${method} timed out after ${ModCDPServer.cdp_send_timeout_ms}ms`)); }, ModCDPServer.cdp_send_timeout_ms); loopbackPending.set(id, { resolve: (value) => { @@ -1115,11 +948,7 @@ export function installModCDPServer( const waiters = loopbackContextWaiters.get(sessionId); waiters?.delete(complete); if (waiters?.size === 0) loopbackContextWaiters.delete(sessionId); - reject( - new Error( - `Timed out waiting for Runtime.executionContextCreated for session ${sessionId}.`, - ), - ); + reject(new Error(`Timed out waiting for Runtime.executionContextCreated for session ${sessionId}.`)); }, timeoutMs); const complete = (contextId: number) => { clearTimeout(timeout); @@ -1134,8 +963,7 @@ export function installModCDPServer( async function ensureOffscreenKeepAlive() { const chromeApi = globalScope.chrome; const offscreen = chromeApi?.offscreen; - if (!offscreen || !chromeApi?.runtime?.getURL) - return { started: false, reason: "offscreen_unavailable" }; + if (!offscreen || !chromeApi?.runtime?.getURL) return { started: false, reason: "offscreen_unavailable" }; const offscreenUrl = chromeApi.runtime.getURL(offscreenKeepAlivePath); try { @@ -1151,8 +979,7 @@ export function installModCDPServer( .createDocument({ url: offscreenKeepAlivePath, reasons: ["BLOBS"], - justification: - "Keep ModCDP service worker active while CDP clients route commands through it.", + justification: "Keep ModCDP service worker active while CDP clients route commands through it.", }) .finally(() => { creatingOffscreenKeepAlive = null; @@ -1173,17 +1000,11 @@ export function installModCDPServer( native_bridge_last_error: null as string | null, native_bridge_connected: false, cdp_send_timeout_ms: DEFAULT_CDP_SEND_TIMEOUT_MS, - loopback_execution_context_timeout_ms: - DEFAULT_LOOPBACK_EXECUTION_CONTEXT_TIMEOUT_MS, - ws_connect_error_settle_timeout_ms: - DEFAULT_WS_CONNECT_ERROR_SETTLE_TIMEOUT_MS, + loopback_execution_context_timeout_ms: DEFAULT_LOOPBACK_EXECUTION_CONTEXT_TIMEOUT_MS, + ws_connect_error_settle_timeout_ms: DEFAULT_WS_CONNECT_ERROR_SETTLE_TIMEOUT_MS, types: null as (typeof import("../types/generated/zod.js"))["types"] | null, - commands: null as - | (typeof import("../types/generated/zod.js"))["commands"] - | null, - events: null as - | (typeof import("../types/generated/zod.js"))["events"] - | null, + commands: null as (typeof import("../types/generated/zod.js"))["commands"] | null, + events: null as (typeof import("../types/generated/zod.js"))["events"] | null, startOffscreenKeepAlive, startReverseBridge( endpoint: string, @@ -1194,9 +1015,7 @@ export function installModCDPServer( } = {}, ) { if (!/^wss?:\/\//i.test(endpoint)) { - throw new Error( - `reverse proxy endpoint must be a ws:// or wss:// URL, got ${endpoint}.`, - ); + throw new Error(`reverse proxy endpoint must be a ws:// or wss:// URL, got ${endpoint}.`); } reverseBridgeUrl = endpoint; reverseBridgeReconnectIntervalMs = reconnect_interval_ms; @@ -1232,13 +1051,8 @@ export function installModCDPServer( reconnect_interval_ms?: number; } = {}, ) { - if ( - !upstream_nats_subject_prefix || - /[\s*>]/.test(upstream_nats_subject_prefix) - ) - throw new Error( - `Invalid NATS subject prefix ${upstream_nats_subject_prefix}`, - ); + if (!upstream_nats_subject_prefix || /[\s*>]/.test(upstream_nats_subject_prefix)) + throw new Error(`Invalid NATS subject prefix ${upstream_nats_subject_prefix}`); nats_bridge_url = endpoint; nats_bridge_subject_prefix = upstream_nats_subject_prefix; nats_bridge_reconnect_interval_ms = reconnect_interval_ms; @@ -1255,14 +1069,12 @@ export function installModCDPServer( ensureOffscreenKeepAlive, async loadTypes() { - runtime_types_promise ??= import("../types/generated/zod.js").then( - (module) => { - this.types = module.types; - this.commands = module.commands; - this.events = module.events; - return module.types; - }, - ); + runtime_types_promise ??= import("../types/generated/zod.js").then((module) => { + this.types = module.types; + this.commands = module.commands; + this.events = module.events; + return module.types; + }); return runtime_types_promise; }, @@ -1274,28 +1086,18 @@ export function installModCDPServer( server_routes, server_browser_token = this.browser_token, server_cdp_send_timeout_ms = this.cdp_send_timeout_ms, - server_loopback_execution_context_timeout_ms = this - .loopback_execution_context_timeout_ms, - server_ws_connect_error_settle_timeout_ms = this - .ws_connect_error_settle_timeout_ms, + server_loopback_execution_context_timeout_ms = this.loopback_execution_context_timeout_ms, + server_ws_connect_error_settle_timeout_ms = this.ws_connect_error_settle_timeout_ms, } = server; - const { - custom_commands = [], - custom_events = [], - custom_middlewares = [], - } = params; + const { custom_commands = [], custom_events = [], custom_middlewares = [] } = params; this.loopback_cdp_url = await resolveCDPEndpoint(server_loopback_cdp_url); this.browser_token = server_browser_token; this.cdp_send_timeout_ms = server_cdp_send_timeout_ms; - this.loopback_execution_context_timeout_ms = - server_loopback_execution_context_timeout_ms; - this.ws_connect_error_settle_timeout_ms = - server_ws_connect_error_settle_timeout_ms; + this.loopback_execution_context_timeout_ms = server_loopback_execution_context_timeout_ms; + this.ws_connect_error_settle_timeout_ms = server_ws_connect_error_settle_timeout_ms; if (upstream.upstream_mode === "nats" && upstream.upstream_nats_url) { this.startNatsBridge(upstream.upstream_nats_url, { - upstream_nats_subject_prefix: - upstream.upstream_nats_subject_prefix ?? - DEFAULT_NATS_BRIDGE_SUBJECT_PREFIX, + upstream_nats_subject_prefix: upstream.upstream_nats_subject_prefix ?? DEFAULT_NATS_BRIDGE_SUBJECT_PREFIX, }); } if (server_routes) this.routes = { ...defaultRoutes, ...server_routes }; @@ -1303,12 +1105,9 @@ export function installModCDPServer( this.routes = { ...defaultRoutes }; await this.discoverLoopbackCDP(); } - for (const command of custom_commands) - this.addCustomCommand(command as ModCDPCustomCommandRegistration); - for (const event of custom_events) - this.addCustomEvent(event as ModCDPCustomEventRegistration); - for (const middleware of custom_middlewares) - this.addMiddleware(middleware as ModCDPMiddlewareRegistration); + for (const command of custom_commands) this.addCustomCommand(command as ModCDPCustomCommandRegistration); + for (const event of custom_events) this.addCustomEvent(event as ModCDPCustomEventRegistration); + for (const middleware of custom_middlewares) this.addMiddleware(middleware as ModCDPMiddlewareRegistration); await initializeLoopbackCDP(); return { loopback_cdp_url: this.loopback_cdp_url, routes: this.routes }; }, @@ -1321,14 +1120,9 @@ export function installModCDPServer( handler, }: ModCDPCustomCommandRegistration) { name = normalizeModCDPName(name); - if (!/^[^.]+\.[^.]+$/.test(name)) - throw new Error("name must be in Domain.method form."); + if (!/^[^.]+\.[^.]+$/.test(name)) throw new Error("name must be in Domain.method form."); if (typeof handler !== "function" && typeof expression === "string") { - handler = async ( - params: ProtocolParams = {}, - cdpSessionId: string | null = null, - method: string = name, - ) => { + handler = async (params: ProtocolParams = {}, cdpSessionId: string | null = null, method: string = name) => { return await evaluateUserExpression({ expression, params, @@ -1337,10 +1131,7 @@ export function installModCDPServer( }); }; } - if (typeof handler !== "function") - throw new Error( - `Custom command ${name} was registered without a handler.`, - ); + if (typeof handler !== "function") throw new Error(`Custom command ${name} was registered without a handler.`); commandHandlers.set(name, { name, handler, @@ -1351,13 +1142,9 @@ export function installModCDPServer( return { name, registered: true }; }, - addCustomEvent({ - name, - event_schema = null, - }: ModCDPCustomEventRegistration) { + addCustomEvent({ name, event_schema = null }: ModCDPCustomEventRegistration) { name = normalizeModCDPName(name); - if (!/^[^.]+\.[^.]+$/.test(name)) - throw new Error("name must be in Domain.event form."); + if (!/^[^.]+\.[^.]+$/.test(name)) throw new Error("name must be in Domain.event form."); eventBindings.set(name, { name, event_schema: normalizeModCDPPayloadSchema(event_schema), @@ -1365,42 +1152,20 @@ export function installModCDPServer( return { name, registered: true }; }, - addEventListener( - listener: ( - event: string, - data: ProtocolPayload, - cdpSessionId: string | null, - ) => void, - ) { + addEventListener(listener: (event: string, data: ProtocolPayload, cdpSessionId: string | null) => void) { eventListeners.add(listener); return { remove: () => eventListeners.delete(listener) }; }, - addMiddleware({ - name = "*", - phase, - expression = null, - handler, - }: ModCDPMiddlewareRegistration) { + addMiddleware({ name = "*", phase, expression = null, handler }: ModCDPMiddlewareRegistration) { name = normalizeModCDPName(name); if (!["request", "response", "event"].includes(phase)) throw new Error("phase must be request, response, or event."); - if (name !== "*" && (!name || !name.includes("."))) - throw new Error("name must be '*' or Domain.name form."); + if (name !== "*" && (!name || !name.includes("."))) throw new Error("name must be '*' or Domain.name form."); if (typeof handler !== "function" && typeof expression === "string") { - handler = async ( - payload: ProtocolPayload, - next: unknown, - context: ProtocolPayload = {}, - ) => { - const context_object = - context && typeof context === "object" - ? (context as Record) - : {}; - const cdpSessionId = - typeof context_object.cdpSessionId === "string" - ? context_object.cdpSessionId - : null; + handler = async (payload: ProtocolPayload, next: unknown, context: ProtocolPayload = {}) => { + const context_object = context && typeof context === "object" ? (context as Record) : {}; + const cdpSessionId = typeof context_object.cdpSessionId === "string" ? context_object.cdpSessionId : null; const result = (await evaluateInSelf(` (async () => { const payload = ${JSON.stringify(payload ?? {})}; @@ -1413,16 +1178,11 @@ export function installModCDPServer( return await handler(payload, next, context); })() `)) as Record; - if ( - result?.__ModCDP_middleware_next__ === true && - typeof next === "function" - ) { + if (result?.__ModCDP_middleware_next__ === true && typeof next === "function") { const nextResult = await next(result.value); const { __ModCDP_middleware_next__, value, ...overrides } = result; if (Object.keys(overrides).length === 0) return nextResult; - return nextResult != null && - typeof nextResult === "object" && - !Array.isArray(nextResult) + return nextResult != null && typeof nextResult === "object" && !Array.isArray(nextResult) ? { ...(nextResult as Record), ...overrides } : overrides; } @@ -1430,35 +1190,23 @@ export function installModCDPServer( }; } if (typeof handler !== "function") { - throw new Error( - `Middleware ${name}:${phase} was registered without a handler.`, - ); + throw new Error(`Middleware ${name}:${phase} was registered without a handler.`); } middlewares[phase].push({ name, phase, expression, handler }); return { name, phase, registered: true }; }, - async runMiddleware( - phase: MiddlewarePhase, - name: string, - payload: ProtocolPayload, - context: ProtocolPayload = {}, - ) { + async runMiddleware(phase: MiddlewarePhase, name: string, payload: ProtocolPayload, context: ProtocolPayload = {}) { const matching = (middlewares[phase] || []).filter( (middleware) => middleware.name === "*" || middleware.name === name, ); - const dispatch = async ( - index: number, - value: ProtocolPayload, - ): Promise => { + const dispatch = async (index: number, value: ProtocolPayload): Promise => { const middleware = matching[index]; if (!middleware) return value; let nextCalled = false; const next = async (nextValue = value) => { if (nextCalled) - throw new Error( - `Middleware ${middleware.name}:${middleware.phase} called next() more than once.`, - ); + throw new Error(`Middleware ${middleware.name}:${middleware.phase} called next() more than once.`); nextCalled = true; return dispatch(index + 1, nextValue); }; @@ -1468,20 +1216,10 @@ export function installModCDPServer( return dispatch(0, payload); }, - async handleCommand( - method: string, - params: ProtocolParams = {}, - cdpSessionId: string | null = null, - ) { + async handleCommand(method: string, params: ProtocolParams = {}, cdpSessionId: string | null = null) { const request = { method, params, cdpSessionId }; - const middlewareParams = await this.runMiddleware( - "request", - method, - params, - { cdpSessionId, request }, - ); - if (middlewareParams == null) - throw new Error(`Request middleware for ${method} returned no params.`); + const middlewareParams = await this.runMiddleware("request", method, params, { cdpSessionId, request }); + if (middlewareParams == null) throw new Error(`Request middleware for ${method} returned no params.`); params = middlewareParams as ProtocolParams; const command = registryMatch(commandHandlers, method); @@ -1498,10 +1236,7 @@ export function installModCDPServer( } let upstream = "chrome_debugger"; - for (const [pattern, route] of Object.entries(this.routes || {}) as [ - string, - string, - ][]) { + for (const [pattern, route] of Object.entries(this.routes || {}) as [string, string][]) { if (pattern === "*.*") { upstream = route; continue; @@ -1526,10 +1261,8 @@ export function installModCDPServer( } else { result = await this.sendChromeDebugger(method, params); } - } else if (upstream === "loopback_cdp") - result = await this.sendLoopback(method, params, cdpSessionId); - else if (upstream === "chrome_debugger") - result = await this.sendChromeDebugger(method, params); + } else if (upstream === "loopback_cdp") result = await this.sendLoopback(method, params, cdpSessionId); + else if (upstream === "chrome_debugger") result = await this.sendChromeDebugger(method, params); else throw new Error(`No ModCDP command registered for ${method}.`); result = await this.runMiddleware("response", method, result, { @@ -1552,18 +1285,12 @@ export function installModCDPServer( get events() { return ModCDPServer.events; }, - send: (method: string, params: ProtocolParams = {}) => - this.handleCommand(method, params, cdpSessionId), - emit: (eventName: string, payload: ProtocolPayload = {}) => - this.emit(eventName, payload, cdpSessionId), + send: (method: string, params: ProtocolParams = {}) => this.handleCommand(method, params, cdpSessionId), + emit: (eventName: string, payload: ProtocolPayload = {}) => this.emit(eventName, payload, cdpSessionId), }; }, - async emit( - eventName: string, - payload: ProtocolPayload = {}, - cdpSessionId: string | null = null, - ) { + async emit(eventName: string, payload: ProtocolPayload = {}, cdpSessionId: string | null = null) { const event = registryMatch(eventBindings, eventName); if (!event) return { @@ -1592,8 +1319,7 @@ export function installModCDPServer( verified: boolean; version?: unknown; }> { - if (!this.browser_token) - return { loopback_cdp_url: null as null, verified: false }; + if (!this.browser_token) return { loopback_cdp_url: null as null, verified: false }; const url = "http://127.0.0.1:9222"; const previousLoopbackUrl = this.loopback_cdp_url; @@ -1606,19 +1332,14 @@ export function installModCDPServer( }; }; try { - const version = await fetch(`${url}/json/version`).then( - (response) => response.ok && response.json(), - ); + const version = await fetch(`${url}/json/version`).then((response) => response.ok && response.json()); if (!version?.webSocketDebuggerUrl) return fail(); this.loopback_cdp_url = version.webSocketDebuggerUrl; - const { targetInfos } = (await callLoopbackWS( - "Target.getTargets", - )) as cdp.types.ts.Target.GetTargetsResult; + const { targetInfos } = (await callLoopbackWS("Target.getTargets")) as cdp.types.ts.Target.GetTargetsResult; const serviceWorkerUrl = currentServiceWorkerUrl(); const worker = targetInfos.find( - (target) => - target.type === "service_worker" && target.url === serviceWorkerUrl, + (target) => target.type === "service_worker" && target.url === serviceWorkerUrl, ); if (!worker) return fail(version); @@ -1653,21 +1374,14 @@ export function installModCDPServer( } }, - async sendLoopback( - method: string, - params: ProtocolParams = {}, - cdpSessionId: string | null = null, - ) { - if (!this.loopback_cdp_url) - throw new Error(`No loopback_cdp_url configured for ${method}.`); + async sendLoopback(method: string, params: ProtocolParams = {}, cdpSessionId: string | null = null) { + if (!this.loopback_cdp_url) throw new Error(`No loopback_cdp_url configured for ${method}.`); await initializeLoopbackCDP(); const domain = method.split(".")[0] ?? ""; - if (browserLevelDomains.has(domain)) - return await callLoopbackWS(method, params); - if (cdpSessionId) - return await callLoopbackWS(method, params, cdpSessionId); + if (browserLevelDomains.has(domain)) return await callLoopbackWS(method, params); + if (cdpSessionId) return await callLoopbackWS(method, params, cdpSessionId); const { debuggee = null, @@ -1676,8 +1390,7 @@ export function installModCDPServer( extensionId = null, ...commandParams } = params as CdpDebuggeeCommandParams; - const resolvedDebuggee = - debuggee ?? compactDebuggee({ tabId, targetId, extensionId }); + const resolvedDebuggee = debuggee ?? compactDebuggee({ tabId, targetId, extensionId }); const chromeApi = globalScope.chrome; let resolvedTargetId = resolvedDebuggee.targetId || null; @@ -1694,30 +1407,19 @@ export function installModCDPServer( resolvedTabId = tab?.id || null; resolvedTabUrl = tab?.url || tab?.pendingUrl || null; } else if (chromeApi.tabs?.get) { - const tab = await chromeApi.tabs - .get(resolvedTabId) - .catch((): null => null); + const tab = await chromeApi.tabs.get(resolvedTabId).catch((): null => null); resolvedTabUrl = tab?.url || tab?.pendingUrl || null; } if (resolvedTabId && chromeApi.debugger?.getTargets) { const targets = await chromeApi.debugger.getTargets(); resolvedTargetId = - targets.find( - (target) => - target.tabId === resolvedTabId && target.type === "page", - )?.id || null; + targets.find((target) => target.tabId === resolvedTabId && target.type === "page")?.id || null; } if (!resolvedTargetId) { - const { targetInfos } = (await callLoopbackWS( - "Target.getTargets", - )) as cdp.types.ts.Target.GetTargetsResult; - const pageTargets = targetInfos.filter( - (target) => target.type === "page", - ); + const { targetInfos } = (await callLoopbackWS("Target.getTargets")) as cdp.types.ts.Target.GetTargetsResult; + const pageTargets = targetInfos.filter((target) => target.type === "page"); resolvedTargetId = - pageTargets.find( - (target) => resolvedTabUrl && target.url === resolvedTabUrl, - )?.targetId || + pageTargets.find((target) => resolvedTabUrl && target.url === resolvedTabUrl)?.targetId || pageTargets[0]?.targetId || null; } @@ -1728,14 +1430,10 @@ export function installModCDPServer( resolvedTargetId = created.targetId || null; } } - if (!resolvedTargetId) - throw new Error( - `loopback_cdp route for ${method} could not resolve a page target.`, - ); + if (!resolvedTargetId) throw new Error(`loopback_cdp route for ${method} could not resolve a page target.`); const existingSessionId = loopbackTargetSessions.get(resolvedTargetId); - if (existingSessionId) - return await callLoopbackWS(method, commandParams, existingSessionId); + if (existingSessionId) return await callLoopbackWS(method, commandParams, existingSessionId); const attached = (await callLoopbackWS("Target.attachToTarget", { targetId: resolvedTargetId, @@ -1744,18 +1442,13 @@ export function installModCDPServer( const sessionId = attached.sessionId; loopbackTargetSessions.set(resolvedTargetId, sessionId); loopbackSessionTargets.set(sessionId, resolvedTargetId); - await callLoopbackWS( - "Target.setAutoAttach", - targetAutoAttachParams, - sessionId, - ).catch(() => {}); + await callLoopbackWS("Target.setAutoAttach", targetAutoAttachParams, sessionId).catch(() => {}); return await callLoopbackWS(method, commandParams, sessionId); }, async sendChromeDebugger(method: string, params: ProtocolParams = {}) { const chromeApi = globalScope.chrome; - if (!chromeApi?.debugger?.sendCommand) - throw new Error("chrome.debugger is unavailable."); + if (!chromeApi?.debugger?.sendCommand) throw new Error("chrome.debugger is unavailable."); const { debuggee = null, @@ -1764,8 +1457,7 @@ export function installModCDPServer( extensionId = null, ...commandParams } = params as CdpDebuggeeCommandParams; - const resolvedDebuggee = - debuggee ?? compactDebuggee({ tabId, targetId, extensionId }); + const resolvedDebuggee = debuggee ?? compactDebuggee({ tabId, targetId, extensionId }); if (Object.keys(resolvedDebuggee).length === 0) { let tab: chrome.tabs.Tab | undefined; [tab] = await chromeApi.tabs.query({ @@ -1787,10 +1479,7 @@ export function installModCDPServer( tab = win?.tabs?.[0]; } } - if (!tab?.id) - throw new Error( - `chrome_debugger route for ${method} could not find an active tab.`, - ); + if (!tab?.id) throw new Error(`chrome_debugger route for ${method} could not find an active tab.`); resolvedDebuggee.tabId = tab.id; } @@ -1805,39 +1494,24 @@ export function installModCDPServer( }), ); } catch (error) { - if ( - !errorMessage(error).includes( - "Another debugger is already attached", - ) - ) - throw error; + if (!errorMessage(error).includes("Another debugger is already attached")) throw error; } await new Promise((resolve, reject) => - chromeApi.debugger.sendCommand( - resolvedDebuggee, - "Target.setAutoAttach", - targetAutoAttachParams, - () => { - const error = chromeApi.runtime.lastError; - if (error) reject(new Error(error.message)); - else resolve(); - }, - ), + chromeApi.debugger.sendCommand(resolvedDebuggee, "Target.setAutoAttach", targetAutoAttachParams, () => { + const error = chromeApi.runtime.lastError; + if (error) reject(new Error(error.message)); + else resolve(); + }), ); attachedDebuggees.add(key); } return new Promise((resolve, reject) => - chromeApi.debugger.sendCommand( - resolvedDebuggee, - method, - commandParams, - (result) => { - const error = chromeApi.runtime.lastError; - if (error) reject(new Error(error.message)); - else resolve(result as ProtocolResult); - }, - ), + chromeApi.debugger.sendCommand(resolvedDebuggee, method, commandParams, (result) => { + const error = chromeApi.runtime.lastError; + if (error) reject(new Error(error.message)); + else resolve(result as ProtocolResult); + }), ); }, }; @@ -1850,17 +1524,13 @@ export function installModCDPServer( ModCDPServer.addCustomCommand({ name: "Mod.ping", - handler: async ( - raw_params: ProtocolParams = {}, - cdpSessionId: string | null = null, - ) => { + handler: async (raw_params: ProtocolParams = {}, cdpSessionId: string | null = null) => { const params = raw_params as ModCDPPingParams; const received_at = Date.now(); await ModCDPServer.emit( "Mod.pong", { - sent_at: - typeof params.sent_at === "number" ? params.sent_at : received_at, + sent_at: typeof params.sent_at === "number" ? params.sent_at : received_at, received_at, from: "extension-service-worker", }, @@ -1872,18 +1542,13 @@ export function installModCDPServer( ModCDPServer.addCustomCommand({ name: "Mod.configure", - handler: async (params: ProtocolParams = {}) => - ModCDPServer.configure(params as ModCDPConfigureParams), + handler: async (params: ProtocolParams = {}) => ModCDPServer.configure(params as ModCDPConfigureParams), }); ModCDPServer.addCustomCommand({ name: "Mod.evaluate", handler: async (raw_params: ProtocolParams = {}) => { - const { - expression, - params = {}, - cdpSessionId = null, - } = raw_params as Record; + const { expression, params = {}, cdpSessionId = null } = raw_params as Record; return await evaluateUserExpression({ expression: String(expression), params: params as ProtocolPayload, @@ -1906,8 +1571,7 @@ export function installModCDPServer( ModCDPServer.addCustomCommand({ name: "Mod.addMiddleware", - handler: async (params: ProtocolParams = {}) => - ModCDPServer.addMiddleware(params as ModCDPMiddlewareRegistration), + handler: async (params: ProtocolParams = {}) => ModCDPServer.addMiddleware(params as ModCDPMiddlewareRegistration), }); const chromeApi = globalScope.chrome; diff --git a/js/test/test.LocalBrowserLaunchExtensionInjector.ts b/js/test/test.LocalBrowserLaunchExtensionInjector.ts index 875dd9a..70800ba 100644 --- a/js/test/test.LocalBrowserLaunchExtensionInjector.ts +++ b/js/test/test.LocalBrowserLaunchExtensionInjector.ts @@ -15,8 +15,7 @@ function crc32(data: Buffer) { let crc = 0xffffffff; for (const byte of data) { crc ^= byte; - for (let bit = 0; bit < 8; bit++) - crc = (crc >>> 1) ^ (0xedb88320 & -(crc & 1)); + for (let bit = 0; bit < 8; bit++) crc = (crc >>> 1) ^ (0xedb88320 & -(crc & 1)); } return (crc ^ 0xffffffff) >>> 0; } @@ -58,10 +57,7 @@ test("LocalBrowserLaunchExtensionInjector rejects zip entries outside extraction }); try { - await assert.rejects( - () => injector.prepare(), - /escapes extension extraction directory/, - ); + await assert.rejects(() => injector.prepare(), /escapes extension extraction directory/); assert.equal(existsSync(path.join(temp_dir, "evil.txt")), false); } finally { await injector.close(); @@ -76,22 +72,15 @@ test("LocalBrowserLaunchExtensionInjector prepares an unpacked extension directo try { await injector.prepare(); - const unpacked_extension_path = ( - injector as unknown as { unpacked_extension_path?: string | null } - ).unpacked_extension_path; + const unpacked_extension_path = (injector as unknown as { unpacked_extension_path?: string | null }) + .unpacked_extension_path; assert.equal(typeof unpacked_extension_path, "string"); assert.notEqual(unpacked_extension_path, EXTENSION_PATH); - assert.equal( - existsSync(path.join(unpacked_extension_path!, "manifest.json")), - true, - ); + assert.equal(existsSync(path.join(unpacked_extension_path!, "manifest.json")), true); assert.deepEqual(injector.getLauncherConfig(), { extra_args: [`--load-extension=${unpacked_extension_path}`], }); - assert.equal( - injector.options.injector_extension_id, - DEFAULT_MODCDP_EXTENSION_ID, - ); + assert.equal(injector.options.injector_extension_id, DEFAULT_MODCDP_EXTENSION_ID); } finally { await injector.close(); } @@ -102,22 +91,15 @@ test("LocalBrowserLaunchExtensionInjector prepares the default extension zip for try { await injector.prepare(); - const unpacked_extension_path = ( - injector as unknown as { unpacked_extension_path?: string | null } - ).unpacked_extension_path; + const unpacked_extension_path = (injector as unknown as { unpacked_extension_path?: string | null }) + .unpacked_extension_path; assert.equal(typeof unpacked_extension_path, "string"); assert.match(unpacked_extension_path!, /modcdp-extension-/); - assert.equal( - existsSync(path.join(unpacked_extension_path!, "manifest.json")), - true, - ); + assert.equal(existsSync(path.join(unpacked_extension_path!, "manifest.json")), true); assert.deepEqual(injector.getLauncherConfig(), { extra_args: [`--load-extension=${unpacked_extension_path}`], }); - assert.equal( - injector.options.injector_extension_id, - DEFAULT_MODCDP_EXTENSION_ID, - ); + assert.equal(injector.options.injector_extension_id, DEFAULT_MODCDP_EXTENSION_ID); } finally { await injector.close(); } diff --git a/js/test/test.ModCDPClient.ts b/js/test/test.ModCDPClient.ts index 4e905d4..71de444 100644 --- a/js/test/test.ModCDPClient.ts +++ b/js/test/test.ModCDPClient.ts @@ -72,17 +72,9 @@ test("ModCDPClient normalizes nested config owners", () => { assert.equal(cdp._launcherOptions().user_data_dir, "/tmp/profile"); assert.equal(cdp.upstream.upstream_nats_wait_timeout_ms, 345); assert.equal(cdp.upstream.upstream_reversews_wait_timeout_ms, 456); - assert.equal( - cdp.upstream.upstream_nativemessaging_manifest, - "/tmp/native-host.json", - ); - assert.deepEqual(cdp.upstream.upstream_nativemessaging_manifests, [ - "/tmp/native-host-extra.json", - ]); - assert.equal( - cdp.upstream.upstream_nativemessaging_host_name, - "com.modcdp.custom", - ); + assert.equal(cdp.upstream.upstream_nativemessaging_manifest, "/tmp/native-host.json"); + assert.deepEqual(cdp.upstream.upstream_nativemessaging_manifests, ["/tmp/native-host-extra.json"]); + assert.equal(cdp.upstream.upstream_nativemessaging_host_name, "com.modcdp.custom"); assert.equal(cdp.upstream.upstream_nativemessaging_wait_timeout_ms, 567); assert.equal(cdp.upstream.upstream_ws_connect_error_settle_timeout_ms, 321); assert.equal(cdp.injector.injector_execution_context_timeout_ms, 4321); @@ -103,22 +95,16 @@ test("ModCDPClient normalizes nested config owners", () => { assert.equal(params.client.client_routes["*.*"], "direct_cdp"); assert.equal(params.server.server_browser_token, "token-1"); assert.equal(params.server.server_cdp_send_timeout_ms, 9876); - assert.equal( - params.server.server_loopback_execution_context_timeout_ms, - 8765, - ); + assert.equal(params.server.server_loopback_execution_context_timeout_ms, 8765); assert.equal(params.server.server_ws_connect_error_settle_timeout_ms, 7654); }); test("ModCDPClient dispatches root events before extension session is attached", () => { const cdp = new ModCDPClient(); const seen: string[] = []; - cdp.on( - "Target.targetCreated", - (payload: { targetInfo?: { targetId?: string } }) => { - seen.push(String(payload.targetInfo?.targetId)); - }, - ); + cdp.on("Target.targetCreated", (payload: { targetInfo?: { targetId?: string } }) => { + seen.push(String(payload.targetInfo?.targetId)); + }); cdp._onRecv({ method: "Target.targetCreated", @@ -242,12 +228,9 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server assert.equal(cdp.upstream.upstream_reversews_wait_timeout_ms, 10_000); assert.equal(cdp.injector.injector_mode, "auto"); assert.equal( - [ - "discovered", - "local_launch", - "extensions_load_unpacked", - "borrowed", - ].includes(String(cdp.connect_timing?.injector_source)), + ["discovered", "local_launch", "extensions_load_unpacked", "borrowed"].includes( + String(cdp.connect_timing?.injector_source), + ), true, ); assert.equal(cdp.client.client_routes["*.*"], "direct_cdp"); @@ -256,10 +239,7 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server const service_worker_url = await cdp.Mod.evaluate({ expression: "chrome.runtime.getURL('modcdp/service_worker.js')", }); - assert.equal( - service_worker_url, - `chrome-extension://${cdp.extension_id}/modcdp/service_worker.js`, - ); + assert.equal(service_worker_url, `chrome-extension://${cdp.extension_id}/modcdp/service_worker.js`); const contexts = (await cdp.Mod.evaluate({ expression: "chrome.runtime.getContexts({}).then((contexts) => contexts.map((context) => ({ type: context.contextType, url: context.documentUrl || context.origin || '' })))", @@ -268,8 +248,7 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server contexts.some( (context) => context.type === "OFFSCREEN_DOCUMENT" && - context.url === - `chrome-extension://${cdp.extension_id}/offscreen/keepalive.html`, + context.url === `chrome-extension://${cdp.extension_id}/offscreen/keepalive.html`, ), true, ); @@ -297,10 +276,7 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server }; cdp.on("Mod.pong", listener); }); - const ping_result = (await cdp.Mod.ping({ sent_at })) as Record< - string, - unknown - >; + const ping_result = (await cdp.Mod.ping({ sent_at })) as Record; const pong_payload = await pong; assert.equal(ping_result.ok, true); assert.equal(pong_payload.sent_at, sent_at); @@ -308,9 +284,7 @@ test("ModCDPClient connects with nested launch/upstream/extension/client/server assert.equal(pong_payload.from, "extension-service-worker"); } finally { if (direct_session_target_id) { - await cdp - .send("Target.closeTarget", { targetId: direct_session_target_id }) - .catch(() => ({})); + await cdp.send("Target.closeTarget", { targetId: direct_session_target_id }).catch(() => ({})); } await cdp.close(); } @@ -325,17 +299,13 @@ test("ModCDPClient preserves explicit empty service worker suffix config", async }); assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, []); - assert.deepEqual( - (await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, - [], - ); + assert.deepEqual((await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, []); }, 60_000); function reversewsTestBrowserPath() { - const explicit_candidates = [ - process.env.CHROME_PATH, - platform() === "linux" ? "/usr/bin/chromium" : null, - ].filter((candidate): candidate is string => Boolean(candidate)); + const explicit_candidates = [process.env.CHROME_PATH, platform() === "linux" ? "/usr/bin/chromium" : null].filter( + (candidate): candidate is string => Boolean(candidate), + ); for (const candidate of explicit_candidates) { if (existsSync(candidate)) return candidate; } @@ -347,10 +317,7 @@ function reversewsTestBrowserPath() { home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", ), - path.join( - home, - "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium", - ), + path.join(home, "Library/Caches/ms-playwright/chromium-*/chrome-mac*/Chromium.app/Contents/MacOS/Chromium"), path.join( home, "Library/Caches/puppeteer/chrome/mac*-*/chrome-mac*/Google Chrome for Testing.app/Contents/MacOS/Google Chrome for Testing", @@ -362,27 +329,16 @@ function reversewsTestBrowserPath() { process.env.LOCALAPPDATA || path.join(home, "AppData/Local"), "ms-playwright/chromium-*/chrome-win*/chrome.exe", ), - path.join( - home, - ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe", - ), + path.join(home, ".cache/puppeteer/chrome/win*-*/chrome-win*/chrome.exe"), ] : [ - path.join( - home, - ".cache/ms-playwright/chromium-*/chrome-linux*/chrome", - ), + path.join(home, ".cache/ms-playwright/chromium-*/chrome-linux*/chrome"), "/opt/pw-browsers/chromium-*/chrome-linux*/chrome", - path.join( - home, - ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome", - ), + path.join(home, ".cache/puppeteer/chrome/linux-*/chrome-linux*/chrome"), ]; const candidates = newestFirst(patterns.flatMap(expandGlob)); if (candidates[0]) return candidates[0]; - throw new Error( - "Reversews tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing.", - ); + throw new Error("Reversews tests require CHROME_PATH, /usr/bin/chromium, or Chrome for Testing."); } function expandGlob(pattern: string) { @@ -411,20 +367,14 @@ function expandGlob(pattern: string) { } function wildcardToRegExp(value: string) { - return new RegExp( - `^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`, - ); + return new RegExp(`^${value.replace(/[.+^${}()|[\]\\]/g, "\\$&").replace(/\*/g, ".*")}$`); } function newestFirst(candidates: string[]) { return [...new Set(candidates)].sort((a, b) => { const left = scorePath(a); const right = scorePath(b); - return ( - right.version - left.version || - right.mtime - left.mtime || - a.localeCompare(b) - ); + return right.version - left.version || right.mtime - left.mtime || a.localeCompare(b); }); } @@ -441,13 +391,10 @@ function scorePath(candidate: string) { test("ModCDPClient defaults service worker suffix config to the ModCDP worker", async () => { const cdp = new ModCDPClient(); - assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, [ + assert.deepEqual(cdp.injector.injector_service_worker_url_suffixes, ["/modcdp/service_worker.js"]); + assert.deepEqual((await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, [ "/modcdp/service_worker.js", ]); - assert.deepEqual( - (await cdp._baseInjectorConfig()).injector_service_worker_url_suffixes, - ["/modcdp/service_worker.js"], - ); }); test("ModCDPClient preserves explicit null server config", () => { @@ -491,9 +438,7 @@ test("ModCDPClient orders local auto injection as launch flag then loadUnpacked }); assert.deepEqual( - (await cdp._injectorsForConfig()).map( - (injector) => injector.constructor.name, - ), + (await cdp._injectorsForConfig()).map((injector) => injector.constructor.name), [ "LocalBrowserLaunchExtensionInjector", "ExtensionsLoadUnpackedInjector", @@ -593,8 +538,7 @@ test("ModCDPClient.close keeps injector files until after launched browser shutd try { await cdp.connect(); const injector = cdp._injectors.find( - (candidate) => - candidate.constructor.name === "LocalBrowserLaunchExtensionInjector", + (candidate) => candidate.constructor.name === "LocalBrowserLaunchExtensionInjector", ) as unknown as { unpacked_extension_path?: string | null } | undefined; const unpacked_extension_path = injector?.unpacked_extension_path; assert.equal(typeof unpacked_extension_path, "string"); @@ -643,8 +587,5 @@ test("ModCDPClient.close clears top-level connection state", async () => { await cdp.close(); assert.equal(cdp.transport, null); - await assert.rejects( - () => cdp.sendRaw("Browser.getVersion"), - /ModCDP upstream is not connected/, - ); + await assert.rejects(() => cdp.sendRaw("Browser.getVersion"), /ModCDP upstream is not connected/); }, 60_000); diff --git a/python/examples/demo.py b/python/examples/demo.py index 66518ad..6718ce9 100644 --- a/python/examples/demo.py +++ b/python/examples/demo.py @@ -165,7 +165,7 @@ def main(): launch_options["executable_path"] = os.environ["CHROME_PATH"] cdp = ModCDPClient(**client_options_for(mode, upstream_mode, cdp_url, launch_options)) - foreground_events = [] + page_target_events = [] target_created_events = [] events_lock = threading.Lock() @@ -174,10 +174,10 @@ def on_target_created(payload, *_): with events_lock: target_created_events.append(payload) - def on_foreground_changed(payload, *_): - print(f"Custom.foregroundTargetChanged -> {payload}") + def on_page_target_updated(payload, *_): + print(f"Custom.pageTargetUpdated -> {payload}") with events_lock: - foreground_events.append(payload) + page_target_events.append(payload) cdp.on("Target.targetCreated", on_target_created) @@ -332,19 +332,10 @@ def on_demo_event(payload, *_): raise RuntimeError("expected Custom.demoEvent") print(f"Custom.demoEvent -> {demo_event}") - foreground_event_registration = expect_object(cdp.send("Mod.addCustomEvent", {"name": "Custom.foregroundTargetChanged"}), "Mod.addCustomEvent Custom.foregroundTargetChanged") - if foreground_event_registration.get("registered") is not True: - raise RuntimeError(f"unexpected foreground event registration {foreground_event_registration}") - cdp.on("Custom.foregroundTargetChanged", on_foreground_changed) - cdp.send("Mod.evaluate", {"expression": '''async () => { - chrome.tabs.onActivated.addListener(async ({ tabId }) => { - const targets = await chrome.debugger.getTargets(); - const target = targets.find(target => target.type === "page" && target.tabId === tabId); - const tab = await chrome.tabs.get(tabId).catch(() => null); - await cdp.emit("Custom.foregroundTargetChanged", { tabId, targetId: target?.id ?? null, url: target?.url ?? tab?.url ?? null }); - }); - return true; - }'''}) + page_target_event_registration = expect_object(cdp.send("Mod.addCustomEvent", {"name": "Custom.pageTargetUpdated"}), "Mod.addCustomEvent Custom.pageTargetUpdated") + if page_target_event_registration.get("registered") is not True: + raise RuntimeError(f"unexpected page target event registration {page_target_event_registration}") + cdp.on("Custom.pageTargetUpdated", on_page_target_updated) cdp.send("Target.setDiscoverTargets", {"discover": True}) created_target = expect_object(cdp.send("Target.createTarget", {"url": "https://example.com", "background": True}), "Target.createTarget") @@ -368,20 +359,32 @@ def on_demo_event(payload, *_): print(f"Custom.TabIdFromTargetId -> {tab_from_target}") cdp.send("Target.activateTarget", {"targetId": created_target_id}) + page_target_emit_result = expect_object(cdp.send("Mod.evaluate", { + "params": {"targetId": created_target_id}, + "expression": '''async ({ targetId }) => { + const targets = await chrome.debugger.getTargets(); + const target = targets.find(target => target.id === targetId); + if (!target?.id) throw new Error(`target ${targetId} not found`); + await cdp.emit("Custom.pageTargetUpdated", { targetId: target.id, url: target.url ?? null }); + return { emitted: true, targetId: target.id }; + }''', + }), "Custom.pageTargetUpdated emit") + if page_target_emit_result.get("emitted") is not True or page_target_emit_result.get("targetId") != created_target_id: + raise RuntimeError(f"unexpected Custom.pageTargetUpdated emit result {page_target_emit_result}") deadline = time.monotonic() + 3.0 while True: with events_lock: - foreground = next((event for event in foreground_events if event.get("targetId") == created_target_id), None) - if foreground or time.monotonic() >= deadline: + page_target = next((event for event in page_target_events if event.get("targetId") == created_target_id), None) + if page_target or time.monotonic() >= deadline: break time.sleep(0.02) - if not foreground: - raise RuntimeError(f"expected Custom.foregroundTargetChanged for {created_target_id}") - if tab_from_target.get("tabId") != foreground.get("tabId"): - raise RuntimeError(f"unexpected Custom.foregroundTargetChanged result {foreground}") + if not page_target: + raise RuntimeError(f"expected Custom.pageTargetUpdated for {created_target_id}") + if tab_from_target.get("tabId") != page_target.get("tabId"): + raise RuntimeError(f"unexpected Custom.pageTargetUpdated result {page_target}") - target_from_tab = expect_object(cdp.send("Custom.targetIdFromTabId", {"tabId": foreground["tabId"]}), "Custom.targetIdFromTabId") - if target_from_tab.get("targetId") != created_target_id or target_from_tab.get("tabId") != foreground.get("tabId"): + target_from_tab = expect_object(cdp.send("Custom.targetIdFromTabId", {"tabId": page_target["tabId"]}), "Custom.targetIdFromTabId") + if target_from_tab.get("targetId") != created_target_id or target_from_tab.get("tabId") != page_target.get("tabId"): raise RuntimeError(f"unexpected Custom.targetIdFromTabId/middleware result {target_from_tab}") print(f"Custom.targetIdFromTabId -> {target_from_tab}") diff --git a/python/modcdp/extension.zip b/python/modcdp/extension.zip index 70c7786a55bf45083409df93f3c0ffde78c3cca0..2f87949707d27bd89b4767fa1542cdfacc3c48ef 100644 GIT binary patch delta 134375 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

      GtMFR;jSqDl+F>+*IU*71>UzK8tX0pAC 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 &iuIM5 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 F002UFavJ~u delta 135203 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�e%OmTm` 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 ({?Y{Z?%d}h7aZ_R2yBHU~ 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 IlUQAxx1v|Uys zuo@*c+B$S0&1f2ATQqRS{_a;eg0S!rnSqC{pv+-qY*xN)!n&;;Lk6^&vE{rgOY6SY z*F+nv{5<`ODPCC>ZTwJysStRTfCL3ry;7xPrdMV68*o6RGA8WgShdxn@6XJb5Des3 zxnuDXW%n+rKP&+FzyJnOY7VgZu?Scmd3D`8?T(a6o1J%2@vL$| zvTKpgSHbOLfAv zC9b<%<9C0l>#hi#b>)206e#`HofVbIJ6w*PV#+LTj%DAuX5*ye1ySGEE;aaXRyHv?cK_Q)^Sq-1i6&wW{v9jNhjaYv^F)MQ!qxloKEf>5Dre7zX{QI|V zJ{Ymjfe>fEI!clxX5;KzujkQ^?-%FkJ*}G|B<)`xJHeW0P?~JzhP$!De{3$~$=}#@ z>KJS;B<+73*TSA;;TNhOtnH))NCdC#%iXl#fZ%uXu#;A9fa{0==9_Qsq+ar1tRzkZ z9+`jE#4O5|fchurF0T}h*2MKv)*4{j{gai3$*@2@$y-l$uF8Pj16&C1ExRoIsv7^jK-*w?{&Bwz;6N#N%Wt_L&~=tt*n@YedU?->IBC{;L! z4efaC#1B~(BhPmfk}pU(E;~F1MS{w#F$jM$C#*oiMDtP}RJ|0XU?Cz8_qp>qYV^hD z(^(@&fUrpoN&>Qj?q0U<^ngw>30s}SfXyUS1-`4TC}krxTWCIHpOV|%l6Q)E-+V-l zE)mvUf_F+jUq{KwEOw+x4gj|uquBj8lcA(b2SFk-*5a0q!_JIE2X}cTFGmc5qAP#r z(~@HcD~-o9i%?eW))?jCSdnvuWEH8(f+d^dvS$a`bS^4&QZzQ=V^;L<0siVySw)e_ z0m+T3^dC6iFOQl@@7rV4>wQtQ&SHYnsl%0MmLzwwee7{ND+ewqecGXbO@)K&*OZJ> zciOmcNzUPXo{B|o2dufw^n;SfcItoUovVM>I_d^6W*v1`8|tY0W-Ew}oB`{2xP@un z?<9ZkNj9MZt7s}{&5#w4a%;F$ob1?nW0S7)>tg&>hlwfE?l=!ncI@oLl$}2+h<|=+ z89HCOW<`zD-ZD;o>1-yE*9J!OEr^d^8z%APY;;Fk8ZYsPr-Cg##EZrc@%evy7(gI1 z@rj?Jp!bE8Z8-BEG{%`aztbFk#QofcM?;Xb9p@&L4L@1g@VHRO!5#CAPjZPlG!LUx z*sB?rY{aK2S2GPD2s5aggTk?)LE>9Z-Yh2MFE&V1?nVs)BU#@0tj7yMGBwQ$fZ++_ zJc!CpWREqhtLL8I4|s|d$wGe-_aBKttJ`Ja%yfexHI!|1-CXbF3@TitdE|>9l^(bn z=X{JKkT`iUPOi5jC|R;pT@?Yno)JZt*mZ4DK@h@{&Plxxv*(I*+Jp|&`EDvuz5hGrNq+?yq28mhGg0Zh)i3 z87&koP`I4n-&bW|S?wts9@7I55UE}WSwUFbV*_?rg)N>jg+>>tCOqa7-DY0g_cShQ z%BFeW4;H5`_&dG&i_AmhQLVrwZ6=7T0kD|t9_G)LuKO#O-+u%oe}Zpap;`&}F!Oe7 zL~vMj!s0!P%6$$ ze;`l3xC~@gDsL^m-eSAKWy>GQIi5KAV{^m{+)*7q*;M6%Li2*&#K$^ga5i=qB`sS6 z=^~C+#YseEA#WA6xe&G}z%?!=xSP}HM@tgPh*89C&JKuke~4^NccZdU$;p#Za`CI3 zvgj0F+!?+mRb=4fpwNjdD8xbcveL-BJmDOS&BFq(R%8*S1~esPM(=_PkQ%1*Ob@pz zv3lZ7S^pYqzM@shFIrx13~7N2ZOA)(uvLIGAjDoCk(aWBfoWYf$*d?VvC^&M>uCy# z5r1C)EZI2Ne-ysB8vWLi{h7^qz*VBkES}zVN1^_EwDm@+1KYo;G67FtMB!=s*Lv)0 zDTXph+p5AWuAss_AaD_@)wKYry1Sdq)65kq>bkGJSi6VSg6RG| zb64Q&#_v@jV9!1G?9@Q*BocwT3Nqi!)XGIEM)TL-s=o8TFQTfXX^m?<2r)_Lqr|~S zib=X2f2BEDbG~}5N>U7Vi4wT3aU~JbHfgEQGyuh(FaKm?05`OMGH+td@FrK5G#x#C z%N~3GWMvS=;ufB`8o3$#LzVO zNykci_~Nv-AFbAQX2`?JwxG35vqmQRHm~K|e=aL2&C8K*O`NZCr=+(vERFeyG{CXS zb|-gHa{!qSg`>@bT&piHQUG$QQ0{w zyI)ZxYV2@)`wAw#dAjFedb(Z#UAY1{rjkzmPGMMECOuYIFgBNQMRZs#1!${^{CZCT zTG==wI>_y51h(g1fi5+%X0`+AqlgajUc1CszjNN2WL-CS+qX-y*A?g~jH zN(*}v*j*mR`fXa^-h5ZGAH~l4oOMRF*Nj{HQDmLD-D#g6Lna983BT_g=tYCfJMu|Q zA{V5Fnh!e%*LE9lzHdtiW&_UC(DS@1_yc*YYTlSNi&X*()94k1RE@TQ|6q zn^q-%KO*GBW}K&Y{4oBVOd4ld2rt50k5z5ChG)?*iHZJ{_{*?+;TlfkA+x(;;Ppn>Va7Uhlf2H*9V9wW?@kUX{D&>0ettk3(11EE@+gs*aMt z;3xBlN{>DqmFH2x!z)L9R46?vMpY`9TmXK5t*S%Wy-TN)vAQE+5wvN>R3~pN+zF!O z_9BJqLxelhG5fA;1DH71O&PmIHq?V6a}DG+=}@7>5-kG-g`H zsbCs=A7p0^^jVS@S9^M#eM_=oNzRH7wIFA04wLLolALup($_uSH#w{mStTb;v_Yu?S!^q>qhOzH2mLwoA`&W^LIy+tp(=& zJlxt|;O0+56N`6doFE#j`o)Q&$r+XF;l`gGjM(GpM?-*`oxC^%1g(P~JM?{(O`Or_cn&`ENosv*%ax^C>w7~JVv~Tr76V!yZ#oZ_D?*t#w(iC)tG-jwBHZy z_e1+_AKLa3cFB|$Jja%C6d$+0FOIKiu#du`5waKexDj`3%9Sm{LL8cZuI)!FV?F-) zINVwMJ8qx-)Id-}n@!h<(I(8)npPIv{4u()v=251_K7#mG`CiU$0{*x7AW(?7XEIZ zT*DJz>!z8*6CZBV7Ob&7H&9!qxrH{rES~&g^(FAc8>U(gb+Lq?e4rY$HVx5cL!P&W zoZA6DSiC*DHQcPVO|<`i&$F}h=Bnljo`7bm@v>-}uN);?+)pDB&FsG;;7iB*R;_~O z0JD1-?&tI*ZpI+hw>+ZJ3fpyk9KqUKy^sI(XS>GmE9f8GucJpZ51XXA-SAH%59`_p zLuUNL-_ZfjKl=ksKYnJv6N~}1pogek-nL3ni@ye)E{0~ohc>H!J2XFTrvck~X7n9r zEs@%{3Kly``)#ykUxQUSYnj*fwRQK}N&DJK?zI-xj~0VL{UHnXVkA`VE#?d$nJoc@ zn#y2q@~o_}S3W9XM<+n<;*p*fbqjGb!F zOz_lg4G`EjV83($j>jf=5!d{{6jqx;3d?_`c!cPePrvYXoJA{2%U|{PO_bbA?G9d8!U{Qc$ z?9OYt`tzrMUj25Z!k`|iM?G#a$N^*jKk%JzlVjGp!NeH`M_cyzz=aVWAa^QSweqo} z)Arh5hed^Wm8<}aV)uq`}bW@iwFn5x>}?qMZP+gqFJklz@s!=YnW+W(KpG~f7X zo|0+W`S02lZQUnHLdR8{`?g1emnq!1^&8(D+>Z2rFW_kznwJo{`_7LMiVB%A42(BHZ|7eKMcqXvFPj%(w8T#a2?R5<5sSSy2j;Pbo82Z z1V%N_SAZoGlQfzwb==ea$TA$>4$?RdFXpF=-NN&!V7>LfzO`KJi2v1igEjY=cf()d zKu5oSKJf4ESSB1eHE;y8KOQ@lXO(9VcUFPPGxKj(?Q;Vhl6lfzke2Vhb59z;H+ZML zk8Vs^kcSbz^Mm8(&6AeUerzaf_b%$C1^T_|#qGt10aT^5ygS?s7Y*FI`^oKLp4=3n zLmuIAV4uvKK;i@m?Do2eaJ;482=EZL%sgp-+k7zG>LYNgt&lVTg-YAzbHbV!GJ9eX zbPSw?yIA(&^ci||1rLwi<#-odKW2gh%cC?P&Yj@BY)HeYB~O-gnMUSlpLhTkBw)vo zHz3;Pmt)VQn2V+*6To|5KV}?rv`j|(VC8v(0n62A+&Do&tY#C?DPxU`UZwvd~Mn71M}5z zYTg`w*6vwLk{2DlAK1I2*`*CVo4J@HG`uhk&-^%tQQw{vLwf_}8>2)gtvu5Wt>CRz zqIEafYqCh5FU3d+*lSn-;7O2Au=|#O+Yz&jyKT3hiClGP{2*J-%A)wO_o4HU@A=+L zhGf?rT(^f?W3wC9h;-fXg=YP;|poI4jS z5J4Xa5CF82S2?1O2CKS_K#4Ehh&_@3FIL^#~WEB zh!Bu1{N|;>7wu}$Zf~&LcLU<`WMBM)bb$(!Jv#C~g^|tfJ4||Qc(92X`ae$K7)3Xr z`FCtt5|R#rK=!89t-dr`pZ_>vQ{Z7|KHHGL=Bz?%$4d6W<=7s>8`})W z96?PzHweaCT@c{`2;7C&quc{g{e^PN?~GCgxi*9Q4eDxI4gOiX2C(EbhibGG`{7cI z4HYtEClJs6B#=|3q@#@+mR}2b?N0+Iz+4YvjnRsArI`@P{GrKzX`4>no!7*@yX?gO)8)YH*x7yZgSQp~~lKD(*Gt^UD-y*5CF zlqLO(%j3dmuEI@SCkm~Wy8VP2_ZwWM)uymx7^G>zx{aBQi$E;thHHQpGapP|#Iy$i z(<~1Fo{VD%lrU<4sXNOFSi0=KZ4;>nU1gDPKJ#wBhyI@TuInSB5ju9KnZ&-BXAaYC zRgi77Y^Q!Ie|k3HAYd%4N+SVr-}u)dB|bJ7km?qXW2?-uJ4>{-C%GC=+VzZ7x+Cu% zjQj(}^aMMyK#W+^ed2H6<5uD5yY*MdU)Z;QMwL5nTDCiX)RmzaM=xYzD>)8n{l2C3 zxU3BOy*L^RQ1-VV7|dT)38EO~-XTcFzYN@Fw^W`yh3y_W>G#{*?lUV`I*;w#CVLn+ zQcH&K!jJe*yrIY8hMtBSdYawPW8BdFa6`v_L*s2kVjEDxm+W|Dmes_n2HGg`D`ALd-qR)R}1?N2L8?`ddfVZ3E@qd!vxs z+Op3Bamp)7%pC^>x~48Hsckg3#r(XKmKz~|I6@rD@N~DG9WJ!{QA_%y{h8E@3JLjU z6ZbUnf$a`yuNtd1LIs8OZL+Iky|di<2CH%$tb6kZU1rBrY=DjKV}w^0ycIgpGCEj1 zdbAE)2jn(NHgTvy6SEeLS6i$OmxlexEwvvw&SiLb5Fz~`zNB($oznOH_F_RImH0+~ zq7pY(UE&0CY$e?I@tgKBd)2*ntM6GBn$_ai$;fBUMvz{9k33VCzx=*VnKDijSZYz?Tx?nm&dVGuor*%lVr=A*C5B0HX~_If3m5yG4GzNxwVz-x5J zS>-=C&Z^a={1PU}A4fFcNjr}WaujWU_Y<_;_h{=o`zt=S=IV83H-j8G&noj<19U2| z+u9C|s?YUkcKO7u!8^x0oO+#3=&xqT9x_;?SkW_fMh;?W#Bgamha>j`LHbrrHR7oi zV#^Hg32Ll07VS?2>nBFbfG&vlHbu_IK^8>+-g-k6QqJPNS@k{wW_AU^SS;;-F9h?w z`UnY{!Jn5vXWZU;XFt0(8w@*kOniN3puauxo^_{0z2?w-PONC5h4f)S3_obWr5eQc zGJ4}JXnTZBY4P&ZbIs`P;BJxi0WrOyUcqr;oA7fqHrkpgy@ZI${RsJ?3&Vame$#Ot z=5=(1FuRGK7+&myOS(lra1WS&hD&Jxa)#4WVDPMOEAM;Wu9#tf6z96I^IV<5-#o* zOAf3q=h&04b_KvgBU1IfF$d`c4i@n{ypQ!7c}C2*Lp4`mcb|aNa40TIEL@ox8+?o( zy17}4wdf^~vPHn8pzG@85cN>7EV%Y=iEoE!ND3Ll`GByP6g)fhHFbJ+hI<43A1v?r zdANXU82Cf(gWsi7n4#Z)3m#rai|)ae7NFNO#IExIyO47D0}A)8j8mWqJZO6y0w%ee z>jbOqj38shu}7|#DlFVL@>zm!Hr1LXfdAy(lLCt_k8XY`sVqMQPUIT4yLHxjK`zgU zm;ccD=YHspX>(v-_>Wl^)4|7qcl4s^XV9g3Y^d_gCGa4T65fV?c>umuC?Ask{PgET zdI)EbFUyAkA?6U@C5ka8-T?~LA*XRN!yu?*N;8f8O@f$AICvb-L42moJqI_kzo`tt zV4c$JHEm#@`7EWu8C*pqL64kc!XZR4OCva!ez~H=Cb!t%78~yr%=Mqht$6|9p0&)b z0j&`im{b~Hu-qy}0 zV$m*L73Z2`y{I;a1c?CssT#VKdyoB1j-u}#@J5G}j-ER9_EXf!HK5Be5Zd;wHVp67 zb01y@6}y%>ELyOn9|?GYlhe5^ANFa0$YEY-to2ip@}{1DYeOE7N_#D-nFc6LENSQr z_QPZ|I+TX;K1eD8JQ3!Z=!`jFN z^Zx`~iw>ZF-y0;j(7OQ*SZHIZ`kS_YkL}IrnSfvD`oL@9{;=(*?UiSqwI$sCz?`ow z3*dwI7V8GrRD;M(a>rZCWqG8tMR!5hC6@m+9KC~ejm2Q<+)_rwmik>xUF5P+g3l} zwrA1jVtar>nJ9R>Bku;D^0<3`a{y0U3+Rt$K2-6IWfr^v@vOauA|H>lEpX0ng+9Y} z0#c3b%6h5PLyl*~o!|wvyBV zhjg1bcv{HXmW_>_!mGbcuzP@C-Idn%wT*odXoey*n7Ix$80|0TgC_$Fcf%v7K_28< z&{lG4^h7ioV+;IQoq)99Ob~{t2Vsg3FkA0`87+XKy~Ds5L2r3?gWeIf!c*MNARh27mH!=x3{l81keCn!?KwG0k{wBAC_is(c(`GfVP;XWk=A z;lFLg-=etjQ;=>kg!sC#rUEH^dxhwKsoH)%b5RW>&O9`-L%>29l7gb`$lKrYn1taA z_L#sbQK|Q|HBqo=(!LzO&`z7m1%Z%x#~rIH>xMi*&E^1H_5%$!`oV9Za?YGc)5|5( zi_yYH?rwjlXucKNq8Jek)mZZe@e&NU=m~z?Xc5o*7XM7>zTdD1=x0XU?YwD!uGK^0 zue2-y`t^I&@yO7bpTo-~6wPg9SmRS&wCD>UFIb@F5l$ltr2tSMBi)g75-5riO)Bwb z2oU})hwz(?fbi|bd15b4%E^(`6UTtIG{o90t3567lk+mOd2$`6=eju`3Dnm{D+OLg z=R6_ZajA;iKL50{La}%1y>6_3+g5`IsWCL)1+>#J?RA1VEO{2_*x2=&m z3r#y_D$JVJ!Co@B87t+v|g#4lp&at7Mi>n#cjxTJRkteq90RCkLBX!|dPz7nD z3IAgxv}mhB=a@m_9FyJIiFZ;V)T=f34?O~+SNFaZXi;Z)J&1LV_mmObarGhm&ugL0 zbZl;?NDZ0hTc8dWCYy49oV4LF%+ox!d72x);>OePCi*|{m_7>3Wjj;?S^WFTx3e`; zM#g65_h^*ndtQ8w#-9Cp>1lk?lV=)gj!#?m?APG}C58l~(};+I7(%t)nKYLDSacaV-s0KXJz!}ZQB4xIF&3bu8&N7@g9@*~1#|yW+)5ec%cxj-nX>3-z zVc=l5J`63z#&WTLhZhgr=rfu9+2j(11k=8Z53UU|fU8i{oHZ6Sk_p zbzI+F$UWFTex#`aoK4_G3{_Zd-Qh!2nZ{pzKzahbz{7xl^nM1pCtCIKJ~40m%cYG_ zJHv2m*hb>9W{?`5EY82RvTg(A!~ahmBS#!9!GcUAtdVsHf!Tz=g1}}R2^+Xh+hhKk ztWGe|T|)b(pi9^zF&I0(4pMYop0&i+-un~g6{q|S>@|_0(?xq;c%>>Fl?mkVXnCQ- zHan(4-4Qf@bS&W&G&IodISbnQ5Slp%?xC5pY}npb;2_}stPcnu0_(pQ(<*97-3pw~ z#*PgpImk(Yi`d!Ve84=J&=8ux2s5zb=qFqmwm8fUBB}G9GKZZQ5PXA;0aA2}#F)PG zo@U&_L>Pz8s_JF+Yr8P57GrT6Bsv_D%FsIpTIbHFy+bGkatu;Zsou6dAkCN z7|sC>A$N_zh6cKc2j>M&lox@!>jQtEP%#|0@7Rd>!fyyW>t60Jo{)9E@=U>q<}*cP z*$)$)j$LY9%Ws@pyh9d$cjD+DqLxLiOr-K?FVBsErsZ$LRv}sT z6S1uqjP3Z5cNRI@+Bt{gF!i|;e2LFiD}hd@Z(_^qBuu^Kow3_Cs|_?V7zH^8yk{GF zw!$@P&8+CojW@h=jzizy^P%BE4xQtO%f{$E4N^x4=VWj{@N9$8AbxHFaGJHDC*22s z$S)vk{93*T{AG}lUZ3o7BeDj*f7+MQ0fN0!UpBt zX*%I@2wTwJc!KHsC4M`Yr{~xpf_XUe4oJxGpAi1& zm(+#&4AzD?jE}wN^kw42?Y(kMbF+beptZAzjC(otdx5X(%Yav%dXJ=pY&p+ax9jI4n=AGQ5?I zaA;&t(NKsQd$%Vm4ONgLW$_Dhg&f%y_sw=ZB{7X#m|)eN*1)wTx{GM!Aad(}40+0Wml?Z1D3t3DDj{4gVX1;&uJ#B^Oq z8bW5ia-+VxxjFw)(CQk{96=Qk}eg>zp>Vp?yf?#P+9lfEm1I$(lw zi5l<`iDRWXMFYo^Tj&EQg1dE`JbXfqk)6*i&KLEtKI70Y!>z4fXk-oY1c=qGn6>M_ zQk~=}Is~6?rH-+0{6e9U06mJr&AWq%1v-58q!PqGH7r|ybX?8x+ArCNDpM1RefOx#yjT_@t0&-`IMZ_^_FQm9{ z486n^ePgn%ga*Pn?}G&H%e2E*f&Mcw37|SK*p;gxI6ESoBsAYn$=_cd?iSFom#AD> zHrwir-`Gbb1cZRt#oxjxcXZ2j;ZmhYGEasvW>L@wB0iAWiU7{pb8Du$7f=d{5@*@T#7CV`tGhMK(KB&r)s!b-<49tPNZ&CJmA!j=S_% z5_Jl{hGg4+OEi7^E@}r)x%+|S-8cth9JeYsr!i!X3ocaD9E9?wQ};lcf-RnqHx2{O zP@9}68ojU4==xi|ue@~+i6DK+>>sh}z41eTodnm3aC@Bk%-rNuM6OkVLgY=ry;v*G zs61L=J!`I$e%vbkndtoE-jEfa8ny)~#T4=&AO-)Ou&Adk4M6tp9eYPnCobFLV=@9_ z?wjy5+Ai_Z3dWu%Qc<`9mJfUznK{g54p#JF(~Q61VvW8GFs~TRPho}35hy!Qfp&_2 zA!vqNGzo7*G+Yj~An@crUY!wwsK|vuuNB8>+(VpZE**vm(X7a^(z0 z(DtVYOFYJ{0me<-nC?v`6;CpMR!j_kzr|jc@1#X|Te%2taS_^9pAnY(CRhRFFal8! zJ=3S|I<~cT4XNIO5SzeNXEmxu@ybgnL;4Q&F*Ei*^48cVAwF!mq=}&uPWIe%vge75 zvfD*(&-UMc?7vg*{Z0IT?ByD$gfEeT;jXl*t{}l18b|$=<{LjyyH~(-z2X>u42y3Q zuMCU~_G8psjEG}Zx7D-kGSO;3G|+<+9DcyDR)@U@BU?qx0y*{z133s+7&wGoQU}%v z>w9NiZqd&uU^0o)Zi~45(A*utcvmzoD9l^+R2zY2-Y*!Bv^ILG;asHcCmaAcV&*5r>k*qjb_>=}K+>h4q7;|wKQf7_65{m8{Y9lQT6&+?k>W8xDsMSa|<`qLXL?nWvBa-(}Is|2J}PY(P)CF%~b{B63H6%pa1-4aY}y~t`6<*NW{lLf5ayc z)93hdFXgxXKc*4t-ZuyKNgJtQ9i-2pUySLygtyQ+a08ySn&F>t`7YtrR&4l;k5`~I z)ZmG#udWX*J#T;gm2@-4aFg~P_vt;%ZUEHn&Ho7p+HCw9&>C!hz&DuPiarG1uGtvb z*UxAW0jR1-Ud8s?duKR8bUpKue_6z2qboyz50^FqXF@p7D9d8%Cw{n9Q3jHT)4-It zn>3owF?v3up9eZpQAgR97>)h0Mk6j9o_#N(VluSIf5V~cs!w`rt%+cdNMlc~pjhm& z_W^Zw-oJ>wVBhM`7MS5DPaHMfdyqz?-n)cS&yjccM8(&>SKpau=(!s`e~a2-)a{-j zXDHq8+1!|};O;48{dzlaMi5`E*ZlO(Ye}qw9r^7)MwmYHd>JTICN8(a&?De$f*o+j z!s5B$qzh82%rD6U()6t`4*iv#fu{*Bef6>FY34GSKR{*YeHSXikuHY@d!WIaIzLuS zMX_hRmcd$uPSKJC?wqk({y&7< z8iy%m#x3VhQQtm;wCw>F{$Y3O#2MV%e{EH7jDfg@|3PDkZi<)*>ULzC1Q6cRvJRmy z^N(Y<567w7BT$?{{%4m=+VcEBD4-bN1l_v*H%3t)~`Y}_i9d(c+Z)G_4gxB4ej{|>G5TgKty7v@y zWq=icoP;tP(pV>vnP(1tl0bm^};CvA_tK zT#76T*bB#-2n?5)Qnyo@b;nUZba;&eSWmq2$2+c?%Lh90e@?Q%UmjaV(hAX&z-tQ) z7;fY4MpoMs^!x}tJA46x?D_jGgrm(1mum>t2ulj5P71L&Jq^A8+$$T@$tSo{T?B#2;gBWL z>(m#^Boa^cf3^U+jze~dz02cHQMbGAHB^bl53eQr>r2mh&aA}H?#5*khh3bKBwDt! zYq;blp2a@)p$UP~YZY!gIK6=(&5<6TSCIS$xjSg;1$uv*--z442W)-d4+x}N!PAC3 zbAYdpkT=Ougx5qRg%ZYzlLhaa7@NE?35WnB!lRG3f1GE-z6UAz#pRJqosaJZ)@qp9 zd#eST1EmYGFOLN3ZKE=Myfq~B*!RDYEdRd0yfVvw56kaJ(owwpPM=~OR_rFstvSXB z%fAfBUF){t3StbI+7|dWgY$>yUjXe|-Adrr?PmhIKc#T&@+6SAxgqjq@J~ zw&R+z(mSE`-n;L%{O!hoxc>Mwla3aX8zovsRN;X44aT+DCRa567u$ql3WX90)yRf9 zTf#RXC?<(gPVLR|rPO!Ysdl*J* z5f>lOn*Ps^|Ih#VKmT(*c|ZI3KmYIl`TzXS#r4JA#pLSZaW?;-AOFw){NG9YIhoHV zU)nDpXLs$No4+n+Q}eC4ntc3-4W~EPfB#&(ZNL3B`8fOa7yR~Ve%1bSK6_~Y%;xhO z)BnZCkDq4v{@ulU^WXh!{_*1G8h^OB{%FRV&pv*-x(f#&fKJb6({~^Jw^zRPbaFkJ ze+hf|zwHOWb@B1g&uMaXb@Tb-=zemA?M|Cc>6-x_4!pQL2w{p`;CMd~$se{*?ZzJ0p>d-l)8 z_3Ur+-}R>}Lj~@>+|E7*Jxy=^o=wv(FU)%%7v$&t#FCG<7a#8|>6zXc;&=JcQnr6C zuAry+?ElUlZg1vyF)(iU5UQ3&fB)b1E%UY^dGvkzv!{eX>%S*={;wmpe}9@!?tt35 zXTeM6A3G)ABe^5Y&t|F9@%(a`FXs2#$^7HYf7$x@<=QOc$H_mlBlna4$NxOLZWr8u zJ9FRcGvCDi5Og^5Z?*poXY{|(b<%to_F!h>!A+M0=M0Mz?BZg>CdpkDe_V!tUA(=x zwheA>u4WT^-%TfX({r=47k|(1fAQabHQzp21Z)5P9Bk<9<8*%UmtB`tJJ27wLE~C+N~XQ@z)Ib?jy8)KbcZYzn)y*T!g2j{d@88JS2z< z?7z4+Ji(_cXdhtnC+PnFf8IlP5AeT-+8;Fz5yLHs&_2Yq1kExS_*Ic^u`>QxQ))p^ zEPHYj3Wcl(FfPGz{dx2E_Qm|;-D1XfUtTX>-n+Oq>;8E2_lYN8mea%k31h~sH`yEJ zNTj5SJpm4-ITRA<(i0uIh&&5NFvJ$JrJA#e$QGg4*EqBSkq!}he^|nQ2IB=X-<4Pt z@2eP7qx;Iw*DaK15f;+G_8eAuc=2)a*HsJh%Yw_v-{b##Z2+X{;)S!Hy_E*=3gab&ElxdhqL>O z>1=u0_y?2nGLp@c!$Y zPt)_!`%hP;azzgd%Bo!nFHlC;Bz_ zusJztZr(4XfZ5+CcV8A`%x`XI3x59@;CeOtun_p~#(zJ<5);mIRx3j(3b718%7yQ*ibi1D^x+^qX+A%0#z~t)YZ7b+M!+{JAKm2nvxx1Uq zjljM2>F&HaUx+xf>$kJy!D5Wto9mBDlDHOkitBK2fAja3;Ig4VC}*|}O56WpHfuP! zn~bhOXZ^%uy}o!qJGr=?&PKO4Rt59KGk-mqzg=(-EsHn%TgR|H@e-IzDY~O-4r1^1 z|9CfffBOtXVZrjw?@ktDU0qziCB&9KCU@}N%`Mj$p9W{#H=W@6aWAK2mkcFu7jp5ClOG1Oc!&3LGt81df(3LPyINp`)cLcrzGCy%~{|_-xb0fTU7LkBfZ&b3U65 z2l?CK+&W$-KD#tE*OSkAS@-E0He=gh;0S-huy%z!ZBJCwD->%MV%1;_G2pP=x~h)y z-b{cVmNN>U6qpTvcsa}mjIz9#)i#=9|3Gag`M94S4b58?tZ_*#28#`AHkszLIdiH{ ze757X-_&F{w_98KE(ee4xcp=~=t<>o3N>8cIrRl|PJLmWQ(uJ6scMz3=A25)dNo?- z)L{Lu>h1?!1|S5dzgVEu^!;0GT;lZ{2p{J67xikuM(%%1YSne+geKjmw%hJA_h*O$ z2VXjDD5Xly3c@H~W~s9Zke6Q|V?PS5|MeI~*Sj#~tV!AULejMtzC+-L$ z>A)&APTG_}7?dpYNJxL$y=n!koo!S3==IPpG1pO5^y_R|4mJplpAA1Nx+PXHLuH|6 z`TOJ>+%oWD_;FkvnQfAMj>?vGBAvoLnCD`3uF+(u%E}+NfLFXny)P>?EM-u}3}w!E zFY5CoSyfKnKgjx7*?-S9O8D>99!U+f>U%CpXa$F>hrnxf|2==!D&@cTpqQ;jvIw)% z<7RyxElIZGy|t1Q-sN1|ld)WJS`ttyiLt7$UoSW~tf0k}UEY@wVl^(PBt)qh;kP0L z?y+wt9~Z@u+N&@N{z|&f+uq>hhm~6#JcyVrWCE_pun8!Y^K|cgVwK}qjo&KAQDu1g zU97!X63G>(H4T5L4n-bra!UrZ+WgiTkYE@54FyTRR7K~(z}C{`Rh_v`uh-~c_M73tvl zG5vcG!VIZ)sKpEBwH%}KY?|Xlex=eU2z8{6W?>k@<<+gg)>4&);s~aZx|2roF}16Hv?7B z<235AkGcrIa)uHkNIA~?vr%Upk#&oAlk&GW-6U*wGOq`=Dv!q{FMY<_f*DEfqwEwP zbXhIWIR@1>4H+Tvgco2^7AU|_C^^$g(QSXSFb>aPozjh?>;%)P*jCE4{!YcFQ>rL; zs`sS2QAoSn2Q~(2Jf4_L@9)Q-C*)5JwvUCHhT{puAJM8B&<}49dl^Izy$qv=UWU;_ zFR7bPIY2YB?MiGU2xQnDIfQJ)OHgj=L)(G}jbMRBoE1?|yoC0Tffpq5k_Cypv_XF& zFa019MZ{G?M2O~hczXKX{;v1?p!YHN3Jw=zi2AfqC3Z$v%KSFiACFcslBrH-i$V<$ zV>M+L-4e&~VsUXjtlcPas05n2;fB7fAv@QM|1b|T;L()$jsD)5&6JvO#`+F>2r&Tu zS|OEGg?I0odnPmCV$VIlAv?%X|0;jK7E}4%>v5-GHthsdxmLQV3P4<{#a*3E;ybEk zEVTJ}uvaHr(OX_OdSpp`JWjp;?Y*vKD%NC6nEH?%m>hjju2_wHB}g*_OC7^s-p`s0 zU9ITj?V2P!ydMswy4Gw7rC{^BKTfOqcC$7q&+Z4rY86sNScPgp{Ux!oxR`&dPO4%j zjLdv+X<4$~hL!{?O|WYwQFB!Ld zWx-l^wUr6i8Y^<{240&`{<(kd;ROh3kD&CIQ!6|pK*I^F3EqLcpo>oN|`c)NALQw6!nqUh>O3XK~Oak=;R;qrt(u9U1VVlB>3tHLluh zozkneu$Fw)_L2|9vu#A>!S#h~=SY0@+lDp|UhG*u*ay%4!OH#BBHn*;ybKI$O#e;Z zalB02alG`+hFm{P-*CK4-Eaudm}d5uHKa^`FzsX{!PK9C zpK?0eJi!xPEm)8>B}4=LHBU%D6! z=S5I7pIi<{Bd-vwBp;Qu9}kZ5+2>*3H!;2)Epj#U^Q#?W{r5l5CN~Ad;9DNxR{KBO0!;Zb(q7X>s)aD=c6OvMw(wNK7I@^c$dR}IEY}vhyB@5 zOg(B7(k%i#BSkH)=eaW$Do<-)LK%HfK6JIi~Yrjy|~n5Z4Kb&tVc#V`IYA8cO- zCG-B3Uosr!M_-D0?pORi?+r$Z96P^E^V#qk#y<)xOb=$j9>Hia;c7m3_ckb1dQ4DK zOqDh<30m)aKR@)o{S?*Kl!{np)dp92pdqD}j7wi@7<@1}#?2}gpSHYv6UoWzn zALO%3c!Yf1PnN^ugYZJ9|9zH^CcQyWCQ$6)$2VnWdMqOYtzVS)7qf6}>oxh~1RiDf zzg+j!66wtbGJi>&NPO{rd^z!ok0E`AKbgnsw3w5E$xG=0W3SAAB+-it=U3yfQ0*h8 z2qh|iNPgnHxwxe3K+QkdPe#;X@w2BqJt+u!D164V;DWfLV)uG^DDddJ)#PH4M-{%c z6-ek&>84ZJoY&mozq;gA<_xn^}ep?Yq z#g+z2NMgxzJ9re6RQAl3fuN*9J9;fDvDD(DWhGU$y&sr=DYL_8Vv#;bUyQ({8kRm< zWK!u%SIUU_+#;mJCY4yyXu*l4);A0VCsnkxF`^TTU%FBzJ84N;%wp+D3~7n$tz?Ul zlb}@H(w$@|)wTq(Qj{v&`OtEdN-gP)B<<+8w0W_Tr5&Bc&=o6bN`)_-=FN_6T)MW~ zZBuTE#>$+3AmxS6q{0oU@TFAvtyH)v6-p>=NGNScC~Zh6ZAcx76`xCmFNDHBN)@G% zZ%8BGkeW-~Y)I7Dl&G;OQDajY{` zJUuaGj?cc3qEb!{D)9uAE_xOhZNx<{~xolaUWgphT}q=Ax6Ay^W$iLa?u+d^(Rw!`ka0pUkwYg`SsPgW}fZt zzf%pmM>~f<>>PI0{~f*G-&3_WUfC+|cD{Ra^5M8k_4eL%kKga^?4KNWcaK!XXZiEE z>WBUPgST(C|I*$0>(2Jcu>#rM-rqak`Rj3w#y=iG<-MKlB z3wtV5j@`@cp|#@2H;!&U@AO;SX;<=(hQ0+;;EH@%tZa)9?3>plEkTRflWs zHj%u2F&hp(=8dZ6tM+_!?}kSwZ~q6H9USg__x`VdwZ>TIoJEv}mlS~ew|>CKl~w+z+7Rv)oo(@R3!+1MpzW{$u%CnTeyg3`Ft@O3)S72PY#Zb4|m?| zcGVQ`9e3Zp-+T9d@6UFM%m});#JZQW$#r)zE#~TMf8Fh}`Px1?I^M5@(nkz6Fy1^L z_a_kZF&?Os)IskHoHJF+=B?8%NSF-lGe>F?j=-=47rd(KcrhBm;zx7;{~Yaq@98_$ z;pLa+t%g9Y{g!mSNmyvvLg{U1Aez>{&i-GwdvJ2N)9q$ouV>@@Cfn_4Q@%zWjU9yf zDoxCTB&jw>#)wC4u7?AK)J<G-m!S3Lb1-lX zv?(aBL}HZBvl$)WyC{>pQ^gB^!y?zDhdNeh!pmTv4Z~{ND0!^3Eau3WPMDw4_cIdU z5iDeC4GD(?UJwB=vkRQs3NbX#@yEl=?lCfoTiSc5TVSJXYpZOOrZ!g7)RFL@>%-OX zpsUEbcu?&m9!M&^-a_)~{Z*p!7VYN|5{YRFdhZoq#(jswba62n7FXDRmiIojV&HbU zCM|b^nXA~l=?&)@7rGm5#kIS3?KG{QL)_7tJ-YC|j1Hq0(rpHgyd9yrxdb*wa}V(u4XC9+~g zQDK&URI+9EWw!^{NuGRvV&m3$I^xyg1!U|ZHzUKT)qfMX%gHQj5<2FY=xlNsNW7M% zw8GNiQY9Yp0yaXJ{jfP_^H`A7+}UfA5Hq7@;NNY-rx&=W+g$!_%XkrFYWz< zojo@IE%w!rdkESM%sBr!D%nrQkHO5Unx5OG8HpJZVCGTN^wKWa3gb0iS+0yU;#v3l3ulz{bJv!g98QxO z{u!S;AfA%<0U*Un4YS`jJQ>aFHEnSw9tfJZtU?xVo!(b}Q1vaZ`JXuVun)_Y{b8pw zoKQy^H=A~k$Z|#LaE%OMKanX~a`uvF8h}dD)T{TePE$|y6r26;|Ca79(PvMFN?*;2 z-6~hl09iHXoz;}M3&OfPp3J-2wq*6Vr9Ga_@%|A!9^T+V%|=hqZ1wC1LW8CPbl>kL zGjqGY4_>%`v$;Wmw6l>q_~m12<(~+(J>zh)n6ndRLn%$|uNw;Sg05e?H+cW5C1HbP zNm-4r=_8=r@O#u!_=6(b=-uSHHyoFpLQfmoQ3ITn>3$aea#y&GGkZ`S=fBK9OeRwZ zFU0-gnd^0=%V}S$d0_V&9ni^l#kPdAUL>pbORWfh#NFCz50n)fo9AB@Yt=T0fGKs@ z8x8-F4?ff)_K$h*Q()~d{U78;Hk5XZ)`?g*Wwwc^#>s3{_W3Z^PlVzd-Jg4-UBG@7 zgJ?NeaIu&L2!x7Z$>;Bt$_SFCq)Pb+YS>jvfhO<|6v~nci-`Vdjm^h9VVjk}%nZ8S zp(a9q_qs?xtD=DbbY4M(i^b(7R%kTL=OQ0n8lxL)NnAgvQdQ0}|9U$IeUvdJtA>S#1D+emV8`8tnj~QjDbs$VBvXpQ`cAv&d9& zI)#04HeSmVi!AapFj-hsoNfh3Jl0j)N-`Bc4(C_RhT7p;Ef|QRpHpB6vSnb?tQdh) z_R}?mhSi7=E(}&3q1Bd6V5wybR22HNJ)#l(*Xwv#PR$C@Fm%Czd4&O4yiWKzMbjI9 z+r;Ksa2W$xPuvN-y3xeGtOvZ)V6mJuSF#l}>})dh%;9q0+XS7EHQj1MX`uQlJqXxDUC?7d-(8wDx7ev{g}g1+>D%V7#2d)Zg4Zlv>fiZ(f}V$ zc%eJ%Ws0!~6hX<=``8ic6J!!KiOYdmUQ9-xb2ZI7 z;{kdTH*@_57ch@aAu!nb-)@RxtMk+PPwVT$wmQzRHg5aSC5~qwumA08KA)yr-d6GK zxlvoYuwFsKxn96QCs*uxQ*_pU*Voj4=)cet{-JmYdsRP>nN5Fd*~iH|`|8&GUbfGD z&gMp>+w8_z>df&E^xLJq61l|45)I&-L0$h@olDn0)73Qf&}u{WyJmBSSE;i$)M&QY zKKxkfta3re#QFaC_#hh$i~dCQ|3y!XTGQi+IGm6GdLpH&31*s1^D$h10bq5RkIH%H z{u}`FO+0|Jt&rE6^2yn(AGjMAcl;G66#a1_8s&`G%+)(2el0brFu=Xa%I7 z&gY|i;M)zgff0sk%#=>eas~v*X>^gprmdBiwX8py6uCAvGL)=#)T21TQ^k_nILpU> zzLuRki}dTSZf}@@dUNQ{5zckMfw4W7mn~kjD?zsG! zgu5`9M7t$=GY3@CTw;W&>(Q|fx8-G;Et}Ehn)%}f{8x7PB_Y#)1Yp@R(|a>Or~;)l zQkmIZnm3$iuBY2hsrP1TXti3txz@iTzbU%rNQ?EmL@_+ys?OD!nKgcJQXv=1q^dPUY(Fqp`rc5> zuv*3n8lJx51F#K$=0&YnX)lXeF4bz|U38Q4r_c#4g%7@gD^x$(*>tK+U`pc(tYU3c zy$i@qq${<>brv?moT*J=_}~$=fN*@tVx_1*>V4TQyzMeHsrkz5?Z?dbHT4X}lT+jA<3H8{Hr`iG; z2TJ$)W^*Io^tDe7qa$13SXFm`v5o{xGAG%dOCSRsUxca8_l!-UO&OEY_dBsDH2t?? z&}ry@&sM^kRh${aa%a#4BMNMoV8WU#X#LY_vYnRZ#<|A2$vTeXQi)HgBw|hTx-4SY z0_&UvB|~ECd(7uls8AxnT%8gj#)liae_8-3{o(g0ss0)6 zqTno+l82$BNz28566U`XMWCKU7SH*T#ea1deONiGwUSPr!F^wrI9ztzg^;bO#|8&~ zPRSv^6nR6vSZ>`ERW}6kas8&CuS$`OjC|U38<=d9X0}kxt)r9rOsr9iHjGua40+SI z-?kwru&olZ*<~o%jqw0kalXS=ZPa#abf=Bg!89dS2Qt-7(W?~K-IK+*Ai^Q03ro#>2^;~l-S1xQ##>QSp%xG3>#;Wi^ z4D=^S01^aR1K=wSW9w4bof)Pm44I=db)bE&30~I$T#S34d&3dtsg(qx7*iCWy&Ae4 zO}dPTRV805(n#x#9h}Fmr}H9vqMezm8jN~{zRVFXYp3M0=VskZxpdhO_SRy^GsfC-aV&+6*yR6RQQh9f?M{`q=?@jT4i=Q5~~j^8S+89;ShKj zQ5GHwA4)o;&j1w@a;NF2JsF~ZvL0@n|00`1*};SD3F#9CGvWU#4n=S*%V-v?mQdnU zbaMCsFORL%QVeC@!>;FEbf?fzI1{bZXtg5|f=--<{7U`_xKk2TAaY4OhF|YEC5B6w z(^N?q!NVT4X2W?-rUX4DibI0q7T~f?G}7;;H(RacPqRk{YWmcF&LwDnM<;Kya^nP9 zB)~SI%@o-)57_@LgW^5UgTSRgDa&o|dUKt>;Q@|;607Q?RB6x;vS7(oZe^^_{f>aY z7qkPxRzs}aSEz*>-yK01j zFYOs^@Q<9-rNtMLG<9L#l7#&eemRJ7lV) zm~!v1`zmnQ;u<;UU^bag`jb&Jt|$d`#O-ul?#K5kdzFQm79hR$&KPv?3r%Q9KE8k1 zZ2UC)Y3y8cfmo*Qe?i2JmL=5cRRq%kw1H;2dCRZ7m`-u*@U=akoWRfRUcpoY=o)MB zsIxywub7U8^XB?b#gldBE~?$ahW`L8_wX93iOo*QFImU8eUm*q zi(2WcPz-6;y#Ps`P(nqaCK1-?l@r8Ex(-* z=On-~OcOLT?ShEk<%w zh6#ErH@o&RLtv~$_8qM@*VCkW;00H7kn|B0MABJ*z0?V>l_(>q_$x3rLS$Z$=i#)rga=3Znl01 z=mGuub%gOFHZq(Of(pl~>iDzm$zlY-W%CSh(B>}FMMeibyT}dVN_h-$h|DG?{K*FO z^H@sy3yyu-MnELI&jKfAVr#qcti2hXf9|uGADc#y9>-t4iqzx&Xfeo@cz>g4dBtg_ zn6)>5!c&4xFxqJO8zrsvSO(M;8eA-7VK#+5Ye%dEsBI zu(Q8ngk4=_tL-lnKX*>{+QD+pTMj&T^-#st_|7^6U|IVH&Y=UpId^+lXDcxfIZ$CjKY@-3e`+C=259 zM?r{MZ1BuahAMBr`~VR_HocRdjg$~;+ec;J<#V;I6yeDv{{{xP|tkMB}ndX+v zFijt{n;cI%?J2DRUzz=)N!ZD9+V&oqU%8`OYxyc@XK{(z=^VgO3rel;($?#o;Cf#< zp6D?*BY<9B#$|Lw(;KP)I>G=KuV0gYi&IxqXAH>{GH$wf*P7ySf)Sn{gjOPcG}Kf) z2w87 z`ds*!V8O6cld>$;w{B-)>)#wSBvrGnGKolfojCvutc=CO@fWNKWJGWQ=rYcKgM5_F z^Eh68byK-rG{r~X(>gMgySl@H+xt{In^MK4;n1a>;7%N~Z9-))S+%%!8F*6`Bwuk~ z!fv$6W;i(xe-6zM086g|rd+tfP`!AJ_Q3YA!2dQ~&6Y+?x9ey*97!84L|Jz%p=&%? z_c0!?H=sjwoOY(3xT03Z$Cnd-SBqM;*(dHKpQutnm{hw~wv~pN8lBOf1={(rl2lAp ztLpLCW{5EzI&`;^`D0uiS4HMj&fwHn+jc$Ci5-EuF$HwWTmI1^`&e3KSt9u&N}v$L zTHK?Ti6Kj5WAuQzwDA#&9^=>!hsph^w;AODaW#Z)OXA;BC}WY z%$Pz=EDq40@lg zwsn5cdVMAM*Pdp6$@`1BgSrjL1@+yIw;?2!t=>AQaU`{Mxx|$E6D0}P&7EYo0K)_H zkPgnt7Q&{_zQl4)=aR91$RviDo&=C7-YXPtWWk(Ue-oRcRnFati$i=vfupRU#E51o zu$o;;A$$2Ov<(RIS=io;T_`=s<)hRu{x@EMB#v2Th!3*=G`&6126s&{nhPSU#LvS^ zr6}e8?HT=BAuh`NYrx~a?R<=0%xlqS9u#GJ35OKaFhS>0LoXG7P~Ur3BdV(~3!d6w zi0VT=@`J%f6H6FFW~`6Vmr$5R{Bmc4s+IR)c$xRV^hcChsn|ix2NI1l8kKe1{C$x; zIh5aM7W_3!GvYn=<1VGj-grS!t)@t+`cw)jWW-tOA()`KL;^m158Lnz<_O`P(l?l} zHo18~N)P$iDd((zZV(^u!uDDmMX;B(b51ws@jRMevDU z!PiXtJCxZ=j0YDZcUV7VFGwnKEFn?=(O1K&>e=l(swgLYa+E(0Q+9c2@LF}LYF*(Z z)5rfQ(y}oKW@`9%9;FcDG|#*wf4R%=mj!A3@;HNE7A5L`%Yz(!TyWUG)8PchDcF2S z*vWjmnzPsWUWl$dVcP8XMxzhTyeT*~tY!Q$9anF8)I?;*d%NbY; zcN~=-G%EamlXfD{OCXi+mIzcQ^(#weq~|fcx5WF9-b-pMJ3EJn$shwvcPu*v@M?1_4P$X=wvaE#+5%*YsmS{XrJ|v=4`2ubk{7$uZiZ8y* z8L!~)>8LGIeqyIp57IlGv{>(6aA|838Jn|!8Ay5%YX5HD2+7a%Lq4YZPGC%NvSiIH zW_;QsL04;w>FU!pUkH^~R>AHI`a%(C==|==Svs_E(t^qAi>BhQFTy;t$VRzcBped_ zGcC7&tchcCJ%v94&Dzx?&sL>FJ#AH3OQinlOVDF0H=%E!I_!-Vwl}P!`$exNje&D# zf`76=wOkhX5F3iX1+6pP1k+G1yV91QASrPz`&LX>�yUz=aphCZ2B+u#4PVb;&oX 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 Date: Sat, 16 May 2026 13:44:31 -0700 Subject: [PATCH 33/33] Bump ModCDP to 0.0.19 --- package.json | 2 +- python/pyproject.toml | 2 +- python/uv.lock | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index b38d82a..a9aa013 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "modcdp", - "version": "0.0.18", + "version": "0.0.19", "repository": { "type": "git", "url": "git+https://github.com/pirate/modcdp.git" diff --git a/python/pyproject.toml b/python/pyproject.toml index 29d703e..b2f0e3d 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "modcdp" -version = "0.0.18" +version = "0.0.19" description = "Python client for ModCDP." readme = "README.md" requires-python = ">=3.11" diff --git a/python/uv.lock b/python/uv.lock index c1a6a00..68c2ac9 100644 --- a/python/uv.lock +++ b/python/uv.lock @@ -13,7 +13,7 @@ wheels = [ [[package]] name = "modcdp" -version = "0.0.18" +version = "0.0.19" source = { editable = "." } dependencies = [ { name = "pydantic" },

    -JX_Ni73WxIi`>R3E$i($0FxY#0{;PUwgLC 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�FJGl{jXRH6+Wn=3>A5i{DHDi3C8F+@8IT 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