[{"data":1,"prerenderedAt":931},["ShallowReactive",2],{"learn-doc-\u002Flearn\u002Fen\u002Fcourses\u002Fpods\u002Fcontrollers":3,"learn-doc-topic-\u002Flearn\u002Fen\u002Fcourses\u002Fpods":344,"lessons-\u002Flearn\u002Fen\u002Fcourses\u002Fpods":376,"sidebar-course-\u002Flearn\u002Fen\u002Fcourses\u002Fpods":877,"i-lucide:chevron-down":889,"i-lucide:search":893,"i-lucide:sun":895,"i-lucide:moon":897,"i-lucide:arrow-right":899,"i-lucide:menu":901,"i-lucide:panel-left":903,"i-lucide:chevron-right":905,"i-lucide:arrow-left":907,"i-lucide:corner-down-right":909,"i-lucide:mail":911,"i-simple-icons:x":913,"i-simple-icons:linkedin":915,"i-simple-icons:dribbble":917,"i-simple-icons:github":919,"sidebar-quiz-\u002Flearn\u002Fen\u002Fcourses\u002Fpods":364,"i-lucide:blocks":921,"i-lucide:printer":923,"i-lucide:graduation-cap":925,"i-lucide:book-marked":927,"i-lucide:notebook-pen":929},{"id":4,"title":5,"access":6,"body":7,"description":334,"extension":335,"lang":336,"meta":337,"navigation":338,"order":174,"partial":339,"path":340,"seo":341,"stem":342,"__hash__":343},"lessons\u002Flearn\u002Fen\u002Fcourses\u002Fpods\u002F02.controllers.md","Choosing a controller","free",{"type":8,"value":9,"toc":329},"minimark",[10,14,18,107,112,115,118,122,133,136,142,146,297,311,325],[11,12,5],"h1",{"id":13},"choosing-a-controller",[15,16,17],"p",{},"Each workload controller manages pods. They differ in what they promise about\nidentity, ordering and placement.",[19,20,21,37],"table",{},[22,23,24],"thead",{},[25,26,27,31,34],"tr",{},[28,29,30],"th",{},"Controller",[28,32,33],{},"Use when",[28,35,36],{},"Guarantee",[38,39,40,55,68,81,94],"tbody",{},[25,41,42,49,52],{},[43,44,45],"td",{},[46,47,48],"code",{},"Deployment",[43,50,51],{},"Stateless replicas",[43,53,54],{},"Interchangeable pods, rolling updates",[25,56,57,62,65],{},[43,58,59],{},[46,60,61],{},"StatefulSet",[43,63,64],{},"Stateful members",[43,66,67],{},"Stable name, stable storage, ordered rollout",[25,69,70,75,78],{},[43,71,72],{},[46,73,74],{},"DaemonSet",[43,76,77],{},"Node-level agents",[43,79,80],{},"One pod per matching node",[25,82,83,88,91],{},[43,84,85],{},[46,86,87],{},"Job",[43,89,90],{},"Run to completion",[43,92,93],{},"Retries until the success count is met",[25,95,96,101,104],{},[43,97,98],{},[46,99,100],{},"CronJob",[43,102,103],{},"Scheduled work",[43,105,106],{},"Creates Jobs on a schedule",[108,109,111],"h2",{"id":110},"deployments-give-you-no-identity","Deployments give you no identity",[15,113,114],{},"Deployment pods get random name suffixes and are replaced freely. Nothing about a\ngiven pod persists across a restart — not its name, not its storage, not its\nposition in a cluster.",[15,116,117],{},"This is exactly right for a web server and exactly wrong for a database replica.",[108,119,121],{"id":120},"statefulsets-trade-speed-for-identity","StatefulSets trade speed for identity",[15,123,124,125,128,129,132],{},"A StatefulSet gives each pod an ordinal name (",[46,126,127],{},"db-0",", ",[46,130,131],{},"db-1","), a stable DNS entry\nvia a headless Service, and its own PersistentVolumeClaim that survives rescheduling.",[15,134,135],{},"Rollouts happen one pod at a time, in reverse ordinal order, waiting for each to\nbecome ready before continuing.",[137,138,139],"warning",{},[15,140,141],{},"That serial rollout is a feature, not a limitation — but it means a StatefulSet\nwith fifty replicas and a slow readiness probe can take an hour to roll. Budget\nfor it before choosing StatefulSet for something that did not need identity.",[108,143,145],{"id":144},"jobs-and-the-completion-count","Jobs and the completion count",[147,148,153],"pre",{"className":149,"code":150,"language":151,"meta":152,"style":152},"language-yaml shiki shiki-themes github-dark-dimmed github-dark-dimmed","apiVersion: batch\u002Fv1\nkind: Job\nmetadata:\n  name: migrate\nspec:\n  backoffLimit: 3\n  template:\n    spec:\n      restartPolicy: Never\n      containers:\n        - name: migrate\n          image: myapp:1.4\n          command: ['.\u002Fmigrate']\n","yaml","",[46,154,155,172,183,192,203,211,223,231,239,250,258,271,282],{"__ignoreMap":152},[156,157,160,164,168],"span",{"class":158,"line":159},"line",1,[156,161,163],{"class":162},"sza-u","apiVersion",[156,165,167],{"class":166},"sM9_K",": ",[156,169,171],{"class":170},"szYpP","batch\u002Fv1\n",[156,173,175,178,180],{"class":158,"line":174},2,[156,176,177],{"class":162},"kind",[156,179,167],{"class":166},[156,181,182],{"class":170},"Job\n",[156,184,186,189],{"class":158,"line":185},3,[156,187,188],{"class":162},"metadata",[156,190,191],{"class":166},":\n",[156,193,195,198,200],{"class":158,"line":194},4,[156,196,197],{"class":162},"  name",[156,199,167],{"class":166},[156,201,202],{"class":170},"migrate\n",[156,204,206,209],{"class":158,"line":205},5,[156,207,208],{"class":162},"spec",[156,210,191],{"class":166},[156,212,214,217,219],{"class":158,"line":213},6,[156,215,216],{"class":162},"  backoffLimit",[156,218,167],{"class":166},[156,220,222],{"class":221},"sQdni","3\n",[156,224,226,229],{"class":158,"line":225},7,[156,227,228],{"class":162},"  template",[156,230,191],{"class":166},[156,232,234,237],{"class":158,"line":233},8,[156,235,236],{"class":162},"    spec",[156,238,191],{"class":166},[156,240,242,245,247],{"class":158,"line":241},9,[156,243,244],{"class":162},"      restartPolicy",[156,246,167],{"class":166},[156,248,249],{"class":170},"Never\n",[156,251,253,256],{"class":158,"line":252},10,[156,254,255],{"class":162},"      containers",[156,257,191],{"class":166},[156,259,261,264,267,269],{"class":158,"line":260},11,[156,262,263],{"class":166},"        - ",[156,265,266],{"class":162},"name",[156,268,167],{"class":166},[156,270,202],{"class":170},[156,272,274,277,279],{"class":158,"line":273},12,[156,275,276],{"class":162},"          image",[156,278,167],{"class":166},[156,280,281],{"class":170},"myapp:1.4\n",[156,283,285,288,291,294],{"class":158,"line":284},13,[156,286,287],{"class":162},"          command",[156,289,290],{"class":166},": [",[156,292,293],{"class":170},"'.\u002Fmigrate'",[156,295,296],{"class":166},"]\n",[15,298,299,302,303,306,307,310],{},[46,300,301],{},"backoffLimit"," counts failed pods, not failed containers. With\n",[46,304,305],{},"restartPolicy: Never"," a failure creates a new pod; with ",[46,308,309],{},"OnFailure"," the container\nrestarts inside the existing pod. The two produce different pod counts for the same\nnumber of failures, which makes debugging confusing if you are not expecting it.",[312,313,314],"tip",{},[15,315,316,317,320,321,324],{},"Set ",[46,318,319],{},"ttlSecondsAfterFinished"," on Jobs. Without it, completed Job pods accumulate\nindefinitely and eventually make ",[46,322,323],{},"kubectl get pods"," unusable.",[326,327,328],"style",{},"html pre.shiki code .sza-u, html code.shiki .sza-u{--shiki-default:#8DDB8C;--shiki-dark:#8DDB8C}html pre.shiki code .sM9_K, html code.shiki .sM9_K{--shiki-default:#ADBAC7;--shiki-dark:#ADBAC7}html pre.shiki code .szYpP, html code.shiki .szYpP{--shiki-default:#96D0FF;--shiki-dark:#96D0FF}html pre.shiki code .sQdni, html code.shiki .sQdni{--shiki-default:#6CB6FF;--shiki-dark:#6CB6FF}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":152,"searchDepth":185,"depth":185,"links":330},[331,332,333],{"id":110,"depth":174,"text":111},{"id":120,"depth":174,"text":121},{"id":144,"depth":174,"text":145},"Deployment, StatefulSet, DaemonSet and Job — what each one actually guarantees.","md","en",{},true,false,"\u002Flearn\u002Fen\u002Fcourses\u002Fpods\u002Fcontrollers",{"title":5,"description":334},"learn\u002Fen\u002Fcourses\u002Fpods\u002F02.controllers","VSCelnVYA4VGJd0fBOn99YCc4llCWJ8uDyfJB4DOFKM",{"id":345,"title":346,"access":6,"body":347,"description":351,"draft":339,"estimatedMinutes":352,"extension":335,"featured":339,"icon":353,"lang":336,"level":354,"meta":355,"navigation":338,"order":159,"path":356,"prerequisites":357,"resources":358,"seo":363,"sku":364,"stem":365,"subjects":366,"summary":368,"tags":369,"updated":374,"__hash__":375},"courses\u002Flearn\u002Fen\u002Fcourses\u002Fpods\u002Findex.md","Pods and workloads",{"type":8,"value":348,"toc":349},[],{"title":152,"searchDepth":185,"depth":185,"links":350},[],"The smallest deployable unit, and the controllers that manage sets of them.",25,"lucide:blocks","beginner",{},"\u002Flearn\u002Fen\u002Fcourses\u002Fpods",[],[359],{"label":360,"file":361,"access":6,"size":362},"Workload controller decision tree","k8s-workload-controllers.pdf","120 KB",{"title":346,"description":351},null,"learn\u002Fen\u002Fcourses\u002Fpods\u002Findex",[367],"kubernetes","A pod is one or more containers sharing a network namespace and a lifecycle.\nYou rarely create one directly — Deployments, StatefulSets, DaemonSets and Jobs\neach manage pods with different guarantees about identity, ordering and\nreplacement. Choosing the wrong controller is the root of a surprising number\nof production problems, because the guarantee you assumed was never offered.\n",[370,371,372,373],"pods","deployments","statefulsets","workloads","2026-08-04","m76OXiUC-jLIAp9S_k3i7kuptZfYW5jrdGa40vEITF8",[377,657],{"id":378,"title":379,"access":6,"body":380,"description":651,"extension":335,"lang":336,"meta":652,"navigation":338,"order":159,"partial":339,"path":653,"seo":654,"stem":655,"__hash__":656},"lessons\u002Flearn\u002Fen\u002Fcourses\u002Fpods\u002F01.the-pod.md","The pod",{"type":8,"value":381,"toc":646},[382,385,388,391,395,402,531,538,544,548,551,611,614,618,637,644],[11,383,379],{"id":384},"the-pod",[15,386,387],{},"Kubernetes does not schedule containers. It schedules pods.",[15,389,390],{},"A pod is a group of containers that share a network namespace, share IPC, and can\nshare volumes. They are always placed on the same node, always started together,\nand always terminated together.",[108,392,394],{"id":393},"what-sharing-a-network-namespace-means","What sharing a network namespace means",[15,396,397,398,401],{},"Every container in a pod sees the same IP address and the same port space. They\nreach each other over ",[46,399,400],{},"localhost",", and they cannot both bind the same port.",[147,403,405],{"className":149,"code":404,"language":151,"meta":152,"style":152},"apiVersion: v1\nkind: Pod\nmetadata:\n  name: web\nspec:\n  containers:\n    - name: app\n      image: myapp:1.4\n      ports:\n        - containerPort: 8080\n    - name: metrics-proxy\n      image: proxy:2.0\n      ports:\n        - containerPort: 9090\n",[46,406,407,416,425,431,440,446,453,465,474,481,493,504,513,519],{"__ignoreMap":152},[156,408,409,411,413],{"class":158,"line":159},[156,410,163],{"class":162},[156,412,167],{"class":166},[156,414,415],{"class":170},"v1\n",[156,417,418,420,422],{"class":158,"line":174},[156,419,177],{"class":162},[156,421,167],{"class":166},[156,423,424],{"class":170},"Pod\n",[156,426,427,429],{"class":158,"line":185},[156,428,188],{"class":162},[156,430,191],{"class":166},[156,432,433,435,437],{"class":158,"line":194},[156,434,197],{"class":162},[156,436,167],{"class":166},[156,438,439],{"class":170},"web\n",[156,441,442,444],{"class":158,"line":205},[156,443,208],{"class":162},[156,445,191],{"class":166},[156,447,448,451],{"class":158,"line":213},[156,449,450],{"class":162},"  containers",[156,452,191],{"class":166},[156,454,455,458,460,462],{"class":158,"line":225},[156,456,457],{"class":166},"    - ",[156,459,266],{"class":162},[156,461,167],{"class":166},[156,463,464],{"class":170},"app\n",[156,466,467,470,472],{"class":158,"line":233},[156,468,469],{"class":162},"      image",[156,471,167],{"class":166},[156,473,281],{"class":170},[156,475,476,479],{"class":158,"line":241},[156,477,478],{"class":162},"      ports",[156,480,191],{"class":166},[156,482,483,485,488,490],{"class":158,"line":252},[156,484,263],{"class":166},[156,486,487],{"class":162},"containerPort",[156,489,167],{"class":166},[156,491,492],{"class":221},"8080\n",[156,494,495,497,499,501],{"class":158,"line":260},[156,496,457],{"class":166},[156,498,266],{"class":162},[156,500,167],{"class":166},[156,502,503],{"class":170},"metrics-proxy\n",[156,505,506,508,510],{"class":158,"line":273},[156,507,469],{"class":162},[156,509,167],{"class":166},[156,511,512],{"class":170},"proxy:2.0\n",[156,514,515,517],{"class":158,"line":284},[156,516,478],{"class":162},[156,518,191],{"class":166},[156,520,522,524,526,528],{"class":158,"line":521},14,[156,523,263],{"class":166},[156,525,487],{"class":162},[156,527,167],{"class":166},[156,529,530],{"class":221},"9090\n",[15,532,533,534,537],{},"The proxy scrapes ",[46,535,536],{},"http:\u002F\u002Flocalhost:8080"," — no service discovery, no DNS, no\nnetwork hop. This is the sidecar pattern, and the shared namespace is the whole\nreason it works.",[539,540,541],"note",{},[15,542,543],{},"Two containers in one pod is a design decision, not a packaging convenience. The\nright question is whether they must scale together and die together. If either\nanswer is no, they belong in separate pods.",[108,545,547],{"id":546},"init-containers","Init containers",[15,549,550],{},"Init containers run to completion, in order, before any app container starts. If\none fails, the pod restarts according to its policy and the sequence begins again.",[147,552,554],{"className":149,"code":553,"language":151,"meta":152,"style":152},"spec:\n  initContainers:\n    - name: wait-for-db\n      image: busybox:1.36\n      command: ['sh', '-c', 'until nc -z db 5432; do sleep 1; done']\n",[46,555,556,562,569,580,589],{"__ignoreMap":152},[156,557,558,560],{"class":158,"line":159},[156,559,208],{"class":162},[156,561,191],{"class":166},[156,563,564,567],{"class":158,"line":174},[156,565,566],{"class":162},"  initContainers",[156,568,191],{"class":166},[156,570,571,573,575,577],{"class":158,"line":185},[156,572,457],{"class":166},[156,574,266],{"class":162},[156,576,167],{"class":166},[156,578,579],{"class":170},"wait-for-db\n",[156,581,582,584,586],{"class":158,"line":194},[156,583,469],{"class":162},[156,585,167],{"class":166},[156,587,588],{"class":170},"busybox:1.36\n",[156,590,591,594,596,599,601,604,606,609],{"class":158,"line":205},[156,592,593],{"class":162},"      command",[156,595,290],{"class":166},[156,597,598],{"class":170},"'sh'",[156,600,128],{"class":166},[156,602,603],{"class":170},"'-c'",[156,605,128],{"class":166},[156,607,608],{"class":170},"'until nc -z db 5432; do sleep 1; done'",[156,610,296],{"class":166},[15,612,613],{},"They are the correct place for migrations, waiting on a dependency, or fetching\nconfiguration — anything that must be finished before the app process begins.",[108,615,617],{"id":616},"restart-policy-is-per-pod-not-per-container","Restart policy is per pod, not per container",[15,619,620,623,624,128,627,629,630,633,634,636],{},[46,621,622],{},"restartPolicy"," applies to the pod as a whole: ",[46,625,626],{},"Always",[46,628,309],{}," or ",[46,631,632],{},"Never",".\nDeployments require ",[46,635,626],{},". Jobs require one of the other two.",[15,638,639,640,643],{},"A crashing container is restarted in place by the kubelet, with exponential backoff\nup to five minutes. That backoff is what ",[46,641,642],{},"CrashLoopBackOff"," means — the pod is not\nbroken beyond repair, the kubelet is simply waiting before its next attempt.",[326,645,328],{},{"title":152,"searchDepth":185,"depth":185,"links":647},[648,649,650],{"id":393,"depth":174,"text":394},{"id":546,"depth":174,"text":547},{"id":616,"depth":174,"text":617},"Shared network and storage namespaces, and why the unit is not the container.",{},"\u002Flearn\u002Fen\u002Fcourses\u002Fpods\u002Fthe-pod",{"title":379,"description":651},"learn\u002Fen\u002Fcourses\u002Fpods\u002F01.the-pod","MxEnNnEovq7oJ35S9_DH8RQtcRph-8E1rjzvVskgg5U",{"id":4,"title":5,"access":6,"body":658,"description":334,"extension":335,"lang":336,"meta":875,"navigation":338,"order":174,"partial":339,"path":340,"seo":876,"stem":342,"__hash__":343},{"type":8,"value":659,"toc":870},[660,662,664,728,730,732,734,736,742,744,748,750,852,860,868],[11,661,5],{"id":13},[15,663,17],{},[19,665,666,676],{},[22,667,668],{},[25,669,670,672,674],{},[28,671,30],{},[28,673,33],{},[28,675,36],{},[38,677,678,688,698,708,718],{},[25,679,680,684,686],{},[43,681,682],{},[46,683,48],{},[43,685,51],{},[43,687,54],{},[25,689,690,694,696],{},[43,691,692],{},[46,693,61],{},[43,695,64],{},[43,697,67],{},[25,699,700,704,706],{},[43,701,702],{},[46,703,74],{},[43,705,77],{},[43,707,80],{},[25,709,710,714,716],{},[43,711,712],{},[46,713,87],{},[43,715,90],{},[43,717,93],{},[25,719,720,724,726],{},[43,721,722],{},[46,723,100],{},[43,725,103],{},[43,727,106],{},[108,729,111],{"id":110},[15,731,114],{},[15,733,117],{},[108,735,121],{"id":120},[15,737,124,738,128,740,132],{},[46,739,127],{},[46,741,131],{},[15,743,135],{},[137,745,746],{},[15,747,141],{},[108,749,145],{"id":144},[147,751,752],{"className":149,"code":150,"language":151,"meta":152,"style":152},[46,753,754,762,770,776,784,790,798,804,810,818,824,834,842],{"__ignoreMap":152},[156,755,756,758,760],{"class":158,"line":159},[156,757,163],{"class":162},[156,759,167],{"class":166},[156,761,171],{"class":170},[156,763,764,766,768],{"class":158,"line":174},[156,765,177],{"class":162},[156,767,167],{"class":166},[156,769,182],{"class":170},[156,771,772,774],{"class":158,"line":185},[156,773,188],{"class":162},[156,775,191],{"class":166},[156,777,778,780,782],{"class":158,"line":194},[156,779,197],{"class":162},[156,781,167],{"class":166},[156,783,202],{"class":170},[156,785,786,788],{"class":158,"line":205},[156,787,208],{"class":162},[156,789,191],{"class":166},[156,791,792,794,796],{"class":158,"line":213},[156,793,216],{"class":162},[156,795,167],{"class":166},[156,797,222],{"class":221},[156,799,800,802],{"class":158,"line":225},[156,801,228],{"class":162},[156,803,191],{"class":166},[156,805,806,808],{"class":158,"line":233},[156,807,236],{"class":162},[156,809,191],{"class":166},[156,811,812,814,816],{"class":158,"line":241},[156,813,244],{"class":162},[156,815,167],{"class":166},[156,817,249],{"class":170},[156,819,820,822],{"class":158,"line":252},[156,821,255],{"class":162},[156,823,191],{"class":166},[156,825,826,828,830,832],{"class":158,"line":260},[156,827,263],{"class":166},[156,829,266],{"class":162},[156,831,167],{"class":166},[156,833,202],{"class":170},[156,835,836,838,840],{"class":158,"line":273},[156,837,276],{"class":162},[156,839,167],{"class":166},[156,841,281],{"class":170},[156,843,844,846,848,850],{"class":158,"line":284},[156,845,287],{"class":162},[156,847,290],{"class":166},[156,849,293],{"class":170},[156,851,296],{"class":166},[15,853,854,302,856,306,858,310],{},[46,855,301],{},[46,857,305],{},[46,859,309],{},[312,861,862],{},[15,863,316,864,320,866,324],{},[46,865,319],{},[46,867,323],{},[326,869,328],{},{"title":152,"searchDepth":185,"depth":185,"links":871},[872,873,874],{"id":110,"depth":174,"text":111},{"id":120,"depth":174,"text":121},{"id":144,"depth":174,"text":145},{},{"title":5,"description":334},{"id":345,"title":346,"access":6,"body":878,"description":351,"draft":339,"estimatedMinutes":352,"extension":335,"featured":339,"icon":353,"lang":336,"level":354,"meta":882,"navigation":338,"order":159,"path":356,"prerequisites":883,"resources":884,"seo":886,"sku":364,"stem":365,"subjects":887,"summary":368,"tags":888,"updated":374,"__hash__":375},{"type":8,"value":879,"toc":880},[],{"title":152,"searchDepth":185,"depth":185,"links":881},[],{},[],[885],{"label":360,"file":361,"access":6,"size":362},{"title":346,"description":351},[367],[370,371,372,373],{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":892},0,24,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m6 9l6 6l6-6\"\u002F>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":894},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m21 21l-4.34-4.34\"\u002F>\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"\u002F>\u003C\u002Fg>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":896},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Ccircle cx=\"12\" cy=\"12\" r=\"4\"\u002F>\u003Cpath d=\"M12 2v2m0 16v2M4.93 4.93l1.41 1.41m11.32 11.32l1.41 1.41M2 12h2m16 0h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41\"\u002F>\u003C\u002Fg>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":898},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":900},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M5 12h14m-7-7l7 7l-7 7\"\u002F>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":902},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":904},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"18\" height=\"18\" x=\"3\" y=\"3\" rx=\"2\"\u002F>\u003Cpath d=\"M9 3v18\"\u002F>\u003C\u002Fg>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":906},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m9 18l6-6l-6-6\"\u002F>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":908},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m12 19l-7-7l7-7m7 7H5\"\u002F>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":910},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m15 10l5 5l-5 5\"\u002F>\u003Cpath d=\"M4 4v7a4 4 0 0 0 4 4h12\"\u002F>\u003C\u002Fg>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":912},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m22 7l-8.991 5.727a2 2 0 0 1-2.009 0L2 7\"\u002F>\u003Crect width=\"20\" height=\"16\" x=\"2\" y=\"4\" rx=\"2\"\u002F>\u003C\u002Fg>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":914},"\u003Cpath fill=\"currentColor\" d=\"M14.234 10.162L22.977 0h-2.072l-7.591 8.824L7.251 0H.258l9.168 13.343L.258 24H2.33l8.016-9.318L16.749 24h6.993zm-2.837 3.299l-.929-1.329L3.076 1.56h3.182l5.965 8.532l.929 1.329l7.754 11.09h-3.182z\"\u002F>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":916,"hidden":338},"\u003Cpath fill=\"currentColor\" d=\"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037c-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85c3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.06 2.06 0 0 1-2.063-2.065a2.064 2.064 0 1 1 2.063 2.065m1.782 13.019H3.555V9h3.564zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0z\"\u002F>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":918},"\u003Cpath fill=\"currentColor\" d=\"M12 24C5.385 24 0 18.615 0 12S5.385 0 12 0s12 5.385 12 12s-5.385 12-12 12m10.12-10.358c-.35-.11-3.17-.953-6.384-.438c1.34 3.684 1.887 6.684 1.992 7.308a10.28 10.28 0 0 0 4.395-6.87zm-6.115 7.808c-.153-.9-.75-4.032-2.19-7.77l-.066.02c-5.79 2.015-7.86 6.025-8.04 6.4a10.16 10.16 0 0 0 6.29 2.166c1.42 0 2.77-.29 4-.814zm-11.62-2.58c.232-.4 3.045-5.055 8.332-6.765q.202-.067.405-.12q-.392-.879-.832-1.74C7.17 11.775 2.206 11.71 1.756 11.7l-.004.312c0 2.633.998 5.037 2.634 6.855zm-2.42-8.955c.46.008 4.683.026 9.477-1.248a66 66 0 0 0-3.8-5.928a10.28 10.28 0 0 0-5.676 7.17zM9.6 2.052c.282.38 2.145 2.914 3.822 6c3.645-1.365 5.19-3.44 5.373-3.702A10.2 10.2 0 0 0 12 1.764c-.825 0-1.63.1-2.4.285zm10.335 3.483c-.218.29-1.935 2.493-5.724 4.04c.24.49.47.985.68 1.486c.08.18.15.36.22.53c3.41-.43 6.8.26 7.14.33c-.02-2.42-.88-4.64-2.31-6.38z\"\u002F>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":920},"\u003Cpath fill=\"currentColor\" d=\"M12 .297c-6.63 0-12 5.373-12 12c0 5.303 3.438 9.8 8.205 11.385c.6.113.82-.258.82-.577c0-.285-.01-1.04-.015-2.04c-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729c1.205.084 1.838 1.236 1.838 1.236c1.07 1.835 2.809 1.305 3.495.998c.108-.776.417-1.305.76-1.605c-2.665-.3-5.466-1.332-5.466-5.93c0-1.31.465-2.38 1.235-3.22c-.135-.303-.54-1.523.105-3.176c0 0 1.005-.322 3.3 1.23c.96-.267 1.98-.399 3-.405c1.02.006 2.04.138 3 .405c2.28-1.552 3.285-1.23 3.285-1.23c.645 1.653.24 2.873.12 3.176c.765.84 1.23 1.91 1.23 3.22c0 4.61-2.805 5.625-5.475 5.92c.42.36.81 1.096.81 2.22c0 1.606-.015 2.896-.015 3.286c0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12\"\u002F>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":922},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M10 22V7a1 1 0 0 0-1-1H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5a1 1 0 0 0-1-1H2\"\u002F>\u003Crect width=\"8\" height=\"8\" x=\"14\" y=\"2\" rx=\"1\"\u002F>\u003C\u002Fg>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":924},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6\"\u002F>\u003Crect width=\"12\" height=\"8\" x=\"6\" y=\"14\" rx=\"1\"\u002F>\u003C\u002Fg>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":926},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0zM22 10v6\"\u002F>\u003Cpath d=\"M6 12.5V16a6 3 0 0 0 12 0v-3.5\"\u002F>\u003C\u002Fg>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":928},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M10 2v8l3-3l3 3V2\"\u002F>\u003Cpath d=\"M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H19a1 1 0 0 1 1 1v18a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20\"\u002F>\u003C\u002Fg>",{"left":890,"top":890,"width":891,"height":891,"rotate":890,"vFlip":339,"hFlip":339,"body":930},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M13.4 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-7.4M2 6h4m-4 4h4m-4 4h4m-4 4h4\"\u002F>\u003Cpath d=\"M21.378 5.626a1 1 0 1 0-3.004-3.004l-5.01 5.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z\"\u002F>\u003C\u002Fg>",1787597895674]