[{"data":1,"prerenderedAt":480},["ShallowReactive",2],{"docsv3-nav":3,"\u002Fdocs\u002Fv3\u002Fintegrations\u002Fkajabi-account-sharing-prevention":207},[4],{"title":5,"path":6,"stem":7,"children":8,"page":188},"V3","\u002Fdocs\u002Fv3","1.docs\u002Fv3",[9,13,17,21,38,87,189,198],{"title":10,"path":11,"stem":12},"Introduction","\u002Fdocs\u002Fv3\u002Fintroduction","1.docs\u002Fv3\u002F1.Introduction",{"title":14,"path":15,"stem":16},"Quick start","\u002Fdocs\u002Fv3\u002Fquick-start","1.docs\u002Fv3\u002F2.Quick start",{"title":18,"path":19,"stem":20},"Challenge flow","\u002Fdocs\u002Fv3\u002Fchallenge-flow","1.docs\u002Fv3\u002F3.Challenge flow",{"title":22,"path":23,"stem":24,"children":25},"Fundamentals","\u002Fdocs\u002Fv3\u002Ffundamentals","1.docs\u002Fv3\u002F4.fundamentals",[26,30,34],{"title":27,"path":28,"stem":29},"Signup protection","\u002Fdocs\u002Fv3\u002Ffundamentals\u002Fsignup-protection","1.docs\u002Fv3\u002F4.fundamentals\u002F00.Signup protection",{"title":31,"path":32,"stem":33},"Login protection","\u002Fdocs\u002Fv3\u002Ffundamentals\u002Flogin-protection","1.docs\u002Fv3\u002F4.fundamentals\u002F01.Login protection",{"title":35,"path":36,"stem":37},"Access protection","\u002Fdocs\u002Fv3\u002Ffundamentals\u002Faccess-protection","1.docs\u002Fv3\u002F4.fundamentals\u002F02.Access protection",{"title":39,"path":40,"stem":41,"children":42},"Guides","\u002Fdocs\u002Fv3\u002Fguides","1.docs\u002Fv3\u002F5.guides",[43,47,51,55,59,63,67,71,75,79,83],{"title":44,"path":45,"stem":46},"Account sharing prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-sharing-prevention","1.docs\u002Fv3\u002F5.guides\u002F1.Account sharing prevention",{"title":48,"path":49,"stem":50},"Web scraping prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fweb-scraping-prevention","1.docs\u002Fv3\u002F5.guides\u002F13.Web scraping prevention",{"title":52,"path":53,"stem":54},"Ban enforcement","\u002Fdocs\u002Fv3\u002Fguides\u002Fban-enforcement","1.docs\u002Fv3\u002F5.guides\u002F14.Ban enforcement",{"title":56,"path":57,"stem":58},"Chargeback dispute","\u002Fdocs\u002Fv3\u002Fguides\u002Fchargeback-dispute","1.docs\u002Fv3\u002F5.guides\u002F15.Chargeback dispute",{"title":60,"path":61,"stem":62},"Multi-accounting prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fmulti-accounting-prevention","1.docs\u002Fv3\u002F5.guides\u002F16.Multi-accounting prevention",{"title":64,"path":65,"stem":66},"Account takeover prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-takeover-prevention","1.docs\u002Fv3\u002F5.guides\u002F2.Account takeover prevention",{"title":68,"path":69,"stem":70},"Risky transaction prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Frisky-transaction-prevention","1.docs\u002Fv3\u002F5.guides\u002F20.Risky transaction prevention",{"title":72,"path":73,"stem":74},"Fake account detection","\u002Fdocs\u002Fv3\u002Fguides\u002Ffake-account-detection","1.docs\u002Fv3\u002F5.guides\u002F3.Fake account detection",{"title":76,"path":77,"stem":78},"Bot detection","\u002Fdocs\u002Fv3\u002Fguides\u002Fbot-detection","1.docs\u002Fv3\u002F5.guides\u002F4.Bot detection",{"title":80,"path":81,"stem":82},"Card testing prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fcard-testing-prevention","1.docs\u002Fv3\u002F5.guides\u002F5.Card testing prevention",{"title":84,"path":85,"stem":86},"Incentive abuse prevention","\u002Fdocs\u002Fv3\u002Fguides\u002Fincentive-abuse-prevention","1.docs\u002Fv3\u002F5.guides\u002F9.Incentive abuse prevention",{"title":88,"path":89,"stem":90,"children":91,"page":188},"Concepts","\u002Fdocs\u002Fv3\u002Fconcepts","1.docs\u002Fv3\u002F6.concepts",[92,96,100,104,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164,168,172,176,180,184],{"title":93,"path":94,"stem":95},"Evaluations","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fevaluations","1.docs\u002Fv3\u002F6.concepts\u002F01.evaluations",{"title":97,"path":98,"stem":99},"Actions","\u002Fdocs\u002Fv3\u002Fconcepts\u002Factions","1.docs\u002Fv3\u002F6.concepts\u002F02.actions",{"title":101,"path":102,"stem":103},"Signals","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fsignals","1.docs\u002Fv3\u002F6.concepts\u002F03.signals",{"title":105,"path":106,"stem":107},"Checks","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fchecks","1.docs\u002Fv3\u002F6.concepts\u002F04.checks",{"title":109,"path":110,"stem":111},"Risks","\u002Fdocs\u002Fv3\u002Fconcepts\u002Frisks","1.docs\u002Fv3\u002F6.concepts\u002F05.risks",{"title":113,"path":114,"stem":115},"Verdicts","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fverdicts","1.docs\u002Fv3\u002F6.concepts\u002F06.verdicts",{"title":117,"path":118,"stem":119},"Policies","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fpolicies","1.docs\u002Fv3\u002F6.concepts\u002F07.policies",{"title":121,"path":122,"stem":123},"Challenges","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fchallenges","1.docs\u002Fv3\u002F6.concepts\u002F08.challenges",{"title":125,"path":126,"stem":127},"Concurrency","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fconcurrency","1.docs\u002Fv3\u002F6.concepts\u002F09.concurrency",{"title":129,"path":130,"stem":131},"Impossible travel","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fimpossible-travel","1.docs\u002Fv3\u002F6.concepts\u002F10.impossible-travel",{"title":133,"path":134,"stem":135},"Bots","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fbots","1.docs\u002Fv3\u002F6.concepts\u002F11.bots",{"title":137,"path":138,"stem":139},"Devices","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fdevices","1.docs\u002Fv3\u002F6.concepts\u002F12.devices",{"title":141,"path":142,"stem":143},"Fingerprints","\u002Fdocs\u002Fv3\u002Fconcepts\u002Ffingerprints","1.docs\u002Fv3\u002F6.concepts\u002F13.fingerprints",{"title":145,"path":146,"stem":147},"People","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fpeople","1.docs\u002Fv3\u002F6.concepts\u002F14.people",{"title":149,"path":150,"stem":151},"Lists","\u002Fdocs\u002Fv3\u002Fconcepts\u002Flists","1.docs\u002Fv3\u002F6.concepts\u002F15.lists",{"title":153,"path":154,"stem":155},"Account takeover","\u002Fdocs\u002Fv3\u002Fconcepts\u002Faccount-takeover","1.docs\u002Fv3\u002F6.concepts\u002F16.account-takeover",{"title":157,"path":158,"stem":159},"Account sharing","\u002Fdocs\u002Fv3\u002Fconcepts\u002Faccount-sharing","1.docs\u002Fv3\u002F6.concepts\u002F17.account-sharing",{"title":161,"path":162,"stem":163},"Fake account","\u002Fdocs\u002Fv3\u002Fconcepts\u002Ffake-account","1.docs\u002Fv3\u002F6.concepts\u002F18.fake-account",{"title":165,"path":166,"stem":167},"Scraping","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fscraping","1.docs\u002Fv3\u002F6.concepts\u002F19.scraping",{"title":169,"path":170,"stem":171},"Linked accounts","\u002Fdocs\u002Fv3\u002Fconcepts\u002Flinked-accounts","1.docs\u002Fv3\u002F6.concepts\u002F20.linked-accounts",{"title":173,"path":174,"stem":175},"New IP","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fip","1.docs\u002Fv3\u002F6.concepts\u002F21.ip",{"title":177,"path":178,"stem":179},"Anonymizing network","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fanonymizing-network","1.docs\u002Fv3\u002F6.concepts\u002F22.anonymizing-network",{"title":181,"path":182,"stem":183},"Email quality","\u002Fdocs\u002Fv3\u002Fconcepts\u002Femail","1.docs\u002Fv3\u002F6.concepts\u002F23.email",{"title":185,"path":186,"stem":187},"Velocity","\u002Fdocs\u002Fv3\u002Fconcepts\u002Fvelocity","1.docs\u002Fv3\u002F6.concepts\u002F24.velocity",false,{"title":190,"path":191,"stem":192,"children":193,"page":188},"Advanced","\u002Fdocs\u002Fv3\u002Fadvanced","1.docs\u002Fv3\u002F7.Advanced",[194],{"title":195,"path":196,"stem":197},"Proxy setup","\u002Fdocs\u002Fv3\u002Fadvanced\u002Fproxy-setup","1.docs\u002Fv3\u002F7.Advanced\u002F1.Proxy-setup",{"title":199,"path":200,"stem":201,"children":202},"Integrations","\u002Fdocs\u002Fv3\u002Fintegrations","1.docs\u002Fv3\u002F8.integrations",[203],{"title":204,"path":205,"stem":206},"Kajabi","\u002Fdocs\u002Fv3\u002Fintegrations\u002Fkajabi-account-sharing-prevention","1.docs\u002Fv3\u002F8.integrations\u002F1.Kajabi account sharing prevention",{"id":208,"title":209,"body":210,"description":473,"extension":474,"meta":475,"navigation":476,"path":205,"rawbody":477,"seo":478,"stem":206,"__hash__":479},"docsv3\u002F1.docs\u002Fv3\u002F8.integrations\u002F1.Kajabi account sharing prevention.md","Kajabi account sharing prevention",{"type":211,"value":212,"toc":466},"minimark",[213,218,222,229,234,237,249,326,339,345,349,356,371,374,378,381,408,411,417,421,427,433,443,447,462],[214,215,217],"h1",{"id":216},"kajabi-account-sharing-prevention-with-rupt","Kajabi account sharing prevention with Rupt",[219,220,221],"p",{},"Kajabi has no built-in account sharing or password sharing protection. Rupt adds it with a single script tag: paste it into Kajabi's header page scripts, add a policy in the Rupt dashboard, and Rupt detects concurrent sessions, challenges the extra viewer, and logs unauthorized devices out. No server code required.",[219,223,224,225,228],{},"This guide assumes you've already chosen Rupt and want to wire it into Kajabi. For the background on why account sharing happens and how detection works, see ",[226,227,44],"a",{"href":45},".",[230,231,233],"h2",{"id":232},"step-1-add-the-rupt-script-to-kajabi","Step 1: Add the Rupt script to Kajabi",[219,235,236],{},"The script loads on every page, reads the signed-in Kajabi user on its own, and triggers a challenge when one of your policies fires.",[219,238,239,240,244,245,248],{},"In Kajabi, go to ",[241,242,243],"strong",{},"Settings → Site Details → Page scripts",", paste this into ",[241,246,247],{},"Header page scripts",", and save:",[250,251,256],"pre",{"className":252,"code":253,"language":254,"meta":255,"style":255},"language-html shiki shiki-themes material-theme-lighter one-dark-pro monokai","\u003Cscript\n  src=\"https:\u002F\u002Fcdn.rupt.dev\u002Fintegrations\u002Fkajabi\u002F1.2.0\u002Fkajabi.js\"\n  data-client-id=\"xxxx-xxxx-xxxx-xxxx\"\n  async\n>\u003C\u002Fscript>\n","html","",[257,258,259,272,293,308,314],"code",{"__ignoreMap":255},[260,261,264,268],"span",{"class":262,"line":263},"line",1,[260,265,267],{"class":266},"shEKG","\u003C",[260,269,271],{"class":270},"slwgX","script\n",[260,273,275,279,282,286,290],{"class":262,"line":274},2,[260,276,278],{"class":277},"sXIpk","  src",[260,280,281],{"class":266},"=",[260,283,285],{"class":284},"s9QZx","\"",[260,287,289],{"class":288},"siibJ","https:\u002F\u002Fcdn.rupt.dev\u002Fintegrations\u002Fkajabi\u002F1.2.0\u002Fkajabi.js",[260,291,292],{"class":284},"\"\n",[260,294,296,299,301,303,306],{"class":262,"line":295},3,[260,297,298],{"class":277},"  data-client-id",[260,300,281],{"class":266},[260,302,285],{"class":284},[260,304,305],{"class":288},"xxxx-xxxx-xxxx-xxxx",[260,307,292],{"class":284},[260,309,311],{"class":262,"line":310},4,[260,312,313],{"class":277},"  async\n",[260,315,317,320,323],{"class":262,"line":316},5,[260,318,319],{"class":266},">\u003C\u002F",[260,321,322],{"class":270},"script",[260,324,325],{"class":266},">\n",[219,327,328,329,331,332,338],{},"Swap ",[257,330,305],{}," for your client ID from the ",[226,333,337],{"href":334,"rel":335},"https:\u002F\u002Fapp.rupt.dev",[336],"nofollow","Rupt dashboard",". There's nothing else to wire up.",[219,340,341,342,344],{},"Rupt's ",[226,343,35],{"href":36}," handles detection, the challenge, owner verification, and device capping on the client. No extra code on your side.",[230,346,348],{"id":347},"step-2-configure-your-account-sharing-policies","Step 2: Configure your account sharing policies",[219,350,351,352,355],{},"Policies are what actually catch sharing. Without at least one policy on the ",[257,353,354],{},"access"," trigger, the script runs but never challenges anyone.",[219,357,358,359,364,365,367,368,370],{},"A policy has a trigger (the event it runs on) and a verdict. In your ",[226,360,363],{"href":361,"rel":362},"https:\u002F\u002Fapp.rupt.dev\u002Fpolicies",[336],"policies dashboard",", add a policy on the ",[257,366,354],{}," trigger that challenges when it sees concurrent sessions or too many devices. The ",[226,369,44],{"href":45}," guide has the exact policies to start from.",[219,372,373],{},"Set the challenge success URL to your signup or offer page so the extra viewer can start their own subscription.",[230,375,377],{"id":376},"step-3-sync-kajabi-contacts-optional","Step 3: Sync Kajabi contacts (optional)",[219,379,380],{},"Connect the Kajabi API and Rupt shows each user's name, email, and phone next to their devices.",[382,383,384,394,401],"ol",{},[385,386,387,388,393],"li",{},"Open ",[226,389,392],{"href":390,"rel":391},"https:\u002F\u002Fapp.rupt.dev\u002Fsettings\u002Fintegrations\u002Fkajabi",[336],"integration settings"," in the Rupt dashboard and enable Kajabi.",[385,395,396,397,400],{},"Paste your Kajabi API key and secret (find them in Kajabi under ",[241,398,399],{},"Settings → Account",").",[385,402,403,404,407],{},"Click ",[241,405,406],{},"Test connection",", then save.",[219,409,410],{},"Once connected, each user's Kajabi name, email, and phone appear next to their device list in the Rupt dashboard. Rupt matches contacts by the Kajabi contact id the script already sends, so details fill in as your users connect.",[219,412,413,414,416],{},"If no sessions show up after a few logins, check that the script is in ",[241,415,247],{}," (not the footer) and that the client ID matches the one in your Rupt dashboard.",[230,418,420],{"id":419},"frequently-asked-questions","Frequently asked questions",[219,422,423,426],{},[241,424,425],{},"Does Kajabi prevent account sharing?","\nKajabi has no native account sharing or password sharing protection. You add it by installing Rupt, which detects concurrent sessions and challenges unauthorized viewers through a script tag in Kajabi's header page scripts.",[219,428,429,432],{},[241,430,431],{},"How do I stop password sharing on Kajabi?","\nAdd the Rupt script under Settings → Site Details → Page scripts, then create an access policy in the Rupt dashboard that triggers on concurrent sessions. Rupt handles detection, the challenge, and device logout automatically.",[219,434,435,438,439,442],{},[241,436,437],{},"Does Rupt work with Kajabi's existing login?","\nYes. The Rupt script reads the signed-in Kajabi user from the page, so no changes to Kajabi's login or member portal are needed. It loads with ",[257,440,441],{},"async",", so it doesn't block your pages.",[230,444,446],{"id":445},"related","Related",[448,449,450,454,458],"ul",{},[385,451,452],{},[226,453,44],{"href":45},[385,455,456],{},[226,457,35],{"href":36},[385,459,460],{},[226,461,18],{"href":19},[463,464,465],"style",{},"html pre.shiki code .shEKG, html code.shiki .shEKG{--shiki-light:#39ADB5;--shiki-default:#ABB2BF;--shiki-dark:#F8F8F2}html pre.shiki code .slwgX, html code.shiki .slwgX{--shiki-light:#E53935;--shiki-default:#E06C75;--shiki-dark:#F92672}html pre.shiki code .sXIpk, html code.shiki .sXIpk{--shiki-light:#9C3EDA;--shiki-default:#D19A66;--shiki-dark:#A6E22E}html pre.shiki code .s9QZx, html code.shiki .s9QZx{--shiki-light:#39ADB5;--shiki-default:#98C379;--shiki-dark:#E6DB74}html pre.shiki code .siibJ, html code.shiki .siibJ{--shiki-light:#91B859;--shiki-default:#98C379;--shiki-dark:#E6DB74}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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":255,"searchDepth":274,"depth":274,"links":467},[468,469,470,471,472],{"id":232,"depth":274,"text":233},{"id":347,"depth":274,"text":348},{"id":376,"depth":274,"text":377},{"id":419,"depth":274,"text":420},{"id":445,"depth":274,"text":446},"Kajabi has no native account sharing protection. Add Rupt with one script tag to detect and stop account and password sharing on your courses.","md",{},{"title":204},"---\ntitle: Kajabi account sharing prevention\ndescription: Kajabi has no native account sharing protection. Add Rupt with one script tag to detect and stop account and password sharing on your courses.\nnavigation:\n  title: Kajabi\n---\n\n# Kajabi account sharing prevention with Rupt\n\nKajabi has no built-in account sharing or password sharing protection. Rupt adds it with a single script tag: paste it into Kajabi's header page scripts, add a policy in the Rupt dashboard, and Rupt detects concurrent sessions, challenges the extra viewer, and logs unauthorized devices out. No server code required.\n\nThis guide assumes you've already chosen Rupt and want to wire it into Kajabi. For the background on why account sharing happens and how detection works, see [Account sharing prevention](\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-sharing-prevention).\n\n## Step 1: Add the Rupt script to Kajabi\n\nThe script loads on every page, reads the signed-in Kajabi user on its own, and triggers a challenge when one of your policies fires.\n\nIn Kajabi, go to **Settings → Site Details → Page scripts**, paste this into **Header page scripts**, and save:\n\n```html\n\u003Cscript\n  src=\"https:\u002F\u002Fcdn.rupt.dev\u002Fintegrations\u002Fkajabi\u002F1.2.0\u002Fkajabi.js\"\n  data-client-id=\"xxxx-xxxx-xxxx-xxxx\"\n  async\n>\u003C\u002Fscript>\n```\n\nSwap `xxxx-xxxx-xxxx-xxxx` for your client ID from the [Rupt dashboard](https:\u002F\u002Fapp.rupt.dev). There's nothing else to wire up.\n\nRupt's [Access protection](\u002Fdocs\u002Fv3\u002Ffundamentals\u002Faccess-protection) handles detection, the challenge, owner verification, and device capping on the client. No extra code on your side.\n\n## Step 2: Configure your account sharing policies\n\nPolicies are what actually catch sharing. Without at least one policy on the `access` trigger, the script runs but never challenges anyone.\n\nA policy has a trigger (the event it runs on) and a verdict. In your [policies dashboard](https:\u002F\u002Fapp.rupt.dev\u002Fpolicies), add a policy on the `access` trigger that challenges when it sees concurrent sessions or too many devices. The [Account sharing prevention](\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-sharing-prevention) guide has the exact policies to start from.\n\nSet the challenge success URL to your signup or offer page so the extra viewer can start their own subscription.\n\n## Step 3: Sync Kajabi contacts (optional)\n\nConnect the Kajabi API and Rupt shows each user's name, email, and phone next to their devices.\n\n1. Open [integration settings](https:\u002F\u002Fapp.rupt.dev\u002Fsettings\u002Fintegrations\u002Fkajabi) in the Rupt dashboard and enable Kajabi.\n2. Paste your Kajabi API key and secret (find them in Kajabi under **Settings → Account**).\n3. Click **Test connection**, then save.\n\nOnce connected, each user's Kajabi name, email, and phone appear next to their device list in the Rupt dashboard. Rupt matches contacts by the Kajabi contact id the script already sends, so details fill in as your users connect.\n\nIf no sessions show up after a few logins, check that the script is in **Header page scripts** (not the footer) and that the client ID matches the one in your Rupt dashboard.\n\n## Frequently asked questions\n\n**Does Kajabi prevent account sharing?**\nKajabi has no native account sharing or password sharing protection. You add it by installing Rupt, which detects concurrent sessions and challenges unauthorized viewers through a script tag in Kajabi's header page scripts.\n\n**How do I stop password sharing on Kajabi?**\nAdd the Rupt script under Settings → Site Details → Page scripts, then create an access policy in the Rupt dashboard that triggers on concurrent sessions. Rupt handles detection, the challenge, and device logout automatically.\n\n**Does Rupt work with Kajabi's existing login?**\nYes. The Rupt script reads the signed-in Kajabi user from the page, so no changes to Kajabi's login or member portal are needed. It loads with `async`, so it doesn't block your pages.\n\n## Related\n\n- [Account sharing prevention](\u002Fdocs\u002Fv3\u002Fguides\u002Faccount-sharing-prevention)\n- [Access protection](\u002Fdocs\u002Fv3\u002Ffundamentals\u002Faccess-protection)\n- [Challenge flow](\u002Fdocs\u002Fv3\u002Fchallenge-flow)\n",{"title":209,"description":473},"7BhN5MfEl6GCiZFDVjMagfeJaYmwIyiFx7MiDGyJM_E",1780466774875]