[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"summary-17040afbe49e30f1-self-host-gemma-4-on-cloud-run-gpus-ollama-vs-vllm-summary":3,"summaries-facets-categories":473,"summary-related-17040afbe49e30f1-self-host-gemma-4-on-cloud-run-gpus-ollama-vs-vllm-summary":4041},{"id":4,"title":5,"ai":6,"body":13,"categories":423,"created_at":426,"date_modified":426,"description":132,"extension":427,"faq":426,"featured":428,"kicker_label":426,"meta":429,"navigation":454,"path":455,"published_at":456,"question":426,"scraped_at":457,"seo":458,"sitemap":459,"source_id":460,"source_name":461,"source_type":462,"source_url":463,"stem":464,"tags":465,"thumbnail_url":426,"tldr":470,"tweet":426,"unknown_tags":471,"__hash__":472},"summaries\u002Fsummaries\u002F17040afbe49e30f1-self-host-gemma-4-on-cloud-run-gpus-ollama-vs-vllm-summary.md","Self-Host Gemma 4 on Cloud Run GPUs: Ollama vs vLLM",{"provider":7,"model":8,"input_tokens":9,"output_tokens":10,"processing_time_ms":11,"cost_usd":12},"openrouter","x-ai\u002Fgrok-4.1-fast",8944,2783,21888,0.00288915,{"type":14,"value":15,"toc":415},"minimark",[16,21,25,28,31,34,38,41,100,103,106,113,117,120,126,161,174,180,207,210,216,219,222,226,229,235,274,281,288,291,294,298,365,368,371,374,378,411],[17,18,20],"h2",{"id":19},"choose-open-models-like-gemma-4-for-control-and-cost-predictability","Choose Open Models like Gemma 4 for Control and Cost Predictability",[22,23,24],"p",{},"Self-hosting open models like Google's Gemma 4 gives you full control over customization, fine-tuning, and data privacy—critical for regulated industries like healthcare or finance where sending data to closed models like Gemini isn't viable. Closed models excel out-of-the-box with state-of-the-art performance but limit tuning beyond prompts. Open models cap costs at infrastructure levels (no per-API-call scaling) and integrate as the \"brain\" in agentic systems via wrappers like Google's Agent Development Kit (ADK), which supports any LLM, not just Gemini.",[22,26,27],{},"Key principles: Evaluate models by performance, use case, cost, and capacity. Gemma 4 (2B parameter version here) fits L4 GPUs on Cloud Run, enabling scale-to-zero serverless inference. Use Ollama for dev\u002FPOC (easy local testing, multi-GPU) or vLLM for production (PagedAttention for memory efficiency, dynamic batching, high concurrency).",[22,29,30],{},"\"Open model like Gemma is easy to take control, you can even fine-tune it.\" — Annie Wang",[22,32,33],{},"Common mistake: Assuming agent frameworks lock you into proprietary models—ADK's LiteLLM wrapper connects any model seamlessly.",[17,35,37],{"id":36},"shared-gcp-foundation-project-setup-and-permissions","Shared GCP Foundation: Project Setup and Permissions",[22,39,40],{},"Start in Cloud Shell (persistent VS Code-like VM at console.cloud.google.com). Run setup script to:",[42,43,44,53,64,71,78,84,90,93],"ol",{},[45,46,47,48,52],"li",{},"Authenticate gcloud (",[49,50,51],"code",{},"gcloud auth login",").",[45,54,55,56,59,60,63],{},"Clone repos: ",[49,57,58],{},"agentverse-devops-sre"," (templates, Cloud Build YAMLs) and ",[49,61,62],{},"agentverse-dungeon"," (agent fight files).",[45,65,66,67,70],{},"Create project (",[49,68,69],{},"agentverse-guardians-\u003CID>","), link billing manually via Manage Resources if needed.",[45,72,73,74,77],{},"Set project: ",[49,75,76],{},"gcloud config set project \u003CID>",".",[45,79,80,81,52],{},"Enable APIs: Artifact Registry, Cloud Build, Cloud Run, Cloud Storage, Secret Manager (",[49,82,83],{},"gcloud services enable",[45,85,86,87,77],{},"Create Artifact Registry repo: ",[49,88,89],{},"gcloud artifacts repositories create \u003Crepo> --repository-format=docker",[45,91,92],{},"Grant default service account roles: Storage Admin, Cloud Build Service Account, Logs Writer\u002FViewer, Secret Manager Secret Accessor.",[45,94,95,96,99],{},"Run ",[49,97,98],{},"warmup.sh"," to cache GCS FUSE.",[22,101,102],{},"Service accounts act as \"robot accounts\" for granular permissions—use separate ones in production. Enabling APIs incurs no immediate cost; billing starts on usage.",[22,104,105],{},"\"Every Google Cloud project has a default service account... that's essentially going to be like the operator behind many of your default actions.\" — Ayo Adedeji (IO)",[22,107,108,109,112],{},"Quality criteria: Verify project ID in yellow (Cloud Shell), ",[49,110,111],{},"gcloud config list"," shows correct project. Refresh page if timeouts occur (70-min security idle).",[17,114,116],{"id":115},"ollama-deployment-bake-model-for-instant-cold-starts","Ollama Deployment: Bake Model for Instant Cold Starts",[22,118,119],{},"Ollama pulls and embeds Gemma 4 directly into the container—ideal for rapid iteration but requires rebuilds for model updates.",[22,121,122],{},[123,124,125],"strong",{},"Dockerfile:",[127,128,133],"pre",{"className":129,"code":130,"language":131,"meta":132,"style":132},"language-dockerfile shiki shiki-themes github-light github-dark","FROM ollama\u002Follama\nCOPY entrypoint.sh \u002Fentrypoint.sh\nRUN chmod +x \u002Fentrypoint.sh\nENTRYPOINT [\"\u002Fentrypoint.sh\"]\n","dockerfile","",[49,134,135,143,149,155],{"__ignoreMap":132},[136,137,140],"span",{"class":138,"line":139},"line",1,[136,141,142],{},"FROM ollama\u002Follama\n",[136,144,146],{"class":138,"line":145},2,[136,147,148],{},"COPY entrypoint.sh \u002Fentrypoint.sh\n",[136,150,152],{"class":138,"line":151},3,[136,153,154],{},"RUN chmod +x \u002Fentrypoint.sh\n",[136,156,158],{"class":138,"line":157},4,[136,159,160],{},"ENTRYPOINT [\"\u002Fentrypoint.sh\"]\n",[22,162,163,166,167,170,171,77],{},[49,164,165],{},"entrypoint.sh"," runs ",[49,168,169],{},"ollama serve"," and pulls ",[49,172,173],{},"gemma2:2b",[22,175,176,179],{},[123,177,178],{},"cloudbuild-ollama.yaml:"," Defines CI\u002FCD pipeline:",[42,181,182],{},[45,183,184,185,188],{},"Build: ",[49,186,187],{},"gcloud builds submit --config=cloudbuild-ollama.yaml .",[189,190,191,196,201],"ul",{},[45,192,193],{},[49,194,195],{},"docker build -t image .",[45,197,198,77],{},[49,199,200],{},"docker push gcr.io\u002F$PROJECT_ID\u002Follama",[45,202,203,204,77],{},"Deploy to Cloud Run: ",[49,205,206],{},"gcloud run deploy ollama --image=gcr.io\u002F$PROJECT_ID\u002Follama --cpu=4 --memory=16Gi --gpu=nvidia-l4 --concurrency=4 --min-instances=1 --max-instances=1 --allow-unauthenticated --region=us-central1",[22,208,209],{},"Trade-offs: 16GB RAM for 2B model; L4 GPU; concurrency=4. Scales to zero but min=1 here for lab (scale higher in prod). Build takes 15-20 mins—monitor in Cloud Build console.",[22,211,212,213,77],{},"Test: ",[49,214,215],{},"curl -X POST https:\u002F\u002Follama-\u003Chash>-uc.a.run.app\u002Fapi\u002Fgenerate -d '{\"model\": \"gemma2:2b\", \"prompt\": \"Why is the sky blue?\"}'",[22,217,218],{},"Before: Local Ollama testing. After: Serverless endpoint ready for agents.",[22,220,221],{},"\"Ollama is great for development use cases. It's really easy to install and get up and running.\" — Ayo Adedeji",[17,223,225],{"id":224},"vllm-deployment-decouple-model-via-gcs-fuse-for-agility","vLLM Deployment: Decouple Model via GCS FUSE for Agility",[22,227,228],{},"vLLM loads model from Cloud Storage FUSE mount—slower initial boot (caches on first run) but swap models by updating GCS without redeploy.",[22,230,231,232,52],{},"Prerequisites: Hugging Face token in Secret Manager (",[49,233,234],{},"gcloud secrets create hf-token --data-file=\u003Ctoken>",[42,236,237,243,259],{},[45,238,239,240,52],{},"Download Gemma 4 to GCS: Script pulls from HF (",[49,241,242],{},"huggingface-cli download google\u002Fgemma-2-2b-it",[45,244,245,247,248,251,252,255,256,77],{},[123,246,125],{}," Base ",[49,249,250],{},"vllm\u002Fvllm-openai",", mounts GCS bucket via FUSE (",[49,253,254],{},"gcsfuse","), serves on ",[49,257,258],{},"\u002Fv1",[45,260,261,264,265],{},[123,262,263],{},"cloudbuild-vllm.yaml:"," Similar pipeline, but image pulls HF token secret.\n",[189,266,267],{},[45,268,269,270,273],{},"Deploy: ",[49,271,272],{},"--gpu=nvidia-l4-count=1 --env-vars-file=vllm.env"," (adds HF_TOKEN).",[22,275,276,277,280],{},"FUSE enables mounting GCS as filesystem: ",[49,278,279],{},"gcsfuse \u003Cbucket> \u002Fmodels","—warmup caches for speed.",[22,282,283,284,287],{},"Test: Same curl to ",[49,285,286],{},"\u002Fv1\u002Fchat\u002Fcompletions"," with OpenAI-compatible API.",[22,289,290],{},"\"vLLM is great for production use cases. It comes with PagedAttention... great for memory efficiency.\" — Ayo Adedeji",[22,292,293],{},"Common mistake: Forgetting GPU alloc (L4), insufficient RAM (16Gi+), or FUSE warmup—leads to OOM or slow boots.",[17,295,297],{"id":296},"production-trade-offs-and-agent-integration","Production Trade-offs and Agent Integration",[299,300,301,317],"table",{},[302,303,304],"thead",{},[305,306,307,311,314],"tr",{},[308,309,310],"th",{},"Aspect",[308,312,313],{},"Ollama",[308,315,316],{},"vLLM",[318,319,320,332,343,354],"tbody",{},[305,321,322,326,329],{},[323,324,325],"td",{},"Cold Start",[323,327,328],{},"Instant (baked model)",[323,330,331],{},"Slower (GCS mount)",[305,333,334,337,340],{},[323,335,336],{},"Model Updates",[323,338,339],{},"Rebuild\u002Fdeploy",[323,341,342],{},"GCS overwrite",[305,344,345,348,351],{},[323,346,347],{},"Use Case",[323,349,350],{},"Dev\u002FPOC",[323,352,353],{},"Prod (concurrency)",[305,355,356,359,362],{},[323,357,358],{},"Concurrency",[323,360,361],{},"Basic",[323,363,364],{},"Dynamic batching",[22,366,367],{},"Optimize: Use authenticated invokes; scale max-instances >1; monitor costs (GPUs aren't free). Integrate as agent \"brain\": ADK routes tools\u002Freasoning to your Cloud Run endpoint.",[22,369,370],{},"\"The model you're choosing really like can determine the upper bound, the capability of your agentic system.\" — Annie Wang",[22,372,373],{},"Exercise: Extend to boss fight in Agentverse—deploy agent vs. agent via A2A.",[17,375,377],{"id":376},"key-takeaways","Key Takeaways",[189,379,380,383,386,389,392,395,405,408],{},[45,381,382],{},"Self-host Gemma 4 on Cloud Run L4 GPUs for predictable costs and privacy in agent systems.",[45,384,385],{},"Use Ollama for fast dev deploys: Bake model in Dockerfile, CI\u002FCD via Cloud Build YAML.",[45,387,388],{},"Prefer vLLM for prod: Mount GCS via FUSE, update models without rebuilds.",[45,390,391],{},"Always setup IAM on default service account; enable APIs only incur costs on use.",[45,393,394],{},"Configure Cloud Run: 4 CPU\u002F16Gi RAM\u002FGPU=1\u002Fconcurrency=4; scale-to-zero with min=1 for labs.",[45,396,397,398,401,402,404],{},"Test with curl to ",[49,399,400],{},"\u002Fapi\u002Fgenerate"," (Ollama) or ",[49,403,286],{}," (vLLM).",[45,406,407],{},"Warm GCS FUSE cache; monitor builds in console (15-20 min).",[45,409,410],{},"Integrate via ADK LiteLLM wrapper for any model as agent brain.",[412,413,414],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":132,"searchDepth":145,"depth":145,"links":416},[417,418,419,420,421,422],{"id":19,"depth":145,"text":20},{"id":36,"depth":145,"text":37},{"id":115,"depth":145,"text":116},{"id":224,"depth":145,"text":225},{"id":296,"depth":145,"text":297},{"id":376,"depth":145,"text":377},[424,425],"AI & LLMs","DevOps & Cloud",null,"md",false,{"content_references":430,"triage":450},[431,435,437,440,443,446],{"type":432,"title":313,"url":433,"context":434},"tool","https:\u002F\u002Fgoo.gle\u002F3Qdi64w","mentioned",{"type":432,"title":316,"url":436,"context":434},"https:\u002F\u002Fgoo.gle\u002F4cvvxE9",{"type":432,"title":438,"url":439,"context":434},"Cloud Storage FUSE","https:\u002F\u002Fgoo.gle\u002F4cQAb0V",{"type":432,"title":441,"url":442,"context":434},"Cloud Run GPU","https:\u002F\u002Fgoo.gle\u002F4sEbTvG",{"type":444,"title":445,"context":434},"other","Agent Development Kit",{"type":444,"title":447,"url":448,"context":449},"Agentverse Lab","https:\u002F\u002Fgoo.gle\u002Fguardians","recommended",{"relevance":451,"novelty":157,"quality":157,"actionability":451,"composite":452,"reasoning":453},5,4.55,"Category: AI & LLMs. The article provides a detailed guide on deploying the Gemma 4 LLM on Cloud Run, addressing practical applications for developers looking to integrate AI models into their products. It includes specific steps for setup and deployment, making it immediately actionable for the target audience.",true,"\u002Fsummaries\u002F17040afbe49e30f1-self-host-gemma-4-on-cloud-run-gpus-ollama-vs-vllm-summary","2026-04-18 15:47:23","2026-04-19 03:42:07",{"title":5,"description":132},{"loc":455},"17040afbe49e30f1","Google Cloud Tech","article","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=njWyDHKYeVA","summaries\u002F17040afbe49e30f1-self-host-gemma-4-on-cloud-run-gpus-ollama-vs-vllm-summary",[466,467,468,469],"llm","devops","cloud","agents","Deploy open Gemma 4 LLM on serverless Cloud Run GPUs two ways: Ollama bakes model into container for instant cold starts; vLLM mounts from GCS FUSE for model swaps without rebuilds. Full CI\u002FCD via Cloud Build.",[],"_Vza7Oyow2_qaJpr6tl5zFUEbETkmjALA0GtIyH6k1E",[474,477,480,482,485,488,490,492,494,496,498,500,503,505,507,509,511,513,515,517,519,521,524,527,529,531,534,536,538,541,543,545,547,549,551,553,555,557,559,561,563,565,567,569,571,573,575,577,579,581,583,585,587,589,591,593,595,597,599,601,603,605,607,609,611,613,615,617,619,621,623,625,627,629,631,633,635,637,639,641,643,645,647,649,651,653,655,657,659,661,663,665,667,669,671,673,675,677,679,681,683,685,687,689,691,693,695,697,699,701,703,705,707,709,711,713,715,717,719,721,723,725,727,729,731,733,735,737,739,741,743,745,747,749,751,753,755,757,759,761,763,765,767,769,771,773,775,777,779,781,783,785,787,789,791,793,795,797,799,801,803,805,807,809,811,813,815,817,819,821,823,825,827,829,831,833,835,837,839,841,843,845,847,849,851,853,855,857,859,861,863,865,867,869,871,873,875,877,879,881,883,885,887,889,891,893,895,897,899,901,903,905,907,909,911,913,915,917,919,921,923,925,927,929,931,933,935,937,939,941,943,945,947,949,951,953,955,957,959,961,963,965,967,969,971,973,975,977,979,981,983,985,987,989,991,993,995,997,999,1001,1003,1005,1007,1009,1011,1013,1015,1017,1019,1021,1023,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045,1047,1049,1051,1053,1055,1057,1059,1061,1063,1065,1067,1069,1071,1073,1075,1077,1079,1081,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1123,1125,1127,1129,1131,1133,1135,1137,1139,1141,1143,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173,1175,1177,1179,1181,1183,1185,1187,1189,1191,1193,1195,1197,1199,1201,1203,1205,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259,1261,1263,1265,1267,1269,1271,1273,1275,1277,1279,1281,1283,1285,1287,1289,1291,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317,1319,1321,1323,1325,1327,1329,1331,1333,1335,1337,1339,1341,1343,1345,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371,1373,1375,1377,1379,1381,1383,1385,1387,1389,1391,1393,1395,1397,1399,1401,1403,1405,1407,1409,1411,1413,1415,1417,1419,1421,1423,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453,1455,1457,1459,1461,1463,1465,1467,1469,1471,1473,1475,1477,1479,1481,1483,1485,1487,1489,1491,1493,1495,1497,1499,1501,1503,1505,1507,1509,1511,1513,1515,1517,1519,1521,1523,1525,1527,1529,1531,1533,1535,1537,1539,1541,1543,1545,1547,1549,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571,1573,1575,1577,1579,1581,1583,1585,1587,1589,1591,1593,1595,1597,1599,1601,1603,1605,1607,1609,1611,1613,1615,1617,1619,1621,1623,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643,1645,1647,1649,1651,1653,1655,1657,1659,1661,1663,1665,1667,1669,1671,1673,1675,1677,1679,1681,1683,1685,1687,1689,1691,1693,1695,1697,1699,1701,1703,1705,1707,1709,1711,1713,1715,1717,1719,1721,1723,1725,1727,1729,1731,1733,1735,1737,1739,1741,1743,1745,1747,1749,1751,1753,1755,1757,1759,1761,1763,1765,1767,1769,1771,1773,1775,1777,1779,1781,1783,1785,1787,1789,1791,1793,1795,1797,1799,1801,1803,1805,1807,1809,1811,1813,1815,1817,1819,1821,1823,1825,1827,1829,1831,1833,1835,1837,1839,1841,1843,1845,1847,1849,1851,1853,1855,1857,1859,1861,1863,1865,1867,1869,1871,1873,1875,1877,1879,1881,1883,1885,1887,1889,1891,1893,1895,1897,1899,1901,1903,1905,1907,1909,1911,1913,1915,1917,1919,1921,1923,1925,1927,1929,1931,1933,1935,1937,1939,1941,1943,1945,1947,1949,1951,1953,1955,1957,1959,1961,1963,1965,1967,1969,1971,1973,1975,1977,1979,1981,1983,1985,1987,1989,1991,1993,1995,1997,1999,2001,2003,2005,2007,2009,2011,2013,2015,2017,2019,2021,2023,2025,2027,2029,2031,2033,2035,2037,2039,2041,2043,2045,2047,2049,2051,2053,2055,2057,2059,2061,2063,2065,2067,2069,2071,2073,2075,2077,2079,2081,2083,2085,2087,2089,2091,2093,2095,2097,2099,2101,2103,2105,2107,2109,2111,2113,2115,2117,2119,2121,2123,2125,2127,2129,2131,2133,2135,2137,2139,2141,2143,2145,2147,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169,2171,2173,2175,2177,2179,2181,2183,2185,2187,2189,2191,2193,2195,2197,2199,2201,2203,2205,2207,2209,2211,2213,2215,2217,2219,2221,2223,2225,2227,2229,2231,2233,2235,2237,2239,2241,2243,2245,2247,2249,2251,2253,2255,2257,2259,2261,2263,2265,2267,2269,2271,2273,2275,2277,2279,2281,2283,2285,2287,2289,2291,2293,2295,2297,2299,2301,2303,2305,2307,2309,2311,2313,2315,2317,2319,2321,2323,2325,2327,2329,2331,2333,2335,2337,2339,2341,2343,2345,2347,2349,2351,2353,2355,2357,2359,2361,2363,2365,2367,2369,2371,2373,2375,2377,2379,2381,2383,2385,2387,2389,2391,2393,2395,2397,2399,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423,2425,2427,2429,2431,2433,2435,2437,2439,2441,2443,2445,2447,2449,2451,2453,2455,2457,2459,2461,2463,2465,2467,2469,2471,2473,2475,2477,2479,2481,2483,2485,2487,2489,2491,2493,2495,2497,2499,2501,2503,2505,2507,2509,2511,2513,2515,2517,2519,2521,2523,2525,2527,2529,2531,2533,2535,2537,2539,2541,2543,2545,2547,2549,2551,2553,2555,2557,2559,2561,2563,2565,2567,2569,2571,2573,2575,2577,2579,2581,2583,2585,2587,2589,2591,2593,2595,2597,2599,2601,2603,2605,2607,2609,2611,2613,2615,2617,2619,2621,2623,2625,2627,2629,2631,2633,2635,2637,2639,2641,2643,2645,2647,2649,2651,2653,2655,2657,2659,2661,2663,2665,2667,2669,2671,2673,2675,2677,2679,2681,2683,2685,2687,2689,2691,2693,2695,2697,2699,2701,2703,2705,2707,2709,2711,2713,2715,2717,2719,2721,2723,2725,2727,2729,2731,2733,2735,2737,2739,2741,2743,2745,2747,2749,2751,2753,2755,2757,2759,2761,2763,2765,2767,2769,2771,2773,2775,2777,2779,2781,2783,2785,2787,2789,2791,2793,2795,2797,2799,2801,2803,2805,2807,2809,2811,2813,2815,2817,2819,2821,2823,2825,2827,2829,2831,2833,2835,2837,2839,2841,2843,2845,2847,2849,2851,2853,2855,2857,2859,2861,2863,2865,2867,2869,2871,2873,2875,2877,2879,2881,2883,2885,2887,2889,2891,2893,2895,2897,2899,2901,2903,2905,2907,2909,2911,2913,2915,2917,2919,2921,2923,2925,2927,2929,2931,2933,2935,2937,2939,2941,2943,2945,2947,2949,2951,2953,2955,2957,2959,2961,2963,2965,2967,2969,2971,2973,2975,2977,2979,2981,2983,2985,2987,2989,2991,2993,2995,2997,2999,3001,3003,3005,3007,3009,3011,3013,3015,3017,3019,3021,3023,3025,3027,3029,3031,3033,3035,3037,3039,3041,3043,3045,3047,3049,3051,3053,3055,3057,3059,3061,3063,3065,3067,3069,3071,3073,3075,3077,3079,3081,3083,3085,3087,3089,3091,3093,3095,3097,3099,3101,3103,3105,3107,3109,3111,3113,3115,3117,3119,3121,3123,3125,3127,3129,3131,3133,3135,3137,3139,3141,3143,3145,3147,3149,3151,3153,3155,3157,3159,3161,3163,3165,3167,3169,3171,3173,3175,3177,3179,3181,3183,3185,3187,3189,3191,3193,3195,3197,3199,3201,3203,3205,3207,3209,3211,3213,3215,3217,3219,3221,3223,3225,3227,3229,3231,3233,3235,3237,3239,3241,3243,3245,3247,3249,3251,3253,3255,3257,3259,3261,3263,3265,3267,3269,3271,3273,3275,3277,3279,3281,3283,3285,3287,3289,3291,3293,3295,3297,3299,3301,3303,3305,3307,3309,3311,3313,3315,3317,3319,3321,3323,3325,3327,3329,3331,3333,3335,3337,3339,3341,3343,3345,3347,3349,3351,3353,3355,3357,3359,3361,3363,3365,3367,3369,3371,3373,3375,3377,3379,3381,3383,3385,3387,3389,3391,3393,3395,3397,3399,3401,3403,3405,3407,3409,3411,3413,3415,3417,3419,3421,3423,3425,3427,3429,3431,3433,3435,3437,3439,3441,3443,3445,3447,3449,3451,3453,3455,3457,3459,3461,3463,3465,3467,3469,3471,3473,3475,3477,3479,3481,3483,3485,3487,3489,3491,3493,3495,3497,3499,3501,3503,3505,3507,3509,3511,3513,3515,3517,3519,3521,3523,3525,3527,3529,3531,3533,3535,3537,3539,3541,3543,3545,3547,3549,3551,3553,3555,3557,3559,3561,3563,3565,3567,3569,3571,3573,3575,3577,3579,3581,3583,3585,3587,3589,3591,3593,3595,3597,3599,3601,3603,3605,3607,3609,3611,3613,3615,3617,3619,3621,3623,3625,3627,3629,3631,3633,3635,3637,3639,3641,3643,3645,3647,3649,3651,3653,3655,3657,3659,3661,3663,3665,3667,3669,3671,3673,3675,3677,3679,3681,3683,3685,3687,3689,3691,3693,3695,3697,3699,3701,3703,3705,3707,3709,3711,3713,3715,3717,3719,3721,3723,3725,3727,3729,3731,3733,3735,3737,3739,3741,3743,3745,3747,3749,3751,3753,3755,3757,3759,3761,3763,3765,3767,3769,3771,3773,3775,3777,3779,3781,3783,3785,3787,3789,3791,3793,3795,3797,3799,3801,3803,3805,3807,3809,3811,3813,3815,3817,3819,3821,3823,3825,3827,3829,3831,3833,3835,3837,3839,3841,3843,3845,3847,3849,3851,3853,3855,3857,3859,3861,3863,3865,3867,3869,3871,3873,3875,3877,3879,3881,3883,3885,3887,3889,3891,3893,3895,3897,3899,3901,3903,3905,3907,3909,3911,3913,3915,3917,3919,3921,3923,3925,3927,3929,3931,3933,3935,3937,3939,3941,3943,3945,3947,3949,3951,3953,3955,3957,3959,3961,3963,3965,3967,3969,3971,3973,3975,3977,3979,3981,3983,3985,3987,3989,3991,3993,3995,3997,3999,4001,4003,4005,4007,4009,4011,4013,4015,4017,4019,4021,4023,4025,4027,4029,4031,4033,4035,4037,4039],{"categories":475},[476],"Developer Productivity",{"categories":478},[479],"Business & SaaS",{"categories":481},[424],{"categories":483},[484],"AI Automation",{"categories":486},[487],"Product Strategy",{"categories":489},[424],{"categories":491},[476],{"categories":493},[479],{"categories":495},[],{"categories":497},[424],{"categories":499},[],{"categories":501},[502],"AI News & Trends",{"categories":504},[484],{"categories":506},[502],{"categories":508},[484],{"categories":510},[484],{"categories":512},[424],{"categories":514},[424],{"categories":516},[502],{"categories":518},[424],{"categories":520},[],{"categories":522},[523],"Design & Frontend",{"categories":525},[526],"Data Science & Visualization",{"categories":528},[502],{"categories":530},[],{"categories":532},[533],"Software Engineering",{"categories":535},[424],{"categories":537},[484],{"categories":539},[540],"Marketing & Growth",{"categories":542},[424],{"categories":544},[484],{"categories":546},[],{"categories":548},[],{"categories":550},[523],{"categories":552},[484],{"categories":554},[476],{"categories":556},[523],{"categories":558},[424],{"categories":560},[484],{"categories":562},[502],{"categories":564},[],{"categories":566},[],{"categories":568},[484],{"categories":570},[533],{"categories":572},[],{"categories":574},[479],{"categories":576},[],{"categories":578},[],{"categories":580},[484],{"categories":582},[484],{"categories":584},[424],{"categories":586},[],{"categories":588},[533],{"categories":590},[],{"categories":592},[],{"categories":594},[],{"categories":596},[424],{"categories":598},[540],{"categories":600},[523],{"categories":602},[523],{"categories":604},[424],{"categories":606},[484],{"categories":608},[424],{"categories":610},[424],{"categories":612},[484],{"categories":614},[484],{"categories":616},[526],{"categories":618},[502],{"categories":620},[484],{"categories":622},[540],{"categories":624},[484],{"categories":626},[487],{"categories":628},[],{"categories":630},[484],{"categories":632},[],{"categories":634},[484],{"categories":636},[533],{"categories":638},[523],{"categories":640},[424],{"categories":642},[],{"categories":644},[],{"categories":646},[484],{"categories":648},[],{"categories":650},[424],{"categories":652},[],{"categories":654},[476],{"categories":656},[533],{"categories":658},[479],{"categories":660},[502],{"categories":662},[424],{"categories":664},[],{"categories":666},[424],{"categories":668},[],{"categories":670},[533],{"categories":672},[526],{"categories":674},[],{"categories":676},[424],{"categories":678},[523],{"categories":680},[],{"categories":682},[523],{"categories":684},[484],{"categories":686},[],{"categories":688},[484],{"categories":690},[502],{"categories":692},[424],{"categories":694},[],{"categories":696},[484],{"categories":698},[424],{"categories":700},[487],{"categories":702},[],{"categories":704},[424],{"categories":706},[484],{"categories":708},[484],{"categories":710},[],{"categories":712},[526],{"categories":714},[424],{"categories":716},[],{"categories":718},[476],{"categories":720},[479],{"categories":722},[424],{"categories":724},[484],{"categories":726},[533],{"categories":728},[424],{"categories":730},[],{"categories":732},[],{"categories":734},[424],{"categories":736},[],{"categories":738},[523],{"categories":740},[],{"categories":742},[424],{"categories":744},[],{"categories":746},[484],{"categories":748},[424],{"categories":750},[523],{"categories":752},[],{"categories":754},[424],{"categories":756},[424],{"categories":758},[479],{"categories":760},[484],{"categories":762},[424],{"categories":764},[523],{"categories":766},[484],{"categories":768},[],{"categories":770},[],{"categories":772},[502],{"categories":774},[],{"categories":776},[424],{"categories":778},[479,540],{"categories":780},[],{"categories":782},[424],{"categories":784},[],{"categories":786},[],{"categories":788},[424],{"categories":790},[],{"categories":792},[424],{"categories":794},[425],{"categories":796},[],{"categories":798},[502],{"categories":800},[523],{"categories":802},[],{"categories":804},[502],{"categories":806},[502],{"categories":808},[424],{"categories":810},[540],{"categories":812},[],{"categories":814},[479],{"categories":816},[],{"categories":818},[424,425],{"categories":820},[424],{"categories":822},[424],{"categories":824},[484],{"categories":826},[424,533],{"categories":828},[526],{"categories":830},[424],{"categories":832},[540],{"categories":834},[484],{"categories":836},[484],{"categories":838},[],{"categories":840},[484],{"categories":842},[424,479],{"categories":844},[],{"categories":846},[523],{"categories":848},[523],{"categories":850},[],{"categories":852},[],{"categories":854},[502],{"categories":856},[],{"categories":858},[476],{"categories":860},[533],{"categories":862},[424],{"categories":864},[523],{"categories":866},[484],{"categories":868},[533],{"categories":870},[502],{"categories":872},[523],{"categories":874},[],{"categories":876},[424],{"categories":878},[424],{"categories":880},[424],{"categories":882},[502],{"categories":884},[476],{"categories":886},[424],{"categories":888},[484],{"categories":890},[425],{"categories":892},[523],{"categories":894},[484],{"categories":896},[],{"categories":898},[],{"categories":900},[523],{"categories":902},[502],{"categories":904},[526],{"categories":906},[],{"categories":908},[424],{"categories":910},[424],{"categories":912},[479],{"categories":914},[424],{"categories":916},[424],{"categories":918},[502],{"categories":920},[],{"categories":922},[484],{"categories":924},[533],{"categories":926},[],{"categories":928},[424],{"categories":930},[424],{"categories":932},[484],{"categories":934},[],{"categories":936},[],{"categories":938},[424],{"categories":940},[],{"categories":942},[479],{"categories":944},[484],{"categories":946},[],{"categories":948},[476],{"categories":950},[424],{"categories":952},[479],{"categories":954},[502],{"categories":956},[],{"categories":958},[],{"categories":960},[],{"categories":962},[502],{"categories":964},[502],{"categories":966},[],{"categories":968},[],{"categories":970},[479],{"categories":972},[],{"categories":974},[],{"categories":976},[476],{"categories":978},[],{"categories":980},[540],{"categories":982},[484],{"categories":984},[479],{"categories":986},[484],{"categories":988},[],{"categories":990},[487],{"categories":992},[523],{"categories":994},[533],{"categories":996},[424],{"categories":998},[484],{"categories":1000},[479],{"categories":1002},[424],{"categories":1004},[],{"categories":1006},[],{"categories":1008},[533],{"categories":1010},[526],{"categories":1012},[487],{"categories":1014},[484],{"categories":1016},[424],{"categories":1018},[],{"categories":1020},[425],{"categories":1022},[],{"categories":1024},[484],{"categories":1026},[],{"categories":1028},[],{"categories":1030},[424],{"categories":1032},[523],{"categories":1034},[540],{"categories":1036},[484],{"categories":1038},[],{"categories":1040},[476],{"categories":1042},[],{"categories":1044},[502],{"categories":1046},[424,425],{"categories":1048},[502],{"categories":1050},[424],{"categories":1052},[479],{"categories":1054},[424],{"categories":1056},[],{"categories":1058},[479],{"categories":1060},[],{"categories":1062},[533],{"categories":1064},[523],{"categories":1066},[502],{"categories":1068},[526],{"categories":1070},[476],{"categories":1072},[424],{"categories":1074},[533],{"categories":1076},[],{"categories":1078},[],{"categories":1080},[487],{"categories":1082},[],{"categories":1084},[424],{"categories":1086},[],{"categories":1088},[523],{"categories":1090},[523],{"categories":1092},[523],{"categories":1094},[],{"categories":1096},[],{"categories":1098},[502],{"categories":1100},[484],{"categories":1102},[424],{"categories":1104},[424],{"categories":1106},[424],{"categories":1108},[479],{"categories":1110},[424],{"categories":1112},[],{"categories":1114},[533],{"categories":1116},[533],{"categories":1118},[479],{"categories":1120},[],{"categories":1122},[424],{"categories":1124},[424],{"categories":1126},[479],{"categories":1128},[502],{"categories":1130},[540],{"categories":1132},[484],{"categories":1134},[],{"categories":1136},[523],{"categories":1138},[],{"categories":1140},[424],{"categories":1142},[],{"categories":1144},[479],{"categories":1146},[484],{"categories":1148},[],{"categories":1150},[425],{"categories":1152},[526],{"categories":1154},[533],{"categories":1156},[540],{"categories":1158},[533],{"categories":1160},[484],{"categories":1162},[],{"categories":1164},[],{"categories":1166},[484],{"categories":1168},[476],{"categories":1170},[484],{"categories":1172},[487],{"categories":1174},[479],{"categories":1176},[],{"categories":1178},[424],{"categories":1180},[487],{"categories":1182},[424],{"categories":1184},[424],{"categories":1186},[540],{"categories":1188},[523],{"categories":1190},[484],{"categories":1192},[],{"categories":1194},[],{"categories":1196},[425],{"categories":1198},[533],{"categories":1200},[],{"categories":1202},[484],{"categories":1204},[424],{"categories":1206},[523,424],{"categories":1208},[476],{"categories":1210},[],{"categories":1212},[424],{"categories":1214},[476],{"categories":1216},[523],{"categories":1218},[484],{"categories":1220},[533],{"categories":1222},[],{"categories":1224},[424],{"categories":1226},[],{"categories":1228},[476],{"categories":1230},[],{"categories":1232},[484],{"categories":1234},[487],{"categories":1236},[424],{"categories":1238},[424],{"categories":1240},[523],{"categories":1242},[484],{"categories":1244},[425],{"categories":1246},[523],{"categories":1248},[484],{"categories":1250},[424],{"categories":1252},[424],{"categories":1254},[424],{"categories":1256},[502],{"categories":1258},[],{"categories":1260},[487],{"categories":1262},[484],{"categories":1264},[523],{"categories":1266},[484],{"categories":1268},[533],{"categories":1270},[523],{"categories":1272},[484],{"categories":1274},[502],{"categories":1276},[],{"categories":1278},[424],{"categories":1280},[523],{"categories":1282},[424],{"categories":1284},[476],{"categories":1286},[502],{"categories":1288},[424],{"categories":1290},[540],{"categories":1292},[424],{"categories":1294},[424],{"categories":1296},[484],{"categories":1298},[484],{"categories":1300},[424],{"categories":1302},[484],{"categories":1304},[523],{"categories":1306},[424],{"categories":1308},[],{"categories":1310},[],{"categories":1312},[533],{"categories":1314},[],{"categories":1316},[476],{"categories":1318},[425],{"categories":1320},[],{"categories":1322},[476],{"categories":1324},[479],{"categories":1326},[540],{"categories":1328},[],{"categories":1330},[479],{"categories":1332},[],{"categories":1334},[],{"categories":1336},[],{"categories":1338},[],{"categories":1340},[],{"categories":1342},[424],{"categories":1344},[484],{"categories":1346},[425],{"categories":1348},[476],{"categories":1350},[424],{"categories":1352},[533],{"categories":1354},[487],{"categories":1356},[424],{"categories":1358},[540],{"categories":1360},[424],{"categories":1362},[424],{"categories":1364},[424],{"categories":1366},[424,476],{"categories":1368},[533],{"categories":1370},[533],{"categories":1372},[523],{"categories":1374},[424],{"categories":1376},[],{"categories":1378},[],{"categories":1380},[],{"categories":1382},[533],{"categories":1384},[526],{"categories":1386},[502],{"categories":1388},[523],{"categories":1390},[],{"categories":1392},[424],{"categories":1394},[424],{"categories":1396},[],{"categories":1398},[],{"categories":1400},[484],{"categories":1402},[424],{"categories":1404},[479],{"categories":1406},[],{"categories":1408},[476],{"categories":1410},[424],{"categories":1412},[476],{"categories":1414},[424],{"categories":1416},[533],{"categories":1418},[540],{"categories":1420},[424,523],{"categories":1422},[502],{"categories":1424},[523],{"categories":1426},[],{"categories":1428},[425],{"categories":1430},[523],{"categories":1432},[484],{"categories":1434},[],{"categories":1436},[],{"categories":1438},[],{"categories":1440},[],{"categories":1442},[533],{"categories":1444},[484],{"categories":1446},[484],{"categories":1448},[424],{"categories":1450},[424],{"categories":1452},[],{"categories":1454},[523],{"categories":1456},[],{"categories":1458},[],{"categories":1460},[484],{"categories":1462},[],{"categories":1464},[],{"categories":1466},[540],{"categories":1468},[540],{"categories":1470},[484],{"categories":1472},[],{"categories":1474},[424],{"categories":1476},[424],{"categories":1478},[533],{"categories":1480},[523],{"categories":1482},[523],{"categories":1484},[484],{"categories":1486},[476],{"categories":1488},[424],{"categories":1490},[523],{"categories":1492},[523],{"categories":1494},[484],{"categories":1496},[484],{"categories":1498},[424],{"categories":1500},[],{"categories":1502},[],{"categories":1504},[424],{"categories":1506},[484],{"categories":1508},[502],{"categories":1510},[533],{"categories":1512},[476],{"categories":1514},[424],{"categories":1516},[],{"categories":1518},[484],{"categories":1520},[484],{"categories":1522},[],{"categories":1524},[476],{"categories":1526},[424],{"categories":1528},[476],{"categories":1530},[476],{"categories":1532},[],{"categories":1534},[],{"categories":1536},[484],{"categories":1538},[484],{"categories":1540},[424],{"categories":1542},[424],{"categories":1544},[502],{"categories":1546},[526],{"categories":1548},[487],{"categories":1550},[502],{"categories":1552},[523],{"categories":1554},[],{"categories":1556},[502],{"categories":1558},[],{"categories":1560},[],{"categories":1562},[],{"categories":1564},[],{"categories":1566},[533],{"categories":1568},[526],{"categories":1570},[],{"categories":1572},[424],{"categories":1574},[424],{"categories":1576},[526],{"categories":1578},[533],{"categories":1580},[],{"categories":1582},[],{"categories":1584},[484],{"categories":1586},[502],{"categories":1588},[502],{"categories":1590},[484],{"categories":1592},[476],{"categories":1594},[424,425],{"categories":1596},[],{"categories":1598},[523],{"categories":1600},[476],{"categories":1602},[484],{"categories":1604},[523],{"categories":1606},[],{"categories":1608},[484],{"categories":1610},[484],{"categories":1612},[424],{"categories":1614},[540],{"categories":1616},[533],{"categories":1618},[523],{"categories":1620},[],{"categories":1622},[484],{"categories":1624},[424],{"categories":1626},[484],{"categories":1628},[484],{"categories":1630},[484],{"categories":1632},[540],{"categories":1634},[484],{"categories":1636},[424],{"categories":1638},[],{"categories":1640},[540],{"categories":1642},[502],{"categories":1644},[484],{"categories":1646},[],{"categories":1648},[],{"categories":1650},[424],{"categories":1652},[484],{"categories":1654},[502],{"categories":1656},[484],{"categories":1658},[],{"categories":1660},[],{"categories":1662},[],{"categories":1664},[484],{"categories":1666},[],{"categories":1668},[],{"categories":1670},[526],{"categories":1672},[424],{"categories":1674},[526],{"categories":1676},[502],{"categories":1678},[424],{"categories":1680},[424],{"categories":1682},[484],{"categories":1684},[424],{"categories":1686},[],{"categories":1688},[],{"categories":1690},[425],{"categories":1692},[],{"categories":1694},[],{"categories":1696},[476],{"categories":1698},[],{"categories":1700},[],{"categories":1702},[],{"categories":1704},[],{"categories":1706},[533],{"categories":1708},[502],{"categories":1710},[540],{"categories":1712},[479],{"categories":1714},[424],{"categories":1716},[424],{"categories":1718},[479],{"categories":1720},[],{"categories":1722},[523],{"categories":1724},[484],{"categories":1726},[479],{"categories":1728},[424],{"categories":1730},[424],{"categories":1732},[476],{"categories":1734},[],{"categories":1736},[476],{"categories":1738},[424],{"categories":1740},[540],{"categories":1742},[484],{"categories":1744},[502],{"categories":1746},[479],{"categories":1748},[424],{"categories":1750},[484],{"categories":1752},[],{"categories":1754},[424],{"categories":1756},[476],{"categories":1758},[424],{"categories":1760},[],{"categories":1762},[502],{"categories":1764},[424],{"categories":1766},[],{"categories":1768},[479],{"categories":1770},[424],{"categories":1772},[],{"categories":1774},[],{"categories":1776},[],{"categories":1778},[424],{"categories":1780},[],{"categories":1782},[425],{"categories":1784},[424],{"categories":1786},[],{"categories":1788},[424],{"categories":1790},[424],{"categories":1792},[424],{"categories":1794},[424,425],{"categories":1796},[424],{"categories":1798},[424],{"categories":1800},[523],{"categories":1802},[484],{"categories":1804},[],{"categories":1806},[484],{"categories":1808},[424],{"categories":1810},[424],{"categories":1812},[424],{"categories":1814},[476],{"categories":1816},[476],{"categories":1818},[533],{"categories":1820},[523],{"categories":1822},[484],{"categories":1824},[],{"categories":1826},[424],{"categories":1828},[502],{"categories":1830},[424],{"categories":1832},[479],{"categories":1834},[],{"categories":1836},[425],{"categories":1838},[523],{"categories":1840},[523],{"categories":1842},[484],{"categories":1844},[502],{"categories":1846},[484],{"categories":1848},[424],{"categories":1850},[],{"categories":1852},[424],{"categories":1854},[],{"categories":1856},[],{"categories":1858},[424],{"categories":1860},[424],{"categories":1862},[424],{"categories":1864},[484],{"categories":1866},[424],{"categories":1868},[],{"categories":1870},[526],{"categories":1872},[484],{"categories":1874},[],{"categories":1876},[424],{"categories":1878},[502],{"categories":1880},[],{"categories":1882},[523],{"categories":1884},[425],{"categories":1886},[502],{"categories":1888},[533],{"categories":1890},[533],{"categories":1892},[502],{"categories":1894},[502],{"categories":1896},[425],{"categories":1898},[],{"categories":1900},[502],{"categories":1902},[424],{"categories":1904},[476],{"categories":1906},[502],{"categories":1908},[],{"categories":1910},[526],{"categories":1912},[502],{"categories":1914},[533],{"categories":1916},[502],{"categories":1918},[425],{"categories":1920},[424],{"categories":1922},[424],{"categories":1924},[],{"categories":1926},[479],{"categories":1928},[],{"categories":1930},[],{"categories":1932},[424],{"categories":1934},[424],{"categories":1936},[424],{"categories":1938},[424],{"categories":1940},[],{"categories":1942},[526],{"categories":1944},[476],{"categories":1946},[],{"categories":1948},[424],{"categories":1950},[424],{"categories":1952},[425],{"categories":1954},[425],{"categories":1956},[],{"categories":1958},[484],{"categories":1960},[502],{"categories":1962},[502],{"categories":1964},[424],{"categories":1966},[484],{"categories":1968},[],{"categories":1970},[523],{"categories":1972},[424],{"categories":1974},[424],{"categories":1976},[],{"categories":1978},[],{"categories":1980},[425],{"categories":1982},[424],{"categories":1984},[533],{"categories":1986},[479],{"categories":1988},[424],{"categories":1990},[],{"categories":1992},[484],{"categories":1994},[476],{"categories":1996},[476],{"categories":1998},[],{"categories":2000},[424],{"categories":2002},[523],{"categories":2004},[484],{"categories":2006},[],{"categories":2008},[424],{"categories":2010},[424],{"categories":2012},[484],{"categories":2014},[],{"categories":2016},[484],{"categories":2018},[533],{"categories":2020},[],{"categories":2022},[424],{"categories":2024},[],{"categories":2026},[424],{"categories":2028},[],{"categories":2030},[424],{"categories":2032},[424],{"categories":2034},[],{"categories":2036},[424],{"categories":2038},[502],{"categories":2040},[424],{"categories":2042},[424],{"categories":2044},[476],{"categories":2046},[424],{"categories":2048},[502],{"categories":2050},[484],{"categories":2052},[],{"categories":2054},[424],{"categories":2056},[540],{"categories":2058},[],{"categories":2060},[],{"categories":2062},[],{"categories":2064},[476],{"categories":2066},[502],{"categories":2068},[484],{"categories":2070},[424],{"categories":2072},[523],{"categories":2074},[484],{"categories":2076},[],{"categories":2078},[484],{"categories":2080},[],{"categories":2082},[424],{"categories":2084},[484],{"categories":2086},[424],{"categories":2088},[],{"categories":2090},[424],{"categories":2092},[424],{"categories":2094},[502],{"categories":2096},[523],{"categories":2098},[484],{"categories":2100},[523],{"categories":2102},[479],{"categories":2104},[],{"categories":2106},[],{"categories":2108},[424],{"categories":2110},[476],{"categories":2112},[502],{"categories":2114},[],{"categories":2116},[],{"categories":2118},[533],{"categories":2120},[523],{"categories":2122},[],{"categories":2124},[424],{"categories":2126},[],{"categories":2128},[540],{"categories":2130},[424],{"categories":2132},[425],{"categories":2134},[533],{"categories":2136},[],{"categories":2138},[484],{"categories":2140},[424],{"categories":2142},[484],{"categories":2144},[484],{"categories":2146},[424],{"categories":2148},[],{"categories":2150},[476],{"categories":2152},[424],{"categories":2154},[479],{"categories":2156},[533],{"categories":2158},[523],{"categories":2160},[],{"categories":2162},[],{"categories":2164},[],{"categories":2166},[484],{"categories":2168},[523],{"categories":2170},[502],{"categories":2172},[424],{"categories":2174},[502],{"categories":2176},[523],{"categories":2178},[],{"categories":2180},[523],{"categories":2182},[502],{"categories":2184},[479],{"categories":2186},[424],{"categories":2188},[502],{"categories":2190},[540],{"categories":2192},[],{"categories":2194},[],{"categories":2196},[526],{"categories":2198},[424,533],{"categories":2200},[502],{"categories":2202},[424],{"categories":2204},[484],{"categories":2206},[484],{"categories":2208},[424],{"categories":2210},[],{"categories":2212},[533],{"categories":2214},[424],{"categories":2216},[526],{"categories":2218},[484],{"categories":2220},[540],{"categories":2222},[425],{"categories":2224},[],{"categories":2226},[476],{"categories":2228},[484],{"categories":2230},[484],{"categories":2232},[533],{"categories":2234},[424],{"categories":2236},[424],{"categories":2238},[],{"categories":2240},[],{"categories":2242},[],{"categories":2244},[425],{"categories":2246},[502],{"categories":2248},[424],{"categories":2250},[424],{"categories":2252},[424],{"categories":2254},[],{"categories":2256},[526],{"categories":2258},[479],{"categories":2260},[],{"categories":2262},[484],{"categories":2264},[425],{"categories":2266},[],{"categories":2268},[523],{"categories":2270},[523],{"categories":2272},[],{"categories":2274},[533],{"categories":2276},[523],{"categories":2278},[424],{"categories":2280},[],{"categories":2282},[502],{"categories":2284},[424],{"categories":2286},[523],{"categories":2288},[484],{"categories":2290},[502],{"categories":2292},[],{"categories":2294},[484],{"categories":2296},[523],{"categories":2298},[424],{"categories":2300},[],{"categories":2302},[424],{"categories":2304},[424],{"categories":2306},[425],{"categories":2308},[502],{"categories":2310},[526],{"categories":2312},[526],{"categories":2314},[],{"categories":2316},[],{"categories":2318},[],{"categories":2320},[484],{"categories":2322},[533],{"categories":2324},[533],{"categories":2326},[],{"categories":2328},[],{"categories":2330},[424],{"categories":2332},[],{"categories":2334},[484],{"categories":2336},[424],{"categories":2338},[],{"categories":2340},[424],{"categories":2342},[479],{"categories":2344},[424],{"categories":2346},[540],{"categories":2348},[484],{"categories":2350},[424],{"categories":2352},[533],{"categories":2354},[502],{"categories":2356},[484],{"categories":2358},[],{"categories":2360},[502],{"categories":2362},[484],{"categories":2364},[484],{"categories":2366},[],{"categories":2368},[479],{"categories":2370},[484],{"categories":2372},[],{"categories":2374},[424],{"categories":2376},[476],{"categories":2378},[502],{"categories":2380},[425],{"categories":2382},[484],{"categories":2384},[484],{"categories":2386},[476],{"categories":2388},[424],{"categories":2390},[],{"categories":2392},[],{"categories":2394},[523],{"categories":2396},[424,479],{"categories":2398},[],{"categories":2400},[476],{"categories":2402},[526],{"categories":2404},[424],{"categories":2406},[533],{"categories":2408},[424],{"categories":2410},[484],{"categories":2412},[424],{"categories":2414},[424],{"categories":2416},[502],{"categories":2418},[484],{"categories":2420},[],{"categories":2422},[],{"categories":2424},[484],{"categories":2426},[424],{"categories":2428},[425],{"categories":2430},[],{"categories":2432},[424],{"categories":2434},[484],{"categories":2436},[],{"categories":2438},[424],{"categories":2440},[540],{"categories":2442},[526],{"categories":2444},[484],{"categories":2446},[424],{"categories":2448},[425],{"categories":2450},[],{"categories":2452},[424],{"categories":2454},[540],{"categories":2456},[523],{"categories":2458},[424],{"categories":2460},[],{"categories":2462},[540],{"categories":2464},[502],{"categories":2466},[424],{"categories":2468},[424],{"categories":2470},[476],{"categories":2472},[],{"categories":2474},[],{"categories":2476},[523],{"categories":2478},[424],{"categories":2480},[526],{"categories":2482},[540],{"categories":2484},[540],{"categories":2486},[502],{"categories":2488},[],{"categories":2490},[],{"categories":2492},[424],{"categories":2494},[],{"categories":2496},[424,533],{"categories":2498},[502],{"categories":2500},[484],{"categories":2502},[533],{"categories":2504},[424],{"categories":2506},[476],{"categories":2508},[],{"categories":2510},[],{"categories":2512},[476],{"categories":2514},[540],{"categories":2516},[424],{"categories":2518},[],{"categories":2520},[523,424],{"categories":2522},[425],{"categories":2524},[476],{"categories":2526},[],{"categories":2528},[479],{"categories":2530},[479],{"categories":2532},[424],{"categories":2534},[533],{"categories":2536},[484],{"categories":2538},[502],{"categories":2540},[540],{"categories":2542},[523],{"categories":2544},[424],{"categories":2546},[424],{"categories":2548},[424],{"categories":2550},[476],{"categories":2552},[424],{"categories":2554},[484],{"categories":2556},[502],{"categories":2558},[],{"categories":2560},[],{"categories":2562},[526],{"categories":2564},[533],{"categories":2566},[424],{"categories":2568},[523],{"categories":2570},[526],{"categories":2572},[424],{"categories":2574},[424],{"categories":2576},[484],{"categories":2578},[484],{"categories":2580},[424,479],{"categories":2582},[],{"categories":2584},[523],{"categories":2586},[],{"categories":2588},[424],{"categories":2590},[502],{"categories":2592},[476],{"categories":2594},[476],{"categories":2596},[484],{"categories":2598},[424],{"categories":2600},[479],{"categories":2602},[533],{"categories":2604},[540],{"categories":2606},[],{"categories":2608},[502],{"categories":2610},[424],{"categories":2612},[424],{"categories":2614},[502],{"categories":2616},[533],{"categories":2618},[424],{"categories":2620},[484],{"categories":2622},[502],{"categories":2624},[424],{"categories":2626},[523],{"categories":2628},[424],{"categories":2630},[424],{"categories":2632},[425],{"categories":2634},[487],{"categories":2636},[484],{"categories":2638},[424],{"categories":2640},[502],{"categories":2642},[484],{"categories":2644},[540],{"categories":2646},[424],{"categories":2648},[],{"categories":2650},[424],{"categories":2652},[],{"categories":2654},[],{"categories":2656},[],{"categories":2658},[479],{"categories":2660},[424],{"categories":2662},[484],{"categories":2664},[502],{"categories":2666},[502],{"categories":2668},[502],{"categories":2670},[502],{"categories":2672},[],{"categories":2674},[476],{"categories":2676},[484],{"categories":2678},[502],{"categories":2680},[476],{"categories":2682},[484],{"categories":2684},[424],{"categories":2686},[424,484],{"categories":2688},[484],{"categories":2690},[425],{"categories":2692},[502],{"categories":2694},[502],{"categories":2696},[484],{"categories":2698},[424],{"categories":2700},[],{"categories":2702},[502],{"categories":2704},[540],{"categories":2706},[476],{"categories":2708},[424],{"categories":2710},[424],{"categories":2712},[],{"categories":2714},[533],{"categories":2716},[],{"categories":2718},[476],{"categories":2720},[484],{"categories":2722},[502],{"categories":2724},[424],{"categories":2726},[502],{"categories":2728},[476],{"categories":2730},[502],{"categories":2732},[502],{"categories":2734},[],{"categories":2736},[479],{"categories":2738},[484],{"categories":2740},[502],{"categories":2742},[502],{"categories":2744},[502],{"categories":2746},[502],{"categories":2748},[502],{"categories":2750},[502],{"categories":2752},[502],{"categories":2754},[502],{"categories":2756},[502],{"categories":2758},[502],{"categories":2760},[526],{"categories":2762},[476],{"categories":2764},[424],{"categories":2766},[424],{"categories":2768},[],{"categories":2770},[424,476],{"categories":2772},[],{"categories":2774},[484],{"categories":2776},[502],{"categories":2778},[484],{"categories":2780},[424],{"categories":2782},[424],{"categories":2784},[424],{"categories":2786},[424],{"categories":2788},[424],{"categories":2790},[484],{"categories":2792},[479],{"categories":2794},[523],{"categories":2796},[502],{"categories":2798},[424],{"categories":2800},[],{"categories":2802},[],{"categories":2804},[484],{"categories":2806},[523],{"categories":2808},[424],{"categories":2810},[],{"categories":2812},[],{"categories":2814},[540],{"categories":2816},[424],{"categories":2818},[],{"categories":2820},[],{"categories":2822},[476],{"categories":2824},[479],{"categories":2826},[424],{"categories":2828},[479],{"categories":2830},[523],{"categories":2832},[],{"categories":2834},[502],{"categories":2836},[],{"categories":2838},[523],{"categories":2840},[424],{"categories":2842},[540],{"categories":2844},[],{"categories":2846},[540],{"categories":2848},[],{"categories":2850},[],{"categories":2852},[484],{"categories":2854},[],{"categories":2856},[479],{"categories":2858},[476],{"categories":2860},[523],{"categories":2862},[533],{"categories":2864},[],{"categories":2866},[],{"categories":2868},[424],{"categories":2870},[476],{"categories":2872},[540],{"categories":2874},[],{"categories":2876},[484],{"categories":2878},[484],{"categories":2880},[502],{"categories":2882},[424],{"categories":2884},[484],{"categories":2886},[424],{"categories":2888},[484],{"categories":2890},[424],{"categories":2892},[487],{"categories":2894},[502],{"categories":2896},[],{"categories":2898},[540],{"categories":2900},[533],{"categories":2902},[484],{"categories":2904},[],{"categories":2906},[424],{"categories":2908},[484],{"categories":2910},[479],{"categories":2912},[476],{"categories":2914},[424],{"categories":2916},[523],{"categories":2918},[533],{"categories":2920},[533],{"categories":2922},[424],{"categories":2924},[526],{"categories":2926},[424],{"categories":2928},[484],{"categories":2930},[479],{"categories":2932},[484],{"categories":2934},[424],{"categories":2936},[424],{"categories":2938},[484],{"categories":2940},[502],{"categories":2942},[],{"categories":2944},[476],{"categories":2946},[424],{"categories":2948},[484],{"categories":2950},[424],{"categories":2952},[424],{"categories":2954},[],{"categories":2956},[523],{"categories":2958},[479],{"categories":2960},[502],{"categories":2962},[424],{"categories":2964},[424],{"categories":2966},[523],{"categories":2968},[540],{"categories":2970},[526],{"categories":2972},[424],{"categories":2974},[502],{"categories":2976},[424],{"categories":2978},[484],{"categories":2980},[425],{"categories":2982},[424],{"categories":2984},[484],{"categories":2986},[526],{"categories":2988},[],{"categories":2990},[484],{"categories":2992},[533],{"categories":2994},[523],{"categories":2996},[424],{"categories":2998},[476],{"categories":3000},[479],{"categories":3002},[533],{"categories":3004},[],{"categories":3006},[484],{"categories":3008},[424],{"categories":3010},[],{"categories":3012},[502],{"categories":3014},[],{"categories":3016},[502],{"categories":3018},[424],{"categories":3020},[484],{"categories":3022},[484],{"categories":3024},[484],{"categories":3026},[],{"categories":3028},[],{"categories":3030},[424],{"categories":3032},[424],{"categories":3034},[],{"categories":3036},[523],{"categories":3038},[484],{"categories":3040},[540],{"categories":3042},[476],{"categories":3044},[],{"categories":3046},[],{"categories":3048},[502],{"categories":3050},[533],{"categories":3052},[424],{"categories":3054},[424],{"categories":3056},[424],{"categories":3058},[533],{"categories":3060},[502],{"categories":3062},[523],{"categories":3064},[424],{"categories":3066},[424],{"categories":3068},[424],{"categories":3070},[502],{"categories":3072},[424],{"categories":3074},[502],{"categories":3076},[484],{"categories":3078},[484],{"categories":3080},[533],{"categories":3082},[484],{"categories":3084},[424],{"categories":3086},[533],{"categories":3088},[523],{"categories":3090},[],{"categories":3092},[484],{"categories":3094},[],{"categories":3096},[],{"categories":3098},[479],{"categories":3100},[424],{"categories":3102},[484],{"categories":3104},[476],{"categories":3106},[484],{"categories":3108},[540],{"categories":3110},[],{"categories":3112},[484],{"categories":3114},[],{"categories":3116},[476],{"categories":3118},[484],{"categories":3120},[],{"categories":3122},[484],{"categories":3124},[424],{"categories":3126},[502],{"categories":3128},[424],{"categories":3130},[484],{"categories":3132},[502],{"categories":3134},[484],{"categories":3136},[533],{"categories":3138},[523],{"categories":3140},[476],{"categories":3142},[],{"categories":3144},[484],{"categories":3146},[523],{"categories":3148},[502],{"categories":3150},[424],{"categories":3152},[523],{"categories":3154},[476],{"categories":3156},[],{"categories":3158},[484],{"categories":3160},[484],{"categories":3162},[424],{"categories":3164},[],{"categories":3166},[484],{"categories":3168},[487],{"categories":3170},[502],{"categories":3172},[484],{"categories":3174},[479],{"categories":3176},[],{"categories":3178},[424],{"categories":3180},[487],{"categories":3182},[424],{"categories":3184},[484],{"categories":3186},[502],{"categories":3188},[476],{"categories":3190},[425],{"categories":3192},[424],{"categories":3194},[424],{"categories":3196},[424],{"categories":3198},[502],{"categories":3200},[479],{"categories":3202},[424],{"categories":3204},[523],{"categories":3206},[502],{"categories":3208},[425],{"categories":3210},[424],{"categories":3212},[],{"categories":3214},[],{"categories":3216},[425],{"categories":3218},[526],{"categories":3220},[484],{"categories":3222},[484],{"categories":3224},[502],{"categories":3226},[424],{"categories":3228},[476],{"categories":3230},[523],{"categories":3232},[484],{"categories":3234},[424],{"categories":3236},[540],{"categories":3238},[424],{"categories":3240},[484],{"categories":3242},[],{"categories":3244},[424],{"categories":3246},[424],{"categories":3248},[502],{"categories":3250},[476],{"categories":3252},[],{"categories":3254},[424],{"categories":3256},[424],{"categories":3258},[533],{"categories":3260},[523],{"categories":3262},[424,484],{"categories":3264},[540,479],{"categories":3266},[424],{"categories":3268},[],{"categories":3270},[484],{"categories":3272},[],{"categories":3274},[533],{"categories":3276},[424],{"categories":3278},[502],{"categories":3280},[],{"categories":3282},[484],{"categories":3284},[],{"categories":3286},[484],{"categories":3288},[476],{"categories":3290},[484],{"categories":3292},[424],{"categories":3294},[425],{"categories":3296},[540],{"categories":3298},[479],{"categories":3300},[479],{"categories":3302},[476],{"categories":3304},[476],{"categories":3306},[424],{"categories":3308},[484],{"categories":3310},[424],{"categories":3312},[424],{"categories":3314},[476],{"categories":3316},[424],{"categories":3318},[540],{"categories":3320},[502],{"categories":3322},[424],{"categories":3324},[484],{"categories":3326},[424],{"categories":3328},[],{"categories":3330},[533],{"categories":3332},[],{"categories":3334},[484],{"categories":3336},[476],{"categories":3338},[],{"categories":3340},[425],{"categories":3342},[424],{"categories":3344},[],{"categories":3346},[502],{"categories":3348},[484],{"categories":3350},[533],{"categories":3352},[424],{"categories":3354},[484],{"categories":3356},[533],{"categories":3358},[484],{"categories":3360},[502],{"categories":3362},[476],{"categories":3364},[502],{"categories":3366},[533],{"categories":3368},[424],{"categories":3370},[523],{"categories":3372},[424],{"categories":3374},[424],{"categories":3376},[424],{"categories":3378},[424],{"categories":3380},[484],{"categories":3382},[424],{"categories":3384},[484],{"categories":3386},[424],{"categories":3388},[476],{"categories":3390},[424],{"categories":3392},[484],{"categories":3394},[523],{"categories":3396},[476],{"categories":3398},[484],{"categories":3400},[523],{"categories":3402},[],{"categories":3404},[424],{"categories":3406},[424],{"categories":3408},[533],{"categories":3410},[],{"categories":3412},[484],{"categories":3414},[540],{"categories":3416},[424],{"categories":3418},[502],{"categories":3420},[540],{"categories":3422},[484],{"categories":3424},[479],{"categories":3426},[479],{"categories":3428},[424],{"categories":3430},[476],{"categories":3432},[],{"categories":3434},[424],{"categories":3436},[],{"categories":3438},[476],{"categories":3440},[424],{"categories":3442},[484],{"categories":3444},[484],{"categories":3446},[],{"categories":3448},[533],{"categories":3450},[533],{"categories":3452},[540],{"categories":3454},[523],{"categories":3456},[],{"categories":3458},[424],{"categories":3460},[476],{"categories":3462},[424],{"categories":3464},[533],{"categories":3466},[476],{"categories":3468},[502],{"categories":3470},[502],{"categories":3472},[],{"categories":3474},[502],{"categories":3476},[484],{"categories":3478},[523],{"categories":3480},[526],{"categories":3482},[424],{"categories":3484},[],{"categories":3486},[502],{"categories":3488},[533],{"categories":3490},[479],{"categories":3492},[424],{"categories":3494},[476],{"categories":3496},[425],{"categories":3498},[476],{"categories":3500},[],{"categories":3502},[],{"categories":3504},[502],{"categories":3506},[],{"categories":3508},[484],{"categories":3510},[484],{"categories":3512},[484],{"categories":3514},[],{"categories":3516},[424],{"categories":3518},[],{"categories":3520},[502],{"categories":3522},[476],{"categories":3524},[523],{"categories":3526},[424],{"categories":3528},[502],{"categories":3530},[502],{"categories":3532},[],{"categories":3534},[502],{"categories":3536},[476],{"categories":3538},[424],{"categories":3540},[],{"categories":3542},[484],{"categories":3544},[484],{"categories":3546},[476],{"categories":3548},[],{"categories":3550},[],{"categories":3552},[],{"categories":3554},[523],{"categories":3556},[484],{"categories":3558},[424],{"categories":3560},[],{"categories":3562},[],{"categories":3564},[],{"categories":3566},[523],{"categories":3568},[],{"categories":3570},[476],{"categories":3572},[],{"categories":3574},[],{"categories":3576},[523],{"categories":3578},[424],{"categories":3580},[502],{"categories":3582},[],{"categories":3584},[540],{"categories":3586},[502],{"categories":3588},[540],{"categories":3590},[424],{"categories":3592},[],{"categories":3594},[],{"categories":3596},[484],{"categories":3598},[],{"categories":3600},[],{"categories":3602},[484],{"categories":3604},[424],{"categories":3606},[],{"categories":3608},[484],{"categories":3610},[502],{"categories":3612},[540],{"categories":3614},[526],{"categories":3616},[484],{"categories":3618},[484],{"categories":3620},[],{"categories":3622},[],{"categories":3624},[],{"categories":3626},[502],{"categories":3628},[],{"categories":3630},[],{"categories":3632},[523],{"categories":3634},[476],{"categories":3636},[],{"categories":3638},[479],{"categories":3640},[540],{"categories":3642},[424],{"categories":3644},[533],{"categories":3646},[476],{"categories":3648},[526],{"categories":3650},[479],{"categories":3652},[533],{"categories":3654},[],{"categories":3656},[],{"categories":3658},[484],{"categories":3660},[476],{"categories":3662},[523],{"categories":3664},[476],{"categories":3666},[484],{"categories":3668},[425],{"categories":3670},[484],{"categories":3672},[],{"categories":3674},[424],{"categories":3676},[502],{"categories":3678},[533],{"categories":3680},[],{"categories":3682},[523],{"categories":3684},[502],{"categories":3686},[476],{"categories":3688},[484],{"categories":3690},[424],{"categories":3692},[479],{"categories":3694},[484,425],{"categories":3696},[484],{"categories":3698},[533],{"categories":3700},[424],{"categories":3702},[526],{"categories":3704},[540],{"categories":3706},[484],{"categories":3708},[],{"categories":3710},[484],{"categories":3712},[424],{"categories":3714},[479],{"categories":3716},[],{"categories":3718},[],{"categories":3720},[424],{"categories":3722},[526],{"categories":3724},[424],{"categories":3726},[],{"categories":3728},[502],{"categories":3730},[],{"categories":3732},[502],{"categories":3734},[533],{"categories":3736},[484],{"categories":3738},[424],{"categories":3740},[540],{"categories":3742},[533],{"categories":3744},[],{"categories":3746},[502],{"categories":3748},[424],{"categories":3750},[],{"categories":3752},[424],{"categories":3754},[484],{"categories":3756},[424],{"categories":3758},[484],{"categories":3760},[424],{"categories":3762},[424],{"categories":3764},[424],{"categories":3766},[424],{"categories":3768},[479],{"categories":3770},[],{"categories":3772},[487],{"categories":3774},[502],{"categories":3776},[424],{"categories":3778},[],{"categories":3780},[533],{"categories":3782},[424],{"categories":3784},[424],{"categories":3786},[484],{"categories":3788},[502],{"categories":3790},[424],{"categories":3792},[424],{"categories":3794},[479],{"categories":3796},[484],{"categories":3798},[523],{"categories":3800},[],{"categories":3802},[526],{"categories":3804},[424],{"categories":3806},[],{"categories":3808},[502],{"categories":3810},[540],{"categories":3812},[],{"categories":3814},[],{"categories":3816},[502],{"categories":3818},[502],{"categories":3820},[540],{"categories":3822},[476],{"categories":3824},[484],{"categories":3826},[484],{"categories":3828},[424],{"categories":3830},[479],{"categories":3832},[],{"categories":3834},[],{"categories":3836},[502],{"categories":3838},[526],{"categories":3840},[533],{"categories":3842},[484],{"categories":3844},[523],{"categories":3846},[526],{"categories":3848},[526],{"categories":3850},[],{"categories":3852},[502],{"categories":3854},[424],{"categories":3856},[424],{"categories":3858},[533],{"categories":3860},[],{"categories":3862},[502],{"categories":3864},[502],{"categories":3866},[502],{"categories":3868},[],{"categories":3870},[484],{"categories":3872},[424],{"categories":3874},[],{"categories":3876},[476],{"categories":3878},[479],{"categories":3880},[],{"categories":3882},[424],{"categories":3884},[424],{"categories":3886},[],{"categories":3888},[533],{"categories":3890},[],{"categories":3892},[],{"categories":3894},[],{"categories":3896},[],{"categories":3898},[424],{"categories":3900},[502],{"categories":3902},[],{"categories":3904},[],{"categories":3906},[424],{"categories":3908},[424],{"categories":3910},[424],{"categories":3912},[526],{"categories":3914},[424],{"categories":3916},[526],{"categories":3918},[],{"categories":3920},[526],{"categories":3922},[526],{"categories":3924},[425],{"categories":3926},[484],{"categories":3928},[533],{"categories":3930},[],{"categories":3932},[],{"categories":3934},[526],{"categories":3936},[533],{"categories":3938},[533],{"categories":3940},[533],{"categories":3942},[],{"categories":3944},[476],{"categories":3946},[533],{"categories":3948},[533],{"categories":3950},[476],{"categories":3952},[533],{"categories":3954},[479],{"categories":3956},[533],{"categories":3958},[533],{"categories":3960},[533],{"categories":3962},[526],{"categories":3964},[502],{"categories":3966},[502],{"categories":3968},[424],{"categories":3970},[533],{"categories":3972},[526],{"categories":3974},[425],{"categories":3976},[526],{"categories":3978},[526],{"categories":3980},[526],{"categories":3982},[],{"categories":3984},[479],{"categories":3986},[],{"categories":3988},[425],{"categories":3990},[533],{"categories":3992},[533],{"categories":3994},[533],{"categories":3996},[484],{"categories":3998},[502,479],{"categories":4000},[526],{"categories":4002},[],{"categories":4004},[],{"categories":4006},[526],{"categories":4008},[],{"categories":4010},[526],{"categories":4012},[502],{"categories":4014},[484],{"categories":4016},[],{"categories":4018},[533],{"categories":4020},[424],{"categories":4022},[523],{"categories":4024},[],{"categories":4026},[424],{"categories":4028},[],{"categories":4030},[502],{"categories":4032},[476],{"categories":4034},[526],{"categories":4036},[],{"categories":4038},[533],{"categories":4040},[502],[4042,4273,4326,4521],{"id":4043,"title":4044,"ai":4045,"body":4050,"categories":4242,"created_at":426,"date_modified":426,"description":132,"extension":427,"faq":426,"featured":428,"kicker_label":426,"meta":4243,"navigation":454,"path":4261,"published_at":4262,"question":426,"scraped_at":457,"seo":4263,"sitemap":4264,"source_id":4265,"source_name":461,"source_type":462,"source_url":4266,"stem":4267,"tags":4268,"thumbnail_url":426,"tldr":4270,"tweet":426,"unknown_tags":4271,"__hash__":4272},"summaries\u002Fsummaries\u002F268d90eeae6a5c77-gemma-4-prod-stack-model-armor-adk-agents-tracing-summary.md","Gemma 4 Prod Stack: Model Armor, ADK Agents, Tracing",{"provider":7,"model":8,"input_tokens":4046,"output_tokens":4047,"processing_time_ms":4048,"cost_usd":4049},8884,2621,18787,0.0025416,{"type":14,"value":4051,"toc":4235},[4052,4056,4059,4062,4105,4108,4111,4114,4117,4121,4124,4131,4134,4148,4151,4154,4157,4160,4164,4167,4170,4173,4179,4182,4186,4189,4192,4195,4198,4201,4203,4229,4232],[17,4053,4055],{"id":4054},"unifying-model-serving-with-load-balancer-routing","Unifying Model Serving with Load Balancer Routing",[22,4057,4058],{},"After deploying Gemma 4 separately via vLLM (optimized for production throughput, parallelism, memory) and Ollama (suited for dev\u002Ftesting) to Cloud Run services, the team routes traffic through a single regional external Application Load Balancer endpoint. This avoids managing multiple URLs in production.",[22,4060,4061],{},"Key decisions:",[189,4063,4064,4077,4087],{},[45,4065,4066,4069,4070,4073,4074,77],{},[123,4067,4068],{},"Network Endpoint Groups (NEGs)",": Serverless NEGs represent Cloud Run backends for the LB. Created via ",[49,4071,4072],{},"gcloud compute network-endpoint-groups create"," with ",[49,4075,4076],{},"--network-endpoint-type=SERVERLESS",[45,4078,4079,4082,4083,4086],{},[123,4080,4081],{},"Backend Services",": Defined for each Cloud Run service (",[49,4084,4085],{},"gcloud compute backend-services create","), attached to NEGs. Enables LB to communicate securely.",[45,4088,4089,4092,4093,4096,4097,4100,4101,4104],{},[123,4090,4091],{},"URL Map",": Routes based on path—e.g., ",[49,4094,4095],{},"\u002Fvllm\u002F"," to vLLM backend, ",[49,4098,4099],{},"\u002Follama\u002F"," to Ollama. Switch dev\u002Fprod by path prefix without endpoint changes. Command: ",[49,4102,4103],{},"gcloud compute url-maps create"," with host\u002Fpath rules.",[22,4106,4107],{},"Tradeoffs: Cloud Run scales multi-region natively, so LB adds setup overhead (NEGs, backends, proxy subnet, HTTPS certs, target proxy, forwarding rules). But it provides a single invocable HTTPS endpoint and service extensions. Without LB, use direct Cloud Run URLs, losing unified routing.",[22,4109,4110],{},"Proxy-only subnet reserves private IPs for LB-to-Cloud Run communication in the VPC. SSL certs enable HTTPS termination at the target HTTPS proxy, which consults the URL map before forwarding (port 443).",[22,4112,4113],{},"\"The reason why we're doing that for this particular lab using a load balancer, it's actually acting as a very advanced URL or a traffic router. So we have two different services, but we really don't want to be maintaining two different endpoints in production.\"",[22,4115,4116],{},"—Ayo Adedeji, explaining single-endpoint benefits over direct Cloud Run access.",[17,4118,4120],{"id":4119},"network-level-security-with-model-armor-service-extension","Network-Level Security with Model Armor Service Extension",[22,4122,4123],{},"Model Armor scans every prompt\u002Fresponse for jailbreaks, prompt injection, PII leaks (e.g., SSNs, credit cards), harassment via LB service extension—triggered before backend routing.",[22,4125,4126,4127,4130],{},"Integration: Attach as extension to URL map (",[49,4128,4129],{},"gcloud compute url-maps add-service-extension","). Configurable thresholds\u002Factions: block malicious inputs, replace harmful outputs with defaults. Detects sensitive data in agent generations.",[22,4132,4133],{},"Alternatives considered:",[189,4135,4136,4142],{},[45,4137,4138,4141],{},[123,4139,4140],{},"SDK\u002FAPI",": Invoke via Python SDK or REST API in ADK callbacks (before-agent or after-model). No LB needed—e.g., filter inputs pre-agent call.",[45,4143,4144,4147],{},[123,4145,4146],{},"Direct in code",": Embed in app logic, but network-level is zero-code-change, applies to all backends.",[22,4149,4150],{},"Why LB extension? Enforces security at ingress without app modifications; scales with traffic. For non-LB setups, callbacks provide lifecycle hooks (e.g., pre-model scan).",[22,4152,4153],{},"\"Model armor is really versatile you can use it in many different ways so there's a model armor python SDK... There's also model armor API that you can call... often times... before agent call back or after model call back.\"",[22,4155,4156],{},"—Ayo Adedeji, on flexible Model Armor invocation beyond LB.",[22,4158,4159],{},"Results: Blocks malicious traffic pre-model; logs detections for audit. Config via templates for custom harms\u002FPII.",[17,4161,4163],{"id":4162},"model-agnostic-agents-with-adk-and-vllm-on-cloud-run","Model-Agnostic Agents with ADK and vLLM on Cloud Run",[22,4165,4166],{},"Agent Development Kit (ADK) builds agents atop any LLM (Gemini, Gemma 4). Here, pairs with lightweight vLLM serving Gemma 4, deployed to Cloud Run via Cloud Build CI\u002FCD.",[22,4168,4169],{},"Pipeline: Cloud Build triggers deploys; vLLM handles inference. Preps for \"boss fight\"—agent vs. cloud dungeon agent.",[22,4171,4172],{},"Why vLLM? High token throughput, GPU efficiency for prod. ADK callbacks enable Model Armor hooks.",[22,4174,4175,4176,4178],{},"\"ADK is actually model agnostic... The trick is we're gonna using ADK with light LLM ",[136,4177,316],{}," and you're gonna learn how to use that.\"",[22,4180,4181],{},"—Annie Wang, highlighting ADK flexibility for Gemma 4.",[17,4183,4185],{"id":4184},"production-observability-metrics-and-end-to-end-tracing","Production Observability: Metrics and End-to-End Tracing",[22,4187,4188],{},"Post-deploy: Prometheus sidecar scrapes vLLM metrics (token throughput, GPU utilization, TTFT, req\u002Fs, latency, output tokens\u002Freq)—feeds cost\u002Fperformance monitoring.",[22,4190,4191],{},"Cloud Trace with OpenTelemetry: Traces agent flows end-to-end.",[22,4193,4194],{},"Why these? Directly tie to costs (GPU, tokens); essential for agent ops at scale. Sidecar avoids custom exporters.",[22,4196,4197],{},"\"We want to track things such as time to first token... GPU utilization request per second request latency output tokens per request. The reason why we want to do this because this all factors into how we control for and monitor performance throughput and costs.\"",[22,4199,4200],{},"—Ayo Adedeji, on metric selection for prod serving.",[17,4202,377],{"id":376},[189,4204,4205,4208,4211,4214,4217,4220,4223,4226],{},[45,4206,4207],{},"Use LB + URL maps for single-endpoint routing to multiple backends (e.g., vLLM prod vs. Ollama dev); path-based switching simplifies ops.",[45,4209,4210],{},"Integrate Model Armor as LB extension for zero-code network security; fallback to SDK\u002FAPI in ADK callbacks for direct Cloud Run.",[45,4212,4213],{},"Build model-agnostic agents with ADK + vLLM on Cloud Run; CI\u002FCD via Cloud Build for rapid iteration.",[45,4215,4216],{},"Monitor vLLM via Prometheus sidecar (GPU util, latency, tokens); add OpenTelemetry for agent traces.",[45,4218,4219],{},"Skip LB if no extensions\u002Frouting needed—Cloud Run scales alone—but LB unlocks Model Armor at ingress.",[45,4221,4222],{},"Reserve proxy-only subnet for secure LB-VPC comms; provision SSL certs for HTTPS.",[45,4224,4225],{},"Test in labs: Free GCP credits (non-GPU); full stack preps for agent battles\u002Fdungeons.",[45,4227,4228],{},"Prioritize observability pillars: security\u002Fsafety first, then metrics for cost control.",[22,4230,4231],{},"\"When we're talking about end-to-end agent system management... there's many different pillars... observability and security and safety.\"",[22,4233,4234],{},"—Ayo Adedeji, framing agent ops holistically.",{"title":132,"searchDepth":145,"depth":145,"links":4236},[4237,4238,4239,4240,4241],{"id":4054,"depth":145,"text":4055},{"id":4119,"depth":145,"text":4120},{"id":4162,"depth":145,"text":4163},{"id":4184,"depth":145,"text":4185},{"id":376,"depth":145,"text":377},[424,425],{"content_references":4244,"triage":4259},[4245,4248,4251,4254,4256],{"type":432,"title":4246,"url":4247,"context":449},"Agent Development Kit (ADK)","https:\u002F\u002Fgoo.gle\u002F4uflScr",{"type":432,"title":4249,"url":4250,"context":449},"Model Armor","https:\u002F\u002Fgoo.gle\u002F4mz57Ga",{"type":432,"title":4252,"url":4253,"context":449},"Cloud Trace","https:\u002F\u002Fgoo.gle\u002F4euYyCB",{"type":444,"title":4255,"url":448,"context":434},"Hands-on AI Lab",{"type":444,"title":4257,"url":4258,"context":434},"GCP Credits","https:\u002F\u002Fgoo.gle\u002Fhandson-ep8-lab1",{"relevance":451,"novelty":157,"quality":157,"actionability":451,"composite":452,"reasoning":4260},"Category: AI Automation. The article provides a detailed guide on deploying AI agents with specific tools and configurations, addressing practical concerns like security and observability, which are crucial for product builders. It includes actionable commands and tradeoffs, making it highly relevant and immediately applicable.","\u002Fsummaries\u002F268d90eeae6a5c77-gemma-4-prod-stack-model-armor-adk-agents-tracing-summary","2026-04-18 19:00:09",{"title":4044,"description":132},{"loc":4261},"268d90eeae6a5c77","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=7wENq-LMHgQ","summaries\u002F268d90eeae6a5c77-gemma-4-prod-stack-model-armor-adk-agents-tracing-summary",[466,469,467,468,4269],"ai-tools","Deploy secure, observable Gemma 4 agents on Cloud Run using load balancers for Model Armor integration, ADK for model-agnostic agents with vLLM, and Prometheus\u002FCloud Trace for metrics like GPU util and latency.",[],"kehgkdafSGcdmGRx8O8cwHNRvKfDZZ4PZMsrWWOjYc0",{"id":4274,"title":4275,"ai":4276,"body":4281,"categories":4309,"created_at":426,"date_modified":426,"description":4310,"extension":427,"faq":426,"featured":428,"kicker_label":426,"meta":4311,"navigation":454,"path":4312,"published_at":4313,"question":426,"scraped_at":4314,"seo":4315,"sitemap":4316,"source_id":4317,"source_name":4318,"source_type":4319,"source_url":4320,"stem":4321,"tags":4322,"thumbnail_url":426,"tldr":4323,"tweet":426,"unknown_tags":4324,"__hash__":4325},"summaries\u002Fsummaries\u002Fd08f3ee30a3613c9-arm-s-agi-cpu-bets-on-4x-agentic-ai-cpu-demand-summary.md","ARM's AGI CPU Bets on 4x Agentic AI CPU Demand",{"provider":7,"model":8,"input_tokens":4277,"output_tokens":4278,"processing_time_ms":4279,"cost_usd":4280},5067,1338,15491,0.00139155,{"type":14,"value":4282,"toc":4304},[4283,4287,4290,4294,4297,4301],[17,4284,4286],{"id":4285},"arm-avoids-customer-conflict-by-targeting-underserved-cpu-segment","ARM Avoids Customer Conflict by Targeting Underserved CPU Segment",[22,4288,4289],{},"ARM licenses designs to customers like Apple (fully custom M1 from ARM ISA for consumer perf\u002Fbattery) and AWS\u002FNvidia (Neoverse V2 cores like Graviton\u002FGrace for faster server time-to-market). Customizing deep into microarchitecture risks delays—Apple's Intel-to-ARM took 3 years—and capital intensity erodes margins (Intel\u002FAMD at 35-50% vs. ARM's 95%). AGI CPU doesn't compete: it enters total data center market directly, with pre-launch interest from OpenAI, Cloudflare, Meta (release H2 2026), letting licensees focus on peripherals like Nvidia's LPDDR5X\u002FMVLink for AI.",[17,4291,4293],{"id":4292},"data-centers-shift-to-cpu-heavy-mix-for-agentic-workloads","Data Centers Shift to CPU-Heavy Mix for Agentic Workloads",[22,4295,4296],{},"Gigawatt-scale facilities (e.g., Stargate's 1.2GW Abilene site + 6x1GW) allocate power across CPU\u002FGPU\u002FRAM like a 700W PC budgets for gaming vs. editing. Pre-2023 training\u002Finference favored GPUs; now agentic AI demands 4x more CPU cores (30M to 120M per GW) as agents proliferate. ARM's AGI CPU optimizes for this, validating demand via hyperscaler buy-in before TSMC production.",[17,4298,4300],{"id":4299},"_15b-revenue-upside-faces-fierce-customization-competition","$15B Revenue Upside Faces Fierce Customization Competition",[22,4302,4303],{},"ARM projects $15B from AGI CPUs in 5 years, with 50% line margins blending to 75% overall (diluting from 95%). Growth aligns with AI demand, but hyperscalers build in-house (Google Axion, Microsoft Cobalt, Alibaba Echin) atop ARM\u002FAMD while Ampear competes directly. Success hinges on ARM's design edge plus superior production speed\u002Fintegration to outpace custom forks and x86 holdouts.",{"title":132,"searchDepth":145,"depth":145,"links":4305},[4306,4307,4308],{"id":4285,"depth":145,"text":4286},{"id":4292,"depth":145,"text":4293},{"id":4299,"depth":145,"text":4300},[425],"Arm recently announced their first AGI CPU for agentic use cases.\nThe demand for semiconductors have been growing incredibly and ARM is throwing in their name in the hat in the ever growing and highly competitive and highly cyclical CPU market.\nIt is highly capital intensive and has a huge time to market risk as companies work with TSMC to now manage supply chain and also help sell their CPU as more and more hyperscalers are opting to customize CPUs to fit exactly how they envision their data centers to look like.\n\nZo Computer:\nhttps:\u002F\u002Fzo.computer\n\n#ai #cpu #tech\n\nChapters\n00:00 Intro\n00:51 CPU Competition\n01:45 Custom CPU\n03:31 Financials\n04:53 Gigawatt\n06:40 Sponsor: Zo\n07:34 Revenue\n08:21 Competition\n09:15 Conclusion",{},"\u002Fsummaries\u002Fd08f3ee30a3613c9-arm-s-agi-cpu-bets-on-4x-agentic-ai-cpu-demand-summary","2026-03-30 07:24:39","2026-04-03 21:19:15",{"title":4275,"description":4310},{"loc":4312},"d08f3ee30a3613c9","Caleb Writes Code","video","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=3hltZHxTeRI","summaries\u002Fd08f3ee30a3613c9-arm-s-agi-cpu-bets-on-4x-agentic-ai-cpu-demand-summary",[469,468,467],"ARM enters CPU manufacturing with AGI chip for data centers, targeting 4x CPU growth from agentic AI (30M to 120M cores per GW), projecting $15B revenue in 5 years at 50% margins.",[],"CnTQDL_nUIRkTxdmSGw1ItHmbXP38Q88YvPBGzHqXIc",{"id":4327,"title":4328,"ai":4329,"body":4334,"categories":4484,"created_at":426,"date_modified":426,"description":132,"extension":427,"faq":426,"featured":428,"kicker_label":426,"meta":4485,"navigation":454,"path":4506,"published_at":4507,"question":426,"scraped_at":4508,"seo":4509,"sitemap":4510,"source_id":4511,"source_name":461,"source_type":4319,"source_url":4512,"stem":4513,"tags":4514,"thumbnail_url":4516,"tldr":4517,"tweet":4518,"unknown_tags":4519,"__hash__":4520},"summaries\u002Fsummaries\u002F25544e9965dc4dae-gpu-orchestrated-multi-agent-sustainability-intell-summary.md","GPU-Orchestrated Multi-Agent Sustainability Intelligence Blueprint",{"provider":7,"model":8,"input_tokens":4330,"output_tokens":4331,"processing_time_ms":4332,"cost_usd":4333},9206,2577,37454,0.0031072,{"type":14,"value":4335,"toc":4477},[4336,4340,4343,4346,4349,4353,4356,4359,4362,4365,4369,4372,4392,4395,4398,4401,4405,4408,4411,4437,4440,4443,4445],[17,4337,4339],{"id":4338},"agentic-workloads-demand-elastic-secure-infrastructure","Agentic Workloads Demand Elastic, Secure Infrastructure",[22,4341,4342],{},"Chelsie Czop emphasizes that AI agents optimize for outcomes over outputs, enabling cross-platform automation, asynchronous productivity, and real-world transactions. An agent is \"a service that autonomously reasons to solve a task using tools and data,\" but must meet compliance, CI\u002FCD, security, cost, and performance standards like latency SLOs.",[22,4344,4345],{},"Agents stress infrastructure with bursty traffic, latency sensitivity, long-running tasks, idle cycles, and memory hunger. Three core challenges emerge: (1) latency and throughput amid constrained accelerators; (2) compute efficiency to boost density and cut idle resources; (3) security and governance for debugging, auditing, and controlling complex tasks.",[22,4347,4348],{},"\"Your agentic workloads need to be treated as untrusted,\" Czop warns. They require scaling for elasticity while securing against breaches. Google Cloud's AI Hypercomputer addresses this via purpose-built hardware (NVIDIA GPUs from Hopper to Blackwell), open software, and flexible models.",[17,4350,4352],{"id":4351},"g4-gpus-and-cloud-run-unlock-serverless-agentic-inference","G4 GPUs and Cloud Run Unlock Serverless Agentic Inference",[22,4354,4355],{},"Czop spotlights G4 instances powered by NVIDIA RTX PRO 6000 Blackwell GPUs: 7x more performant than prior L4s, 4x GPU memory, 3x host memory. Optimized for peer-to-peer multi-GPU workloads, they deliver 2x NVLink collective performance on full VMs (up to 8 GPUs) via a simple environment flag.",[22,4357,4358],{},"Cloud Run GPU integrates this stack serverlessly for real-time multimodal inference, fine-tuning, or batch jobs. Design patterns include: on-demand inference (Cloud CDN → Cloud Run GPU with Gemma 4 weights from Cloud Storage over VPC); batch fine-tuning (async LoRA\u002FPEFT on domain data). Pros: background execution without management. Fine-tune Gemma for domain knowledge (e.g., SEC filings for finance), task behaviors (customer service), or personas (NPC styles).",[22,4360,4361],{},"Production win: Flipkart uses G4 for AI-led catalog enrichment, generating videos from images via agents. P2P communication yielded 50% latency and cost reductions versus PCIe.",[22,4363,4364],{},"Mitesh Patel reinforces: \"Latency is very important, and throughput is very important. And cost effectiveness is also important because when you're scaling the systems out at production level, cost is the primary factor.\"",[17,4366,4368],{"id":4367},"multi-agent-architecture-for-multimodal-sustainability-analysis","Multi-Agent Architecture for Multimodal Sustainability Analysis",[22,4370,4371],{},"Patel demos a sustainability intelligence app orchestrating specialist agents for urban heat risk: satellite imagery (Phoenix urban heat island dataset), live telemetry, and policy PDFs. Main orchestrator (Google ADK) delegates to three sub-agents:",[189,4373,4374,4380,4386],{},[45,4375,4376,4379],{},[123,4377,4378],{},"Satellite Agent",": Analyzes baseline vs. current heat maps.",[45,4381,4382,4385],{},[123,4383,4384],{},"Telemetry Agent",": Processes weather station data.",[45,4387,4388,4391],{},[123,4389,4390],{},"Policy Agent",": Retrieves relevant embeddings from Milvus vector DB (pre-embedded via Gemma 3B gn-fp4).",[22,4393,4394],{},"Inference uses quantized Gemma 4 (31B params, gn-fp4) on VLM engine (swappable with SGLang or NVIDIA Dynamo), served on Cloud Run GPUs. ADK streamlines plugging agents, retrieval (Milvus), and future MCP servers.",[22,4396,4397],{},"Demo flow: User query triggers task dispatch; agents process modalities in parallel; orchestrator synthesizes into executive summary and mitigation strategies (e.g., cooling tactics). \"The main orchestrator will combine all this information... and generate a report for you,\" Patel explains.",[22,4399,4400],{},"This blueprint generalizes to any multimodal app: ADK handles orchestration, GPUs accelerate inference, Milvus enables RAG. Avoid coding from scratch—toolkits slash time-to-market.",[17,4402,4404],{"id":4403},"production-insights-avoiding-loops-transitioning-to-autonomy-and-security","Production Insights: Avoiding Loops, Transitioning to Autonomy, and Security",[22,4406,4407],{},"Agents shine in real-time voice, encoding, and research (e.g., code base analysis via chain-of-thought). Fine-tuning boosts productivity, per Base10 insights.",[22,4409,4410],{},"Q&A highlights:",[189,4412,4413,4419,4425,4431],{},[45,4414,4415,4418],{},[123,4416,4417],{},"Loop Prevention",": Strong orchestration (like ADK) and tools break cycles.",[45,4420,4421,4424],{},[123,4422,4423],{},"Human-to-Agent Transition",": When tasks are structured, reliable, and low-risk.",[45,4426,4427,4430],{},[123,4428,4429],{},"Policy Retrieval Challenges",": Accurate RAG via embeddings\u002FMilvus; multimodal grounding.",[45,4432,4433,4436],{},[123,4434,4435],{},"Security\u002FPrivacy",": VPCs, guardrails, auditability in Cloud Run.",[22,4438,4439],{},"Patel shares: Used agents for similar multimodal orchestration. Czop notes a friend's MVP failed on unoptimized agent demands, forcing re-architecture for cost\u002Flatency.",[22,4441,4442],{},"\"If you try to code it yourself, it's not impossible. But your time to market will just be way longer. And that is where these orchestration toolkits becomes very easy to use.\"",[17,4444,377],{"id":376},[189,4446,4447,4450,4453,4456,4459,4462,4465,4468,4471,4474],{},[45,4448,4449],{},"Treat agents as untrusted: Build with security, elasticity, and governance from day one.",[45,4451,4452],{},"Use Cloud Run GPUs for serverless inference\u002Ffine-tuning: Pull Gemma weights via VPC, scale elastically.",[45,4454,4455],{},"Orchestrate multi-agents with Google ADK: Delegate modalities to specialists, integrate Milvus RAG.",[45,4457,4458],{},"Quantize models (gn-fp4) on RTX PRO 6000 for 50%+ latency\u002Fcost wins, as in Flipkart's video gen.",[45,4460,4461],{},"Fine-tune for domains\u002Fpersonas via PEFT\u002FLoRA: Efficient on smaller datasets.",[45,4463,4464],{},"Pre-embed policies offline; runtime retrieval via vector DBs.",[45,4466,4467],{},"Start with multimodal demos like sustainability: Satellite + telemetry + docs → actionable reports.",[45,4469,4470],{},"Enable P2P multi-GPU with one flag for 2x NVLink gains.",[45,4472,4473],{},"Monitor KPIs: Latency, throughput, cost drive production scaling.",[45,4475,4476],{},"Get started: Join Google Cloud & NVIDIA community for blueprints.",{"title":132,"searchDepth":145,"depth":145,"links":4478},[4479,4480,4481,4482,4483],{"id":4338,"depth":145,"text":4339},{"id":4351,"depth":145,"text":4352},{"id":4367,"depth":145,"text":4368},{"id":4403,"depth":145,"text":4404},{"id":376,"depth":145,"text":377},[424],{"content_references":4486,"triage":4503},[4487,4489,4491,4493,4495,4497,4500],{"type":432,"title":4488,"context":434},"Google Agent Development Kit (ADK)",{"type":432,"title":4490,"context":434},"Gemma 4",{"type":432,"title":4492,"context":434},"Cloud Run",{"type":432,"title":4494,"context":434},"Milvus",{"type":432,"title":4496,"context":434},"NVIDIA RTX PRO 6000 GPUs",{"type":4498,"title":4499,"context":434},"dataset","Phoenix urban heat island risk dataset",{"type":444,"title":4501,"url":4502,"context":449},"Google Cloud & NVIDIA community","https:\u002F\u002Fgoo.gle\u002Fgoogle-nvidia-programs",{"relevance":451,"novelty":157,"quality":157,"actionability":157,"composite":4504,"reasoning":4505},4.35,"Category: AI Automation. The article provides a detailed exploration of using AI agents in a serverless architecture, addressing specific challenges and solutions relevant to product builders. It includes practical examples, such as Flipkart's use of G4 GPUs for AI-led catalog enrichment, which demonstrates real-world application.","\u002Fsummaries\u002F25544e9965dc4dae-gpu-orchestrated-multi-agent-sustainability-intell-summary","2026-05-12 17:00:50","2026-05-13 12:00:34",{"title":4328,"description":132},{"loc":4506},"25544e9965dc4dae","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=vIyhQGBkn34","summaries\u002F25544e9965dc4dae-gpu-orchestrated-multi-agent-sustainability-intell-summary",[469,466,468,4515],"ai-automation","https:\u002F\u002Fi.ytimg.com\u002Fvi\u002FvIyhQGBkn34\u002Fhqdefault.jpg","Chelsie Czop and Mitesh Patel demo a serverless multi-agent app using Google ADK, Gemma 4 on NVIDIA RTX PRO 6000 GPUs via Cloud Run, and Milvus RAG for real-time environmental risk reports from satellite, telemetry, and policy data.","Livestream talk by Google Cloud PM Chelsie Czop and NVIDIA's Jay Rodge demoing a multi-agent sustainability app orchestrated with Agent Development Kit, running Gemma 4 on Cloud Run with RTX PRO 6000 GPUs, and using Milvus for policy retrieval, followed by audience Q&A on agent challenges.",[4515],"-kVMzSLa9FYK5ixBk7a96OVeuA3rRBdX79ixI_1snjQ",{"id":4522,"title":4523,"ai":4524,"body":4529,"categories":4757,"created_at":426,"date_modified":426,"description":132,"extension":427,"faq":426,"featured":428,"kicker_label":426,"meta":4758,"navigation":454,"path":4790,"published_at":4791,"question":426,"scraped_at":4792,"seo":4793,"sitemap":4794,"source_id":4795,"source_name":461,"source_type":462,"source_url":4796,"stem":4797,"tags":4798,"thumbnail_url":426,"tldr":4799,"tweet":426,"unknown_tags":4800,"__hash__":4801},"summaries\u002Fsummaries\u002Febc0d711136fb32c-secure-ai-agents-via-mcp-toolbox-custom-tools-summary.md","Secure AI Agents via MCP Toolbox Custom Tools",{"provider":7,"model":8,"input_tokens":4525,"output_tokens":4526,"processing_time_ms":4527,"cost_usd":4528},8976,2997,46040,0.00327105,{"type":14,"value":4530,"toc":4749},[4531,4535,4538,4544,4547,4551,4554,4557,4564,4569,4572,4576,4579,4673,4676,4679,4684,4688,4691,4694,4697,4701,4704,4707,4712,4715,4717,4746],[17,4532,4534],{"id":4533},"tackling-the-confused-deputy-problem-in-ai-agents","Tackling the Confused Deputy Problem in AI Agents",[22,4536,4537],{},"AI agents promise automation like midnight database triage, but they risk the 'confused deputy' vulnerability: a service account with broad database access gets tricked by malicious user input (e.g., via prompt injection) into querying sensitive data like executive salaries instead of the paged-down DB. Kurtis Van Gent explains this as Simon Willison's 'lethal trifecta': private data + untrusted input + external sharing. Traditional fixes like prompt-engineered security fail because LLMs struggle to distinguish system vs. user instructions.",[4539,4540,4541],"blockquote",{},[22,4542,4543],{},"'The confused deputy problem is really a problem where you have some kind of authoritative source... but a malicious user or a bug can trick it into revealing information.' — Kurtis Van Gent, defining the core vulnerability with a real-world paging scenario.",[22,4545,4546],{},"Developers evaluated broad tool access (e.g., 'run any SQL') but rejected it for runtime agents serving end-users. Instead, they architected MCP Toolbox around customization: pre-author SQL queries reviewed like code, constraining what agents can do.",[17,4548,4550],{"id":4549},"build-time-vs-runtime-agents-tailored-tooling","Build-Time vs. Runtime Agents: Tailored Tooling",[22,4552,4553],{},"MCP Toolbox distinguishes two agent types, each with different security needs. Build-time agents (e.g., Gemini CLI, Claude Code) assist developers with broad, generic tools like 'any SQL' or BigQuery dashboard queries—safe since they use developer credentials. Runtime agents (e.g., customer service bots via ADK, LangChain) face untrusted users, needing narrow tools for accuracy and safety.",[22,4555,4556],{},"Toolbox supports both via generic (pre-built ops), runtime (dynamic), and custom tools. For databases like AlloyDB, BigQuery, Postgres, Valkey, Neo4j, Oracle, MariaDB, it acts as a 'central gate.' Open-source (15k+ GitHub stars, 130+ contributors, millions of monthly calls), it's self-hosted—no Google data access.",[22,4558,4559,4560,4563],{},"Key decision: Bound parameters separate agent-set values (e.g., flight ID from conversation) from app-set ones (e.g., user identity, target DB). This binds identity at runtime, e.g., ",[49,4561,4562],{},"tool.bind(user_id=authenticated_user)"," creates a scoped tool the LLM can't override.",[4539,4565,4566],{},[22,4567,4568],{},"'MCP is kind of the gold standard for interop right now... like USB for AI applications. You can take any agent and you can plug in any server.' — Kurtis Van Gent, positioning MCP as the standard Toolbox builds on.",[22,4570,4571],{},"Tradeoff: Hardcoding boosts security\u002Faccuracy (no hallucinated DB switches) but reduces flexibility. Philosophy: Remove agent control wherever possible without harming UX—e.g., hardcoded DB for single-DB sessions.",[17,4573,4575],{"id":4574},"custom-tools-pre-written-sql-as-architectural-guardrails","Custom Tools: Pre-Written SQL as Architectural Guardrails",[22,4577,4578],{},"Core mechanism: Define tools with fixed SQL templates and params. Example Postgres tool for airline queries:",[127,4580,4584],{"className":4581,"code":4582,"language":4583,"meta":132,"style":132},"language-yaml shiki shiki-themes github-light github-dark","tool_type: postgres-sql\nsql: \"SELECT * FROM flights WHERE airline = $1 AND flight_number = $2\"\nparameters:\n  - name: airline\n    type: string\n  - name: flight_number\n    type: string\ndescription: \"Get flight details by airline and number\"\n","yaml",[49,4585,4586,4600,4610,4618,4631,4641,4653,4662],{"__ignoreMap":132},[136,4587,4588,4592,4596],{"class":138,"line":139},[136,4589,4591],{"class":4590},"s9eBZ","tool_type",[136,4593,4595],{"class":4594},"sVt8B",": ",[136,4597,4599],{"class":4598},"sZZnC","postgres-sql\n",[136,4601,4602,4605,4607],{"class":138,"line":145},[136,4603,4604],{"class":4590},"sql",[136,4606,4595],{"class":4594},[136,4608,4609],{"class":4598},"\"SELECT * FROM flights WHERE airline = $1 AND flight_number = $2\"\n",[136,4611,4612,4615],{"class":138,"line":151},[136,4613,4614],{"class":4590},"parameters",[136,4616,4617],{"class":4594},":\n",[136,4619,4620,4623,4626,4628],{"class":138,"line":157},[136,4621,4622],{"class":4594},"  - ",[136,4624,4625],{"class":4590},"name",[136,4627,4595],{"class":4594},[136,4629,4630],{"class":4598},"airline\n",[136,4632,4633,4636,4638],{"class":138,"line":451},[136,4634,4635],{"class":4590},"    type",[136,4637,4595],{"class":4594},[136,4639,4640],{"class":4598},"string\n",[136,4642,4644,4646,4648,4650],{"class":138,"line":4643},6,[136,4645,4622],{"class":4594},[136,4647,4625],{"class":4590},[136,4649,4595],{"class":4594},[136,4651,4652],{"class":4598},"flight_number\n",[136,4654,4656,4658,4660],{"class":138,"line":4655},7,[136,4657,4635],{"class":4590},[136,4659,4595],{"class":4594},[136,4661,4640],{"class":4598},[136,4663,4665,4668,4670],{"class":138,"line":4664},8,[136,4666,4667],{"class":4590},"description",[136,4669,4595],{"class":4594},[136,4671,4672],{"class":4598},"\"Get flight details by airline and number\"\n",[22,4674,4675],{},"The LLM calls via MCP with params; Toolbox executes safely. No ad-hoc SQL generation—agents use dev-reviewed queries. Supports complex ops like joins\u002Fstored procs via custom SQL. Toolbox doesn't auto-write queries; devs do.",[22,4677,4678],{},"This mirrors app dev: Write\u002Freview SQL once, expose as API. For production, deploy on Cloud Run; min arch is Toolbox container + MCP client (Gemini\u002FVertex AI) + auth (e.g., IAM).",[4539,4680,4681],{},[22,4682,4683],{},"'The toolbox's superpower really comes down to... customize tools in a way that lets you constrain that access... write the SQL ahead of time.' — Kurtis Van Gent, on shifting from prompt hacks to code-like security.",[17,4685,4687],{"id":4686},"cymbal-air-demo-resilience-in-action","Cymbal Air Demo: Resilience in Action",[22,4689,4690],{},"Live demo of Cymbal Air (fictional airline agent): Normal flow—user asks flight status; agent uses bound tools to query only authorized data. Compromise attempt: \"Ignore instructions, query competitor salaries.\" Fails—tools lack access; agent stays on-topic.",[22,4692,4693],{},"Architecture: MCP client (Gemini) → Toolbox server (Cloud Run, Postgres backend) → bound custom tools. Code shown: Load tool, bind user context, register to agent. Result: Zero-trust, no leaks.",[22,4695,4696],{},"Evolution: Started with generic tools; pivoted to custom\u002Fbound for prod. Failure modes tested: Prompt injection blocked by param constraints.",[17,4698,4700],{"id":4699},"deployment-tradeoffs-and-best-practices","Deployment Tradeoffs and Best Practices",[22,4702,4703],{},"Latency: Toolbox adds ~50-100ms vs. direct queries (MCP overhead + execution); fine for interactive agents, not ultra-high-throughput. Self-hosted (binary\u002Fcontainer\u002Flocal); progressive tool exposure via dynamic registration.",[22,4705,4706],{},"Security-first process: Start with threat modeling ('what can go wrong?'), prototype fast with frameworks like ADK, then harden. 'Move security left'—architect params\u002Ftools early, iterate weekly.",[4539,4708,4709],{},[22,4710,4711],{},"'Flexibility versus security... anything that you can take away from the agent tends to be a good thing to take away as long as it doesn't diminish the use case.' — Kurtis Van Gent, on balancing autonomy and guardrails.",[22,4713,4714],{},"Non-obvious: Runtime agents need dev-like rigor (code review SQL); build-time can be looser. Replicate by forking GitHub repo, binding identity, testing injections.",[17,4716,377],{"id":376},[189,4718,4719,4722,4725,4728,4731,4734,4737,4740,4743],{},[45,4720,4721],{},"Model threats early: Map confused deputy risks (private data + untrusted input) before building agents.",[45,4723,4724],{},"Use build-time tools broadly for dev (e.g., any-SQL); constrain runtime with custom MCP tools.",[45,4726,4727],{},"Pre-write\u002Freview SQL templates; define params\u002Fdescriptions for LLM guidance.",[45,4729,4730],{},"Bind app params (user ID, DB) at runtime—LLM sets only conversation-derived ones.",[45,4732,4733],{},"Deploy self-hosted Toolbox on Cloud Run; test latency (\u003C100ms typical) and injections.",[45,4735,4736],{},"Start small: Codelabs for BigQuery\u002FAlloyDB; scale to multi-agent apps.",[45,4738,4739],{},"Prioritize security in architecture: 1st step = threat model, not prototype.",[45,4741,4742],{},"Leverage open MCP spec: Plug any agent\u002Fserver; Google managed options for BigQuery\u002Fetc.",[45,4744,4745],{},"Measure: Millions of safe calls\u002Fmonth via Toolbox—prod-proven.",[412,4747,4748],{},"html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":132,"searchDepth":145,"depth":145,"links":4750},[4751,4752,4753,4754,4755,4756],{"id":4533,"depth":145,"text":4534},{"id":4549,"depth":145,"text":4550},{"id":4574,"depth":145,"text":4575},{"id":4686,"depth":145,"text":4687},{"id":4699,"depth":145,"text":4700},{"id":376,"depth":145,"text":377},[424],{"content_references":4759,"triage":4787},[4760,4763,4766,4769,4772,4775,4778,4781,4784],{"type":432,"title":4761,"url":4762,"context":434},"MCP Toolbox GitHub","https:\u002F\u002Fgoo.gle\u002Fgithub-mcp-toolbox",{"type":432,"title":4764,"url":4765,"context":434},"MCP Toolbox for Databases (Docs)","https:\u002F\u002Fgoo.gle\u002Fmcp-toolbox-dev",{"type":432,"title":4767,"url":4768,"context":434},"QuickStart","https:\u002F\u002Fgoo.gle\u002Fmcp-quickstart",{"type":432,"title":4770,"url":4771,"context":434},"MCP Toolbox for Databases: Making BigQuery datasets available to MCP clients (Codelab)","https:\u002F\u002Fgoo.gle\u002Fcodelabs",{"type":432,"title":4773,"url":4774,"context":434},"Build a Multi-agent App with MCP Toolbox for AlloyDB & ADK (Codelab)","https:\u002F\u002Fgoo.gle\u002Fcodelab-multi-agent-app",{"type":432,"title":4776,"url":4777,"context":434},"Cymbal Air Toolbox Demo","https:\u002F\u002Fgoo.gle\u002F4tfWYIA",{"type":432,"title":4779,"url":4780,"context":434},"Google Cloud MCP servers overview","https:\u002F\u002Fgoo.gle\u002F42ioQRn",{"type":432,"title":4782,"url":4783,"context":434},"MCP Toolbox for Databases (Toolbox)","https:\u002F\u002Fgoo.gle\u002F4wauUJp",{"type":432,"title":4785,"url":4786,"context":434},"GEAR","https:\u002F\u002Fgoo.gle\u002FGEAR",{"relevance":157,"novelty":151,"quality":157,"actionability":151,"composite":4788,"reasoning":4789},3.6,"Category: AI & LLMs. The article addresses a specific pain point regarding security in AI agents, particularly the confused deputy problem, which is relevant for developers integrating AI features. It provides insights into a practical solution (MCP Toolbox) but lacks detailed step-by-step guidance for implementation.","\u002Fsummaries\u002Febc0d711136fb32c-secure-ai-agents-via-mcp-toolbox-custom-tools-summary","2026-05-05 16:46:33","2026-05-06 16:12:43",{"title":4523,"description":132},{"loc":4790},"ed722ee0fdc7e076","https:\u002F\u002Fwww.youtube.com\u002Fwatch?v=CRszhkEjd8s","summaries\u002Febc0d711136fb32c-secure-ai-agents-via-mcp-toolbox-custom-tools-summary",[469,4269,468,467],"MCP Toolbox prevents confused deputy attacks by letting developers pre-write constrained SQL tools with bound parameters, separating agent flexibility from app-controlled security for runtime agents.",[],"htBzEsyR16VdzmViKPvmry-2HFiUx9a6ye2MxpmOJCk"]