[object Object]

← back to Commercialrealestate

CRCP email-alerts: snapshot-diff engine + George send wiring (DTD verdict A), dry-run proven, launchd+send gated

91621f0faab60b3c44521778faed2147bb0df181 · 2026-07-12 10:58:04 -0700 · Steve

Files touched

Diff

commit 91621f0faab60b3c44521778faed2147bb0df181
Author: Steve <steve@designerwallcoverings.com>
Date:   Sun Jul 12 10:58:04 2026 -0700

    CRCP email-alerts: snapshot-diff engine + George send wiring (DTD verdict A), dry-run proven, launchd+send gated
---
 .gitignore                                |    2 +
 data/alerts-config.json                   |   18 +
 data/alerts-state.json                    | 4160 +++++++++++++++++++++++++++++
 scripts/com.steve.crcp-email-alerts.plist |   20 +
 scripts/email-alerts.js                   |  225 ++
 scripts/run-email-alerts.sh               |    9 +
 6 files changed, 4434 insertions(+)

diff --git a/.gitignore b/.gitignore
index 9925182..6261140 100644
--- a/.gitignore
+++ b/.gitignore
@@ -14,3 +14,5 @@ data/assessor.sqlite
 data/assessor.sqlite-shm
 data/assessor.sqlite-wal
 data/dre-cache.json
+
+data/alerts-out/
diff --git a/data/alerts-config.json b/data/alerts-config.json
new file mode 100644
index 0000000..8d9daae
--- /dev/null
+++ b/data/alerts-config.json
@@ -0,0 +1,18 @@
+{
+  "from": "steve@designerwallcoverings.com",
+  "subscribers": [
+    {
+      "email": "steve@designerwallcoverings.com",
+      "name": "Steve",
+      "metros": [
+        "*"
+      ],
+      "segments": [
+        "listings",
+        "brokers"
+      ],
+      "cadence": "daily"
+    }
+  ],
+  "note": "cadence is adjustable per-subscriber (daily|weekly|instant); the launchd plist sets how often this script runs."
+}
\ No newline at end of file
diff --git a/data/alerts-state.json b/data/alerts-state.json
new file mode 100644
index 0000000..8543ab7
--- /dev/null
+++ b/data/alerts-state.json
@@ -0,0 +1,4160 @@
+{
+  "last_run": "2026-07-12T17:56:55.301Z",
+  "seen": {
+    "listings": [
+      "victory13350",
+      "sepulveda8144",
+      "canby7260",
+      "canby7304",
+      "schoenborn17920",
+      "amigo8357",
+      "wilbur9014",
+      "tilden8843",
+      "tilden8837",
+      "sanfernando10004",
+      "vannuys12872",
+      "sherman21627",
+      "owensmouth7129",
+      "hillhaven10139",
+      "wilkinson5214",
+      "vannuys6329",
+      "sepulveda10011",
+      "foothill6851",
+      "comercio5301",
+      "vanowen15840",
+      "canby7454",
+      "correnti12600",
+      "burbank10701",
+      "canoga6020",
+      "crx2560155",
+      "crx2448930",
+      "crx2455873",
+      "crx2592616",
+      "crx2453716",
+      "crx2442308",
+      "crx2412907",
+      "crx2414372",
+      "crx2352672",
+      "crx2413973",
+      "crx2413999",
+      "crx2414120",
+      "crx2412240",
+      "crx2413606",
+      "crx2489729",
+      "crx2455604",
+      "crx2586908",
+      "crx2417808",
+      "crx2569960",
+      "crx2516882",
+      "crx2516587",
+      "crx2563662",
+      "crx2413947",
+      "crx2404653",
+      "crx2558648",
+      "crx2566665",
+      "crx2473428",
+      "crx2488780",
+      "crx2407231",
+      "crx2516979",
+      "crx2141640",
+      "crx2413442",
+      "crx2414348",
+      "crx2413131",
+      "crx2568125",
+      "crx2147226",
+      "crx2159323",
+      "crx1715584",
+      "crx2516747",
+      "crx2589903",
+      "crx1080991",
+      "crx2412770",
+      "crx2413872",
+      "crx2412328",
+      "crx2412878",
+      "crx2584910",
+      "crx2516918",
+      "crx2412641",
+      "crx2569982",
+      "crx2429890",
+      "crx2450078",
+      "crx2595754",
+      "crx2411991",
+      "crx2461695",
+      "crx2559966",
+      "crx2521992",
+      "crx2485727",
+      "crx2429895",
+      "crx2553265",
+      "crx2593834",
+      "crx2492613",
+      "crx1834484",
+      "crx2598330",
+      "crx2599659",
+      "crx2411079",
+      "crx2593838",
+      "crx1940493",
+      "crx2408963",
+      "crx2555977",
+      "crx2459525",
+      "crx2528936",
+      "crx2454897",
+      "crx2448190",
+      "crx2412676",
+      "crx2406533",
+      "crx2488797",
+      "crx2599666",
+      "crx2406488",
+      "crx2516555",
+      "crx2597846",
+      "crx2367932",
+      "crx2359682",
+      "crx2432329",
+      "crx2351569",
+      "crx2501337",
+      "crx2248520",
+      "crx2367942",
+      "crx2444425",
+      "crx2432283",
+      "crx2191344",
+      "crx2563552",
+      "crx2487713",
+      "crx1955522",
+      "crx1938661",
+      "crx2413928",
+      "crx2474522",
+      "crx2444891",
+      "crx2434649",
+      "crx2434648",
+      "crx2597775",
+      "crx2474524",
+      "crx2434647",
+      "crx2487860",
+      "crx2598368",
+      "crx2555996",
+      "crx2420892",
+      "crx2592654",
+      "crx909311",
+      "crx2248442",
+      "crx2243292",
+      "crx2404672",
+      "crx2410775",
+      "crx2411617",
+      "crx2411195",
+      "crx2407966",
+      "crx2457987",
+      "crx2412034",
+      "crx2420813",
+      "crx2438538",
+      "crx2557270",
+      "crx2485705",
+      "crx2516983",
+      "crx2456747",
+      "crx2417819",
+      "crx2521967",
+      "crx2453703",
+      "crx2599675",
+      "crx2598326",
+      "crx2467993",
+      "crx2516738",
+      "crx2557242",
+      "crx2455566",
+      "crx2591312",
+      "crx2601111",
+      "crx2497287",
+      "crx2350112",
+      "crx2596790",
+      "crx2475208",
+      "crx2478438",
+      "crx2468713",
+      "crx2332656",
+      "crx987125",
+      "crx2417508",
+      "crx1471023",
+      "crx2335028",
+      "crx2450916",
+      "crx2431853",
+      "crx1090005",
+      "crx2590728",
+      "crx2571031",
+      "crx2373046",
+      "crx2172554",
+      "crx2178383",
+      "crx2158111",
+      "crx2202052",
+      "crx2361653",
+      "crx2367983",
+      "crx2450894",
+      "crx2296609",
+      "crx2515455",
+      "crx2325704",
+      "crx2596717",
+      "crx2463547",
+      "crx2527434",
+      "crx2405519",
+      "crx2373010",
+      "crx2412036",
+      "crx2558601",
+      "crx2553076",
+      "crx2602754",
+      "crx2595729",
+      "crx2411843",
+      "crx2366367",
+      "crx2489860",
+      "crx2416449",
+      "crx2314970",
+      "crx2586488",
+      "crx1757335",
+      "crx2377976",
+      "crx2451327",
+      "crx2559962",
+      "crx2569955",
+      "crx2516709",
+      "crx2550520",
+      "crx2420124",
+      "crx242195",
+      "crx2530138",
+      "crx2372954",
+      "crx2557260",
+      "crx2464843",
+      "crx1792654",
+      "crx1879977",
+      "crx2521600",
+      "crx2521503",
+      "crx2463693",
+      "crx2403809",
+      "crx2431006",
+      "crx2601161",
+      "crx2412874",
+      "crx2597045",
+      "crx2405897",
+      "crx2551341",
+      "crx2071907",
+      "crx2372980",
+      "crx1164872",
+      "crx2372984",
+      "crx2559970",
+      "crx2407449",
+      "crx2356205",
+      "crx2435605",
+      "crx2568321",
+      "crx2602744",
+      "crx2336124",
+      "crx2322500",
+      "crx2429304",
+      "crx2559892",
+      "crx2428645",
+      "crx2428637",
+      "crx2431106",
+      "crx2439799",
+      "crx2440604",
+      "crx2357325",
+      "crx2468993",
+      "crx2516953",
+      "crx2411859",
+      "crx2601113",
+      "crx2598366",
+      "crx2602750",
+      "crx2413688",
+      "crx2413910",
+      "crx2429891",
+      "crx2600597",
+      "crx2593819",
+      "crx2372968",
+      "crx2438562",
+      "crx2420865",
+      "crx2558725",
+      "crx2529015",
+      "crx2412882",
+      "crx2033266",
+      "crx2520507",
+      "crx2429631",
+      "crx2527427",
+      "crx2520514",
+      "crx2408673",
+      "crx2139753",
+      "crx2250546",
+      "crx2502361",
+      "crx2516814",
+      "crx2356108",
+      "crx1794920",
+      "crx1402455",
+      "crx2453727",
+      "crx2453721",
+      "crx2433226",
+      "crx2376584",
+      "crx1843715",
+      "crx2411002",
+      "crx1751796",
+      "crx2433142",
+      "crx2552525",
+      "crx1875307",
+      "crx2433198",
+      "crx2489432",
+      "crx2417556",
+      "crx2517792",
+      "crx2512893",
+      "crx2491283",
+      "crx2466498",
+      "crx2452428",
+      "crx2368430",
+      "crx2326846",
+      "crx1768605",
+      "crx1728012",
+      "crx2598386",
+      "crx2598352",
+      "crx2584899",
+      "crx2557254",
+      "crx2517002",
+      "crx2451311",
+      "crx2446031",
+      "crx2438711",
+      "crx2420893",
+      "crx2417805",
+      "crx2414163",
+      "crx2413922",
+      "crx2413615",
+      "crx2411174",
+      "crx2393134",
+      "crx2560401",
+      "crx2412972",
+      "crx2411503",
+      "crx2406479",
+      "crx2589933",
+      "crx2458214",
+      "crx2528947",
+      "crx2373274",
+      "crx2435776",
+      "crx2373271",
+      "crx2412897",
+      "crx2381019",
+      "crx2602698",
+      "crx2380711",
+      "crx2517773",
+      "crx2305863",
+      "crx2513076",
+      "crx2487868",
+      "crx2602719",
+      "crx2411602",
+      "crx2412730",
+      "crx2321865",
+      "crx2568139",
+      "crx2568140",
+      "crx1685493",
+      "crx1641989",
+      "crx1450218",
+      "crx1329231",
+      "crx2602473",
+      "crx2555624",
+      "crx2516542",
+      "crx2236344",
+      "crx2166990",
+      "crx2161076",
+      "crx1832570",
+      "crx1747076",
+      "crx2349383",
+      "crx2601077",
+      "crx2598374",
+      "crx2592618",
+      "crx2591306",
+      "crx2557274",
+      "crx2492620",
+      "crx2488951",
+      "crx2488644",
+      "crx2475194",
+      "crx2464659",
+      "crx2454357",
+      "crx2453748",
+      "crx2446015",
+      "crx2414312",
+      "crx2414220",
+      "crx2413390",
+      "crx2412218",
+      "crx2412078",
+      "crx2412019",
+      "crx2411332",
+      "crx2408316",
+      "crx2406735",
+      "crx2099316",
+      "crx1703868",
+      "crx2569966",
+      "crx1823578",
+      "crx2430555",
+      "crx2551324",
+      "crx2451317",
+      "crx2491303",
+      "crx1940288",
+      "crx1163005",
+      "crx2412499",
+      "crx2257159",
+      "crx2307929",
+      "crx2356554",
+      "crx2348985",
+      "crx2453787",
+      "crx2490971",
+      "crx2419928",
+      "crx2351568",
+      "crx2309751",
+      "crx2596350",
+      "crx2328008",
+      "crx1686510",
+      "crx2453759",
+      "crx2437980",
+      "crx2521842",
+      "crx2477882",
+      "crx2328995",
+      "crx1889257",
+      "crx2343456",
+      "crx2180883",
+      "crx1660795",
+      "crx2290389",
+      "crx2158807",
+      "crx2363749",
+      "crx2356596",
+      "crx2415070",
+      "crx2250613",
+      "crx2066415",
+      "crx1953508",
+      "crx2370987",
+      "crx906002",
+      "crx2009674",
+      "crx2226945",
+      "crx2182160",
+      "crx2312500",
+      "crx2185373",
+      "crx1924268",
+      "crx1994020",
+      "crx2432078",
+      "crx2458037",
+      "crx2517650",
+      "crx2357822",
+      "crx1713971",
+      "crx2563113",
+      "crx2365438",
+      "crx2344360",
+      "crx2515180",
+      "crx2516679",
+      "crx2466895",
+      "crx2413343",
+      "crx2404642",
+      "crx2486866",
+      "crx2477472",
+      "crx2558647",
+      "crx2516951",
+      "crx2563649",
+      "crx2373048",
+      "crx2369737",
+      "crx1921631",
+      "crx2170349",
+      "crx2557317",
+      "crx2448706",
+      "crx2416214",
+      "crx2358749",
+      "crx2372714",
+      "crx2466932",
+      "crx2413862",
+      "crx2406705",
+      "crx2592650",
+      "crx1902542",
+      "crx2318404",
+      "crx2487897",
+      "crx2486883",
+      "crx2344816",
+      "crx2598049",
+      "crx2344818",
+      "crx2143793",
+      "crx2325416",
+      "crx2328002",
+      "crx1714324",
+      "crx2358522",
+      "crx2145818",
+      "crx2449672",
+      "crx1987230",
+      "crx2456676",
+      "crx2435647",
+      "crx2316970",
+      "crx2093313",
+      "crx2194175",
+      "crx2370821",
+      "crx2365401",
+      "crx2292940",
+      "crx2375072",
+      "crx2256393",
+      "crx2429601",
+      "crx2517864",
+      "crx2330224",
+      "crx2333064",
+      "crx2368080",
+      "crx2371582",
+      "crx2406293",
+      "crx2372996",
+      "crx2519115",
+      "crx2344488",
+      "crx2449600",
+      "crx2499412",
+      "crx2368662",
+      "crx2589460",
+      "crx1757597",
+      "crx2417836",
+      "crx2340424",
+      "crx2333061",
+      "crx2376288",
+      "crx2477695",
+      "crx2477527",
+      "crx2420067",
+      "crx2466442",
+      "crx2590202",
+      "crx2475831",
+      "crx2412965",
+      "crx2520513",
+      "crx2333062",
+      "crx2516142",
+      "crx2500957",
+      "crx1818030",
+      "crx2596972",
+      "crx2561453",
+      "crx2466644",
+      "crx1452221",
+      "crx2558332",
+      "crx2489815",
+      "crx2416009",
+      "crx2416312",
+      "crx2444470",
+      "crx2325221",
+      "crx2438100",
+      "crx2554125",
+      "crx2429605",
+      "crx2429551",
+      "crx2328455",
+      "crx2416294",
+      "crx2416286",
+      "crx2416321",
+      "crx2416336",
+      "crx2487003",
+      "crx2561168",
+      "crx2585130",
+      "crx2521449",
+      "crx2516759",
+      "crx2300165",
+      "crx2486729",
+      "crx1954127",
+      "crx2368743",
+      "crx2450303",
+      "crx2416275",
+      "crx2439689",
+      "crx2566271",
+      "crx2412639",
+      "crx2558745",
+      "crx2416267",
+      "crx2566207",
+      "crx2593532",
+      "crx2555633",
+      "crx2430730",
+      "crx2351601",
+      "crx2601579",
+      "crx2601123",
+      "crx2589888",
+      "crx2569062",
+      "crx2569045",
+      "crx2514318",
+      "crx2459471",
+      "crx2429554",
+      "crx2413307",
+      "crx2413001",
+      "crx2406729",
+      "crx2159204",
+      "crx2143637",
+      "crx1452034",
+      "crx2553073",
+      "crx2463400",
+      "crx2416610",
+      "crx2403659",
+      "crx2233450",
+      "crx2435632",
+      "crx2259318",
+      "crx2419667",
+      "crx1418952",
+      "crx2407077",
+      "crx2411039",
+      "crx2454839",
+      "crx2290430",
+      "crx2475014",
+      "crx2158204",
+      "crx2599346",
+      "crx2601285",
+      "crx2589872",
+      "crx2454874",
+      "crx2411816",
+      "crx2250620",
+      "crx2199394",
+      "crx2157941",
+      "crx2209408",
+      "crx2325277",
+      "crx2320144",
+      "crx2148172",
+      "crx2299312",
+      "crx2351472",
+      "crx2321196",
+      "crx2157323",
+      "crx1933119",
+      "crx1573719",
+      "crx2148140",
+      "crx2213659",
+      "crx2378444",
+      "crx2451505",
+      "crx2327739",
+      "crx2526164",
+      "crx1705845",
+      "crx2451751",
+      "crx2518680",
+      "crx2215501",
+      "crx2416555",
+      "crx2478397",
+      "crx2448235",
+      "crx1933956",
+      "crx2535653",
+      "crx2535076",
+      "crx2414059",
+      "crx1964727",
+      "crx2589725",
+      "crx1123415",
+      "crx2535321",
+      "crx2336095",
+      "crx2559959",
+      "crx2526695",
+      "crx1715314",
+      "crx2601115",
+      "crx2586531",
+      "crx2566180",
+      "crx2566172",
+      "crx2561160",
+      "crx2560991",
+      "crx2558607",
+      "crx2519309",
+      "crx2476742",
+      "crx2464452",
+      "crx2461228",
+      "crx2454716",
+      "crx2435116",
+      "crx2366653",
+      "crx2196020",
+      "crx2180914",
+      "crx2180895",
+      "crx2180533",
+      "crx2180431",
+      "crx1959728",
+      "crx2522195",
+      "crx2462420",
+      "crx2454906",
+      "crx2412518",
+      "crx2412498",
+      "crx2371805",
+      "crx2157463",
+      "crx2157316",
+      "crx2413418",
+      "crx2252335",
+      "crx1576837",
+      "crx2555586",
+      "crx2444774",
+      "crx2463713",
+      "crx2420897",
+      "crx2158188",
+      "crx1186906",
+      "crx2335806",
+      "crx2456745",
+      "crx2373049",
+      "crx2373002",
+      "crx2563655",
+      "crx2516840",
+      "crx2598218",
+      "crx2468039",
+      "crx2489749",
+      "crx2411151",
+      "crx2413524",
+      "crx2429599",
+      "crx2256560",
+      "crx2240599",
+      "crx2596590",
+      "crx2411317",
+      "crx2457600",
+      "crx2596553",
+      "crx2460569",
+      "crx2589883",
+      "crx2366413",
+      "crx2597749",
+      "crx2596669",
+      "crx2596637",
+      "crx2557428",
+      "crx2526726",
+      "crx2474539",
+      "crx2455340",
+      "crx2450183",
+      "crx2440102",
+      "crx2419023",
+      "crx2373248",
+      "crx2373233",
+      "crx2365708",
+      "crx2362915",
+      "crx2320469",
+      "crx2320234",
+      "crx1856276",
+      "crx2458209",
+      "crx2599758",
+      "crx2598169",
+      "crx2598155",
+      "crx2593829",
+      "crx2591326",
+      "crx2584914",
+      "crx2555994",
+      "crx2528930",
+      "crx2516883",
+      "crx2516715",
+      "crx2501569",
+      "crx2477456",
+      "crx2476184",
+      "crx2456748",
+      "crx2432189",
+      "crx2417792",
+      "crx2413825",
+      "crx2413144",
+      "crx2411671",
+      "crx2410331",
+      "crx2409531",
+      "crx2404984",
+      "crx2374309",
+      "crx2321550",
+      "crx2319654",
+      "crx2557267",
+      "crx2553266",
+      "crx2491333",
+      "crx2412548",
+      "crx2412457",
+      "crx2412260",
+      "crx2327842",
+      "crx2156710",
+      "crx2356138",
+      "crx2558669",
+      "crx2458180",
+      "crx2412407",
+      "crx2437892",
+      "crx2561699",
+      "crx2499452",
+      "crx2443486",
+      "crx2512522",
+      "crx2410157",
+      "crx2416558",
+      "crx2413034",
+      "crx2378355",
+      "crx2502637",
+      "crx2446005",
+      "crx2586959",
+      "crx2451326",
+      "crx2485745",
+      "crx2586352",
+      "crx2516781",
+      "crx2516778",
+      "crx2407199",
+      "crx2453697",
+      "crx2527474",
+      "crx2516881",
+      "crx2414176",
+      "crx2460636",
+      "crx2551303",
+      "crx2559760",
+      "crx2438552",
+      "crx2516548",
+      "crx2586364",
+      "crx2551308",
+      "crx2527472",
+      "crx2408992",
+      "crx2516949",
+      "crx2592636",
+      "crx2591344",
+      "crx2528945",
+      "crx2599223",
+      "crx1687173",
+      "crx1950482",
+      "crx1681284",
+      "crx2600670",
+      "crx2599766",
+      "crx2599540",
+      "crx2599382",
+      "crx2592193",
+      "crx2586957",
+      "crx2585080",
+      "crx2566136",
+      "crx2563693",
+      "crx2561730",
+      "crx2561711",
+      "crx2520449",
+      "crx2516584",
+      "crx2513127",
+      "crx2512725",
+      "crx2502492",
+      "crx2502484",
+      "crx2501678",
+      "crx2501482",
+      "crx2501398",
+      "crx2501364",
+      "crx2501119",
+      "crx2501114",
+      "crx2493395",
+      "crx2492824",
+      "crx2492576",
+      "crx2489813",
+      "crx2486799",
+      "crx2478311",
+      "crx2476236",
+      "crx2475803",
+      "crx2474574",
+      "crx2465002",
+      "crx2464752",
+      "crx2461503",
+      "crx2458130",
+      "crx2455582",
+      "crx2452021",
+      "crx2451223",
+      "crx2451161",
+      "crx2445528",
+      "crx2443454",
+      "crx2443442",
+      "crx2443430",
+      "crx2436694",
+      "crx2435832",
+      "crx2428216",
+      "crx2412337",
+      "crx2374997",
+      "crx2361985",
+      "crx2316623",
+      "crx2190749",
+      "crx2036352",
+      "crx2348001",
+      "crx2557404",
+      "crx2598250",
+      "crx2563576",
+      "crx2468914",
+      "crx2445984",
+      "crx2438540",
+      "crx2345273",
+      "crx2340416",
+      "crx1933230",
+      "crx2602695",
+      "crx2598363",
+      "crx2566700",
+      "crx2551387",
+      "crx2540970",
+      "crx2491338",
+      "crx2488753",
+      "crx2464934",
+      "crx2460678",
+      "crx2458193",
+      "crx2456771",
+      "crx2453729",
+      "crx2453699",
+      "crx2448949",
+      "crx2448180",
+      "crx2431069",
+      "crx2427704",
+      "crx2414181",
+      "crx2414136",
+      "crx2413927",
+      "crx2413860",
+      "crx2413447",
+      "crx2412954",
+      "crx2408217",
+      "crx2405515",
+      "crx2404505",
+      "crx2381491",
+      "crx2377000",
+      "crx2592644",
+      "crx2584932",
+      "crx2563661",
+      "crx2555981",
+      "crx2528949",
+      "crx2527439",
+      "crx2521988",
+      "crx2521961",
+      "crx2516643",
+      "crx2474576",
+      "crx2447171",
+      "crx2413713",
+      "crx2412735",
+      "crx2227723",
+      "crx2519363",
+      "crx2558159",
+      "crx2553085",
+      "crx2527460",
+      "crx2462656",
+      "crx2411951",
+      "crx2411949",
+      "crx2408988",
+      "crx2406389",
+      "crx2601104",
+      "crx2455605",
+      "crx2455603",
+      "crx2439835",
+      "crx2413728",
+      "crx1629559",
+      "crx1629548",
+      "crx2497416",
+      "crx2407361",
+      "crx2418989",
+      "crx2413574",
+      "crx2517485",
+      "crx2376444",
+      "crx2431095",
+      "crx2455513",
+      "crx2404113",
+      "crx2570009",
+      "crx2412313",
+      "crx2406689",
+      "crx2414338",
+      "crx2516762",
+      "crx2552456",
+      "crx2402556",
+      "crx2413223",
+      "crx2591304",
+      "crx2516905",
+      "crx2440762",
+      "crx2491328",
+      "crx2560421",
+      "crx2599665",
+      "crx2404710",
+      "crx2517516",
+      "crx2316601",
+      "crx2451298",
+      "crx2517468",
+      "crx2411295",
+      "crx2416579",
+      "crx2404110",
+      "crx2553100",
+      "crx2599677",
+      "crx2462664",
+      "crx2434675",
+      "crx2560630",
+      "crx2477465",
+      "crx2473424",
+      "crx2447186",
+      "crx2434627",
+      "crx2433212",
+      "crx2413035",
+      "crx2406328",
+      "crx2403573",
+      "crx2376758",
+      "crx2333676",
+      "crx2296399",
+      "crx2598349",
+      "crx2551325",
+      "crx2488742",
+      "crx2439776",
+      "crx2414116",
+      "crx2413345",
+      "crx2413336",
+      "crx2599618",
+      "crx2417793",
+      "crx2568106",
+      "crx2540961",
+      "crx2454859",
+      "crx2591338",
+      "crx2528950",
+      "crx2365685",
+      "crx2434876",
+      "crx2520525",
+      "crx2413768",
+      "crx2488755",
+      "crx2433208",
+      "crx2439794",
+      "crx2434628",
+      "crx2486894",
+      "crx2593811",
+      "crx2178368",
+      "crx2404432",
+      "crx2602706",
+      "crx1448619",
+      "crx2586497",
+      "crx2586327",
+      "crx2568142",
+      "crx2308999",
+      "crx2287481",
+      "crx2226450",
+      "crx2602745",
+      "crx2560625",
+      "crx2558653",
+      "crx2553078",
+      "crx2552469",
+      "crx2527607",
+      "crx2519217",
+      "crx2519201",
+      "crx2516651",
+      "crx2477489",
+      "crx2453709",
+      "crx2448200",
+      "crx2413632",
+      "crx2411834",
+      "crx2411141",
+      "crx2408932",
+      "crx2377141",
+      "crx2377125",
+      "crx2553074",
+      "crx2492625",
+      "crx2460646",
+      "crx2543442",
+      "crx2349804",
+      "crx2566737",
+      "crx2434669",
+      "crx2599660",
+      "crx2408540",
+      "crx2516909",
+      "crx2413640",
+      "crx2459455",
+      "crx2412067",
+      "crx2408928",
+      "crx2488799",
+      "crx2287326",
+      "crx1702025",
+      "crx1952108",
+      "crx2526682",
+      "crx2442728",
+      "crx2513013",
+      "crx2412899",
+      "crx2408308",
+      "crx1685616",
+      "crx2478184",
+      "crx2179107",
+      "crx1458385",
+      "crx2561289",
+      "crx2334379",
+      "crx2073991",
+      "crx2438655",
+      "crx1703229",
+      "crx2453765",
+      "crx2556150",
+      "crx2487977",
+      "crx1510274",
+      "crx2602494",
+      "crx2305101",
+      "crx2586746",
+      "crx2366578",
+      "crx2599722",
+      "crx2589899",
+      "crx2366567",
+      "crx2555951",
+      "crx1557189",
+      "crx2417761",
+      "crx2602704",
+      "crx2453732",
+      "crx2377373",
+      "crx2412165",
+      "crx2158848",
+      "crx2592670",
+      "crx2466736",
+      "crx2559958",
+      "crx2559961",
+      "crx2410869",
+      "crx2489956",
+      "crx2593845",
+      "crx2561619",
+      "crx2599697",
+      "crx2596906",
+      "crx2489939",
+      "crx2527463",
+      "crx2541002",
+      "crx2558616",
+      "crx2434632",
+      "crx2406757",
+      "crx2595745",
+      "crx2412682",
+      "crx2420089",
+      "crx2141657",
+      "crx2591320",
+      "crx2516655",
+      "crx2455887",
+      "crx2440749",
+      "crx2413875",
+      "crx2327776",
+      "crx2330522",
+      "crx1743539",
+      "crx1728949",
+      "crx2414230",
+      "crx1756341",
+      "crx2336784",
+      "crx2412541",
+      "crx2414231",
+      "crx2431728",
+      "crx2456759",
+      "crx2413459",
+      "crx2529985",
+      "crx2541040",
+      "crx2589247",
+      "crx2561615",
+      "crx2553093",
+      "crx2466758",
+      "crx2527612",
+      "crx2599698",
+      "crx2569997",
+      "crx2254644",
+      "crx2411558",
+      "crx2599750",
+      "crx2527469",
+      "crx1936101",
+      "crx2413988",
+      "crx2376418",
+      "crx2449613",
+      "crx2442081",
+      "crx2453694",
+      "crx2464965",
+      "crx2561599",
+      "crx2519219",
+      "crx2561596",
+      "crx2592610",
+      "crx2448163",
+      "crx2598388",
+      "crx2306023",
+      "crx2598376",
+      "crx2314152",
+      "crx2566673",
+      "crx2447188",
+      "crx2555995",
+      "crx2598375",
+      "crx2413588",
+      "crx2593836",
+      "crx2474518",
+      "crx2519090",
+      "crx2414323",
+      "crx2464964",
+      "crx2491311",
+      "crx2590869",
+      "crx2516670",
+      "crx2552460",
+      "crx2345099",
+      "crx2412014",
+      "crx2447157",
+      "crx2435757",
+      "crx2461711",
+      "crx2431081",
+      "crx2599695",
+      "crx2593810",
+      "crx2586524",
+      "crx2442299",
+      "crx2434671",
+      "crx2413780",
+      "crx2452402",
+      "crx2371836",
+      "crx2595730",
+      "crx2516735",
+      "crx2492602",
+      "crx2413534",
+      "crx2410511",
+      "crx2440774",
+      "crx2568096",
+      "crx2412870",
+      "crx2566828",
+      "crx2593826",
+      "crx2411353",
+      "crx2558598",
+      "crx2449583",
+      "crx2516934",
+      "crx2560392",
+      "crx2516574",
+      "crx2558602",
+      "crx2403330",
+      "crx2458200",
+      "crx2413782",
+      "crx2551291",
+      "crx2527458",
+      "crx2405784",
+      "crx2411574",
+      "crx2492614",
+      "crx2454843",
+      "crx2413784",
+      "crx2516948",
+      "crx2601102",
+      "crx2468995",
+      "crx2487866",
+      "crx2516893",
+      "crx2455659",
+      "crx2410171",
+      "crx2407799",
+      "crx2405626",
+      "crx2516956",
+      "crx2381755",
+      "crx2516939",
+      "crx2602700",
+      "crx2598340",
+      "crx2418958",
+      "crx2407788",
+      "crx2413783",
+      "crx2555984",
+      "crx2412995",
+      "crx1918030",
+      "crx2568098",
+      "crx2454871",
+      "crx1934624",
+      "crx2595779",
+      "crx2420898",
+      "crx2414019",
+      "crx2592667",
+      "crx2413104",
+      "crx2413032",
+      "crx2516965",
+      "crx2408312",
+      "crx2433205",
+      "crx2433203",
+      "crx2437021",
+      "crx2598383",
+      "crx2179389",
+      "crx1932203",
+      "crx2412044",
+      "crx2187690",
+      "crx2406354",
+      "crx2368880",
+      "crx2143280",
+      "crx2410684",
+      "crx2403415",
+      "crx2411221",
+      "crx2560186",
+      "crx2584905",
+      "crx2527459",
+      "crx2474530",
+      "crx2448197",
+      "crx2602723",
+      "crx2319320",
+      "crx2412413",
+      "crx2517322",
+      "crx2596977",
+      "crx2455541",
+      "crx2349409",
+      "crx2517764",
+      "crx2410362",
+      "crx2410631",
+      "crx2563677",
+      "crx2359558",
+      "crx2446033",
+      "crx2560422",
+      "crx2541030",
+      "crx2413106",
+      "crx2378387",
+      "crx2527455",
+      "crx2541014",
+      "crx2563636",
+      "crx2599658",
+      "crx2566685",
+      "crx2491341",
+      "crx2527957",
+      "crx2558640",
+      "crx2416522",
+      "crx2458203",
+      "crx2464933",
+      "crx2601130",
+      "crx2516603",
+      "crx2464928",
+      "crx2451318",
+      "crx2521412",
+      "crx2599898",
+      "crx2516999",
+      "crx2410323",
+      "crx2159173",
+      "crx2431096",
+      "crx2602715",
+      "crx2516790",
+      "crx2477534",
+      "crx2563633",
+      "crx2561616",
+      "crx2434630",
+      "crx2563678",
+      "crx2520536",
+      "crx2030904",
+      "crx2460389",
+      "crx2593878",
+      "crx2433169",
+      "crx2569987",
+      "crx2485730",
+      "crx2242128",
+      "crx2477481",
+      "crx2412976",
+      "crx2558611",
+      "crx2412189",
+      "crx2488749",
+      "crx2406739",
+      "crx2413585",
+      "crx2520531",
+      "crx2404517",
+      "crx2474155",
+      "crx2489001",
+      "crx2489004",
+      "crx2559978",
+      "crx2401405",
+      "crx2452400",
+      "crx2408202",
+      "crx2475209",
+      "crx2442735",
+      "crx2502431",
+      "crx2516785",
+      "crx2348980",
+      "crx2455598",
+      "crx2414264",
+      "crx2377175",
+      "crx2519200",
+      "crx2520090",
+      "crx2446940",
+      "crx2598484",
+      "crx2411992",
+      "crx2488990",
+      "crx2516915",
+      "crx2592645",
+      "crx2591300",
+      "crx2602753",
+      "crx1995624",
+      "crx2431090",
+      "crx2559983",
+      "crx2412810",
+      "crx2387769",
+      "crx2561622",
+      "crx2458212",
+      "crx2516734",
+      "crx2561571",
+      "crx2377555",
+      "crx2406922",
+      "crx2413997",
+      "crx2540966",
+      "crx2469004",
+      "crx2440760",
+      "crx2570948",
+      "crx2551305",
+      "crx2527961",
+      "crx2413841",
+      "crx2554625",
+      "crx2413387",
+      "crx2413350",
+      "crx2592630",
+      "crx2592637",
+      "crx2445985",
+      "crx2556826",
+      "crx2461738",
+      "crx2602728",
+      "crx2413489",
+      "crx2528946",
+      "crx2463593",
+      "crx1843503",
+      "crx1778325",
+      "crx2167352",
+      "crx2036512",
+      "crx2291745",
+      "crx1691733",
+      "crx1778455",
+      "crx1447055",
+      "crx2340247",
+      "crx2073931",
+      "crx606157",
+      "crx1721775",
+      "crx2093256",
+      "crx2326709",
+      "crx2352655",
+      "crx2014256",
+      "crx2430836",
+      "crx2497304",
+      "crx2515144",
+      "crx2464726",
+      "crx2456672",
+      "crx2600019",
+      "crx2599714",
+      "crx1757609",
+      "crx1225945",
+      "crx2214428",
+      "crx2437496",
+      "crx1937381",
+      "crx2326314",
+      "crx677880",
+      "crx2501484",
+      "crx2476282",
+      "crx2355654",
+      "crx2197082",
+      "crx2349278",
+      "crx2187669",
+      "crx1650576",
+      "crx2429988",
+      "crx2366702",
+      "crx1713271",
+      "crx2446624",
+      "crx1980548",
+      "crx2320460",
+      "crx2551374",
+      "crx2433920",
+      "crx2031769",
+      "crx2453551",
+      "crx1660521",
+      "crx2237870",
+      "crx1073690",
+      "crx2014216",
+      "crx2450929",
+      "crx2260474",
+      "crx2348341",
+      "crx2460710",
+      "crx2188730",
+      "crx1698627",
+      "crx2332753",
+      "crx1671584",
+      "crx2327880",
+      "crx1980720",
+      "crx2343384",
+      "crx2238025",
+      "crx2467935",
+      "crx2214362",
+      "crx2193297",
+      "crx2259444",
+      "crx2566876",
+      "crx2349701",
+      "crx2554154",
+      "crx2255713",
+      "crx2212779",
+      "crx2529633",
+      "crx2566241",
+      "crx2358735",
+      "crx2609679",
+      "crx2606201",
+      "crx2603678",
+      "crx2604364",
+      "crx2604798",
+      "crx2604893",
+      "crx2489432",
+      "crx2609172",
+      "crx2416574",
+      "crx2589964",
+      "crx2604355",
+      "crx2604802",
+      "crx2614532",
+      "crx2561604",
+      "crx2603543",
+      "crx2606953",
+      "crx2442298",
+      "crx2609645",
+      "crx2412877",
+      "crx2606936",
+      "crx2604325",
+      "crx2609681",
+      "crx2608606",
+      "crx2603526",
+      "crx2226182",
+      "crx2093289",
+      "crx2093257",
+      "crx2566392",
+      "crx2461374",
+      "crx2447142",
+      "crx2557330",
+      "crx2477572",
+      "crx2411578",
+      "crx2477551",
+      "crx2609673",
+      "crx2409230",
+      "crx2414298",
+      "crx2350609",
+      "crx2589645",
+      "crx2439834",
+      "crx2513128",
+      "crx2410227",
+      "crx2429882",
+      "crx2595796",
+      "crx2568104",
+      "crx2488786",
+      "crx2408322",
+      "crx2520545",
+      "crx2412943",
+      "crx2516697",
+      "crx2414008",
+      "crx2596907",
+      "crx2554543",
+      "crx2434621",
+      "crx2456760",
+      "crx2414077",
+      "crx2409242",
+      "crx2603521",
+      "crx2516644",
+      "crx2594073",
+      "crx2614527",
+      "crx2381680",
+      "crx2516631",
+      "crx2606951",
+      "crx2306606",
+      "crx2516906",
+      "crx2413424",
+      "crx2516687",
+      "crx2408220",
+      "crx2351478",
+      "crx2413467",
+      "crx2411797",
+      "crx2454841",
+      "crx2344497",
+      "crx2333062",
+      "crx2344104",
+      "crx2163841",
+      "crx2377968",
+      "crx2413601",
+      "crx1818021",
+      "crx2414098",
+      "crx2378366",
+      "crx2413358",
+      "crx2412905",
+      "crx2410462",
+      "crx2410164",
+      "crx2407797",
+      "crx2412908",
+      "crx2412952",
+      "crx2412432",
+      "crx2609051",
+      "crx2606996",
+      "crx1926731",
+      "crx2374308",
+      "crx2596755",
+      "crx2487974",
+      "crx1915753",
+      "crx2596799",
+      "crx1920588",
+      "crx2416259",
+      "crx2596786",
+      "crx2312604",
+      "crx2487879",
+      "crx1940231",
+      "crx2412031",
+      "crx2553089",
+      "crx2566199",
+      "crx2414100",
+      "crx2412018",
+      "crx2410437",
+      "crx2615276",
+      "crx2557261",
+      "crx2609648",
+      "crx2408886",
+      "crx2381192",
+      "crx2468963",
+      "crx2592638",
+      "crx2602687",
+      "crx2341492",
+      "crx2434661",
+      "crx2464963",
+      "crx2434679",
+      "crx2598359",
+      "crx2462651",
+      "crx2485722",
+      "crx2411812",
+      "crx2491335",
+      "crx2413360",
+      "crx2592875",
+      "crx1897755",
+      "crx2416575",
+      "crx2439549",
+      "crx2615212",
+      "crx2403323",
+      "crx2229248",
+      "crx2554334",
+      "crx2475691",
+      "crx2604487",
+      "crx2609210",
+      "crx2615128",
+      "crx2412992",
+      "crx2448910",
+      "crx2561623",
+      "crx2609661",
+      "crx2614546",
+      "crx2606300",
+      "crx2615673",
+      "crx2428492",
+      "crx2603539",
+      "crx796132",
+      "crx2312257",
+      "crx2413526",
+      "crx2318899",
+      "crx1734854",
+      "crx2411749",
+      "crx2407801",
+      "crx388635",
+      "crx2413591",
+      "crx2377155",
+      "crx2438612",
+      "crx2552486",
+      "crx2516901",
+      "crx2561794",
+      "crx2431111",
+      "crx2560684",
+      "crx2516662",
+      "crx2568114",
+      "crx2527424",
+      "crx2606926",
+      "crx2596634",
+      "crx2592643",
+      "crx2593816",
+      "crx2430080",
+      "crx2609672",
+      "crx2606291",
+      "crx2457628",
+      "crx2615527",
+      "crx2615525",
+      "crx2609684",
+      "crx2615109",
+      "crx1749210",
+      "crx2554545",
+      "crx2560423",
+      "crx2609666",
+      "crx2554530",
+      "crx2435748",
+      "crx2596912",
+      "crx2450870",
+      "crx2374271",
+      "crx2492648",
+      "crx2443531",
+      "crx2603553",
+      "crx2433230",
+      "crx2466760",
+      "crx2414240",
+      "crx2446967",
+      "crx2475003",
+      "crx2615532",
+      "crx2008004",
+      "crx2526686",
+      "crx2492641",
+      "crx2419003",
+      "crx2609690",
+      "crx2606925",
+      "crx2442733",
+      "crx2606932",
+      "crx2620617"
+    ],
+    "brokers": [
+      "293",
+      "1015",
+      "205",
+      "1016",
+      "196",
+      "238",
+      "177",
+      "178",
+      "20",
+      "171",
+      "311",
+      "26",
+      "17",
+      "641",
+      "622",
+      "805",
+      "546",
+      "557",
+      "44",
+      "4302",
+      "281",
+      "1079",
+      "547",
+      "3942",
+      "396",
+      "265",
+      "1036",
+      "271",
+      "556",
+      "590",
+      "589",
+      "825",
+      "313",
+      "31",
+      "240",
+      "174",
+      "3948",
+      "645",
+      "432",
+      "4",
+      "61",
+      "237",
+      "153",
+      "1580",
+      "809",
+      "282",
+      "485",
+      "569",
+      "973",
+      "273",
+      "4287",
+      "3957",
+      "1272",
+      "253",
+      "1831",
+      "829",
+      "1829",
+      "4402",
+      "3936",
+      "261",
+      "207",
+      "1226",
+      "1225",
+      "435",
+      "881",
+      "4044",
+      "1832",
+      "880",
+      "811",
+      "565",
+      "4158",
+      "444",
+      "4020",
+      "961",
+      "1224",
+      "1166",
+      "517",
+      "445",
+      "1833",
+      "433",
+      "1830",
+      "566",
+      "1834",
+      "336",
+      "830",
+      "1099",
+      "919",
+      "1367",
+      "3885",
+      "18",
+      "1013",
+      "1122",
+      "194",
+      "1037",
+      "946",
+      "580",
+      "816",
+      "1261",
+      "1167",
+      "597",
+      "258",
+      "582",
+      "272",
+      "1384",
+      "859",
+      "269",
+      "991",
+      "257",
+      "3891",
+      "394",
+      "869",
+      "868",
+      "409",
+      "356",
+      "16",
+      "637",
+      "552",
+      "1253",
+      "1062",
+      "395",
+      "167",
+      "1171",
+      "1249",
+      "519",
+      "598",
+      "388",
+      "337",
+      "1080",
+      "579",
+      "1107",
+      "345",
+      "35",
+      "4170",
+      "611",
+      "659",
+      "1106",
+      "239",
+      "1691",
+      "457",
+      "699",
+      "1668",
+      "3933",
+      "3990",
+      "1227",
+      "1652",
+      "1465",
+      "1303",
+      "319",
+      "509",
+      "702",
+      "1459",
+      "1809",
+      "1402",
+      "482",
+      "3904",
+      "1856",
+      "997",
+      "1200",
+      "1403",
+      "1838",
+      "41",
+      "254",
+      "563",
+      "540",
+      "3899",
+      "1530",
+      "1463",
+      "1001",
+      "1685",
+      "1704",
+      "1125",
+      "1821",
+      "738",
+      "148",
+      "1126",
+      "535",
+      "1149",
+      "4300",
+      "4139",
+      "1355",
+      "682",
+      "837",
+      "1327",
+      "1601",
+      "1586",
+      "1356",
+      "707",
+      "674",
+      "154",
+      "1000",
+      "1823",
+      "1808",
+      "1851",
+      "5356",
+      "298",
+      "1498",
+      "526",
+      "998",
+      "285",
+      "1462",
+      "1134",
+      "1049",
+      "1600",
+      "1325",
+      "612",
+      "414",
+      "473",
+      "1011",
+      "1153",
+      "796",
+      "1304",
+      "1081",
+      "280",
+      "1755",
+      "524",
+      "55",
+      "262",
+      "1305",
+      "385",
+      "758",
+      "4088",
+      "976",
+      "4178",
+      "1274",
+      "4063",
+      "626",
+      "1100",
+      "1666",
+      "1174",
+      "1004",
+      "810",
+      "483",
+      "539",
+      "3896",
+      "1822",
+      "4098",
+      "625",
+      "408",
+      "218",
+      "513",
+      "413",
+      "3965",
+      "1044",
+      "1112",
+      "826",
+      "1852",
+      "1386",
+      "3929",
+      "1628",
+      "1597",
+      "832",
+      "4211",
+      "548",
+      "347",
+      "1043",
+      "631",
+      "72",
+      "4466",
+      "4154",
+      "4133",
+      "610",
+      "4304",
+      "1941",
+      "574",
+      "581",
+      "59",
+      "393",
+      "4355",
+      "318",
+      "717",
+      "614",
+      "660",
+      "188",
+      "744",
+      "1370",
+      "4119",
+      "1940",
+      "900",
+      "907",
+      "1035",
+      "1482",
+      "4208",
+      "424",
+      "423",
+      "3975",
+      "179",
+      "1549",
+      "1855",
+      "4024",
+      "4210",
+      "192",
+      "3973",
+      "223",
+      "1282",
+      "1354",
+      "1364",
+      "848",
+      "701",
+      "1495",
+      "1328",
+      "1128",
+      "190",
+      "4411",
+      "979",
+      "455",
+      "782",
+      "4255",
+      "1010",
+      "561",
+      "1338",
+      "1636",
+      "665",
+      "1596",
+      "4422",
+      "4107",
+      "1786",
+      "4417",
+      "1700",
+      "4495",
+      "260",
+      "1846",
+      "1643",
+      "823",
+      "3993",
+      "1664",
+      "4198",
+      "667",
+      "1709",
+      "4502",
+      "3956",
+      "1431",
+      "996",
+      "835",
+      "4431",
+      "467",
+      "1960",
+      "629",
+      "959",
+      "3951",
+      "331",
+      "4272",
+      "1420",
+      "1641",
+      "1791",
+      "226",
+      "1789",
+      "4175",
+      "1854",
+      "380",
+      "1842",
+      "1914",
+      "4191",
+      "4435",
+      "4371",
+      "229",
+      "773",
+      "7",
+      "3880",
+      "201",
+      "1172",
+      "1729",
+      "1252",
+      "1275",
+      "1623",
+      "4409",
+      "4234",
+      "69",
+      "4179",
+      "149",
+      "4444",
+      "4200",
+      "3980",
+      "474",
+      "922",
+      "1655",
+      "1919",
+      "1132",
+      "1179",
+      "4508",
+      "1718",
+      "486",
+      "3926",
+      "1553",
+      "37",
+      "1816",
+      "4114",
+      "3878",
+      "4009",
+      "1573",
+      "974",
+      "1524",
+      "1440",
+      "1271",
+      "804",
+      "1739",
+      "4511",
+      "1740",
+      "1665",
+      "4172",
+      "1196",
+      "156",
+      "4136",
+      "299",
+      "3953",
+      "33",
+      "511",
+      "4101",
+      "864",
+      "4342",
+      "1130",
+      "1277",
+      "3989",
+      "4268",
+      "29",
+      "4106",
+      "571",
+      "4028",
+      "1732",
+      "1221",
+      "4197",
+      "30",
+      "1910",
+      "34",
+      "62",
+      "301",
+      "4327",
+      "4095",
+      "772",
+      "3977",
+      "4148",
+      "1353",
+      "3995",
+      "426",
+      "3888",
+      "451",
+      "4352",
+      "191",
+      "339",
+      "346",
+      "1928",
+      "420",
+      "3997",
+      "24",
+      "3961",
+      "4189",
+      "1",
+      "365",
+      "1843",
+      "4506",
+      "4016",
+      "1806",
+      "889",
+      "1473",
+      "838",
+      "1546",
+      "225",
+      "1056",
+      "4293",
+      "4346",
+      "297",
+      "4086",
+      "4183",
+      "783",
+      "4476",
+      "215",
+      "199",
+      "901",
+      "4347",
+      "737",
+      "4112",
+      "4262",
+      "4188",
+      "4391",
+      "248",
+      "63",
+      "494",
+      "1645",
+      "733",
+      "4337",
+      "343",
+      "1935",
+      "1921",
+      "193",
+      "1213",
+      "572",
+      "1346",
+      "985",
+      "1746",
+      "1418",
+      "4129",
+      "278",
+      "628",
+      "762",
+      "4462",
+      "930",
+      "904",
+      "1406",
+      "575",
+      "1779",
+      "1613",
+      "1333",
+      "1889",
+      "464",
+      "594",
+      "4436",
+      "1083",
+      "68",
+      "4440",
+      "910",
+      "1511",
+      "4512",
+      "4264",
+      "4394",
+      "4452",
+      "1425",
+      "1947",
+      "4064",
+      "1212",
+      "249",
+      "627",
+      "4472",
+      "1912",
+      "4026",
+      "53",
+      "477",
+      "1288",
+      "1688",
+      "241",
+      "903",
+      "3908",
+      "3950",
+      "166",
+      "4147",
+      "1237",
+      "449",
+      "4276",
+      "4328",
+      "896",
+      "4256",
+      "1065",
+      "4017",
+      "176",
+      "1785",
+      "928",
+      "4115",
+      "3983",
+      "1090",
+      "1210",
+      "4053",
+      "788",
+      "3918",
+      "1340",
+      "1133",
+      "1674",
+      "1758",
+      "995",
+      "1276",
+      "1567",
+      "528",
+      "952",
+      "1197",
+      "1848",
+      "1399",
+      "1267",
+      "4236",
+      "1445",
+      "1883",
+      "1956",
+      "1414",
+      "898",
+      "602",
+      "636",
+      "1502",
+      "203",
+      "3987",
+      "1269",
+      "787",
+      "412",
+      "568",
+      "1892",
+      "4471",
+      "1476",
+      "4201",
+      "1518",
+      "1890",
+      "4396",
+      "1824",
+      "1760",
+      "4260",
+      "1548",
+      "1320",
+      "1535",
+      "1676",
+      "1299",
+      "309",
+      "4118",
+      "45",
+      "4463",
+      "4169",
+      "1590",
+      "1201",
+      "1905",
+      "931",
+      "4164",
+      "4451",
+      "4134",
+      "245",
+      "4212",
+      "220",
+      "1095",
+      "1754",
+      "32",
+      "3932",
+      "1361",
+      "1413",
+      "4245",
+      "765",
+      "1828",
+      "1651",
+      "1702",
+      "3916",
+      "1190",
+      "1342",
+      "789",
+      "4433",
+      "375",
+      "664",
+      "655",
+      "10",
+      "481",
+      "4318",
+      "4449",
+      "1058",
+      "3897",
+      "187",
+      "1551",
+      "300",
+      "4321",
+      "1926",
+      "593",
+      "567",
+      "644",
+      "855",
+      "933",
+      "1481",
+      "304",
+      "833",
+      "4251",
+      "4080",
+      "1390",
+      "4266",
+      "1541",
+      "1904",
+      "1396",
+      "1025",
+      "186",
+      "4157",
+      "927",
+      "27",
+      "4001",
+      "799",
+      "462",
+      "642",
+      "591",
+      "1394",
+      "843",
+      "510",
+      "3877",
+      "4324",
+      "1932",
+      "4102",
+      "212",
+      "4454",
+      "1902",
+      "1803",
+      "4484",
+      "4316",
+      "3914",
+      "1677",
+      "4507",
+      "197",
+      "1667",
+      "4144",
+      "1519",
+      "230",
+      "1457",
+      "899",
+      "999",
+      "1175",
+      "828",
+      "4173",
+      "4021",
+      "4078",
+      "1059",
+      "586",
+      "683",
+      "4481",
+      "417",
+      "587",
+      "4029",
+      "1658",
+      "875",
+      "1068",
+      "1769",
+      "669",
+      "858",
+      "1775",
+      "1781",
+      "3927",
+      "4473",
+      "1727",
+      "4074",
+      "4092",
+      "722",
+      "228",
+      "1395",
+      "3972",
+      "1792",
+      "882",
+      "1713",
+      "1409",
+      "324",
+      "322",
+      "4418",
+      "1442",
+      "376",
+      "708",
+      "236",
+      "1859",
+      "9",
+      "1369",
+      "4248",
+      "1579",
+      "4377",
+      "1009",
+      "1214",
+      "4012",
+      "1680",
+      "4225",
+      "1595",
+      "1316",
+      "972",
+      "920",
+      "1737",
+      "1946",
+      "1958",
+      "4492",
+      "1710",
+      "4117",
+      "584",
+      "596",
+      "3902",
+      "4083",
+      "73",
+      "461",
+      "4464",
+      "1258",
+      "4151",
+      "1701",
+      "1347",
+      "1966",
+      "234",
+      "4149",
+      "1381",
+      "246",
+      "1607",
+      "1129",
+      "3949",
+      "4325",
+      "1298",
+      "1812",
+      "1392",
+      "378",
+      "4439",
+      "1064",
+      "1696",
+      "4224",
+      "4257",
+      "361",
+      "512",
+      "4446",
+      "4515",
+      "1629",
+      "3930",
+      "4100",
+      "1202",
+      "4254",
+      "1057",
+      "3969",
+      "1874",
+      "1965",
+      "4079",
+      "623",
+      "1061",
+      "4297",
+      "4284",
+      "4301",
+      "384",
+      "1692",
+      "1209",
+      "4509",
+      "780",
+      "4416",
+      "1216",
+      "861",
+      "4461",
+      "373",
+      "951",
+      "4393",
+      "1847",
+      "372",
+      "1416",
+      "1611",
+      "47",
+      "607",
+      "525",
+      "2",
+      "402",
+      "52",
+      "1207",
+      "4054",
+      "1682",
+      "4491",
+      "1728",
+      "3922",
+      "1283",
+      "76",
+      "3",
+      "790",
+      "534",
+      "4226",
+      "1891",
+      "1464",
+      "1379",
+      "4382",
+      "4145",
+      "4227",
+      "1387",
+      "4250",
+      "14",
+      "4500",
+      "1427",
+      "1560",
+      "4419",
+      "1747",
+      "1127",
+      "4475",
+      "4002",
+      "4343",
+      "4359",
+      "231",
+      "4108",
+      "1818",
+      "1306",
+      "3886",
+      "4213",
+      "1627",
+      "4267",
+      "4072",
+      "158",
+      "1257",
+      "169",
+      "4345",
+      "1405",
+      "4366",
+      "757",
+      "1797",
+      "4392",
+      "1606",
+      "1649",
+      "210",
+      "1193",
+      "4447",
+      "4364",
+      "3955",
+      "259",
+      "1317",
+      "1215",
+      "222",
+      "1385",
+      "185",
+      "3905",
+      "1096",
+      "1751",
+      "1206",
+      "1542",
+      "4315",
+      "849",
+      "4367",
+      "204",
+      "4503",
+      "601",
+      "4032",
+      "4007",
+      "1383",
+      "1309",
+      "21",
+      "888",
+      "1006",
+      "4331",
+      "1793",
+      "3887",
+      "4152",
+      "1962",
+      "1610",
+      "4206",
+      "250",
+      "3952",
+      "1450",
+      "1587",
+      "1391",
+      "1302",
+      "466",
+      "1853",
+      "1731",
+      "1185",
+      "1422",
+      "1575",
+      "1389",
+      "729",
+      "4397",
+      "4513",
+      "4182",
+      "4049",
+      "4480",
+      "418",
+      "277",
+      "1939",
+      "60",
+      "4478",
+      "391",
+      "4193",
+      "1964",
+      "992",
+      "1266",
+      "1929",
+      "1490",
+      "1841",
+      "4122",
+      "4131",
+      "4116",
+      "1429",
+      "289",
+      "1055",
+      "902",
+      "4490",
+      "175",
+      "183",
+      "1726",
+      "1637",
+      "559",
+      "4041",
+      "1365",
+      "4038",
+      "406",
+      "1322",
+      "1005",
+      "4275",
+      "4104",
+      "1738",
+      "897",
+      "1927",
+      "1561",
+      "1507",
+      "4247",
+      "4387",
+      "4388",
+      "978",
+      "553",
+      "4271",
+      "1903",
+      "4295",
+      "1783",
+      "1017",
+      "1934",
+      "4350",
+      "759",
+      "163",
+      "576",
+      "247",
+      "603",
+      "36",
+      "1594",
+      "515",
+      "4018",
+      "4004",
+      "4130",
+      "558",
+      "4336",
+      "1750",
+      "544",
+      "1721",
+      "1183",
+      "4231",
+      "4216",
+      "4432",
+      "1211",
+      "1032",
+      "3901",
+      "577",
+      "1426",
+      "364",
+      "1324",
+      "1763",
+      "4445",
+      "1562",
+      "4370",
+      "1514",
+      "663",
+      "1815",
+      "64",
+      "1693",
+      "4239",
+      "1705",
+      "1131",
+      "1300",
+      "1290",
+      "1720",
+      "1470",
+      "1280",
+      "3917",
+      "4180",
+      "3982",
+      "1521",
+      "939",
+      "1474",
+      "3912",
+      "4319",
+      "983",
+      "1642",
+      "1023",
+      "1571",
+      "736",
+      "1102",
+      "530",
+      "1900",
+      "521",
+      "480",
+      "4192",
+      "1933",
+      "1407",
+      "1798",
+      "1315",
+      "4373",
+      "211",
+      "1877",
+      "721",
+      "1845",
+      "308",
+      "1454",
+      "1547",
+      "4474",
+      "560",
+      "1293",
+      "1734",
+      "1169",
+      "886",
+      "4383",
+      "1699",
+      "4217",
+      "381",
+      "690",
+      "4207",
+      "495",
+      "152",
+      "1375",
+      "1284",
+      "3928",
+      "1205",
+      "1512",
+      "4166",
+      "1268",
+      "916",
+      "1723",
+      "4317",
+      "989",
+      "180",
+      "1278",
+      "4167",
+      "1961",
+      "3986",
+      "330",
+      "1663",
+      "4062",
+      "65",
+      "490",
+      "4113",
+      "54",
+      "1647",
+      "1178",
+      "48",
+      "1817",
+      "352",
+      "856",
+      "425",
+      "4150",
+      "3920",
+      "4022",
+      "419",
+      "1602",
+      "1286",
+      "1319",
+      "3978",
+      "3907",
+      "4030",
+      "4185",
+      "1173",
+      "3988",
+      "492",
+      "3911",
+      "1568",
+      "1774",
+      "1624",
+      "4003",
+      "1844",
+      "640",
+      "3941",
+      "3915",
+      "781",
+      "4014",
+      "4090",
+      "1526",
+      "1540",
+      "4040",
+      "653",
+      "639",
+      "4047",
+      "1557",
+      "732",
+      "522",
+      "307",
+      "795",
+      "1311",
+      "4243",
+      "4127",
+      "1318",
+      "815",
+      "38",
+      "1453",
+      "4237",
+      "4458",
+      "1743",
+      "4132",
+      "4052",
+      "4453",
+      "4442",
+      "4400",
+      "1504",
+      "1398",
+      "1082",
+      "3939",
+      "4055",
+      "472",
+      "908",
+      "4313",
+      "312",
+      "355",
+      "387",
+      "4273",
+      "3895",
+      "1260",
+      "1609",
+      "1348",
+      "1619",
+      "1681",
+      "1259",
+      "523",
+      "1543",
+      "1930",
+      "1920",
+      "3890",
+      "1517",
+      "165",
+      "1204",
+      "11",
+      "1484",
+      "1220",
+      "3924",
+      "1194",
+      "988",
+      "4434",
+      "4235",
+      "19",
+      "1534",
+      "970",
+      "4058",
+      "844",
+      "4073",
+      "913",
+      "57",
+      "1640",
+      "4344",
+      "448",
+      "4171",
+      "975",
+      "1525",
+      "1441",
+      "3970",
+      "516",
+      "287",
+      "1382",
+      "4286",
+      "1279",
+      "4156",
+      "1487",
+      "4126",
+      "1716",
+      "1807",
+      "854",
+      "4075",
+      "4071",
+      "3964",
+      "1229",
+      "4109",
+      "1287",
+      "4390",
+      "1558",
+      "40",
+      "1687",
+      "4296",
+      "4485",
+      "1223",
+      "656",
+      "4196",
+      "1041",
+      "1208",
+      "4027",
+      "4282",
+      "4349",
+      "4269",
+      "3910",
+      "4252",
+      "4335",
+      "4510",
+      "3999",
+      "1256",
+      "806",
+      "279",
+      "4516",
+      "4443",
+      "3894",
+      "1888",
+      "4205",
+      "306",
+      "3985",
+      "1572",
+      "1536",
+      "4333",
+      "1959",
+      "4379",
+      "990",
+      "4039",
+      "4399",
+      "1633",
+      "3913",
+      "1689",
+      "1475",
+      "3963",
+      "1466",
+      "1574",
+      "1486",
+      "67",
+      "1050",
+      "1686",
+      "4372",
+      "4299",
+      "4140",
+      "1730",
+      "981",
+      "4065",
+      "1101",
+      "1434",
+      "3921",
+      "487",
+      "1430",
+      "1577",
+      "4374",
+      "1533",
+      "1529",
+      "70",
+      "1694",
+      "4120",
+      "613",
+      "1077",
+      "3919",
+      "1018",
+      "638",
+      "3996",
+      "1323",
+      "3968",
+      "1397",
+      "4111",
+      "1923",
+      "4019",
+      "1615",
+      "1421",
+      "290",
+      "4496",
+      "4249",
+      "1051",
+      "1245",
+      "427",
+      "489",
+      "1706",
+      "1184",
+      "1374",
+      "15",
+      "4214",
+      "4163",
+      "4365",
+      "4229",
+      "1707",
+      "184",
+      "756",
+      "4412",
+      "1449",
+      "333",
+      "458",
+      "4061",
+      "1515",
+      "4081",
+      "4334",
+      "4395",
+      "1552",
+      "4135",
+      "4274",
+      "1436",
+      "1589",
+      "1770",
+      "4429",
+      "4246",
+      "4386",
+      "595",
+      "1199",
+      "1787",
+      "836",
+      "4420",
+      "1192",
+      "4184",
+      "666",
+      "1581",
+      "1028",
+      "4025",
+      "28",
+      "353",
+      "4385",
+      "1742",
+      "4441",
+      "1945",
+      "573",
+      "3903",
+      "1091",
+      "4294",
+      "1217",
+      "1931",
+      "4351",
+      "4354",
+      "1614",
+      "4233",
+      "1461",
+      "1944",
+      "4043",
+      "1632",
+      "1472",
+      "533",
+      "252",
+      "4059",
+      "235",
+      "1084",
+      "1644",
+      "1181",
+      "1825",
+      "3979",
+      "4323",
+      "4427",
+      "4176",
+      "1087",
+      "1336",
+      "4042",
+      "3940",
+      "1867",
+      "4477",
+      "4360",
+      "700",
+      "1497",
+      "1195",
+      "219",
+      "3971",
+      "1794",
+      "1352",
+      "1455",
+      "4455",
+      "4057",
+      "302",
+      "450",
+      "3884",
+      "4123",
+      "4483",
+      "270",
+      "786",
+      "887",
+      "984",
+      "3906",
+      "4142",
+      "1761",
+      "4221",
+      "4220",
+      "4376",
+      "4357",
+      "4348",
+      "221",
+      "1938",
+      "723",
+      "964",
+      "392",
+      "727",
+      "1556",
+      "255",
+      "224",
+      "4230",
+      "982",
+      "1909",
+      "3923",
+      "4228",
+      "4187",
+      "208",
+      "227",
+      "3909",
+      "824",
+      "1901",
+      "1911",
+      "728",
+      "1363",
+      "1782",
+      "1067",
+      "4493",
+      "967",
+      "4270",
+      "1698",
+      "470",
+      "493",
+      "1907",
+      "1937",
+      "1417",
+      "731",
+      "1030",
+      "1349",
+      "4410",
+      "1337",
+      "776",
+      "1203",
+      "1198",
+      "1722",
+      "22",
+      "1922",
+      "3981",
+      "878",
+      "993",
+      "4407",
+      "1321",
+      "4398",
+      "4222",
+      "1345",
+      "1378",
+      "1296",
+      "4253",
+      "4414",
+      "1550",
+      "3931",
+      "1776",
+      "1576",
+      "4045",
+      "49",
+      "23",
+      "1860",
+      "471",
+      "4468",
+      "4060",
+      "256",
+      "453",
+      "1801",
+      "1460",
+      "4015",
+      "4067",
+      "4035",
+      "1605",
+      "4501",
+      "1344",
+      "1467",
+      "1963",
+      "4405",
+      "1862",
+      "1423",
+      "1393",
+      "1683",
+      "1592",
+      "694",
+      "980",
+      "592",
+      "1218",
+      "189",
+      "338",
+      "4159",
+      "4034",
+      "4031",
+      "1675",
+      "1678",
+      "1646",
+      "4263",
+      "651",
+      "1026",
+      "214",
+      "4505",
+      "1555",
+      "1371",
+      "405",
+      "1943",
+      "633",
+      "652",
+      "4215",
+      "4023",
+      "4091",
+      "1795",
+      "66",
+      "1485",
+      "160",
+      "585",
+      "1291",
+      "689",
+      "4498",
+      "865",
+      "4143",
+      "1400",
+      "3889",
+      "965",
+      "1281",
+      "4497",
+      "4413",
+      "4110",
+      "1622",
+      "162",
+      "232",
+      "468",
+      "4194",
+      "1024",
+      "1191",
+      "4056",
+      "1588",
+      "4168",
+      "554",
+      "944",
+      "719",
+      "545",
+      "876",
+      "1446",
+      "954",
+      "326",
+      "168",
+      "4285",
+      "4482",
+      "1314",
+      "1913",
+      "46",
+      "4504",
+      "608",
+      "3992",
+      "1578",
+      "4281",
+      "4008",
+      "3898",
+      "371",
+      "921",
+      "4153",
+      "4450",
+      "4329",
+      "1350",
+      "3984",
+      "1708",
+      "25",
+      "316",
+      "216",
+      "3976",
+      "555",
+      "4087",
+      "4424",
+      "520",
+      "4186",
+      "4459",
+      "86",
+      "13",
+      "706",
+      "1362",
+      "710",
+      "4244",
+      "4138",
+      "1631",
+      "1240",
+      "4406",
+      "295",
+      "58",
+      "4278",
+      "159",
+      "749",
+      "4076",
+      "4384",
+      "1148",
+      "4259",
+      "4005",
+      "50",
+      "447",
+      "4146",
+      "4048",
+      "1554",
+      "1377",
+      "4338",
+      "4068",
+      "12",
+      "3879",
+      "588",
+      "4326",
+      "3954",
+      "456",
+      "1778",
+      "1289",
+      "284",
+      "1219",
+      "155",
+      "1970",
+      "164",
+      "1827",
+      "4381",
+      "1273",
+      "994",
+      "1251",
+      "1372",
+      "4084",
+      "4438",
+      "1451",
+      "1143",
+      "1593",
+      "4258",
+      "112",
+      "39",
+      "1052",
+      "251",
+      "1014",
+      "4460",
+      "4046",
+      "1489",
+      "4423",
+      "4456",
+      "771",
+      "1669",
+      "4489",
+      "1008",
+      "1135",
+      "1563",
+      "538",
+      "1029",
+      "1621",
+      "370",
+      "233",
+      "1019",
+      "4340",
+      "4223",
+      "1513",
+      "1839",
+      "1780",
+      "4341",
+      "4137",
+      "894",
+      "454",
+      "147",
+      "4430",
+      "532",
+      "288",
+      "4353",
+      "1745",
+      "4240",
+      "847",
+      "4066",
+      "688",
+      "4339",
+      "1670",
+      "4448",
+      "4190",
+      "4209",
+      "202",
+      "4514",
+      "746",
+      "1054",
+      "4010",
+      "4050",
+      "1802",
+      "1752",
+      "1230",
+      "4077",
+      "630",
+      "1703",
+      "4470",
+      "4358",
+      "4242",
+      "1826",
+      "720",
+      "1093",
+      "4082",
+      "1503",
+      "1656",
+      "1360",
+      "915",
+      "1452",
+      "243",
+      "3974",
+      "1343",
+      "4279",
+      "1458",
+      "217",
+      "1772",
+      "3882",
+      "4312",
+      "632",
+      "4037",
+      "463",
+      "4479",
+      "3967",
+      "1861",
+      "407",
+      "411",
+      "1053",
+      "242",
+      "1673",
+      "1285",
+      "4280",
+      "3883",
+      "4177",
+      "4465",
+      "3900",
+      "1048",
+      "51",
+      "4322",
+      "1638",
+      "507",
+      "1875",
+      "4033",
+      "151",
+      "1777",
+      "1312",
+      "4401",
+      "709",
+      "681",
+      "431",
+      "1639",
+      "1626",
+      "1335",
+      "4051",
+      "1717",
+      "459",
+      "1715",
+      "4332",
+      "1308",
+      "3947",
+      "1419",
+      "1351",
+      "3881",
+      "1887",
+      "1238",
+      "4093",
+      "4218",
+      "634",
+      "1366",
+      "1757",
+      "209",
+      "310",
+      "1376",
+      "4181",
+      "1039",
+      "1591",
+      "863",
+      "3946",
+      "1003",
+      "1697",
+      "452",
+      "1483",
+      "895",
+      "1762",
+      "4000",
+      "1618",
+      "4238",
+      "1307",
+      "401",
+      "3991",
+      "1753",
+      "6",
+      "4415",
+      "4011",
+      "374",
+      "367",
+      "4096",
+      "1326",
+      "1332",
+      "724",
+      "8",
+      "4174",
+      "4936",
+      "4665",
+      "5325",
+      "3743",
+      "4981",
+      "5162",
+      "5099",
+      "4629",
+      "3561",
+      "4839",
+      "4779",
+      "2732",
+      "4893",
+      "4802",
+      "5342",
+      "4584",
+      "4765",
+      "2123",
+      "5144",
+      "4895",
+      "5327",
+      "5351",
+      "5056",
+      "4535",
+      "5253",
+      "5040",
+      "4924",
+      "3873",
+      "3868",
+      "4559",
+      "5042",
+      "5197",
+      "3615",
+      "4977",
+      "4582",
+      "4846",
+      "5189",
+      "5217",
+      "3337",
+      "2871",
+      "3421",
+      "4784",
+      "4744",
+      "4627",
+      "4572",
+      "4576",
+      "5315",
+      "5338",
+      "5280",
+      "5173",
+      "4806",
+      "5239",
+      "4883",
+      "4702",
+      "3740",
+      "4519",
+      "2786",
+      "2735",
+      "4902",
+      "2953",
+      "5017",
+      "5322",
+      "2798",
+      "4881",
+      "4974",
+      "4687",
+      "4667",
+      "4636",
+      "4787",
+      "4764",
+      "2175",
+      "5034",
+      "4611",
+      "4613",
+      "2525",
+      "4833",
+      "4967",
+      "4993",
+      "5101",
+      "3676",
+      "4547",
+      "4583",
+      "5169",
+      "4989",
+      "5106",
+      "4591",
+      "4614",
+      "4814",
+      "4607",
+      "3844",
+      "4581",
+      "5331",
+      "4823",
+      "5093",
+      "5319",
+      "5205",
+      "4681",
+      "4852",
+      "4891",
+      "4878",
+      "4652",
+      "4531",
+      "4739",
+      "5159",
+      "5219",
+      "4892",
+      "4952",
+      "5199",
+      "4563",
+      "5112",
+      "4648",
+      "2987",
+      "5283",
+      "4558",
+      "4940",
+      "4757",
+      "5058",
+      "4925",
+      "5117",
+      "5204",
+      "4537",
+      "4700",
+      "4750",
+      "4517",
+      "5191",
+      "4601",
+      "4742",
+      "4813",
+      "5304",
+      "5067",
+      "4605",
+      "5347",
+      "3573",
+      "4668",
+      "4536",
+      "5299",
+      "5134",
+      "4606",
+      "4928",
+      "5271",
+      "5312",
+      "5054",
+      "4905",
+      "4748",
+      "4532",
+      "4836",
+      "5066",
+      "4856",
+      "3258",
+      "4646",
+      "4674",
+      "4653",
+      "5215",
+      "4751",
+      "4690",
+      "2201",
+      "4960",
+      "4935",
+      "5224",
+      "3287",
+      "2083",
+      "4959",
+      "4534",
+      "5132",
+      "4548",
+      "2696",
+      "4966",
+      "4995",
+      "2407",
+      "4647",
+      "4643",
+      "4588",
+      "5150",
+      "4573",
+      "5244",
+      "3876",
+      "5151",
+      "4736",
+      "5160",
+      "4758",
+      "4659",
+      "4754",
+      "4747",
+      "2566",
+      "4640",
+      "5055",
+      "4766",
+      "5170",
+      "5254",
+      "5228",
+      "5242",
+      "5285",
+      "5187",
+      "4907",
+      "4669",
+      "5039",
+      "2219",
+      "2221",
+      "5317",
+      "4689",
+      "4769",
+      "4529",
+      "5179",
+      "3577",
+      "4912",
+      "5346",
+      "5232",
+      "5146",
+      "5049",
+      "4666",
+      "4671",
+      "4809",
+      "4704",
+      "5328",
+      "4828",
+      "4580",
+      "4998",
+      "4888",
+      "4845",
+      "4854",
+      "5089",
+      "4831",
+      "4819",
+      "5108",
+      "4631",
+      "4550",
+      "5141",
+      "4596",
+      "4710",
+      "5090",
+      "4721",
+      "2520",
+      "2958",
+      "4644",
+      "5081",
+      "5116",
+      "5028",
+      "5344",
+      "4619",
+      "3104",
+      "4708",
+      "2687",
+      "1973",
+      "4931",
+      "5252",
+      "5211",
+      "5257",
+      "4743",
+      "4609",
+      "4762",
+      "4763",
+      "5163",
+      "5236",
+      "4866",
+      "4904",
+      "5124",
+      "5109",
+      "5126",
+      "4773",
+      "5238",
+      "5140",
+      "4767",
+      "4844",
+      "4684",
+      "4807",
+      "5295",
+      "5214",
+      "4717",
+      "4528",
+      "4849",
+      "3439",
+      "5303",
+      "4707",
+      "5063",
+      "4851",
+      "4778",
+      "4724",
+      "2363",
+      "5104",
+      "4961",
+      "2626",
+      "4934",
+      "5182",
+      "5248",
+      "2174",
+      "4543",
+      "5084",
+      "4939",
+      "3163",
+      "3387",
+      "5245",
+      "4679",
+      "3326",
+      "4800",
+      "5045",
+      "4725",
+      "4526",
+      "4688",
+      "5287",
+      "4586",
+      "4697",
+      "4871",
+      "4853",
+      "5046",
+      "4695",
+      "4811",
+      "5355",
+      "4610",
+      "5234",
+      "4556",
+      "4686",
+      "4553",
+      "5258",
+      "4973",
+      "5200",
+      "4886",
+      "5202",
+      "4723",
+      "3080",
+      "5111",
+      "4805",
+      "4604",
+      "3221",
+      "4879",
+      "4720",
+      "5201",
+      "4867",
+      "4919",
+      "5212",
+      "5166",
+      "4944",
+      "3872",
+      "4630",
+      "4602",
+      "4999",
+      "5097",
+      "4860",
+      "4525",
+      "4716",
+      "4948",
+      "5337",
+      "4796",
+      "5033",
+      "3190",
+      "3631",
+      "3066",
+      "4955",
+      "3596",
+      "4972",
+      "4861",
+      "5115",
+      "4968",
+      "4954",
+      "4911",
+      "5053",
+      "5085",
+      "4837",
+      "4641",
+      "4920",
+      "5243",
+      "5139",
+      "4874",
+      "4838",
+      "4755",
+      "5226",
+      "5131",
+      "4761",
+      "4590",
+      "3869",
+      "4649",
+      "4949",
+      "5296",
+      "5130",
+      "5222",
+      "5155",
+      "5005",
+      "4869",
+      "5352",
+      "4662",
+      "4703",
+      "5068",
+      "5158",
+      "5147",
+      "4530",
+      "5013",
+      "5175",
+      "5161",
+      "2692",
+      "5274",
+      "5113",
+      "5269",
+      "4638",
+      "4862",
+      "5250",
+      "4745",
+      "4696",
+      "4545",
+      "5203",
+      "5148",
+      "4835",
+      "5142",
+      "3401",
+      "2979",
+      "4626",
+      "4976",
+      "5183",
+      "4900",
+      "4599",
+      "2284",
+      "2252",
+      "2209",
+      "5340",
+      "4593",
+      "5298",
+      "3578",
+      "3506",
+      "3157",
+      "3156",
+      "3245",
+      "3516",
+      "4909",
+      "4600",
+      "4788",
+      "5306",
+      "4894",
+      "5247",
+      "4524",
+      "5118",
+      "5184",
+      "4926",
+      "4552",
+      "4756",
+      "5221",
+      "5178",
+      "4661",
+      "4555",
+      "4903",
+      "4527",
+      "5123",
+      "3422",
+      "2872",
+      "3338",
+      "4749",
+      "4840",
+      "5167",
+      "4718",
+      "4987",
+      "4549",
+      "4741",
+      "5334",
+      "4566",
+      "3870",
+      "5281",
+      "4933",
+      "5149",
+      "4540",
+      "2938",
+      "4554",
+      "4579",
+      "4793",
+      "4709",
+      "4585",
+      "4785",
+      "5032",
+      "5276",
+      "4863",
+      "4546",
+      "5156",
+      "4890",
+      "5125",
+      "4988",
+      "5198",
+      "4701",
+      "4810",
+      "4899",
+      "2384",
+      "5192",
+      "4660",
+      "4803",
+      "5273",
+      "4621",
+      "5003",
+      "4901",
+      "5262",
+      "4990",
+      "4770",
+      "4827",
+      "4808",
+      "4675",
+      "5143",
+      "5186",
+      "4804",
+      "5082",
+      "4677",
+      "5209",
+      "4937",
+      "2081",
+      "4522",
+      "5026",
+      "2653",
+      "3871",
+      "4564",
+      "5074",
+      "5237",
+      "5350",
+      "4910",
+      "4857",
+      "5072",
+      "4538",
+      "5076",
+      "4658",
+      "4946",
+      "4676",
+      "5020",
+      "2250",
+      "3828",
+      "5235",
+      "5000",
+      "4672",
+      "4650",
+      "5255",
+      "5300",
+      "4798",
+      "5339",
+      "4632",
+      "4875",
+      "4774",
+      "5233",
+      "5057",
+      "5231",
+      "4963",
+      "5259",
+      "3691",
+      "5302",
+      "3352",
+      "5195",
+      "2683",
+      "2784",
+      "5297",
+      "4916",
+      "4812",
+      "5002",
+      "5164",
+      "4983",
+      "5288",
+      "4561",
+      "5153",
+      "5035",
+      "4577",
+      "4941",
+      "4595",
+      "4635",
+      "5264",
+      "4816",
+      "4882",
+      "4980",
+      "4994",
+      "5270",
+      "4897",
+      "4771",
+      "4791",
+      "4859",
+      "5107",
+      "5135",
+      "5152",
+      "4597",
+      "5278",
+      "3673",
+      "4645",
+      "4826",
+      "4818",
+      "4906",
+      "5023",
+      "5137",
+      "4691",
+      "4715",
+      "4575",
+      "4569",
+      "4914",
+      "4887",
+      "4898",
+      "2591",
+      "5014",
+      "5240",
+      "4651",
+      "3575",
+      "3572",
+      "4815",
+      "4735",
+      "5345",
+      "5301",
+      "4870",
+      "5086",
+      "4685",
+      "4663",
+      "4971",
+      "4829",
+      "5286",
+      "4932",
+      "5114",
+      "4930",
+      "4541",
+      "2862",
+      "4868",
+      "5185",
+      "4797",
+      "4885",
+      "4889",
+      "4956",
+      "5267",
+      "2451",
+      "4587",
+      "2442",
+      "5168",
+      "5291",
+      "4950",
+      "4850",
+      "4680",
+      "5336",
+      "4639",
+      "5174",
+      "5102",
+      "5177",
+      "4992",
+      "5022",
+      "1983",
+      "2603",
+      "4612",
+      "5188",
+      "2646",
+      "5122",
+      "5256",
+      "5110",
+      "4624",
+      "4799",
+      "3451",
+      "5206",
+      "5318",
+      "5129",
+      "4759",
+      "5213",
+      "4714",
+      "4984",
+      "5293",
+      "4848",
+      "5025",
+      "4705",
+      "4539",
+      "3490",
+      "2009",
+      "4518",
+      "5268",
+      "4603",
+      "4521",
+      "5092",
+      "5332",
+      "5047",
+      "5098",
+      "5007",
+      "5275",
+      "4772",
+      "4712",
+      "4656",
+      "5105",
+      "5138",
+      "4565",
+      "5083",
+      "4623",
+      "4592",
+      "4533",
+      "4523",
+      "5218",
+      "4673",
+      "5353",
+      "4945",
+      "5227",
+      "4608",
+      "4951",
+      "4683",
+      "2099",
+      "4801",
+      "4711",
+      "5193",
+      "4832",
+      "4942",
+      "4865",
+      "4896",
+      "5119",
+      "4637",
+      "5044",
+      "4719",
+      "5048",
+      "5308",
+      "4821",
+      "4654",
+      "2617",
+      "4975",
+      "4571",
+      "5225",
+      "4842",
+      "4915",
+      "4834",
+      "4589",
+      "5079",
+      "4922",
+      "4864",
+      "2139",
+      "4921",
+      "4958",
+      "2328",
+      "4927",
+      "4615",
+      "5145",
+      "4655",
+      "4858",
+      "4698",
+      "4642",
+      "4628",
+      "5263",
+      "5220",
+      "5261",
+      "4633",
+      "4726",
+      "4847",
+      "4820",
+      "5127",
+      "4789",
+      "4737",
+      "4884",
+      "4843",
+      "4730",
+      "4752",
+      "4855",
+      "5314"
+    ]
+  }
+}
\ No newline at end of file
diff --git a/scripts/com.steve.crcp-email-alerts.plist b/scripts/com.steve.crcp-email-alerts.plist
new file mode 100644
index 0000000..01c0662
--- /dev/null
+++ b/scripts/com.steve.crcp-email-alerts.plist
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+  <key>Label</key><string>com.steve.crcp-email-alerts</string>
+  <key>ProgramArguments</key>
+  <array>
+    <string>/bin/bash</string>
+    <string>/Users/macstudio3/Projects/commercialrealestate/scripts/run-email-alerts.sh</string>
+  </array>
+  <!-- Daily 7:00 AM. Cadence is adjustable: change Hour/Minute here, or add more
+       StartCalendarInterval dicts for multiple sends/day. Per-subscriber cadence
+       (daily|weekly|instant) is honored in data/alerts-config.json. -->
+  <key>StartCalendarInterval</key>
+  <dict><key>Hour</key><integer>7</integer><key>Minute</key><integer>0</integer></dict>
+  <key>StandardOutPath</key><string>/tmp/crcp-email-alerts.out</string>
+  <key>StandardErrorPath</key><string>/tmp/crcp-email-alerts.err</string>
+  <key>RunAtLoad</key><false/>
+</dict>
+</plist>
diff --git a/scripts/email-alerts.js b/scripts/email-alerts.js
new file mode 100644
index 0000000..9825fcb
--- /dev/null
+++ b/scripts/email-alerts.js
@@ -0,0 +1,225 @@
+#!/usr/bin/env node
+/*
+ * CRCP email-alerts — DTD verdict A (launchd snapshot-diff + George).
+ *
+ * Diffs the current snapshots (listings.json, brokers-snapshot.json) against the
+ * last-seen state, finds what's NEW per metro, and composes a per-subscriber HTML
+ * digest. DB-less by design — pure snapshot files, exactly like the rest of CRCP.
+ *
+ * Cadence is adjustable at the config level (data/alerts-config.json `cadence`) and
+ * at the schedule level (the launchd plist interval). Sends are GATED: dry-run by
+ * default (writes HTML to data/alerts-out/); --send routes through George and is the
+ * only path that advances the seen-state.
+ *
+ * Usage:
+ *   node scripts/email-alerts.js            # dry-run: build digests, DO NOT send, DO NOT advance state
+ *   node scripts/email-alerts.js --send     # GATED: send via George + advance state
+ *   node scripts/email-alerts.js --commit-state   # advance state without sending (baseline seed)
+ */
+const fs = require('fs');
+const path = require('path');
+const https = require('https');
+const http = require('http');
+
+const ROOT = path.join(__dirname, '..');
+const DATA = path.join(ROOT, 'data');
+const OUT = path.join(DATA, 'alerts-out');
+const CONFIG_PATH = path.join(DATA, 'alerts-config.json');
+const STATE_PATH = path.join(DATA, 'alerts-state.json');
+
+const SEND = process.argv.includes('--send');
+const COMMIT_STATE = process.argv.includes('--commit-state') || SEND;
+
+// ---- metro tagging -------------------------------------------------------
+// A listing/broker belongs to a metro if its city (slugified) matches the metro
+// slug or one of its alias cities. Subscribers with metros:["*"] get everything.
+const METRO_CITIES = {
+  'los-angeles': ['los angeles', 'la', 'hollywood', 'west hollywood', 'downtown', 'dtla', 'silver lake', 'echo park', 'koreatown', 'mid-city', 'venice', 'santa monica', 'culver city', 'pasadena', 'long beach', 'burbank', 'glendale', 'sherman oaks', 'studio city', 'north hollywood', 'van nuys', 'encino', 'woodland hills', 'tarzana', 'inglewood', 'san pedro', 'torrance', 'gardena', 'huntington park', 'bellflower', 'lakewood', 'downey', 'norwalk', 'compton', 'carson', 'hawthorne', 'lynwood', 'south gate', 'whittier', 'montebello', 'alhambra', 'monterey park', 'el monte', 'pomona', 'lancaster', 'palmdale', 'santa clarita', 'redondo beach', 'manhattan beach', 'hermosa beach', 'westchester', 'reseda', 'canoga park', 'northridge', 'chatsworth', 'sun valley', 'panorama city', 'sylmar', 'wilmington', 'harbor city', 'san fernando', 'arcadia', 'temple city', 'rosemead', 'baldwin park', 'covina', 'west covina', 'la puente', 'hacienda heights', 'rowland heights', 'diamond bar', 'walnut', 'cerritos', 'artesia', 'paramount', 'bell', 'bell gardens', 'maywood', 'cudahy', 'commerce', 'vernon', 'san gabriel', 'altadena', 'sierra madre', 'la crescenta', 'tujunga', 'eagle rock', 'highland park', 'boyle heights', 'lincoln heights', 'south pasadena', 'glassell park'],
+  'beverly-hills': ['beverly hills'],
+  'malibu': ['malibu'],
+  'newport-beach': ['newport beach', 'newport coast', 'corona del mar'],
+  'montecito': ['montecito', 'santa barbara'],
+  'san-francisco': ['san francisco', 'sf'],
+  'silicon-valley': ['palo alto', 'menlo park', 'mountain view', 'los altos', 'los altos hills', 'sunnyvale', 'cupertino', 'san jose'],
+  'atherton': ['atherton'],
+  'hillsborough': ['hillsborough'],
+  'woodside': ['woodside'],
+  'miami': ['miami', 'coral gables', 'coconut grove', 'brickell'],
+  'miami-beach': ['miami beach', 'south beach'],
+  'palm-beach': ['palm beach', 'west palm beach'],
+  'naples': ['naples'],
+  'nyc': ['new york', 'nyc', 'manhattan', 'brooklyn'],
+  'greenwich': ['greenwich'],
+  'hamptons': ['east hampton', 'southampton', 'bridgehampton', 'sag harbor', 'montauk', 'water mill'],
+  'las-vegas': ['las vegas', 'henderson', 'summerlin'],
+  'texas': ['austin', 'dallas', 'houston', 'san antonio', 'fort worth'],
+  'aspen': ['aspen', 'snowmass'],
+  'vail': ['vail', 'beaver creek'],
+  'telluride': ['telluride'],
+};
+const slug = s => (s || '').toString().toLowerCase().trim();
+function metroOf(city) {
+  const c = slug(city);
+  if (!c) return null;
+  for (const [metro, cities] of Object.entries(METRO_CITIES)) {
+    if (c === metro.replace(/-/g, ' ')) return metro;
+    if (cities.some(x => c === x || c.includes(x))) return metro;
+  }
+  return null;
+}
+
+// ---- data loads ----------------------------------------------------------
+function loadJSON(p, fallback) { try { return JSON.parse(fs.readFileSync(p, 'utf8')); } catch { return fallback; } }
+function listValues(d) { if (Array.isArray(d)) return d; if (d && typeof d === 'object') { return d.listings || d.data || d.brokers || Object.values(d); } return []; }
+
+function loadListings() {
+  const raw = loadJSON(path.join(DATA, 'listings.json'), {});
+  return listValues(raw).filter(x => x && (x.id != null)).map(x => ({
+    id: String(x.id), address: x.address, city: x.city, price: x.price, type: x.type,
+    cap_rate: x.cap_rate, units: x.units, status: x.status, upside_note: x.upside_note,
+    metro: metroOf(x.city),
+  }));
+}
+function loadBrokers() {
+  const raw = loadJSON(path.join(DATA, 'brokers-snapshot.json'), {});
+  const arr = raw.brokers || listValues(raw);
+  return arr.filter(x => x && x.id != null).map(x => ({
+    id: String(x.id), name: x.name, firm: x.firm, agent_type: x.agent_type,
+    city: x.office_addr, metro: metroOf(x.office_addr) || metroOf(x.firm) || null,
+  }));
+}
+
+// ---- config + state ------------------------------------------------------
+function loadConfig() {
+  if (fs.existsSync(CONFIG_PATH)) return loadJSON(CONFIG_PATH, null);
+  // seed a sensible default (Steve gets everything, daily)
+  const seed = {
+    from: 'steve@designerwallcoverings.com',
+    subscribers: [
+      { email: 'steve@designerwallcoverings.com', name: 'Steve', metros: ['*'], segments: ['listings', 'brokers'], cadence: 'daily' },
+    ],
+    note: 'cadence is adjustable per-subscriber (daily|weekly|instant); the launchd plist sets how often this script runs.',
+  };
+  fs.writeFileSync(CONFIG_PATH, JSON.stringify(seed, null, 2));
+  console.log(`seeded default config → ${CONFIG_PATH}`);
+  return seed;
+}
+function loadState() { return loadJSON(STATE_PATH, { last_run: null, seen: { listings: [], brokers: [] } }); }
+
+// ---- digest --------------------------------------------------------------
+function money(n) { const v = Number(n); return isFinite(v) && v > 0 ? '$' + v.toLocaleString() : '—'; }
+function metroLabel(m) { return (m || 'other').replace(/-/g, ' ').replace(/\b\w/g, c => c.toUpperCase()); }
+
+function buildDigestHTML(sub, newListings, newBrokers) {
+  const wants = new Set(sub.metros);
+  const all = wants.has('*');
+  const fL = newListings.filter(l => all || wants.has(l.metro));
+  const fB = newBrokers.filter(b => all || wants.has(b.metro));
+  const showListings = sub.segments.includes('listings') ? fL : [];
+  const showBrokers = sub.segments.includes('brokers') ? fB : [];
+
+  const byMetro = arr => arr.reduce((m, x) => { (m[x.metro || 'other'] ||= []).push(x); return m; }, {});
+  const lMetros = byMetro(showListings);
+
+  let body = `<div style="font-family:-apple-system,Segoe UI,Arial,sans-serif;max-width:680px;margin:0 auto;color:#1a1f2b">
+    <div style="background:#0a0d13;padding:22px 26px;border-radius:12px 12px 0 0">
+      <div style="color:#C8A24B;font-weight:800;letter-spacing:3px;font-size:13px;text-transform:uppercase">CRCP · Commercial Real Estate Command Post</div>
+      <div style="color:#EAECEF;font-size:24px;font-weight:800;margin-top:6px">New activity in your markets</div>
+      <div style="color:#8A93A2;font-size:13px;margin-top:4px">${new Date().toLocaleDateString(undefined,{weekday:'long',month:'long',day:'numeric',year:'numeric'})}</div>
+    </div>
+    <div style="border:1px solid #e6e8ec;border-top:none;border-radius:0 0 12px 12px;padding:24px 26px">`;
+
+  if (!showListings.length && !showBrokers.length) {
+    body += `<p style="color:#6b7280">No new listings or brokers in your markets since the last update.</p>`;
+  }
+
+  if (showListings.length) {
+    body += `<h2 style="font-size:16px;margin:0 0 12px">🏢 ${showListings.length} new listing${showListings.length>1?'s':''}</h2>`;
+    for (const [metro, items] of Object.entries(lMetros)) {
+      body += `<div style="font-size:12px;font-weight:700;color:#C8A24B;text-transform:uppercase;letter-spacing:1px;margin:14px 0 6px">${metroLabel(metro)}</div>`;
+      for (const l of items.slice(0, 25)) {
+        body += `<div style="padding:10px 12px;border:1px solid #eef0f3;border-radius:8px;margin-bottom:8px">
+          <div style="font-weight:700">${l.address || 'Address on file'} <span style="color:#8A93A2;font-weight:400">· ${l.city || ''}</span></div>
+          <div style="font-size:13px;color:#4b5563;margin-top:3px">${money(l.price)}${l.type?` · ${l.type}`:''}${l.units?` · ${l.units} units`:''}${l.cap_rate?` · ${l.cap_rate}% cap`:''}</div>
+          ${l.upside_note?`<div style="font-size:12px;color:#6b7280;margin-top:3px">${l.upside_note}</div>`:''}
+        </div>`;
+      }
+    }
+  }
+
+  if (showBrokers.length) {
+    body += `<h2 style="font-size:16px;margin:20px 0 12px">👤 ${showBrokers.length} new broker${showBrokers.length>1?'s':''} indexed</h2>`;
+    for (const b of showBrokers.slice(0, 40)) {
+      body += `<div style="font-size:13px;padding:6px 0;border-bottom:1px solid #f2f4f6">
+        <b>${b.name || 'Unknown'}</b>${b.firm?` · ${b.firm}`:''}${b.agent_type?` <span style="color:#8A93A2">(${b.agent_type})</span>`:''}</div>`;
+    }
+  }
+
+  body += `<div style="margin-top:22px;padding-top:16px;border-top:1px solid #e6e8ec;font-size:12px;color:#8A93A2">
+      You're getting the <b>${sub.cadence}</b> digest for ${all?'all markets':sub.metros.map(metroLabel).join(', ')}.
+      Open <a href="https://crcp.agentabrams.com" style="color:#C8A24B">CRCP</a> to work these leads.
+    </div></div></div>`;
+  return { html: body, listingCount: showListings.length, brokerCount: showBrokers.length };
+}
+
+// ---- George send (GATED) -------------------------------------------------
+function georgeSend({ to, subject, html, from }) {
+  return new Promise((resolve, reject) => {
+    const base = process.env.GEORGE_URL || 'http://127.0.0.1:9850';
+    const token = process.env.GEORGE_EXTERNAL_SEND_TOKEN || '';
+    if (!token) return reject(new Error('GEORGE_EXTERNAL_SEND_TOKEN not set — external send blocked (fail-closed)'));
+    const payload = JSON.stringify({ to, subject, html, from, account: 'steve-office' });
+    const u = new URL(base + '/send');
+    const lib = u.protocol === 'https:' ? https : http;
+    const req = lib.request(u, { method: 'POST', headers: {
+      'Content-Type': 'application/json', 'Content-Length': Buffer.byteLength(payload),
+      'X-Send-Approval': token,
+    } }, r => { let s = ''; r.on('data', d => s += d); r.on('end', () => (r.statusCode < 300 ? resolve(s) : reject(new Error(`George ${r.statusCode}: ${s.slice(0,200)}`)))); });
+    req.on('error', reject); req.write(payload); req.end();
+  });
+}
+
+// ---- main ----------------------------------------------------------------
+(async () => {
+  fs.mkdirSync(OUT, { recursive: true });
+  const cfg = loadConfig();
+  const state = loadState();
+  const seenL = new Set(state.seen.listings || []);
+  const seenB = new Set(state.seen.brokers || []);
+
+  const listings = loadListings();
+  const brokers = loadBrokers();
+  const newListings = listings.filter(l => !seenL.has(l.id));
+  const newBrokers = brokers.filter(b => !seenB.has(b.id));
+
+  console.log(`snapshot: ${listings.length} listings (${newListings.length} new), ${brokers.length} brokers (${newBrokers.length} new)`);
+  console.log(`mode: ${SEND ? 'SEND (gated)' : 'DRY-RUN (no send, state unchanged unless --commit-state)'}`);
+
+  const date = new Date().toISOString().slice(0, 10);
+  const results = [];
+  for (const sub of cfg.subscribers) {
+    const { html, listingCount, brokerCount } = buildDigestHTML(sub, newListings, newBrokers);
+    if (!listingCount && !brokerCount) { console.log(`  ${sub.email}: nothing new — skip`); continue; }
+    const subject = `CRCP: ${listingCount} new listing${listingCount!==1?'s':''}${brokerCount?` · ${brokerCount} new broker${brokerCount!==1?'s':''}`:''}`;
+    const file = path.join(OUT, `${date}-${sub.email.replace(/[^a-z0-9]/gi,'_')}.html`);
+    fs.writeFileSync(file, html);
+    results.push({ email: sub.email, subject, listingCount, brokerCount, file });
+    console.log(`  ${sub.email}: ${listingCount} listings + ${brokerCount} brokers → ${path.relative(ROOT, file)}`);
+
+    if (SEND) {
+      try { await georgeSend({ to: sub.email, subject, html, from: cfg.from }); console.log(`    ✉ sent via George`); }
+      catch (e) { console.error(`    ⚠ send failed: ${e.message}`); }
+    }
+  }
+
+  if (COMMIT_STATE) {
+    state.seen.listings = listings.map(l => l.id);
+    state.seen.brokers = brokers.map(b => b.id);
+    state.last_run = new Date().toISOString();
+    fs.writeFileSync(STATE_PATH, JSON.stringify(state, null, 2));
+    console.log(`state advanced → ${path.relative(ROOT, STATE_PATH)} (${SEND ? 'post-send' : 'baseline seed'})`);
+  } else {
+    console.log('state NOT advanced (dry-run). Re-run with --send to send + advance, or --commit-state to seed baseline.');
+  }
+  console.log(`\ndone: ${results.length} digest(s) built.`);
+})();
diff --git a/scripts/run-email-alerts.sh b/scripts/run-email-alerts.sh
new file mode 100644
index 0000000..a8ef8fd
--- /dev/null
+++ b/scripts/run-email-alerts.sh
@@ -0,0 +1,9 @@
+#!/bin/bash
+# CRCP email-alerts runner (invoked by launchd once approved).
+# Sources .env for GEORGE_URL + GEORGE_EXTERNAL_SEND_TOKEN, then runs the
+# snapshot-diff alert engine in SEND mode (which also advances seen-state).
+set -a
+[ -f "$HOME/Projects/commercialrealestate/.env" ] && . "$HOME/Projects/commercialrealestate/.env"
+set +a
+cd "$HOME/Projects/commercialrealestate" || exit 1
+/usr/bin/env node scripts/email-alerts.js --send

← 52b71e1 broker-email-finder: --browser tier (real system Chrome) rec  ·  back to Commercialrealestate  ·  CRCP multi-metro listings sweep: generalize SFV Crexi scrape 367513f →