From cab823bcdf2c4f3d42068c73321c389ea6ecaae5 Mon Sep 17 00:00:00 2001 From: Olivier Gagnon Date: Thu, 16 Sep 2021 21:59:12 -0400 Subject: [PATCH 1/4] take less space in sidebar --- src/Sidebar/ui/SidebarRoot.tsx | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/Sidebar/ui/SidebarRoot.tsx b/src/Sidebar/ui/SidebarRoot.tsx index c53494826..b3a27cd94 100644 --- a/src/Sidebar/ui/SidebarRoot.tsx +++ b/src/Sidebar/ui/SidebarRoot.tsx @@ -101,6 +101,10 @@ const useStyles = makeStyles((theme: Theme) => active: { borderLeft: "3px solid " + colors.primary, }, + listitem: { + paddingTop: theme.spacing(0.1), + paddingBottom: theme.spacing(0.1), + }, }), ); @@ -357,7 +361,7 @@ export function SidebarRoot(props: IProps): React.ReactElement { return ( - + {!open ? : } @@ -365,7 +369,7 @@ export function SidebarRoot(props: IProps): React.ReactElement { - setHackingOpen((old) => !old)}> + setHackingOpen((old) => !old)}> @@ -375,6 +379,7 @@ export function SidebarRoot(props: IProps): React.ReactElement { - setCharacterOpen((old) => !old)}> + setCharacterOpen((old) => !old)}> @@ -479,6 +486,7 @@ export function SidebarRoot(props: IProps): React.ReactElement { {canOpenFactions && ( {canOpenSleeves && ( - setWorldOpen((old) => !old)}> + setWorldOpen((old) => !old)}> @@ -597,6 +607,7 @@ export function SidebarRoot(props: IProps): React.ReactElement { {canJob && ( - setHelpOpen((old) => !old)}> + setHelpOpen((old) => !old)}> @@ -740,6 +755,7 @@ export function SidebarRoot(props: IProps): React.ReactElement { {process.env.NODE_ENV === "development" && ( Date: Thu, 16 Sep 2021 22:16:40 -0400 Subject: [PATCH 2/4] added icon to hide stats --- src/ui/React/CharacterOverview.tsx | 203 ++++++++++++++++------------- 1 file changed, 113 insertions(+), 90 deletions(-) diff --git a/src/ui/React/CharacterOverview.tsx b/src/ui/React/CharacterOverview.tsx index a19e604f6..db855eb20 100644 --- a/src/ui/React/CharacterOverview.tsx +++ b/src/ui/React/CharacterOverview.tsx @@ -18,6 +18,8 @@ import Typography from "@mui/material/Typography"; import Divider from "@mui/material/Divider"; import Button from "@mui/material/Button"; import Collapse from "@mui/material/Collapse"; +import Fab from "@mui/material/Fab"; +import VisibilityOffIcon from "@mui/icons-material/VisibilityOff"; import { colors } from "./Theme"; import { Settings } from "../../Settings/Settings"; @@ -94,10 +96,14 @@ const useStyles = makeStyles({ int: { color: colors.int, }, + nobackground: { + backgroundColor: "#0000", + }, }); export function CharacterOverview({ player, save }: IProps): React.ReactElement { const setRerender = useState(false)[1]; + const [open, setOpen] = useState(true); useEffect(() => { const id = setInterval(() => setRerender((old) => !old), 600); @@ -106,103 +112,120 @@ export function CharacterOverview({ player, save }: IProps): React.ReactElement const classes = useStyles(); return ( - - - - - - - HP  - - - - {numeralWrapper.formatHp(player.hp)} / {numeralWrapper.formatHp(player.max_hp)} - - - + <> + + + + +
+ + + + HP  + + + + {numeralWrapper.formatHp(player.hp)} / {numeralWrapper.formatHp(player.max_hp)} + + + - - - Money  - - - - {numeralWrapper.formatMoney(player.money.toNumber())} - - - + + + Money  + + + + {numeralWrapper.formatMoney(player.money.toNumber())} + + + - - - Hack  - - - - {numeralWrapper.formatSkill(player.hacking_skill)} - - - + + + Hack  + + + + {numeralWrapper.formatSkill(player.hacking_skill)} + + + - - - Str  - - - - {numeralWrapper.formatSkill(player.strength)} - - - + + + Str  + + + + {numeralWrapper.formatSkill(player.strength)} + + + - - - Def  - - - {numeralWrapper.formatSkill(player.defense)} - - + + + Def  + + + + {numeralWrapper.formatSkill(player.defense)} + + + - - - Dex  - - - - {numeralWrapper.formatSkill(player.dexterity)} - - - - - - Agi  - - - {numeralWrapper.formatSkill(player.agility)} - - + + + Dex  + + + + {numeralWrapper.formatSkill(player.dexterity)} + + + + + + Agi  + + + + {numeralWrapper.formatSkill(player.agility)} + + + - - - Cha  - - - {numeralWrapper.formatSkill(player.charisma)} - - - - + + + Cha  + + + + {numeralWrapper.formatSkill(player.charisma)} + + + + + - - - - - - -
+ + + + + + + +
+
+
+ + setOpen((old) => !old)}> + + + - + ); } From 92ec4785a92d995f28067a43464676d822a7ccaf Mon Sep 17 00:00:00 2001 From: Olivier Gagnon Date: Fri, 17 Sep 2021 02:07:08 -0400 Subject: [PATCH 3/4] fix hacking mission looking for a container --- dist/engine.bundle.js | 4 ++-- dist/engineStyle.bundle.js | 2 +- dist/vendor.bundle.js | 40 +++++++++++++++++----------------- src/Missions.jsx | 1 - src/Sidebar/ui/SidebarRoot.tsx | 5 +---- 5 files changed, 24 insertions(+), 28 deletions(-) diff --git a/dist/engine.bundle.js b/dist/engine.bundle.js index b7a29106d..46cd8422f 100644 --- a/dist/engine.bundle.js +++ b/dist/engine.bundle.js @@ -1,4 +1,4 @@ -!function(e){function t(t){for(var n,o,s=t[0],l=t[1],c=t[2],m=0,h=[];m
In this game you control a set of Nodes and use them to try and defeat an enemy. Your Nodes are colored blue, while the enemy's are red. There are also other nodes on the map colored gray that initially belong to neither you nor the enemy. The goal of the game is to capture all of the enemy's Database nodes within the time limit. If you fail to do this, you will lose.

Each Node has three stats: Attack, Defense, and HP. There are five different actions that a Node can take:

Attack - Targets an enemy Node and lowers its HP. The effectiveness is determined by the owner's Attack, the Player's hacking level, and the enemy's defense.

Scan - Targets an enemy Node and lowers its Defense. The effectiveness is determined by the owner's Attack, the Player's hacking level, and the enemy's defense.

Weaken - Targets an enemy Node and lowers its Attack. The effectiveness is determined by the owner's Attack, the Player's hacking level, and the enemy's defense.

Fortify - Raises the Node's Defense. The effectiveness is determined by your hacking level.

Overflow - Raises the Node's Attack but lowers its Defense. The effectiveness is determined by your hacking level.

Note that when determining the effectiveness of the above actions, the TOTAL Attack or Defense of the team is used, not just the Attack/Defense of the individual Node that is performing the action.

To capture a Node, you must lower its HP down to 0.

There are six different types of Nodes:

CPU Core - These are your main Nodes that are used to perform actions. Capable of performing every action

Firewall - Nodes with high defense. These Nodes can 'Fortify'

Database - A special type of Node. The player's objective is to conquer all of the enemy's Database Nodes within the time limit. These Nodes cannot perform any actions

Spam - Conquering one of these Nodes will slow the enemy's trace, giving the player additional time to complete the mission. These Nodes cannot perform any actions

Transfer - Conquering one of these nodes will increase the Attack of all of your CPU Cores by a small fixed percentage. These Nodes are capable of performing every action except the 'Attack' action

Shield - Nodes with high defense. These Nodes can 'Fortify'

To assign an action to a Node, you must first select one of your Nodes. This can be done by simply clicking on it. Double-clicking a node will select all of your Nodes of the same type (e.g. select all CPU Core Nodes or all Transfer Nodes). Note that only Nodes that can perform actions (CPU Core, Transfer, Shield, Firewall) can be selected. Selected Nodes will be denoted with a white highlight. After selecting a Node or multiple Nodes, select its action using the Action Buttons near the top of the screen. Every action also has a corresponding keyboard shortcut.

For certain actions such as attacking, scanning, and weakening, the Node performing the action must have a target. To target another node, simply click-and-drag from the 'source' Node to a target. A Node can only have one target, and you can target any Node that is adjacent to one of your Nodes (immediately above, below, or to the side. NOT diagonal). Furthermore, only CPU Cores and Transfer Nodes can target, since they are the only ones that can perform the related actions. To remove a target, you can simply click on the line that represents the connection between one of your Nodes and its target. Alternatively, you can select the 'source' Node and click the 'Drop Connection' button, or press 'd'.

Other Notes:

-Whenever a miscellenaous Node (not owned by the player or enemy) is conquered, the defense of all remaining miscellaneous Nodes that are not actively being targeted will increase by a fixed percentage.

-Whenever a Node is conquered, its stats are significantly reduced

-Miscellaneous Nodes slowly raise their defense over time

-Nodes slowly regenerate health over time.",MillisecondsPer20Hours:72e6,GameCyclesPer20Hours:36e4,MillisecondsPer10Hours:36e6,GameCyclesPer10Hours:18e4,MillisecondsPer8Hours:288e5,GameCyclesPer8Hours:144e3,MillisecondsPer4Hours:144e5,GameCyclesPer4Hours:72e3,MillisecondsPer2Hours:72e5,GameCyclesPer2Hours:36e3,MillisecondsPerHour:36e5,GameCyclesPerHour:18e3,MillisecondsPerHalfHour:18e5,GameCyclesPerHalfHour:9e3,MillisecondsPerQuarterHour:9e5,GameCyclesPerQuarterHour:4500,MillisecondsPerFiveMinutes:3e5,GameCyclesPerFiveMinutes:1500,FactionWorkHacking:"Faction Hacking Work",FactionWorkField:"Faction Field Work",FactionWorkSecurity:"Faction Security Work",WorkTypeCompany:"Working for Company",WorkTypeCompanyPartTime:"Working for Company part-time",WorkTypeFaction:"Working for Faction",WorkTypeCreateProgram:"Working on Create a Program",WorkTypeStudyClass:"Studying or Taking a class at university",WorkTypeCrime:"Committing a crime",ClassStudyComputerScience:"studying Computer Science",ClassDataStructures:"taking a Data Structures course",ClassNetworks:"taking a Networks course",ClassAlgorithms:"taking an Algorithms course",ClassManagement:"taking a Management course",ClassLeadership:"taking a Leadership course",ClassGymStrength:"training your strength at a gym",ClassGymDefense:"training your defense at a gym",ClassGymDexterity:"training your dexterity at a gym",ClassGymAgility:"training your agility at a gym",ClassDataStructuresBaseCost:40,ClassNetworksBaseCost:80,ClassAlgorithmsBaseCost:320,ClassManagementBaseCost:160,ClassLeadershipBaseCost:320,ClassGymBaseCost:120,ClassStudyComputerScienceBaseExp:.5,ClassDataStructuresBaseExp:1,ClassNetworksBaseExp:2,ClassAlgorithmsBaseExp:4,ClassManagementBaseExp:2,ClassLeadershipBaseExp:4,CrimeShoplift:"shoplift",CrimeRobStore:"rob a store",CrimeMug:"mug someone",CrimeLarceny:"commit larceny",CrimeDrugs:"deal drugs",CrimeBondForgery:"forge corporate bonds",CrimeTraffickArms:"traffick illegal arms",CrimeHomicide:"commit homicide",CrimeGrandTheftAuto:"commit grand theft auto",CrimeKidnap:"kidnap someone for ransom",CrimeAssassination:"assassinate a high-profile target",CrimeHeist:"pull off the ultimate heist",CodingContractBaseFactionRepGain:2500,CodingContractBaseCompanyRepGain:4e3,CodingContractBaseMoneyGain:75e6,TotalNumBitNodes:24,LatestUpdate:"\n v0.53.0 - 2021-09-09 Way too many things. (hydroflame & community)\n -------------------------------------------\n\n ** Dev? **\n\n * The entire codebase has been run through a code prettifier, hurray for consistency. (@threehams)\n * Lots of test. (@threehams)\n * Massive improvements to build speed. (@threehams)\n * Dev notes: This won't affect any players but is immensely useful for me.\n\n ** Hacknet **\n\n * Converted to ts/react\n\n ** Resleeving **\n\n * Converted to ts/react\n\n ** Sleeves **\n\n * Converted to ts/react. The ui should also have a better feel.\n * Fixed a bug that allowed players to recover shock much faster than intended.\n\n ** BN10 **\n\n * You have access to Sleeves right away\n * In BN10 Sleeves start with 75 shock and 25 sync.\n\n ** MathJax **\n\n * Several tooltips have been updated to display the relevant formula in Mathjax, e.g. Favor and reputation\n\n ** Corporation ** \n\n * Completely rewritten in React. Paving the way for bigger change.\n * Smart Supply is now smarter and won't deadlock the warehouse. It is also more configurable.\n * Several UI fixes.\n\n ** Bladeburner ** \n\n * Action count is no longer decided when joining the Bladeburners. Experiences for all players should be more similar.\n\n ** Factions ** \n\n * No factions have home computer ram requirement. This caused some confusion for new players.\n\n ** Gang ** \n\n * Made it clear when there's a new equipment coming up.\n\n ** Netscript **\n\n * getActionCountRemaining now returns Infinity for bladeburner general actions. (@brubsy)\n * getActionEstimatedSuccessChance now returns 100% for Diplomacy and Hyperbolic Regeneration Chamber. (@brubsy)\n * disableLog('ALL') now disables all logs individually, meaning you can re-enable the ones you want after. (@Cass)\n * getPlayer returns numPeopleKilled.\n * Dynamic RAM calculation errors have a better error message.\n * Hide some functions from autocomplete.\n * Added getAugmentationPrice, getAugmentationRepReq, deprecated getAugmentationCost. (@TempFound)\n * Fixed bug where some crime API would return \"assassinate\" when that's not accepted in other functions.\n\n ** Coding Contract **\n\n * Spiralize Matrix is easier to read.\n\n ** Misc. **\n\n * The world map is now used in sleeve travel and bladeburner travel.\n * noselect a bunch of stuff.\n * Ascii maps letters are more contrasting\n * Updated documentation for infiltration.\n * Most money costs in the game will turn grey/cyan when you don't have enough money.\n * Donation textbox has better look & feel.\n * Tech vendors ram & cores buttons have better look and feels.\n * cores cost modified to be a formula instead of a semi-random array of numbers.\n * Tech vendors now give a hint about where to get bigger servers.\n * logboxes now displays whitespaces exactly. (@Cass)\n * nerf noodle bar\n"}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={HackingLevelMultiplier:1,StrengthLevelMultiplier:1,DefenseLevelMultiplier:1,DexterityLevelMultiplier:1,AgilityLevelMultiplier:1,CharismaLevelMultiplier:1,ServerGrowthRate:1,ServerMaxMoney:1,ServerStartingMoney:1,ServerStartingSecurity:1,ServerWeakenRate:1,HomeComputerRamCost:1,PurchasedServerCost:1,PurchasedServerLimit:1,PurchasedServerMaxRam:1,CompanyWorkMoney:1,CrimeMoney:1,HacknetNodeMoney:1,ManualHackMoney:1,ScriptHackMoney:1,ScriptHackMoneyGain:1,CodingContractMoney:1,ClassGymExpGain:1,CompanyWorkExpGain:1,CrimeExpGain:1,FactionWorkExpGain:1,HackExpGain:1,FactionPassiveRepGain:1,FactionWorkRepGain:1,RepToDonateToFaction:1,AugmentationMoneyCost:1,AugmentationRepCost:1,InfiltrationMoney:1,InfiltrationRep:1,FourSigmaMarketDataCost:1,FourSigmaMarketDataApiCost:1,CorporationValuation:1,BladeburnerRank:1,BladeburnerSkillCost:1,DaedalusAugsRequirement:1,GangKarmaRequirement:1}},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e.Aevum="Aevum",e.Chongqing="Chongqing",e.Ishima="Ishima",e.NewTokyo="New Tokyo",e.Sector12="Sector-12",e.Volhaven="Volhaven",e.AevumAeroCorp="AeroCorp",e.AevumBachmanAndAssociates="Bachman & Associates",e.AevumClarkeIncorporated="Clarke Incorporated",e.AevumCrushFitnessGym="Crush Fitness Gym",e.AevumECorp="ECorp",e.AevumFulcrumTechnologies="Fulcrum Technologies",e.AevumGalacticCybersystems="Galactic Cybersystems",e.AevumNetLinkTechnologies="NetLink Technologies",e.AevumPolice="Aevum Police Headquarters",e.AevumRhoConstruction="Rho Construction",e.AevumSnapFitnessGym="Snap Fitness Gym",e.AevumSummitUniversity="Summit University",e.AevumWatchdogSecurity="Watchdog Security",e.AevumCasino="Iker Molina Casino",e.ChongqingKuaiGongInternational="KuaiGong International",e.ChongqingSolarisSpaceSystems="Solaris Space Systems",e.Sector12AlphaEnterprises="Alpha Enterprises",e.Sector12BladeIndustries="Blade Industries",e.Sector12CIA="Central Intelligence Agency",e.Sector12CarmichaelSecurity="Carmichael Security",e.Sector12CityHall="Sector-12 City Hall",e.Sector12DeltaOne="DeltaOne",e.Sector12FoodNStuff="FoodNStuff",e.Sector12FourSigma="Four Sigma",e.Sector12IcarusMicrosystems="Icarus Microsystems",e.Sector12IronGym="Iron Gym",e.Sector12JoesGuns="Joe's Guns",e.Sector12MegaCorp="MegaCorp",e.Sector12NSA="National Security Agency",e.Sector12PowerhouseGym="Powerhouse Gym",e.Sector12RothmanUniversity="Rothman University",e.Sector12UniversalEnergy="Universal Energy",e.NewTokyoDefComm="DefComm",e.NewTokyoGlobalPharmaceuticals="Global Pharmaceuticals",e.NewTokyoNoodleBar="Noodle Bar",e.NewTokyoVitaLife="VitaLife",e.IshimaNovaMedical="Nova Medical",e.IshimaOmegaSoftware="Omega Software",e.IshimaStormTechnologies="Storm Technologies",e.VolhavenCompuTek="CompuTek",e.VolhavenHeliosLabs="Helios Labs",e.VolhavenLexoCorp="LexoCorp",e.VolhavenMilleniumFitnessGym="Millenium Fitness Gym",e.VolhavenNWO="NWO",e.VolhavenOmniTekIncorporated="OmniTek Incorporated",e.VolhavenOmniaCybersystems="Omnia Cybersystems",e.VolhavenSysCoreSecurities="SysCore Securities",e.VolhavenZBInstituteOfTechnology="ZB Institute of Technology",e.Hospital="Hospital",e.Slums="The Slums",e.TravelAgency="Travel Agency",e.WorldStockExchange="World Stock Exchange",e.Void="The Void"}(n||(n={}))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return l}));var n=a(17),r=a(16),i=a(0),o=a.n(i);function s(e){return o.a.createElement(o.a.Fragment,null,e.content)}function l(e,t=!1){const a="popup-"+Array.from(Array(16)).map(()=>""+Object(r.a)(0,9)).join("");"string"==typeof e?t?Object(n.a)(a,s,{content:o.a.createElement("pre",{dangerouslySetInnerHTML:{__html:e}})}):Object(n.a)(a,s,{content:o.a.createElement("p",{dangerouslySetInnerHTML:{__html:e.replace(/(?:\r\n|\r|\n)/g,"
")}})}):Object(n.a)(a,s,{content:e})}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n})),a.d(t,"b",(function(){return r})),a.d(t,"c",(function(){return i}));const n={ScriptBaseRamCost:1.6,ScriptDomRamCost:25,ScriptHackRamCost:.1,ScriptHackAnalyzeRamCost:1,ScriptGrowRamCost:.15,ScriptGrowthAnalyzeRamCost:1,ScriptWeakenRamCost:.15,ScriptScanRamCost:.2,ScriptPortProgramRamCost:.05,ScriptRunRamCost:1,ScriptExecRamCost:1.3,ScriptSpawnRamCost:2,ScriptScpRamCost:.6,ScriptKillRamCost:.5,ScriptHasRootAccessRamCost:.05,ScriptGetHostnameRamCost:.05,ScriptGetHackingLevelRamCost:.05,ScriptGetMultipliersRamCost:4,ScriptGetServerRamCost:.1,ScriptGetServerMaxRam:.05,ScriptGetServerUsedRam:.05,ScriptFileExistsRamCost:.1,ScriptIsRunningRamCost:.1,ScriptHacknetNodesRamCost:4,ScriptHNUpgLevelRamCost:.4,ScriptHNUpgRamRamCost:.6,ScriptHNUpgCoreRamCost:.8,ScriptGetStockRamCost:2,ScriptBuySellStockRamCost:2.5,ScriptGetPurchaseServerRamCost:.25,ScriptPurchaseServerRamCost:2.25,ScriptGetPurchasedServerLimit:.05,ScriptGetPurchasedServerMaxRam:.05,ScriptRoundRamCost:.05,ScriptReadWriteRamCost:1,ScriptArbScriptRamCost:1,ScriptGetScriptRamCost:.1,ScriptGetRunningScriptRamCost:.3,ScriptGetHackTimeRamCost:.05,ScriptGetFavorToDonate:.1,ScriptCodingContractBaseRamCost:10,ScriptSleeveBaseRamCost:4,ScriptSingularityFn1RamCost:2,ScriptSingularityFn2RamCost:3,ScriptSingularityFn3RamCost:5,ScriptGangApiBaseRamCost:4,ScriptBladeburnerApiBaseRamCost:4},r={hacknet:{numNodes:()=>0,purchaseNode:()=>0,getPurchaseNodeCost:()=>0,getNodeStats:()=>0,upgradeLevel:()=>0,upgradeRam:()=>0,upgradeCore:()=>0,upgradeCache:()=>0,getLevelUpgradeCost:()=>0,getRamUpgradeCost:()=>0,getCoreUpgradeCost:()=>0,getCacheUpgradeCost:()=>0,numHashes:()=>0,hashCost:()=>0,spendHashes:()=>0},sprintf:()=>0,vsprintf:()=>0,scan:()=>n.ScriptScanRamCost,hack:()=>n.ScriptHackRamCost,hackAnalyzeThreads:()=>n.ScriptHackAnalyzeRamCost,hackAnalyzePercent:()=>n.ScriptHackAnalyzeRamCost,hackChance:()=>n.ScriptHackAnalyzeRamCost,sleep:()=>0,grow:()=>n.ScriptGrowRamCost,growthAnalyze:()=>n.ScriptGrowthAnalyzeRamCost,weaken:()=>n.ScriptWeakenRamCost,print:()=>0,tprint:()=>0,clearLog:()=>0,disableLog:()=>0,enableLog:()=>0,isLogEnabled:()=>0,getScriptLogs:()=>0,nuke:()=>n.ScriptPortProgramRamCost,brutessh:()=>n.ScriptPortProgramRamCost,ftpcrack:()=>n.ScriptPortProgramRamCost,relaysmtp:()=>n.ScriptPortProgramRamCost,httpworm:()=>n.ScriptPortProgramRamCost,sqlinject:()=>n.ScriptPortProgramRamCost,run:()=>n.ScriptRunRamCost,exec:()=>n.ScriptExecRamCost,spawn:()=>n.ScriptSpawnRamCost,kill:()=>n.ScriptKillRamCost,killall:()=>n.ScriptKillRamCost,exit:()=>0,scp:()=>n.ScriptScpRamCost,ls:()=>n.ScriptScanRamCost,ps:()=>n.ScriptScanRamCost,hasRootAccess:()=>n.ScriptHasRootAccessRamCost,getIp:()=>n.ScriptGetHostnameRamCost,getHostname:()=>n.ScriptGetHostnameRamCost,getHackingLevel:()=>n.ScriptGetHackingLevelRamCost,getHackingMultipliers:()=>n.ScriptGetMultipliersRamCost,getHacknetMultipliers:()=>n.ScriptGetMultipliersRamCost,getBitNodeMultipliers:()=>n.ScriptGetMultipliersRamCost,getServer:()=>n.ScriptGetMultipliersRamCost/2,getServerMoneyAvailable:()=>n.ScriptGetServerRamCost,getServerSecurityLevel:()=>n.ScriptGetServerRamCost,getServerBaseSecurityLevel:()=>n.ScriptGetServerRamCost,getServerMinSecurityLevel:()=>n.ScriptGetServerRamCost,getServerRequiredHackingLevel:()=>n.ScriptGetServerRamCost,getServerMaxMoney:()=>n.ScriptGetServerRamCost,getServerGrowth:()=>n.ScriptGetServerRamCost,getServerNumPortsRequired:()=>n.ScriptGetServerRamCost,getServerRam:()=>n.ScriptGetServerRamCost,getServerMaxRam:()=>n.ScriptGetServerMaxRam,getServerUsedRam:()=>n.ScriptGetServerUsedRam,serverExists:()=>n.ScriptGetServerRamCost,fileExists:()=>n.ScriptFileExistsRamCost,isRunning:()=>n.ScriptIsRunningRamCost,getStockSymbols:()=>n.ScriptGetStockRamCost,getStockPrice:()=>n.ScriptGetStockRamCost,getStockAskPrice:()=>n.ScriptGetStockRamCost,getStockBidPrice:()=>n.ScriptGetStockRamCost,getStockPosition:()=>n.ScriptGetStockRamCost,getStockMaxShares:()=>n.ScriptGetStockRamCost,getStockPurchaseCost:()=>n.ScriptGetStockRamCost,getStockSaleGain:()=>n.ScriptGetStockRamCost,buyStock:()=>n.ScriptBuySellStockRamCost,sellStock:()=>n.ScriptBuySellStockRamCost,shortStock:()=>n.ScriptBuySellStockRamCost,sellShort:()=>n.ScriptBuySellStockRamCost,placeOrder:()=>n.ScriptBuySellStockRamCost,cancelOrder:()=>n.ScriptBuySellStockRamCost,getOrders:()=>n.ScriptBuySellStockRamCost,getStockVolatility:()=>n.ScriptBuySellStockRamCost,getStockForecast:()=>n.ScriptBuySellStockRamCost,purchase4SMarketData:()=>n.ScriptBuySellStockRamCost,purchase4SMarketDataTixApi:()=>n.ScriptBuySellStockRamCost,getPurchasedServerLimit:()=>n.ScriptGetPurchasedServerLimit,getPurchasedServerMaxRam:()=>n.ScriptGetPurchasedServerMaxRam,getPurchasedServerCost:()=>n.ScriptGetPurchaseServerRamCost,purchaseServer:()=>n.ScriptPurchaseServerRamCost,deleteServer:()=>n.ScriptPurchaseServerRamCost,getPurchasedServers:()=>n.ScriptPurchaseServerRamCost,write:()=>n.ScriptReadWriteRamCost,tryWrite:()=>n.ScriptReadWriteRamCost,read:()=>n.ScriptReadWriteRamCost,peek:()=>n.ScriptReadWriteRamCost,clear:()=>n.ScriptReadWriteRamCost,getPortHandle:()=>10*n.ScriptReadWriteRamCost,rm:()=>n.ScriptReadWriteRamCost,scriptRunning:()=>n.ScriptArbScriptRamCost,scriptKill:()=>n.ScriptArbScriptRamCost,getScriptName:()=>0,getScriptRam:()=>n.ScriptGetScriptRamCost,getHackTime:()=>n.ScriptGetHackTimeRamCost,getGrowTime:()=>n.ScriptGetHackTimeRamCost,getWeakenTime:()=>n.ScriptGetHackTimeRamCost,getScriptIncome:()=>n.ScriptGetScriptRamCost,getScriptExpGain:()=>n.ScriptGetScriptRamCost,getRunningScript:()=>n.ScriptGetRunningScriptRamCost,nFormat:()=>0,getTimeSinceLastAug:()=>n.ScriptGetHackTimeRamCost,prompt:()=>0,wget:()=>0,getFavorToDonate:()=>n.ScriptGetFavorToDonate,universityCourse:()=>n.ScriptSingularityFn1RamCost,gymWorkout:()=>n.ScriptSingularityFn1RamCost,travelToCity:()=>n.ScriptSingularityFn1RamCost,purchaseTor:()=>n.ScriptSingularityFn1RamCost,purchaseProgram:()=>n.ScriptSingularityFn1RamCost,getCurrentServer:()=>n.ScriptSingularityFn1RamCost,connect:()=>n.ScriptSingularityFn1RamCost,manualHack:()=>n.ScriptSingularityFn1RamCost,installBackdoor:()=>n.ScriptSingularityFn1RamCost,getStats:()=>n.ScriptSingularityFn1RamCost/4,getCharacterInformation:()=>n.ScriptSingularityFn1RamCost/4,getPlayer:()=>n.ScriptSingularityFn1RamCost/4,hospitalize:()=>n.ScriptSingularityFn1RamCost/4,isBusy:()=>n.ScriptSingularityFn1RamCost/4,stopAction:()=>n.ScriptSingularityFn1RamCost/2,upgradeHomeRam:()=>n.ScriptSingularityFn2RamCost,getUpgradeHomeRamCost:()=>n.ScriptSingularityFn2RamCost/2,workForCompany:()=>n.ScriptSingularityFn2RamCost,applyToCompany:()=>n.ScriptSingularityFn2RamCost,getCompanyRep:()=>n.ScriptSingularityFn2RamCost/3,getCompanyFavor:()=>n.ScriptSingularityFn2RamCost/3,getCompanyFavorGain:()=>n.ScriptSingularityFn2RamCost/4,checkFactionInvitations:()=>n.ScriptSingularityFn2RamCost,joinFaction:()=>n.ScriptSingularityFn2RamCost,workForFaction:()=>n.ScriptSingularityFn2RamCost,getFactionRep:()=>n.ScriptSingularityFn2RamCost/3,getFactionFavor:()=>n.ScriptSingularityFn2RamCost/3,getFactionFavorGain:()=>n.ScriptSingularityFn2RamCost/4,donateToFaction:()=>n.ScriptSingularityFn3RamCost,createProgram:()=>n.ScriptSingularityFn3RamCost,commitCrime:()=>n.ScriptSingularityFn3RamCost,getCrimeChance:()=>n.ScriptSingularityFn3RamCost,getCrimeStats:()=>n.ScriptSingularityFn3RamCost,getOwnedAugmentations:()=>n.ScriptSingularityFn3RamCost,getOwnedSourceFiles:()=>n.ScriptSingularityFn3RamCost,getAugmentationsFromFaction:()=>n.ScriptSingularityFn3RamCost,getAugmentationCost:()=>n.ScriptSingularityFn3RamCost,getAugmentationPrereq:()=>n.ScriptSingularityFn3RamCost,getAugmentationPrice:()=>n.ScriptSingularityFn3RamCost/2,getAugmentationRepReq:()=>n.ScriptSingularityFn3RamCost/2,getAugmentationStats:()=>n.ScriptSingularityFn3RamCost,purchaseAugmentation:()=>n.ScriptSingularityFn3RamCost,softReset:()=>n.ScriptSingularityFn3RamCost,installAugmentations:()=>n.ScriptSingularityFn3RamCost,gang:{createGang:()=>n.ScriptGangApiBaseRamCost/4,inGang:()=>n.ScriptGangApiBaseRamCost/4,getMemberNames:()=>n.ScriptGangApiBaseRamCost/4,getGangInformation:()=>n.ScriptGangApiBaseRamCost/2,getOtherGangInformation:()=>n.ScriptGangApiBaseRamCost/2,getMemberInformation:()=>n.ScriptGangApiBaseRamCost/2,canRecruitMember:()=>n.ScriptGangApiBaseRamCost/4,recruitMember:()=>n.ScriptGangApiBaseRamCost/2,getTaskNames:()=>n.ScriptGangApiBaseRamCost/4,getTaskStats:()=>n.ScriptGangApiBaseRamCost/4,setMemberTask:()=>n.ScriptGangApiBaseRamCost/2,getEquipmentNames:()=>n.ScriptGangApiBaseRamCost/4,getEquipmentCost:()=>n.ScriptGangApiBaseRamCost/2,getEquipmentType:()=>n.ScriptGangApiBaseRamCost/2,getEquipmentStats:()=>n.ScriptGangApiBaseRamCost/2,purchaseEquipment:()=>n.ScriptGangApiBaseRamCost,ascendMember:()=>n.ScriptGangApiBaseRamCost,setTerritoryWarfare:()=>n.ScriptGangApiBaseRamCost/2,getChanceToWinClash:()=>n.ScriptGangApiBaseRamCost,getBonusTime:()=>0},bladeburner:{getContractNames:()=>n.ScriptBladeburnerApiBaseRamCost/10,getOperationNames:()=>n.ScriptBladeburnerApiBaseRamCost/10,getBlackOpNames:()=>n.ScriptBladeburnerApiBaseRamCost/10,getBlackOpRank:()=>n.ScriptBladeburnerApiBaseRamCost/2,getGeneralActionNames:()=>n.ScriptBladeburnerApiBaseRamCost/10,getSkillNames:()=>n.ScriptBladeburnerApiBaseRamCost/10,startAction:()=>n.ScriptBladeburnerApiBaseRamCost,stopBladeburnerAction:()=>n.ScriptBladeburnerApiBaseRamCost/2,getCurrentAction:()=>n.ScriptBladeburnerApiBaseRamCost/4,getActionTime:()=>n.ScriptBladeburnerApiBaseRamCost,getActionEstimatedSuccessChance:()=>n.ScriptBladeburnerApiBaseRamCost,getActionRepGain:()=>n.ScriptBladeburnerApiBaseRamCost,getActionCountRemaining:()=>n.ScriptBladeburnerApiBaseRamCost,getActionMaxLevel:()=>n.ScriptBladeburnerApiBaseRamCost,getActionCurrentLevel:()=>n.ScriptBladeburnerApiBaseRamCost,getActionAutolevel:()=>n.ScriptBladeburnerApiBaseRamCost,setActionAutolevel:()=>n.ScriptBladeburnerApiBaseRamCost,setActionLevel:()=>n.ScriptBladeburnerApiBaseRamCost,getRank:()=>n.ScriptBladeburnerApiBaseRamCost,getSkillPoints:()=>n.ScriptBladeburnerApiBaseRamCost,getSkillLevel:()=>n.ScriptBladeburnerApiBaseRamCost,getSkillUpgradeCost:()=>n.ScriptBladeburnerApiBaseRamCost,upgradeSkill:()=>n.ScriptBladeburnerApiBaseRamCost,getTeamSize:()=>n.ScriptBladeburnerApiBaseRamCost,setTeamSize:()=>n.ScriptBladeburnerApiBaseRamCost,getCityEstimatedPopulation:()=>n.ScriptBladeburnerApiBaseRamCost,getCityEstimatedCommunities:()=>n.ScriptBladeburnerApiBaseRamCost,getCityChaos:()=>n.ScriptBladeburnerApiBaseRamCost,getCity:()=>n.ScriptBladeburnerApiBaseRamCost,switchCity:()=>n.ScriptBladeburnerApiBaseRamCost,getStamina:()=>n.ScriptBladeburnerApiBaseRamCost,joinBladeburnerFaction:()=>n.ScriptBladeburnerApiBaseRamCost,joinBladeburnerDivision:()=>n.ScriptBladeburnerApiBaseRamCost,getBonusTime:()=>0},codingcontract:{attempt:()=>n.ScriptCodingContractBaseRamCost,getContractType:()=>n.ScriptCodingContractBaseRamCost/2,getData:()=>n.ScriptCodingContractBaseRamCost/2,getDescription:()=>n.ScriptCodingContractBaseRamCost/2,getNumTriesRemaining:()=>n.ScriptCodingContractBaseRamCost/5},sleeve:{getNumSleeves:()=>n.ScriptSleeveBaseRamCost,setToShockRecovery:()=>n.ScriptSleeveBaseRamCost,setToSynchronize:()=>n.ScriptSleeveBaseRamCost,setToCommitCrime:()=>n.ScriptSleeveBaseRamCost,setToUniversityCourse:()=>n.ScriptSleeveBaseRamCost,travel:()=>n.ScriptSleeveBaseRamCost,setToCompanyWork:()=>n.ScriptSleeveBaseRamCost,setToFactionWork:()=>n.ScriptSleeveBaseRamCost,setToGymWorkout:()=>n.ScriptSleeveBaseRamCost,getSleeveStats:()=>n.ScriptSleeveBaseRamCost,getTask:()=>n.ScriptSleeveBaseRamCost,getInformation:()=>n.ScriptSleeveBaseRamCost,getSleeveAugmentations:()=>n.ScriptSleeveBaseRamCost,getSleevePurchasableAugs:()=>n.ScriptSleeveBaseRamCost,purchaseSleeveAug:()=>n.ScriptSleeveBaseRamCost},heart:{break:()=>0}};function i(...e){if(0===e.length)return console.warn("No arguments passed to getRamCost()"),0;let t=r[e[0]];for(let a=1;a{let t=""+e%1e3;for(;t.length<3;)t="0"+t;return t})();let u="";return n>0&&(u+=n+" days "),i>0&&(u+=i+" hours "),s>0&&(u+=s+" minutes "),u+=(t?`${l}.${c}`:""+l)+" seconds",u}function i(e){if(!o(e))return"";if(0===e.length)return"";const t=e.concat().sort(),a=t[0],n=t[t.length-1],r=a.length;let i=0;for(;i{m(e),s&&s()}}),u),u}function m(e){const t=document.getElementById(""+e);null!=t&&(r.unmountComponentAtNode(t),Object(s.a)(e),Object(s.a)(e+"-close"),e===c&&(c=""))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={}},,function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e.Aevum="Aevum",e.Chongqing="Chongqing",e.Ishima="Ishima",e.NewTokyo="New Tokyo",e.Sector12="Sector-12",e.Volhaven="Volhaven"}(n||(n={}))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(0);function r(e){const t=null!=e.tooltip&&""!==e.tooltip;let a,r=e.disabled?"std-button-disabled":"std-button";if(t&&(r+=" tooltip"),"string"==typeof e.addClasses&&(r+=" "+e.addClasses),t)if("string"==typeof e.tooltip){const t={__html:e.tooltip};a=n.createElement("span",{className:"tooltiptext",dangerouslySetInnerHTML:t})}else a=n.createElement("span",{className:"tooltiptext"},e.tooltip);return n.createElement("button",{className:r,id:e.id,onClick:e.onClick,onKeyUp:e.onKeyUp,style:e.style,autoFocus:e.autoFocus},e.text,t&&a)}},function(e,t,a){"use strict";a.d(t,"j",(function(){return n})),a.d(t,"d",(function(){return r})),a.d(t,"i",(function(){return i})),a.d(t,"f",(function(){return o})),a.d(t,"b",(function(){return s})),a.d(t,"h",(function(){return l})),a.d(t,"a",(function(){return c})),a.d(t,"e",(function(){return u})),a.d(t,"k",(function(){return m})),a.d(t,"c",(function(){return h})),a.d(t,"g",(function(){return p}));const n=["Software Engineering Intern","Junior Software Engineer","Senior Software Engineer","Lead Software Developer","Head of Software","Head of Engineering","Vice President of Technology","Chief Technology Officer"],r=["IT Intern","IT Analyst","IT Manager","Systems Administrator"],i=["Security Engineer"],o=["Network Engineer","Network Administrator"],s=["Business Intern","Business Analyst","Business Manager","Operations Manager","Chief Financial Officer","Chief Executive Officer"],l=["Police Officer","Police Chief","Security Guard","Security Officer","Security Supervisor","Head of Security"],c=["Field Agent","Secret Agent","Special Operative"],u=["Waiter","Employee"],m=["Software Consultant","Senior Software Consultant"],h=["Business Consultant","Senior Business Consultant"],p=["Part-time Waiter","Part-time Employee"]},function(e,t,a){"use strict";a.d(t,"a",(function(){return o})),a.d(t,"d",(function(){return s})),a.d(t,"b",(function(){return l})),a.d(t,"c",(function(){return c}));var n=a(132),r=a(412),i=a(14);let o={};function s(e){o=JSON.parse(e,i.c)}function l(e){return o.hasOwnProperty(e)}function c(){for(const e in r.a)u(new n.a(e))}function u(e){if(!(e instanceof n.a))throw new Error("Invalid argument 'newFactionObject' passed into resetFaction()");const t=e.name;l(t)&&(e.favor=o[t].favor,delete o[t]),function(e){const t=e.name;o[t]=e}(e)}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(0),r=a(6),i=a(24),o=a(2),s=a(11),l=a(14);function c(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class u{constructor(e={info:"",moneyCost:0,name:"",repCost:0}){c(this,"baseCost",0),c(this,"baseRepRequirement",0),c(this,"isSpecial",!1),c(this,"level",0),c(this,"name",""),c(this,"owned",!1),c(this,"prereqs",[]),c(this,"mults",{}),c(this,"startingCost",0),this.name=e.name,this.info=e.info,this.prereqs=e.prereqs?e.prereqs:[],this.baseRepRequirement=e.repCost*r.a.AugmentationRepCost,this.baseCost=e.moneyCost*r.a.AugmentationMoneyCost,this.startingCost=this.baseCost,e.isSpecial&&(this.isSpecial=!0),this.level=0,e.hacking_mult&&(this.mults.hacking_mult=e.hacking_mult),e.strength_mult&&(this.mults.strength_mult=e.strength_mult),e.defense_mult&&(this.mults.defense_mult=e.defense_mult),e.dexterity_mult&&(this.mults.dexterity_mult=e.dexterity_mult),e.agility_mult&&(this.mults.agility_mult=e.agility_mult),e.charisma_mult&&(this.mults.charisma_mult=e.charisma_mult),e.hacking_exp_mult&&(this.mults.hacking_exp_mult=e.hacking_exp_mult),e.strength_exp_mult&&(this.mults.strength_exp_mult=e.strength_exp_mult),e.defense_exp_mult&&(this.mults.defense_exp_mult=e.defense_exp_mult),e.dexterity_exp_mult&&(this.mults.dexterity_exp_mult=e.dexterity_exp_mult),e.agility_exp_mult&&(this.mults.agility_exp_mult=e.agility_exp_mult),e.charisma_exp_mult&&(this.mults.charisma_exp_mult=e.charisma_exp_mult),e.hacking_chance_mult&&(this.mults.hacking_chance_mult=e.hacking_chance_mult),e.hacking_speed_mult&&(this.mults.hacking_speed_mult=e.hacking_speed_mult),e.hacking_money_mult&&(this.mults.hacking_money_mult=e.hacking_money_mult),e.hacking_grow_mult&&(this.mults.hacking_grow_mult=e.hacking_grow_mult),e.company_rep_mult&&(this.mults.company_rep_mult=e.company_rep_mult),e.faction_rep_mult&&(this.mults.faction_rep_mult=e.faction_rep_mult),e.crime_money_mult&&(this.mults.crime_money_mult=e.crime_money_mult),e.crime_success_mult&&(this.mults.crime_success_mult=e.crime_success_mult),e.work_money_mult&&(this.mults.work_money_mult=e.work_money_mult),e.hacknet_node_money_mult&&(this.mults.hacknet_node_money_mult=e.hacknet_node_money_mult),e.hacknet_node_purchase_cost_mult&&(this.mults.hacknet_node_purchase_cost_mult=e.hacknet_node_purchase_cost_mult),e.hacknet_node_ram_cost_mult&&(this.mults.hacknet_node_ram_cost_mult=e.hacknet_node_ram_cost_mult),e.hacknet_node_core_cost_mult&&(this.mults.hacknet_node_core_cost_mult=e.hacknet_node_core_cost_mult),e.hacknet_node_level_cost_mult&&(this.mults.hacknet_node_level_cost_mult=e.hacknet_node_level_cost_mult),e.bladeburner_max_stamina_mult&&(this.mults.bladeburner_max_stamina_mult=e.bladeburner_max_stamina_mult),e.bladeburner_stamina_gain_mult&&(this.mults.bladeburner_stamina_gain_mult=e.bladeburner_stamina_gain_mult),e.bladeburner_analysis_mult&&(this.mults.bladeburner_analysis_mult=e.bladeburner_analysis_mult),e.bladeburner_success_chance_mult&&(this.mults.bladeburner_success_chance_mult=e.bladeburner_success_chance_mult),e.stats?this.stats=e.stats:this.stats=function(e,t,a){const r=(e,t=0)=>e===1.0777-1?"7.77%":e===1.777-1?"77.7%":o.a.formatPercentage(e,t);let i=n.createElement(n.Fragment,null,"Effects:");return e.hacking_mult&&e.hacking_mult==e.strength_mult&&e.hacking_mult==e.defense_mult&&e.hacking_mult==e.dexterity_mult&&e.hacking_mult==e.agility_mult&&e.hacking_mult==e.charisma_mult?i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_mult-1)," all skills"):(e.hacking_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_mult-1)," hacking skill")),e.strength_mult&&e.strength_mult==e.defense_mult&&e.strength_mult==e.dexterity_mult&&e.strength_mult==e.agility_mult?i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.strength_mult-1)," combat skills"):(e.strength_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.strength_mult-1)," strength skill")),e.defense_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.defense_mult-1)," defense skill")),e.dexterity_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.dexterity_mult-1)," dexterity skill")),e.agility_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.agility_mult-1)," agility skill"))),e.charisma_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.charisma_mult-1)," Charisma skill"))),e.hacking_exp_mult&&e.hacking_exp_mult===e.strength_exp_mult&&e.hacking_exp_mult===e.defense_exp_mult&&e.hacking_exp_mult===e.dexterity_exp_mult&&e.hacking_exp_mult===e.agility_exp_mult&&e.hacking_exp_mult===e.charisma_exp_mult?i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_exp_mult-1)," exp for all skills"):(e.hacking_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_exp_mult-1)," hacking exp")),e.strength_exp_mult&&e.strength_exp_mult===e.defense_exp_mult&&e.strength_exp_mult===e.dexterity_exp_mult&&e.strength_exp_mult===e.agility_exp_mult?i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.strength_exp_mult-1)," combat exp"):(e.strength_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.strength_exp_mult-1)," strength exp")),e.defense_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.defense_exp_mult-1)," defense exp")),e.dexterity_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.dexterity_exp_mult-1)," dexterity exp")),e.agility_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.agility_exp_mult-1)," agility exp"))),e.charisma_exp_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.charisma_exp_mult-1)," charisma exp"))),e.hacking_speed_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_speed_mult-1)," faster hack(), grow(), and weaken()")),e.hacking_chance_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_chance_mult-1)," hack() success chance")),e.hacking_money_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_money_mult-1)," hack() power")),e.hacking_grow_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacking_grow_mult-1)," grow() power")),e.faction_rep_mult&&e.faction_rep_mult===e.company_rep_mult?i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.faction_rep_mult-1)," reputation from factions and companies"):(e.faction_rep_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.faction_rep_mult-1)," reputation from factions")),e.company_rep_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.company_rep_mult-1)," reputation from companies"))),e.crime_money_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.crime_money_mult-1)," crime money")),e.crime_success_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.crime_success_mult-1)," crime success rate")),e.work_money_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.work_money_mult-1)," work money")),e.hacknet_node_money_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.hacknet_node_money_mult-1)," hacknet production")),e.hacknet_node_purchase_cost_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"-",r(-(e.hacknet_node_purchase_cost_mult-1))," hacknet nodes cost")),e.hacknet_node_level_cost_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"-",r(-(e.hacknet_node_level_cost_mult-1))," hacknet nodes upgrade cost")),e.bladeburner_max_stamina_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.bladeburner_max_stamina_mult-1)," Bladeburner Max Stamina")),e.bladeburner_stamina_gain_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.bladeburner_stamina_gain_mult-1)," Bladeburner Stamina gain")),e.bladeburner_analysis_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.bladeburner_analysis_mult-1)," Bladeburner Field Analysis effectiveness")),e.bladeburner_success_chance_mult&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"+",r(e.bladeburner_success_chance_mult-1)," Bladeburner Contracts and Operations success chance")),a&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"Start with ",n.createElement(s.a,{money:a})," after installing Augmentations.")),t&&(i=n.createElement(n.Fragment,null,i,n.createElement("br",null),"Start with ",t.join(" and ")," after installing Augmentations.")),i}(this.mults,e.programs,e.startingMoney)}addToFactions(e){for(let t=0;t{switch(typeof e){case"number":return e;case"object":return Object(s.a)(e.min,e.max);default:throw Error(`Do not know how to convert the type '${typeof e}' to a number`)}};for(const e of i.a){const i={hostname:e.hostname,ip:m(),numOpenPortsRequired:e.numOpenPortsRequired,organizationName:e.organizationName};void 0!==e.maxRamExponent&&(i.maxRam=Math.pow(2,o(e.maxRamExponent)));for(const t of a)void 0!==e[t]&&(i[t]=o(e[t]));const s=new n.a(i);for(const t of e.literature||[])s.messages.push(t);void 0!==e.specialName&&r.a.addIp(e.specialName,s.ip),h(s),void 0!==e.networkLayer&&t[o(e.networkLayer)-1].push(s)}const l=(e,t)=>{for(const r of e)a=r,n=t(),a.serversOnNetwork.push(n.ip),n.serversOnNetwork.push(a.ip);var a,n};l(t[0],()=>e);for(let e=1;e{return(a=t[e-1])[Math.floor(Math.random()*a.length)];var a})}function d(){for(const e in c)delete c[e];c={}}function f(e){c=JSON.parse(e,l.c)}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n})),a.d(t,"c",(function(){return r})),a.d(t,"b",(function(){return i}));const n={MoneyGainPerLevel:1.6,BaseCost:1e3,LevelBaseCost:1,RamBaseCost:3e4,CoreBaseCost:5e5,PurchaseNextMult:1.85,UpgradeLevelMult:1.04,UpgradeRamMult:1.28,UpgradeCoreMult:1.48,MaxLevel:200,MaxRam:64,MaxCores:16},r={x1:1,x5:5,x10:10,MAX:"MAX"},i={HashesPerLevel:.001,BaseCost:5e4,RamBaseCost:2e5,CoreBaseCost:1e6,CacheBaseCost:1e7,PurchaseMult:3.2,UpgradeLevelMult:1.1,UpgradeRamMult:1.4,UpgradeCoreMult:1.55,UpgradeCacheMult:1.85,MaxServers:20,MaxLevel:300,MaxRam:8192,MaxCores:128,MaxCache:15}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={Idle:1,Contract:2,Operation:3,BlackOp:4,BlackOperation:4,Training:5,Recruitment:6,FieldAnalysis:7,"Field Analysis":7,Diplomacy:8,"Hyperbolic Regeneration Chamber":9}},,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(136);const r={AutosaveInterval:60,CodeInstructionRunTime:50,DisableASCIIArt:!1,DisableHotkeys:!1,DisableTextEffects:!1,Locale:"en",MaxLogCapacity:50,MaxPortCapacity:50,MaxTerminalCapacity:200,SuppressBuyAugmentationConfirmation:!1,SuppressFactionInvites:!1,SuppressHospitalizationPopup:!1,SuppressMessages:!1,SuppressTravelConfirmation:!1,SuppressBladeburnerPopup:!1},i={AutosaveInterval:r.AutosaveInterval,CodeInstructionRunTime:25,DisableASCIIArt:r.DisableASCIIArt,DisableHotkeys:r.DisableHotkeys,DisableTextEffects:r.DisableTextEffects,Locale:"en",MaxLogCapacity:r.MaxLogCapacity,MaxPortCapacity:r.MaxPortCapacity,MaxTerminalCapacity:r.MaxTerminalCapacity,OwnedAugmentationsOrder:n.a.AcquirementTime,PurchaseAugmentationsOrder:n.b.Default,SuppressBuyAugmentationConfirmation:r.SuppressBuyAugmentationConfirmation,SuppressFactionInvites:r.SuppressFactionInvites,SuppressHospitalizationPopup:r.SuppressHospitalizationPopup,SuppressMessages:r.SuppressMessages,SuppressTravelConfirmation:r.SuppressTravelConfirmation,SuppressBladeburnerPopup:r.SuppressBladeburnerPopup,MonacoTheme:"vs-dark",MonacoInsertSpaces:!1,init(){Object.assign(i,r)},load(e){Object.assign(i,JSON.parse(e))}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));const n=["START","PURCHASE","PRODUCTION","SALE","EXPORT"],r={INITIALSHARES:1e9,SHARESPERPRICEUPDATE:1e6,IssueNewSharesCooldown:216e3,SellSharesCooldown:18e3,CyclesPerMarketCycle:50,CyclesPerIndustryStateCycle:50/n.length,SecsPerMarketCycle:10,Cities:["Aevum","Chongqing","Sector-12","New Tokyo","Ishima","Volhaven"],WarehouseInitialCost:5e9,WarehouseInitialSize:100,WarehouseUpgradeBaseCost:1e9,OfficeInitialCost:4e9,OfficeInitialSize:3,OfficeUpgradeBaseCost:1e9,BribeThreshold:1e14,BribeToRepRatio:1e9,ProductProductionCostRatio:5,DividendMaxPercentage:.5,EmployeeSalaryMultiplier:3,CyclesPerEmployeeRaise:400,EmployeeRaiseAmount:50,BaseMaxProducts:3,AllCorporationStates:n,AllMaterials:["Water","Energy","Food","Plants","Metal","Hardware","Chemicals","Drugs","Robots","AI Cores","Real Estate"]}},function(e,t,a){"use strict";a.d(t,"h",(function(){return h})),a.d(t,"e",(function(){return p})),a.d(t,"g",(function(){return d})),a.d(t,"f",(function(){return f})),a.d(t,"a",(function(){return g})),a.d(t,"b",(function(){return y})),a.d(t,"c",(function(){return b})),a.d(t,"d",(function(){return E}));var n=a(27),r=a(90),i=a(417),o=a(6),s=a(5),l=a(55),c=a(44),u=a(496),m=a(418);function h(e){if(null!=e.ip&&Object(n.e)(e.ip)&&(e.ip=Object(n.c)()),null!=g(e.hostname)){let t=e.hostname;for(let a=0;a<200&&(t=`${e.hostname}-${a}`,null!=g(t));++a);e.hostname=t}return new r.a(e)}function p(e,t,a){let n=1+(s.a.ServerBaseGrowthRate-1)/e.hackDifficulty;n>s.a.ServerMaxGrowthRate&&(n=s.a.ServerMaxGrowthRate);const r=e.serverGrowth/100;return Math.log(t)/(Math.log(n)*a.hacking_grow_mult*r*o.a.ServerGrowthRate)}function d(e,t,a,n=1){let r=Object(i.a)(e,t,a,n);r<1&&(console.warn("serverGrowth calculated to be less than 1"),r=1);const o=e.moneyAvailable;if(e.moneyAvailable*=r,Object(u.a)(e.moneyMax)&&isNaN(e.moneyAvailable)&&(e.moneyAvailable=e.moneyMax),Object(u.a)(e.moneyMax)&&e.moneyAvailable>e.moneyMax&&(e.moneyAvailable=e.moneyMax),o!==e.moneyAvailable){let t=p(e,e.moneyAvailable/o,a);t=Math.max(0,t),e.fortify(2*s.a.ServerFortifyAmount*Math.ceil(t))}return e.moneyAvailable/o}function f(e){const t=e.programs.includes(l.a.BitFlume.name);e.programs.length=0,e.runningScripts=[],e.serversOnNetwork=[],e.isConnectedTo=!0,e.ramUsed=0,e.programs.push(l.a.NukeProgram.name),t&&e.programs.push(l.a.BitFlume.name),e.scripts.forEach((function(t){t.updateRamUsage(e.scripts)})),e.messages.length=0,e.messages.push(c.a.HackersStartingHandbook)}function g(e){for(const t in n.b)if(n.b.hasOwnProperty(t)&&n.b[t].hostname==e)return n.b[t];return null}function y(e){return Object(m.a)(e)?void 0!==n.b[e]?n.b[e]:null:g(e)}function b(e,t){return t>e.serversOnNetwork.length?(console.error("Tried to get server on network that was out of range"),null):n.b[e.serversOnNetwork[t]]}function E(e){return"backdoorInstalled"in e&&e.backdoorInstalled}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={Operations:"Operations",Engineer:"Engineer",Business:"Business",Management:"Management",RandD:"Research & Development",Training:"Training",Unassigned:"Unassigned"}},function(e,t,a){"use strict";a.r(t),a.d(t,"Engine",(function(){return pe}));var n=a(12),r=a(18),i=a(123),o=a(239),s=a(716),l=a(4),c=a(165),u=a(147),m=a(725),h=a(274),p=a(47),d=a(236),f=a(5),g=(a(763),a(24)),y=a(84),b=a(818),E=a(819),v=a(839),k=a(854),_=a(881),C=a(917),w=a(920),S=a(130),x=a(927),O=a(936),T=a(187),M=a(45),P=a(951),A=a(49),R=a(7),N=a(466),I=a(129),j=a(118),F=a(148),D=a(125),B=a(1),L=a(260),G=a(987),W=a(223),H=a(988),U=a(27),q=a(33),K=a(50),$=a(51),z=a(71),Y=a(1004),V=a(1005),J=a(86),Q=a(1010),X=a(238),Z=a(1011),ee=a(46),te=a(11),ae=a(183),ne=a(75),re=a(1012),ie=a(115),oe=a(9),se=a(135),le=a(541),ce=(a(1250),a(1251),a(0)),ue=a.n(ce),me=a(52),he=a.n(me);const pe={Clickables:{saveMainMenuButton:null,deleteMainMenuButton:null},Display:{content:null,infiltrationContent:null,workInProgressContent:null,redPillContent:null,cinematicTextContent:null,missionContent:null,overview:null},indexedDb:void 0,_lastUpdate:(new Date).getTime(),_idleSpeed:200,loadTerminalContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.CharacterInfo),he.a.render(ue.a.createElement(S.a,null,ue.a.createElement(V.a,{terminal:J.a,engine:this,player:B.a})),pe.Display.content),ie.a.Stats.classList.add("active")},loadCharacterContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.CharacterInfo),he.a.render(ue.a.createElement(Z.a,{player:B.a}),pe.Display.content),ie.a.Stats.classList.add("active")},loadScriptEditorContent:function(e="",t=""){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.ScriptEditor),ie.a.ScriptEditor.classList.add("active"),he.a.render(ue.a.createElement(H.a,{filename:e,code:t,player:B.a,engine:this}),pe.Display.content)},loadActiveScriptsContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.ActiveScripts),ie.a.ActiveScripts.classList.add("active"),he.a.render(ue.a.createElement(re.a,{p:B.a,workerScripts:F.a}),pe.Display.content)},loadHacknetNodesContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.HacknetNodes),ie.a.HacknetNodes.classList.add("active"),he.a.render(ue.a.createElement(P.a,{player:B.a}),pe.Display.content)},loadCreateProgramContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.CreateProgram),ie.a.CreateProgram.classList.add("active"),he.a.render(ue.a.createElement(S.a,null,ue.a.createElement(G.a,{player:B.a})),pe.Display.content)},loadFactionsContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Factions),ie.a.Factions.classList.add("active"),he.a.render(ue.a.createElement(b.a,{player:B.a,engine:this}),pe.Display.content)},loadFactionContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Faction)},loadAugmentationsContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Augmentations),ie.a.Augmentations.classList.add("active"),he.a.render(ue.a.createElement(s.a,{exportGameFn:function(){W.b.exportGame(),Object(o.c)(B.a)},installAugmentationsFn:i.d}),pe.Display.content)},loadMilestonesContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Milestones),ie.a.Milestones.classList.add("active"),he.a.render(ue.a.createElement(Y.a,{player:B.a}),pe.Display.content)},loadTutorialContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Tutorial),ie.a.Tutorial.classList.add("active"),he.a.render(ue.a.createElement(Q.a,null),pe.Display.content)},loadDevMenuContent:function(){throw pe.hideAllContent(),new Error("Cannot create Dev Menu because you are not in a dev build")},loadLocationContent:function(e=!0){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Location),ie.a.City.classList.add("active"),he.a.render(ue.a.createElement(N.a,{initiallyInCity:e,engine:pe,p:B.a}),pe.Display.content)},loadTravelContent:function(){pe.hideAllContent(),B.a.gotoLocation(R.a.TravelAgency),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Location),ie.a.Travel.classList.add("active"),he.a.render(ue.a.createElement(N.a,{initiallyInCity:!1,engine:pe,p:B.a}),pe.Display.content)},loadJobContent:function(){""!=B.a.companyName?(pe.hideAllContent(),B.a.gotoLocation(B.a.companyName),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Location),ie.a.Job.classList.add("active"),he.a.render(ue.a.createElement(N.a,{initiallyInCity:!1,engine:pe,p:B.a}),pe.Display.content)):Object(oe.a)("You do not currently have a job! You can visit various companies in the city and try to find a job.")},loadWorkInProgressContent:function(){pe.hideAllContent();const e=document.getElementById("mainmenu-container");console.log("hiding loadWorkInProgressContent"),e.style.visibility="hidden",pe.Display.workInProgressContent.style.display="block",console.log(pe.Display.workInProgressContent),ee.b.navigateTo(ee.a.WorkInProgress)},loadRedPillContent:function(){pe.hideAllContent();document.getElementById("mainmenu-container").style.visibility="hidden",pe.Display.redPillContent.style.display="block",ee.b.navigateTo(ee.a.RedPill)},loadCinematicTextContent:function(){pe.hideAllContent(),document.getElementById("mainmenu-container").style.visibility="hidden",pe.Display.cinematicTextContent.style.display="block",ee.b.navigateTo(ee.a.CinematicText)},loadInfiltrationContent:function(e,t,a){pe.hideAllContent();document.getElementById("mainmenu-container").style.visibility="hidden",pe.Display.infiltrationContent.style.display="block",ee.b.navigateTo(ee.a.Infiltration),Object(O.a)(this,B.a,e,t,a)},loadStockMarketContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.StockMarket),ie.a.StockMarket.classList.add("active"),Object(z.e)()},loadGangContent:function(){B.a.inGang()&&(pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Gang),ie.a.Gang.classList.add("active"),he.a.render(ue.a.createElement(v.a,{engine:this,gang:B.a.gang,player:B.a}),pe.Display.content))},loadMissionContent:function(){pe.hideAllContent(),document.getElementById("mainmenu-container").style.visibility="hidden",document.getElementById("character-overview").style.visibility="hidden",pe.Display.missionContent.style.display="block",ee.b.navigateTo(ee.a.Mission)},loadCorporationContent:function(){B.a.corporation instanceof d.a&&(pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Corporation),ie.a.Corporation.classList.add("active"),he.a.render(ue.a.createElement(_.a,{corp:B.a.corporation,player:B.a}),pe.Display.content))},loadBladeburnerContent:function(){B.a.bladeburner instanceof u.a&&(pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Bladeburner),ie.a.Bladeburner.classList.add("active"),he.a.render(ue.a.createElement(E.a,{bladeburner:B.a.bladeburner,player:B.a,engine:this}),pe.Display.content))},loadSleevesContent:function(){pe.hideAllContent(),pe.Display.content.style.display="block",ee.b.navigateTo(ee.a.Sleeves),he.a.render(ue.a.createElement(x.a,{player:B.a}),pe.Display.content)},loadResleevingContent:function(){pe.hideAllContent(),ee.b.navigateTo(ee.a.Resleeves),pe.Display.content.style.display="block",ie.a.City.classList.add("active"),he.a.render(ue.a.createElement(C.a,{player:B.a}),pe.Display.content)},loadGameOptionsContent:function(){pe.hideAllContent(),ee.b.navigateTo(ee.a.GameOptions),pe.Display.content.style.display="block",ie.a.City.classList.add("active"),he.a.render(ue.a.createElement(S.a,null,ue.a.createElement(w.a,{player:B.a,save:()=>W.b.saveGame(pe.indexedDb),delete:()=>W.b.deleteGame(pe.indexedDb),export:()=>W.b.exportGame(),import:()=>W.b.importGame(),forceKill:()=>{for(const e of Object.keys(U.b))U.b[e].runningScripts=[];Object(oe.a)("Forcefully deleted all running scripts. Please save and refresh page.")},softReset:()=>{Object(oe.a)("Soft Reset!"),Object(L.a)()}})),pe.Display.content)},hideAllContent:function(){pe.Display.content.style.display="none",pe.Display.content.scrollTop=0,he.a.unmountComponentAtNode(pe.Display.content),pe.Display.infiltrationContent.style.display="none",he.a.unmountComponentAtNode(pe.Display.infiltrationContent),pe.Display.workInProgressContent.style.display="none",pe.Display.redPillContent.style.display="none",pe.Display.cinematicTextContent.style.display="none",pe.Display.missionContent.style.display="none"},displayCharacterOverviewInfo:function(){console.log("rendering"),he.a.render(ue.a.createElement(S.a,null,ue.a.createElement(m.a,{player:B.a,save:()=>W.b.saveGame(pe.indexedDb)})),document.getElementById("character-overview"))},idleTimer:function(){const e=(new Date).getTime();let t=e-pe._lastUpdate;const a=t%pe._idleSpeed;t=Math.floor(t/pe._idleSpeed),t>0&&(pe._lastUpdate=e-a,B.a.lastUpdate=e-a,pe.updateGame(t)),window.requestAnimationFrame(pe.idleTimer)},updateGame:function(e=1){const t=e*pe._idleSpeed;null==B.a.totalPlaytime&&(B.a.totalPlaytime=0),null==B.a.playtimeSinceLastAug&&(B.a.playtimeSinceLastAug=0),null==B.a.playtimeSinceLastBitnode&&(B.a.playtimeSinceLastBitnode=0),B.a.totalPlaytime+=t,B.a.playtimeSinceLastAug+=t,B.a.playtimeSinceLastBitnode+=t,J.a.process(B.a,e),B.a.isWorking&&(B.a.workType==f.a.WorkTypeFaction?B.a.workForFaction(e):B.a.workType==f.a.WorkTypeCreateProgram?B.a.createProgramWork(e):B.a.workType==f.a.WorkTypeStudyClass?B.a.takeClass(e):B.a.workType==f.a.WorkTypeCrime?B.a.commitCrime(e):B.a.workType==f.a.WorkTypeCompanyPartTime?B.a.workPartTime(e):B.a.work(e)),B.a.hasWseAccount&&Object(z.j)(e),B.a.inGang()&&B.a.gang.process(e,B.a),j.c&&j.b&&j.b.process(e),B.a.corporation instanceof d.a&&B.a.corporation.storeCycles(e),B.a.bladeburner instanceof u.a&&B.a.bladeburner.storeCycles(e);for(let t=0;t0){const t=e[Math.floor(Math.random()*e.length)];Object(y.d)(t)}pe.Counters.checkFactionInvitations=100}if(pe.Counters.passiveFactionGrowth<=0){var e=Math.floor(5-pe.Counters.passiveFactionGrowth);Object(y.f)(e),pe.Counters.passiveFactionGrowth=5}if(pe.Counters.messages<=0&&(Object(I.b)(),r.a[l.a.TheRedPill].owned?pe.Counters.messages=4500:pe.Counters.messages=150),pe.Counters.mechanicProcess<=0){if(B.a.corporation instanceof d.a&&B.a.corporation.process(B.a),B.a.bladeburner instanceof u.a)try{B.a.bladeburner.process(B.a)}catch(e){Object(se.a)("Exception caught in Bladeburner.process(): "+e)}pe.Counters.mechanicProcess=5}pe.Counters.contractGeneration<=0&&(Math.random()<=.25&&Object(h.b)(),pe.Counters.contractGeneration=3e3)},toggleMainMenuHeader:function(e,t,a){for(var n=0;nr.a.createElement(r.a.Fragment,null,"Engage in the production and distribution of energy.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Energy,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Utilities:e=>r.a.createElement(r.a.Fragment,null,"Distribute water and provide wastewater services.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Utilities,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Agriculture:e=>r.a.createElement(r.a.Fragment,null,"Cultivate crops and breed livestock to produce food.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Agriculture,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Fishing:e=>r.a.createElement(r.a.Fragment,null,"Produce food through the breeding and processing of fish and fish products.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Fishing,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Mining:e=>r.a.createElement(r.a.Fragment,null,"Extract and process metals from the earth.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Mining,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Food:e=>r.a.createElement(r.a.Fragment,null,"Create your own restaurants all around the world.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Food,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Tobacco:e=>r.a.createElement(r.a.Fragment,null,"Create and distribute tobacco and tobacco-related products.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Tobacco,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Chemical:e=>r.a.createElement(r.a.Fragment,null,"Produce industrial chemicals.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Chemical,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Pharmaceutical:e=>r.a.createElement(r.a.Fragment,null,"Discover, develop, and create new pharmaceutical drugs.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Pharmaceutical,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Computer:e=>r.a.createElement(r.a.Fragment,null,"Develop and manufacture new computer hardware and networking infrastructures.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Computer,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Robotics:e=>r.a.createElement(r.a.Fragment,null,"Develop and create robots.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Robotics,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),Software:e=>r.a.createElement(r.a.Fragment,null,"Develop computer software and create AI Cores.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Software,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: YES"),Healthcare:e=>r.a.createElement(r.a.Fragment,null,"Create and manage hospitals.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.Healthcare,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: NO"),RealEstate:e=>r.a.createElement(r.a.Fragment,null,"Develop and manage real estate properties.",r.a.createElement("br",null),r.a.createElement("br",null),"Starting cost: ",r.a.createElement(o.a,{money:l.RealEstate,corp:e}),r.a.createElement("br",null),"Recommended starting Industry: NO")},u={Energy:Object(i.a)(),Utilities:Object(i.a)(),Agriculture:Object(i.a)(),Fishing:Object(i.a)(),Mining:Object(i.a)(),Food:Object(i.b)(),Tobacco:Object(i.b)(),Chemical:Object(i.a)(),Pharmaceutical:Object(i.b)(),Computer:Object(i.b)(),Robotics:Object(i.b)(),Software:Object(i.b)(),Healthcare:Object(i.b)(),RealEstate:Object(i.b)()};function m(){u.Energy=Object(i.a)(),u.Utilities=Object(i.a)(),u.Agriculture=Object(i.a)(),u.Fishing=Object(i.a)(),u.Mining=Object(i.a)(),u.Food=Object(i.a)(),u.Tobacco=Object(i.a)(),u.Chemical=Object(i.a)(),u.Pharmaceutical=Object(i.a)(),u.Computer=Object(i.a)(),u.Robotics=Object(i.a)(),u.Software=Object(i.a)(),u.Healthcare=Object(i.a)(),u.RealEstate=Object(i.a)()}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={CityNames:["Aevum","Chongqing","Sector-12","New Tokyo","Ishima","Volhaven"],CyclesPerSecond:5,StaminaGainPerSecond:.0085,BaseStaminaLoss:.285,MaxStaminaToGainFactor:7e4,DifficultyToTimeFactor:10,DiffMultExponentialFactor:.28,DiffMultLinearFactor:650,EffAgiLinearFactor:1e4,EffDexLinearFactor:1e4,EffAgiExponentialFactor:.04,EffDexExponentialFactor:.035,BaseRecruitmentTimeNeeded:300,PopulationThreshold:1e9,PopulationExponent:.7,ChaosThreshold:50,BaseStatGain:1,BaseIntGain:.003,ActionCountGrowthPeriod:480,RankToFactionRepFactor:2,RankNeededForFaction:25,ContractSuccessesPerLevel:3,OperationSuccessesPerLevel:2.5,RanksPerSkillPoint:3,ContractBaseMoneyGain:25e4,HrcHpGain:2,HrcStaminaGain:1}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={HackersStartingHandbook:"hackers-starting-handbook.lit",CorporationManagementHandbook:"corporation-management-handbook.lit",HistoryOfSynthoids:"history-of-synthoids.lit",AGreenTomorrow:"A-Green-Tomorrow.lit",AlphaOmega:"alpha-omega.lit",SimulatedReality:"simulated-reality.lit",BeyondMan:"beyond-man.lit",BrighterThanTheSun:"brighter-than-the-sun.lit",DemocracyIsDead:"democracy-is-dead.lit",Sector12Crime:"sector-12-crime.lit",ManAndMachine:"man-and-machine.lit",SecretSocieties:"secret-societies.lit",TheFailedFrontier:"the-failed-frontier.lit",CodedIntelligence:"coded-intelligence.lit",SyntheticMuscles:"synthetic-muscles.lit",TensionsInTechRace:"tensions-in-tech-race.lit",CostOfImmortality:"cost-of-immortality.lit",TheHiddenWorld:"the-hidden-world.lit",TheNewGod:"the-new-god.lit",NewTriads:"new-triads.lit",TheSecretWar:"the-secret-war.lit"}},function(e,t,a){"use strict";a.d(t,"g",(function(){return g})),a.d(t,"l",(function(){return y})),a.d(t,"h",(function(){return b})),a.d(t,"a",(function(){return E})),a.d(t,"b",(function(){return v})),a.d(t,"e",(function(){return k})),a.d(t,"f",(function(){return _})),a.d(t,"d",(function(){return C})),a.d(t,"c",(function(){return w})),a.d(t,"n",(function(){return S})),a.d(t,"o",(function(){return x})),a.d(t,"k",(function(){return O})),a.d(t,"j",(function(){return T})),a.d(t,"i",(function(){return M})),a.d(t,"p",(function(){return A})),a.d(t,"m",(function(){return R}));var n=a(240),r=a(197),i=a(177),o=a(28),s=a(85),l=a(273),c=a(210),u=a(274),m=a(49),h=a(27),p=a(35),d=a(90),f=a(50);function g(e){return 9===e.bitNodeN||f.a[9]>0}function y(e){if(m.a.isRunning){if(m.a.currStep!==m.d.HacknetNodesIntroduction)return-1;Object(m.b)()}const t=e.hacknetNodes.length;if(g(e)){const a=v(e);if(isNaN(a))throw new Error("Calculated cost of purchasing HacknetServer is NaN");return e.canAfford(a)?(e.loseMoney(a),e.createHacknetServer(),A(e),t):-1}{const a=E(e);if(isNaN(a))throw new Error("Calculated cost of purchasing HacknetNode is NaN");if(!e.canAfford(a))return-1;const r="hacknet-node-"+t,i=new n.a(r,e.hacknet_node_money_mult);return e.loseMoney(a),e.hacknetNodes.push(i),t}}function b(e){return g(e)&&e.hacknetNodes.length>=o.b.MaxServers}function E(e){return Object(r.d)(e.hacknetNodes.length+1,e.hacknet_node_purchase_cost_mult)}function v(e){return Object(i.f)(e.hacknetNodes.length+1,e.hacknet_node_purchase_cost_mult)}function k(e,t,a){if(null==a)throw new Error("getMaxNumberLevelUpgrades() called without maxLevel arg");if(e.money.lt(t.calculateLevelUpgradeCost(1,e.hacknet_node_level_cost_mult)))return 0;let n=1,r=a-1;const i=a-t.level;if(e.money.gt(t.calculateLevelUpgradeCost(i,e.hacknet_node_level_cost_mult)))return i;for(;n<=r;){const o=(n+r)/2|0;if(o!==a&&e.money.gt(t.calculateLevelUpgradeCost(o,e.hacknet_node_level_cost_mult))&&e.money.lt(t.calculateLevelUpgradeCost(o+1,e.hacknet_node_level_cost_mult)))return Math.min(i,o);if(e.money.lt(t.calculateLevelUpgradeCost(o,e.hacknet_node_level_cost_mult)))r=o-1;else{if(!e.money.gt(t.calculateLevelUpgradeCost(o,e.hacknet_node_level_cost_mult)))return Math.min(i,o);n=o+1}}return 0}function _(e,t,a){if(null==a)throw new Error("getMaxNumberRamUpgrades() called without maxLevel arg");if(e.money.lt(t.calculateRamUpgradeCost(1,e.hacknet_node_ram_cost_mult)))return 0;let n;if(n=t instanceof s.a?Math.round(Math.log2(a/t.maxRam)):Math.round(Math.log2(a/t.ram)),e.money.gt(t.calculateRamUpgradeCost(n,e.hacknet_node_ram_cost_mult)))return n;for(let a=n-1;a>=0;--a)if(e.money.gt(t.calculateRamUpgradeCost(a,e.hacknet_node_ram_cost_mult)))return a;return 0}function C(e,t,a){if(null==a)throw new Error("getMaxNumberCoreUpgrades() called without maxLevel arg");if(e.money.lt(t.calculateCoreUpgradeCost(1,e.hacknet_node_core_cost_mult)))return 0;let n=1,r=a-1;const i=a-t.cores;if(e.money.gt(t.calculateCoreUpgradeCost(i,e.hacknet_node_core_cost_mult)))return i;for(;n<=r;){const o=(n+r)/2|0;if(o!=a&&e.money.gt(t.calculateCoreUpgradeCost(o,e.hacknet_node_core_cost_mult))&&e.money.lt(t.calculateCoreUpgradeCost(o+1,e.hacknet_node_core_cost_mult)))return Math.min(i,o);if(e.money.lt(t.calculateCoreUpgradeCost(o,e.hacknet_node_core_cost_mult)))r=o-1;else{if(!e.money.gt(t.calculateCoreUpgradeCost(o,e.hacknet_node_core_cost_mult)))return Math.min(i,o);n=o+1}}return 0}function w(e,t,a){if(null==a)throw new Error("getMaxNumberCacheUpgrades() called without maxLevel arg");if(!e.canAfford(t.calculateCacheUpgradeCost(1)))return 0;let n=1,r=a-1;const i=a-t.cache;if(e.canAfford(t.calculateCacheUpgradeCost(i)))return i;for(;n<=r;){const o=(n+r)/2|0;if(o!=a&&e.canAfford(t.calculateCacheUpgradeCost(o))&&!e.canAfford(t.calculateCacheUpgradeCost(o+1)))return Math.min(i,o);if(e.canAfford(t.calculateCacheUpgradeCost(o))){if(!e.canAfford(t.calculateCacheUpgradeCost(o)))return Math.min(i,o);n=o+1}else r=o-1}return 0}function S(e,t,a=1){const n=Math.round(a),r=t.calculateLevelUpgradeCost(n,e.hacknet_node_level_cost_mult);if(isNaN(r)||r<=0||n<0)return!1;const i=t instanceof s.a;if(t.level>=(i?o.b.MaxLevel:o.a.MaxLevel))return!1;if(t.level+n>(i?o.b.MaxLevel:o.a.MaxLevel)){return S(e,t,Math.max(0,(i?o.b.MaxLevel:o.a.MaxLevel)-t.level))}return!!e.canAfford(r)&&(e.loseMoney(r),t.upgradeLevel(n,e.hacknet_node_money_mult),!0)}function x(e,t,a=1){const r=Math.round(a),i=t.calculateRamUpgradeCost(r,e.hacknet_node_ram_cost_mult);if(isNaN(i)||i<=0||r<0)return!1;if(t instanceof s.a&&t.maxRam>=o.b.MaxRam)return!1;if(t instanceof n.a&&t.ram>=o.a.MaxRam)return!1;if(t instanceof s.a){if(t.maxRam*Math.pow(2,r)>o.b.MaxRam){return x(e,t,Math.max(0,Math.log2(Math.round(o.b.MaxRam/t.maxRam))))}}else if(t instanceof n.a&&t.ram*Math.pow(2,r)>o.a.MaxRam){return x(e,t,Math.max(0,Math.log2(Math.round(o.a.MaxRam/t.ram))))}return!!e.canAfford(i)&&(e.loseMoney(i),t.upgradeRam(r,e.hacknet_node_money_mult),!0)}function O(e,t,a=1){const n=Math.round(a),r=t.calculateCoreUpgradeCost(n,e.hacknet_node_core_cost_mult);if(isNaN(r)||r<=0||n<0)return!1;const i=t instanceof s.a;if(t.cores>=(i?o.b.MaxCores:o.a.MaxCores))return!1;if(t.cores+n>(i?o.b.MaxCores:o.a.MaxCores)){return O(e,t,Math.max(0,(i?o.b.MaxCores:o.a.MaxCores)-t.cores))}return!!e.canAfford(r)&&(e.loseMoney(r),t.upgradeCore(n,e.hacknet_node_money_mult),!0)}function T(e,t,a=1){const n=Math.round(a),r=t.calculateCacheUpgradeCost(n);if(isNaN(r)||r<=0||n<0)return!1;if(!(t instanceof s.a))return console.warn("purchaseCacheUpgrade() called for a non-HacknetNode"),!1;if(t.cache+n>o.b.MaxCache){return T(e,t,Math.max(0,o.b.MaxCache-t.cache))}return!!e.canAfford(r)&&(e.loseMoney(r),t.upgradeCache(n),!0)}function M(e,t){return 0===e.hacknetNodes.length?0:g(e)?function(e,t){if(!(e.hashManager instanceof l.a))throw new Error("Player does not have a HashManager (should be in 'hashManager' prop)");let a=0;for(let r=0;r{var t;null!=o[(t=e).name]&&console.warn("Duplicate Company Position being defined: "+t.name),o[t.name]=new r.a(t)});for(const t in o){const a=o[t];e[t]instanceof r.a?(a.favor=e[t].favor,isNaN(a.favor)&&(a.favor=0)):a.favor=0}}function l(e){o=JSON.parse(e,i.c)}},,function(e,t,a){"use strict";a.d(t,"d",(function(){return h})),a.d(t,"c",(function(){return d})),a.d(t,"b",(function(){return g})),a.d(t,"a",(function(){return p}));var n=a(37),r=a(1),i=a(33),o=a(44),s=a(108),l=a(94),c=a(323),u=a(182);const m=["Start","GoToCharacterPage","CharacterPage","CharacterGoToTerminalPage","TerminalIntro","TerminalHelp","TerminalLs","TerminalScan","TerminalScanAnalyze1","TerminalScanAnalyze2","TerminalConnect","TerminalAnalyze","TerminalNuke","TerminalManualHack","TerminalHackingMechanics","TerminalCreateScript","TerminalTypeScript","TerminalFree","TerminalRunScript","TerminalGoToActiveScriptsPage","ActiveScriptsPage","ActiveScriptsToTerminal","TerminalTailScript","GoToHacknetNodesPage","HacknetNodesIntroduction","HacknetNodesGoToWorldPage","WorldDescription","TutorialPageInfo","End"],h={};for(let e=0;eh.Start&&(p.currStep-=1);f()}(),!1}));Object(s.a)("interactive-tutorial-next").addEventListener("click",(function(){return g(),!1})),f()}function f(){if(!p.isRunning)return;const e=document.getElementById("interactive-tutorial-next");switch(p.currStep){case h.Start:n.Engine.loadTerminalContent(),E("Welcome to Bitburner, a cyberpunk-themed incremental RPG! The game takes place in a dark, dystopian future... The year is 2077...

This tutorial will show you the basics of the game. You may skip the tutorial at any time."),e.style.display="inline-block";break;case h.GoToCharacterPage:n.Engine.loadTerminalContent(),E("Let's start by heading to the Stats page. Click the Stats tab on the main navigation menu (left-hand side of the screen)"),e.style.display="none";break;case h.CharacterPage:n.Engine.loadCharacterContent(),E("The Stats page shows a lot of important information about your progress, such as your skills, money, and bonuses. "),e.style.display="inline-block";break;case h.CharacterGoToTerminalPage:n.Engine.loadCharacterContent(),E("Let's head to your computer's terminal by clicking the Terminal tab on the main navigation menu."),e.style.display="none";break;case h.TerminalIntro:n.Engine.loadTerminalContent(),E("The Terminal is used to interface with your home computer as well as all of the other machines around the world."),e.style.display="inline-block";break;case h.TerminalHelp:n.Engine.loadTerminalContent(),E("Let's try it out. Start by entering the help command into the Terminal (Don't forget to press Enter after typing the command)"),e.style.display="none";break;case h.TerminalLs:n.Engine.loadTerminalContent(),E("The help command displays a list of all available Terminal commands, how to use them, and a description of what they do.

Let's try another command. Enter the ls command."),e.style.display="none";break;case h.TerminalScan:n.Engine.loadTerminalContent(),E(" ls is a basic command that shows files on the computer. Right now, it shows that you have a program called NUKE.exe on your computer. We'll get to what this does later.

Using your home computer's terminal, you can connect to other machines throughout the world. Let's do that now by first entering the scan command."),e.style.display="none";break;case h.TerminalScanAnalyze1:n.Engine.loadTerminalContent(),E("The scan command shows all available network connections. In other words, it displays a list of all servers that can be connected to from your current machine. A server is identified by its hostname.

That's great and all, but there's so many servers. Which one should you go to? The scan-analyze command gives some more detailed information about servers on the network. Try it now!"),e.style.display="none";break;case h.TerminalScanAnalyze2:n.Engine.loadTerminalContent(),E("You just ran scan-analyze with a depth of one. This command shows more detailed information about each server that you can connect to (servers that are a distance of one node away).

It is also possible to run scan-analyze with a higher depth. Let's try a depth of two with the following command: scan-analyze 2."),e.style.display="none";break;case h.TerminalConnect:n.Engine.loadTerminalContent(),E("Now you can see information about all servers that are up to two nodes away, as well as figure out how to navigate to those servers through the network. You can only connect to a server that is one node away. To connect to a machine, use the connect [hostname] command.

From the results of the scan-analyze command, we can see that the n00dles server is only one node away. Let's connect so it now using: connect n00dles"),e.style.display="none";break;case h.TerminalAnalyze:n.Engine.loadTerminalContent(),E("You are now connected to another machine! What can you do now? You can hack it!

In the year 2077, currency has become digital and decentralized. People and corporations store their money on servers and computers. Using your hacking abilities, you can hack servers to steal money and gain experience.

Before you try to hack a server, you should run diagnostics using the analyze command."),e.style.display="none";break;case h.TerminalNuke:n.Engine.loadTerminalContent(),E("When the analyze command finishes running it will show useful information about hacking the server.

For this server, the required hacking skill is only 1, which means you can hack it right now. However, in order to hack a server you must first gain root access. The NUKE.exe program that we saw earlier on your home computer is a virus that will grant you root access to a machine if there are enough open ports.

The analyze results shows that there do not need to be any open ports on this machine for the NUKE virus to work, so go ahead and run the virus using the run NUKE.exe command."),e.style.display="none";break;case h.TerminalManualHack:n.Engine.loadTerminalContent(),E("You now have root access! You can hack the server using the hack command. Try doing that now."),e.style.display="none";break;case h.TerminalHackingMechanics:n.Engine.loadTerminalContent(),E("You are now attempting to hack the server. Performing a hack takes time and only has a certain percentage chance of success. This time and success chance is determined by a variety of factors, including your hacking skill and the server's security level.

If your attempt to hack the server is successful, you will steal a certain percentage of the server's total money. This percentage is affected by your hacking skill and the server's security level.

The amount of money on a server is not limitless. So, if you constantly hack a server and deplete its money, then you will encounter diminishing returns in your hacking."),e.style.display="inline-block";break;case h.TerminalCreateScript:n.Engine.loadTerminalContent(),E("Hacking is the core mechanic of the game and is necessary for progressing. However, you don't want to be hacking manually the entire time. You can automate your hacking by writing scripts!

To create a new script or edit an existing one, you can use the nano command. Scripts must end with the .script extension. Let's make a script now by entering nano n00dles.script after the hack command finishes running (Sidenote: Pressing ctrl + c will end a command like hack early)"),e.style.display="none";break;case h.TerminalTypeScript:n.Engine.loadScriptEditorContent("n00dles.script",""),E("This is the script editor. You can use it to program your scripts. Scripts are written in a simplified version of javascript. Copy and paste the following code into the script editor:

while(true) {\n  hack('n00dles');\n}
For anyone with basic programming experience, this code should be straightforward. This script will continuously hack the n00dles server.

To save and close the script editor, press the button in the bottom left, or press ctrl + b."),e.style.display="none";break;case h.TerminalFree:n.Engine.loadTerminalContent(),E("Now we'll run the script. Scripts require a certain amount of RAM to run, and can be run on any machine which you have root access to. Different servers have different amounts of RAM. You can also purchase more RAM for your home server.

To check how much RAM is available on this machine, enter the free command."),e.style.display="none";break;case h.TerminalRunScript:n.Engine.loadTerminalContent(),E("We have 4GB of free RAM on this machine, which is enough to run our script. Let's run our script using run n00dles.script."),e.style.display="none";break;case h.TerminalGoToActiveScriptsPage:n.Engine.loadTerminalContent(),E("Your script is now running! It will continuously run in the background and will automatically stop if the code ever completes (the n00dles.script will never complete because it runs an infinite loop).

These scripts can passively earn you income and hacking experience. Your scripts will also earn money and experience while you are offline, although at a slightly slower rate.

Let's check out some statistics for our running scripts by clicking the Active Scripts link in the main navigation menu."),e.style.display="none";break;case h.ActiveScriptsPage:n.Engine.loadActiveScriptsContent(),E("This page displays information about all of your scripts that are running across every server. You can use this to gauge how well your scripts are doing. Let's go back to the Terminal"),e.style.display="none";break;case h.ActiveScriptsToTerminal:n.Engine.loadTerminalContent(),E("One last thing about scripts, each active script contains logs that detail what it's doing. We can check these logs using the tail command. Do that now for the script we just ran by typing tail n00dles.script"),e.style.display="none";break;case h.TerminalTailScript:n.Engine.loadTerminalContent(),E("The log for this script won't show much right now (it might show nothing at all) because it just started running...but check back again in a few minutes!

This covers the basics of hacking. To learn more about writing scripts, select the Tutorial link in the main navigation menu to look at the documentation. If you are an experienced JavaScript developer, I would highly suggest you check out the section on NetscriptJS/Netscript 2.0, it's faster and more powerful.

For now, let's move on to something else!"),e.style.display="inline-block";break;case h.GoToHacknetNodesPage:n.Engine.loadTerminalContent(),E("Hacking is not the only way to earn money. One other way to passively earn money is by purchasing and upgrading Hacknet Nodes. Let's go to the Hacknet page through the main navigation menu now."),e.style.display="none";break;case h.HacknetNodesIntroduction:n.Engine.loadHacknetNodesContent(),E("here you can purchase new Hacknet Nodes and upgrade your existing ones. Let's purchase a new one now."),e.style.display="none";break;case h.HacknetNodesGoToWorldPage:n.Engine.loadHacknetNodesContent(),E("You just purchased a Hacknet Node! This Hacknet Node will passively earn you money over time, both online and offline. When you get enough money, you can upgrade your newly-purchased Hacknet Node below.

Let's go to the City page through the main navigation menu."),e.style.display="none";break;case h.WorldDescription:n.Engine.loadLocationContent(),E("This page lists all of the different locations you can currently travel to. Each location has something that you can do. There's a lot of content out in the world, make sure you explore and discover!

Lastly, click on the Tutorial link in the main navigation menu."),e.style.display="none";break;case h.TutorialPageInfo:n.Engine.loadTutorialContent(),E("This page contains a lot of different documentation about the game's content and mechanics. I know it's a lot, but I highly suggest you read (or at least skim) through this before you start playing. That's the end of the tutorial. Hope you enjoy the game!"),e.style.display="inline-block",e.innerHTML="Finish Tutorial";break;case h.End:y();break;default:throw new Error("Invalid tutorial step")}!0===p.stepIsDone[p.currStep]&&(e.style.display="inline-block")}function g(){p.stepIsDone[p.currStep]=!0,p.currStep
Getting Started GuideDocumentation

The Beginner's Guide to Hacking was added to your home computer! It contains some tips/pointers for starting out with the game. To read it, go to Terminal and enter

cat "+o.a.HackersStartingHandbook}),a=Object(l.a)("a",{class:"a-link-button",float:"right",padding:"6px",innerText:"Got it!",clickListener:()=>{Object(u.a)(e)}});Object(c.a)(e,[t,a]),r.a.getHomeComputer().messages.push(o.a.HackersStartingHandbook)}let b=null;function E(e){b.innerHTML=e,b.parentElement.scrollTop=0}document.addEventListener("DOMContentLoaded",(function e(){b=document.getElementById("interactive-tutorial-text"),document.removeEventListener("DOMContentLoaded",e)}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return i}));var n=a(5);const r=Array(n.a.TotalNumBitNodes+1);function i(e){for(let e=0;e_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.DividendMaxPercentage)throw new Error("Invalid value. Must be an integer between 0 and "+_data_Constants__WEBPACK_IMPORTED_MODULE_2__.a.DividendMaxPercentage);e.dividendPercentage=100*t}function SellMaterial(mat,amt,price){""===price&&(price="0"),""===amt&&(amt="0");let cost=price.replace(/\s+/g,"");cost=cost.replace(/[^-()\d/*+.MP]/g,"");let temp=cost.replace(/MP/g,mat.bCost+"");try{temp=eval(temp)}catch(e){throw new Error("Invalid value or expression for sell price field: "+e)}if(null==temp||isNaN(parseFloat(temp)))throw new Error("Invalid value or expression for sell price field");if(cost.includes("MP")?mat.sCost=cost:mat.sCost=temp,amt.includes("MAX")||amt.includes("PROD")){let q=amt.replace(/\s+/g,"");q=q.replace(/[^-()\d/*+.MAXPROD]/g,"");let tempQty=q.replace(/MAX/g,"1");tempQty=tempQty.replace(/PROD/g,"1");try{tempQty=eval(tempQty)}catch(e){throw new Error("Invalid value or expression for sell price field: "+e)}if(null==tempQty||isNaN(parseFloat(tempQty)))throw new Error("Invalid value or expression for sell price field");mat.sllman[0]=!0,mat.sllman[1]=q}else{if(isNaN(parseFloat(amt)))throw new Error("Invalid value for sell quantity field! Must be numeric or 'MAX'");{let e=parseFloat(amt);isNaN(e)&&(e=0),0===e?(mat.sllman[0]=!1,mat.sllman[1]=0):(mat.sllman[0]=!0,mat.sllman[1]=e)}}}function SellProduct(product,city,amt,price,all){if(price.includes("MP")){price=price.replace(/\s+/g,""),price=price.replace(/[^-()\d/*+.MP]/g,"");let temp=price.replace(/MP/g,"1");try{temp=eval(temp)}catch(e){throw new Error("Invalid value or expression for sell quantity field: "+e)}if(null==temp||isNaN(parseFloat(temp)))throw new Error("Invalid value or expression for sell quantity field.");product.sCost=price}else{const e=parseFloat(price);if(isNaN(e))throw new Error("Invalid value for sell price field");product.sCost=e}const cities=Object.keys(_Locations_Cities__WEBPACK_IMPORTED_MODULE_6__.a);if(amt.includes("MAX")||amt.includes("PROD")){let qty=amt.replace(/\s+/g,"");qty=qty.replace(/[^-()\d/*+.MAXPROD]/g,"");let temp=qty.replace(/MAX/g,"1");temp=temp.replace(/PROD/g,"1");try{temp=eval(temp)}catch(e){throw new Error("Invalid value or expression for sell price field: "+e)}if(null==temp||isNaN(parseFloat(temp)))throw new Error("Invalid value or expression for sell price field");if(all)for(let e=0;e]/g,""),createCity:a,designCost:r,advCost:i});if(t.products[o.name]instanceof _Product__WEBPACK_IMPORTED_MODULE_4__.a)throw new Error("You already have a product with this name!");e.funds=e.funds.minus(r+i),t.products[o.name]=o}function Research(e,t){const a=_IndustryData__WEBPACK_IMPORTED_MODULE_0__.c[e.type];if(void 0===a)throw new Error(`No research tree for industry '${e.type}'`);if(!a.getAllNodes().includes(t))throw new Error(`No research named '${t}'`);const n=_ResearchMap__WEBPACK_IMPORTED_MODULE_9__.a[t];if(e.sciResearch.qty{var t;null!=i[(t=e).name]&&console.warn("Duplicate Company Position being defined: "+t.name),i[t.name]=new r.a(t)})},,function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(7);const r={};r[n.a.AevumECorp]="ECP",r[n.a.Sector12MegaCorp]="MGCP",r[n.a.Sector12BladeIndustries]="BLD",r[n.a.AevumClarkeIncorporated]="CLRK",r[n.a.VolhavenOmniTekIncorporated]="OMTK",r[n.a.Sector12FourSigma]="FSIG",r[n.a.ChongqingKuaiGongInternational]="KGI",r[n.a.AevumFulcrumTechnologies]="FLCM",r[n.a.IshimaStormTechnologies]="STM",r[n.a.NewTokyoDefComm]="DCOMM",r[n.a.VolhavenHeliosLabs]="HLS",r[n.a.NewTokyoVitaLife]="VITA",r[n.a.Sector12IcarusMicrosystems]="ICRS",r[n.a.Sector12UniversalEnergy]="UNV",r[n.a.AevumAeroCorp]="AERO",r[n.a.VolhavenOmniaCybersystems]="OMN",r[n.a.ChongqingSolarisSpaceSystems]="SLRS",r[n.a.NewTokyoGlobalPharmaceuticals]="GPH",r[n.a.IshimaNovaMedical]="NVMD",r[n.a.AevumWatchdogSecurity]="WDS",r[n.a.VolhavenLexoCorp]="LXO",r[n.a.AevumRhoConstruction]="RHOC",r[n.a.Sector12AlphaEnterprises]="APHE",r[n.a.VolhavenSysCoreSecurities]="SYSC",r[n.a.VolhavenCompuTek]="CTK",r[n.a.AevumNetLinkTechnologies]="NTLK",r[n.a.IshimaOmegaSoftware]="OMGA",r[n.a.Sector12FoodNStuff]="FNS",r["Sigma Cosmetics"]="SGC",r["Joes Guns"]="JGN",r["Catalyst Ventures"]="CTYS",r["Microdyne Technologies"]="MDYN",r["Titan Laboratories"]="TITN"},,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return _})),a.d(t,"b",(function(){return C})),a.d(t,"i",(function(){return w})),a.d(t,"c",(function(){return S})),a.d(t,"h",(function(){return x})),a.d(t,"d",(function(){return O})),a.d(t,"f",(function(){return T})),a.d(t,"g",(function(){return M})),a.d(t,"j",(function(){return A})),a.d(t,"e",(function(){return j}));var n=a(150),r=a(503),i=a(245),o=a(100),s=a(452),l=a(692),c=a(77),u=a(53),m=a(66),h=a(693),p=a(5),d=a(1),f=a(324),g=a(46),y=a(2),b=a(9),E=a(14),v=a(0),k=a(52);let _={};const C={};function w(e,t,a,n,s,l=null){if(!(e instanceof o.a))return l?l.log("placeOrder",`Invalid stock: '${e}'`):Object(b.a)("ERROR: Invalid stock passed to placeOrder() function"),!1;if("number"!=typeof t||"number"!=typeof a)return l?l.log("placeOrder",`Invalid arguments: shares='${t}' price='${a}'`):Object(b.a)("ERROR: Invalid numeric value provided for either 'shares' or 'price' argument"),!1;const c=new r.a(e.symbol,t,a,n,s);if(null==_.Orders){const e={};for(const t in _){const a=_[t];a instanceof o.a&&(e[a.symbol]=[])}_.Orders=e}_.Orders[e.symbol].push(c);const u={rerenderFn:j,stockMarket:_,symbolToStockMap:C};return Object(i.a)(e,c.type,c.pos,u),j(),!0}function S(e,t=null){if(null==_.Orders)return!1;if(e.order&&e.order instanceof r.a){const t=e.order,a=_.Orders[t.stockSymbol];for(let e=0;e=t.cap&&(r=.1,t.b=!1),isNaN(r)&&(r=.5);const s=Math.random(),l={rerenderFn:j,stockMarket:_,symbolToStockMap:C};s{Object(i.a)(e,o.a,{c:this,popupId:e,onClose:()=>{t(u.Cancelled),Object(i.b)(e)},onAttempt:a=>{this.isSolution(a)?t(u.Success):t(u.Failure),Object(i.b)(e)}},()=>t(u.Cancelled))})}toJSON(){return Object(r.b)("CodingContract",this)}static fromJSON(e){return Object(r.a)(m,e.data)}}r.c.constructors.CodingContract=m},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e.LimitBuy="Limit Buy Order",e.LimitSell="Limit Sell Order",e.StopBuy="Stop Buy Order",e.StopSell="Stop Sell Order"}(n||(n={}))},function(e,t,a){"use strict";a.d(t,"b",(function(){return i})),a.d(t,"c",(function(){return o})),a.d(t,"e",(function(){return s})),a.d(t,"d",(function(){return l})),a.d(t,"a",(function(){return c})),a.d(t,"f",(function(){return u}));var n=a(6),r=a(293);function i(e,t){const a=(100-e.hackDifficulty)/100,n=1.75*t.hacking_skill,i=(n-e.requiredHackingSkill)/n*a*t.hacking_chance_mult*Object(r.a)(t.intelligence,1);return i>1?1:i<0?0:i}function o(e,t){null==e.baseDifficulty&&(e.baseDifficulty=e.hackDifficulty);let a=3;return a+=e.baseDifficulty*t.hacking_exp_mult*.3,a*n.a.HackExpGain}function s(e,t){const a=(100-e.hackDifficulty)/100*((t.hacking_skill-(e.requiredHackingSkill-1))/t.hacking_skill)*t.hacking_money_mult/240;return a<0?0:a>1?1:a*n.a.ScriptHackMoney}function l(e,t){let a=2.5*(e.requiredHackingSkill*e.hackDifficulty)+500;a/=t.hacking_skill+50;return 5*a/(t.hacking_speed_mult*Object(r.a)(t.intelligence,1))}function c(e,t){return 3.2*l(e,t)}function u(e,t){return 4*l(e,t)}},,function(e,t,a){"use strict";function n(e){return"string"==typeof e||e instanceof String}a.d(t,"a",(function(){return n}))},,,function(e,t,a){"use strict";function n(e){return e.endsWith(".js")||e.endsWith(".script")||e.endsWith(".ns")}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"d",(function(){return w})),a.d(t,"e",(function(){return S})),a.d(t,"a",(function(){return O})),a.d(t,"c",(function(){return T})),a.d(t,"g",(function(){return M})),a.d(t,"b",(function(){return P})),a.d(t,"f",(function(){return A}));var n=a(0),r=a.n(n),i=a(52),o=a.n(i),s=a(625),l=a(18),c=a(259),u=a(4),m=a(6),h=a(5),p=a(37),d=a(132),f=a(24),g=a(118),y=a(1),b=a(33),E=a(187),v=a(50),k=a(9),_=a(17),C=a(645);function w(e){if(y.a.factionInvitations.push(e.name),e.alreadyInvited=!0,!b.a.SuppressFactionInvites){const t="faction-invitation";Object(_.a)(t,C.a,{player:y.a,faction:e,popupId:t})}}function S(e){if(e.isMember)return;e.isMember=!0,y.a.factions.push(e.name);const t=e.getInfo();for(const e in t.enemies){const a=t.enemies[e];f.a[a]instanceof d.a&&(f.a[a].isBanned=!0)}for(var a=0;a0)for(let a=0;a0){if("unalias"===t[0]||"alias"===t[0])return t.join(" ");let e=!0,o=0;for(;e&&o<10;){var a;o++,e=!1;const s=null===(i=t[0],a=r.hasOwnProperty(i)?r[i]:null)||void 0===a?void 0:a.split(" ");null!=s&&(e=!0,t.splice(0,1,...s));for(let a=0;a100&&(this.hackDifficulty=100)}changeMinimumSecurity(e,t=!1){t?this.minDifficulty*=e:this.minDifficulty+=e,this.minDifficulty=Math.max(1,this.minDifficulty)}changeMaximumMoney(e,t=!1){t?this.moneyMax*=e:this.moneyMax+=e}fortify(e){this.hackDifficulty+=e,this.capDifficulty()}weaken(e){this.hackDifficulty-=e*r.a.ServerWeakenRate,this.capDifficulty()}toJSON(){return Object(s.b)("Server",this)}static fromJSON(e){return Object(s.a)(c,e.data)}}s.c.constructors.Server=c},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(0),r=a(2);function i(e){return e.corp.funds.gt(e.money)?n.createElement("span",{className:"money-gold samefont"},r.a.formatMoney(e.money)):n.createElement("span",{className:"unbuyable samefont"},r.a.formatMoney(e.money))}},,,function(e,t,a){"use strict";function n(e,t={}){const a=document.createElement(e);return void 0!==t.id&&(a.id=t.id),void 0!==t.class&&(a.className=t.class),void 0!==t.innerHTML&&(a.innerHTML=t.innerHTML),void 0!==t.innerText&&(a.innerText=t.innerText),void 0!==t.tabIndex&&(a.tabIndex=t.tabIndex),function(e,t){void 0!==t.text&&(e.text=t.text),void 0!==t.href&&(e.href=t.href),void 0!==t.target&&(e.target=t.target)}(a,t),function(e,t){void 0!==t.name&&(e.name=t.name),void 0!==t.value&&(e.value=t.value),void 0!==t.type&&(e.type=t.type),void 0!==t.checked&&(e.checked=t.checked),void 0!==t.pattern&&(e.pattern=t.pattern),void 0!==t.maxLength&&(e.maxLength=t.maxLength),void 0!==t.placeholder&&(e.placeholder=t.placeholder),void 0!==t.max&&(e.max=t.max),void 0!==t.min&&(e.min=t.min),void 0!==t.step&&(e.step=t.step)}(a,t),function(e,t){void 0!==t.for&&(e.htmlFor=t.for)}(a,t),function(e,t){void 0!==t.clickListener&&e.addEventListener("click",t.clickListener),void 0!==t.mouseDown&&e.addEventListener("mousedown",t.mouseDown),void 0!==t.inputListener&&e.addEventListener("input",t.inputListener),void 0!==t.changeListener&&e.addEventListener("change",t.changeListener),void 0!==t.onkeyup&&e.addEventListener("keyup",t.onkeyup),void 0!==t.onkeydown&&e.addEventListener("keydown",t.onkeydown),void 0!==t.onfocus&&e.addEventListener("focus",t.onfocus)}(a,t),function(e,t){void 0!==t.display&&(e.style.display=t.display),void 0!==t.visibility&&(e.style.visibility=t.visibility),void 0!==t.margin&&(e.style.margin=t.margin),void 0!==t.marginLeft&&(e.style.marginLeft=t.marginLeft),void 0!==t.marginTop&&(e.style.marginTop=t.marginTop),void 0!==t.padding&&(e.style.padding=t.padding),void 0!==t.color&&(e.style.color=t.color),void 0!==t.border&&(e.style.border=t.border),void 0!==t.float&&(e.style.cssFloat=t.float),void 0!==t.fontSize&&(e.style.fontSize=t.fontSize),void 0!==t.whiteSpace&&(e.style.whiteSpace=t.whiteSpace),void 0!==t.width&&(e.style.width=t.width),void 0!==t.height&&(e.style.height=t.height),void 0!==t.top&&(e.style.top=t.top),void 0!==t.left&&(e.style.left=t.left),void 0!==t.backgroundColor&&(e.style.backgroundColor=t.backgroundColor),void 0!==t.position&&(e.style.position=t.position),void 0!==t.overflow&&(e.style.overflow=t.overflow)}(a,t),function(e,t){void 0!==t.tooltip&&""!==t.tooltip?(e.className+=" tooltip",e.appendChild(n("span",{class:"tooltiptext",innerHTML:t.tooltip}))):void 0!==t.tooltipleft?(e.className+=" tooltip",e.appendChild(n("span",{class:"tooltiptextleft",innerHTML:t.tooltipleft}))):void 0!==t.tooltipsmall?(e.className+=" tooltip",e.appendChild(n("span",{class:"tooltiptext smallfont",innerHTML:t.tooltipsmall}))):void 0!==t.tooltiplow&&(e.className+="tooltip",e.appendChild(n("span",{class:"tooltiptextlow",innerHTML:t.tooltiplow})))}(a,t),a}a.d(t,"a",(function(){return n}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(14);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class i{constructor(e="",t=""){r(this,"filename",""),r(this,"msg",""),r(this,"recvd",!1),this.filename=e,this.msg=t,this.recvd=!1}toJSON(){return Object(n.b)("Message",this)}static fromJSON(e){return Object(n.a)(i,e.data)}}n.c.constructors.Message=i},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(253),r=a(14);class i extends n.a{constructor(e=null){super(e),this.count=1}getActionTimePenalty(){return 1.5}getChaosCompetencePenalty(){return 1}getChaosDifficultyBonus(){return 1}toJSON(){return Object(r.b)("BlackOperation",this)}static fromJSON(e){return Object(r.a)(i,e.data)}}r.c.constructors.BlackOperation=i},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={BladesIntuition:"Blade's Intuition",Cloak:"Cloak",Marksman:"Marksman",WeaponProficiency:"Weapon Proficiency",ShortCircuit:"Short-Circuit",DigitalObserver:"Digital Observer",Tracer:"Tracer",Overclock:"Overclock",Reaper:"Reaper",EvasiveSystem:"Evasive System",Datamancer:"Datamancer",CybersEdge:"Cyber's Edge",HandsOfMidas:"Hands of Midas",Hyperdrive:"Hyperdrive"}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a(241),r=a(148),i=a(207),o=a(262),s=a(27),l=a(233),c=a(292);function u(e,t,a){if(null!=a&&"boolean"==typeof a||(a=!0),e instanceof n.a)return h(e),!0;if(e instanceof o.a&&"string"==typeof t){const n=m(e.pid,a);if(n)return n;for(const n of r.a.values())if(n.name==e.filename&&n.serverIp==t&&Object(l.a)(n.args,e.args))return h(n,a),!0;return!1}return"number"==typeof e?m(e,a):(console.error("killWorkerScript() called with invalid argument:"),console.error(e),!1)}function m(e,t=!0){const a=r.a.get(e);return a instanceof n.a&&(h(a,t),!0)}function h(e,t=!0){e.env.stopFlag=!0,function(e){e instanceof n.a&&e.delay&&(clearTimeout(e.delay),e.delayResolve&&e.delayResolve())}(e),function(e,t=!0){if(!(e instanceof n.a))return console.error("Invalid argument passed into removeWorkerScript():"),void console.error(e);{const a=e.serverIp,n=e.name,o=s.b[a];if(null==o)return void console.error("Could not find server on which this script is running: "+a);o.ramUsed=Object(c.a)(o.ramUsed-e.ramUsage),o.ramUsed<0&&(console.warn(`Server (${o.hostname}) RAM usage went negative (if it's due to floating pt imprecision, it's okay): ${o.ramUsed}`),o.ramUsed=0);for(let t=0;t100?this.otlkMagForecast=100:this.otlkMagForecast<0&&(this.otlkMagForecast=0)}changePrice(e){this.lastPrice=this.price,this.price=e}cycleForecast(e=.1){const t=this.getForecastIncreaseChance();Math.random()5&&(this.otlkMag=Math.max(5,this.otlkMag-e))}influenceForecastForecast(e){this.otlkMagForecast>50?(this.otlkMagForecast-=e,this.otlkMagForecast=Math.max(50,this.otlkMagForecast)):this.otlkMagForecast<50&&(this.otlkMagForecast+=e,this.otlkMagForecast=Math.min(50,this.otlkMagForecast))}toJSON(){return Object(n.b)("Stock",this)}static fromJSON(e){return Object(n.a)(s,e.data)}}n.c.constructors.Stock=s},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={}},,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return g}));var n=a(0),r=a.n(n),i=a(803),o=a.n(i),s=a(804),l=a.n(s),c=a(255),u=a(437),m=a.n(u),h=a(436),p=a.n(h),d=a(395),f=a(105);function g(e){const[t,a]=Object(n.useState)("");const{label:i,placeholder:s,add:u,subtract:h,reset:g,tons:y}=e;return r.a.createElement(r.a.Fragment,null,r.a.createElement(d.a,{label:i,value:t,onChange:function(e){""===e.target.value?a(""):a(parseFloat(e.target.value))},placeholder:s,type:"number",InputProps:{startAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,{title:"Add a lot"},r.a.createElement(c.a,{color:"primary",onClick:y,size:"large"},r.a.createElement(p.a,{style:{transform:"rotate(-90deg)"}}))),r.a.createElement(f.a,{title:"Add"},r.a.createElement(c.a,{color:"primary",onClick:()=>u("string"!=typeof t?t:0),size:"large"},r.a.createElement(o.a,null)))),endAdornment:r.a.createElement(r.a.Fragment,null,r.a.createElement(f.a,{title:"Remove"},r.a.createElement(c.a,{color:"primary",onClick:()=>h("string"!=typeof t?t:0),size:"large"},r.a.createElement(l.a,null))),r.a.createElement(f.a,{title:"Reset"},r.a.createElement(c.a,{color:"primary",onClick:g,size:"large"},r.a.createElement(m.a,null))))}}))}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(205);function r(e){try{let t;t="string"==typeof e?Object(n.a)(e):e;const a=t.cloneNode(!0);return null!==t.parentNode&&t.parentNode.replaceChild(a,t),a}catch(e){return console.error(e),null}}},,function(e,t,a){"use strict";a.d(t,"c",(function(){return o})),a.d(t,"b",(function(){return s})),a.d(t,"d",(function(){return l})),a.d(t,"a",(function(){return c}));var n=a(126),r=a(80),i=a(27);function o(e,t){return new Promise((function(a){t.delay=Object(n.a)(()=>{t.delay=null,a()},e),t.delayResolve=a}))}function s(e,t,a=null){var n="";null!=a&&(n=" (Line "+function(e,t){var a=t.scriptRef.codeCode();try{return((a=a.substring(0,e.start)).match(/\n/g)||[]).length+1}catch(e){return-1}}(a,e)+")");const r=i.b[e.serverIp];if(null==r)throw new Error("WorkerScript constructed with invalid server ip: "+this.serverIp);return"|"+r.hostname+"|"+e.name+"|"+t+n}function l(e,t,a){const n=e.scriptRef.threads;if(!a)return isNaN(n)||n<1?1:n;const r=0|a;if(isNaN(a)||r<1)throw s(e,`Invalid thread count passed to ${t}: ${a}. Threads must be a positive number.`);if(a>n)throw s(e,`Too many threads requested by ${t}. Requested: ${a}. Has: ${n}.`);return r}function c(e){if(!Object(r.a)(e))return!1;return 4==e.split("|").length}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));class n{constructor(e,t,a){this.title=e,this.fn=t,this.txt=a}}},,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));a(108);const n=(()=>{const e=document.createElement("div");if(null===e)throw new Error("unable to create empty div element");return e})(),r={Terminal:n,ScriptEditor:n,ActiveScripts:n,CreateProgram:n,Stats:n,Factions:n,Augmentations:n,HacknetNodes:n,Sleeves:n,City:n,Travel:n,Job:n,StockMarket:n,Bladeburner:n,Corporation:n,Gang:n,Milestones:n,Tutorial:n,Options:n,DevMenu:n}},,,function(e,t,a){"use strict";(function(e){a.d(t,"a",(function(){return N})),a.d(t,"c",(function(){return b})),a.d(t,"d",(function(){return v})),a.d(t,"b",(function(){return E}));var n=a(5),r=a(37),i=a(84),o=a(1),s=a(9),l=a(12),c=a(75),u=a(185),m=a(16),h=a(80),p=a(108),d=(a(1219),a(0)),f=a.n(d),g=a(52),y=a.n(g);let b=!1,E=null;function v(e,t){b=e,E=e?t:null}e(document).keydown((function(e){if(b&&E&&0!=E.selectedNode.length)switch(e.keyCode){case 65:E.actionButtons[0].click();break;case 83:E.actionButtons[1].click();break;case 87:E.actionButtons[2].click();break;case 70:E.actionButtons[3].click();break;case 82:E.actionButtons[4].click();break;case 68:E.actionButtons[5].click()}}));let k="CPU Core Node",_="Firewall Node",C="Database Node",w="Spam Node",S="Transfer Node",x="Shield Node",O="Attacking",T="Scanning",M="Weakening",P="Fortifying",A="Overflowing";function R(e,t){this.type=e,this.atk=t.atk?t.atk:0,this.def=t.def?t.def:0,this.hp=t.hp?t.hp:0,this.maxhp=this.hp,this.plyrCtrl=!1,this.enmyCtrl=!1,this.pos=[0,0],this.el=null,this.action=null,this.targetedCount=0,this.conn=null}function N(e,t){this.faction=t,this.started=!1,this.time=18e4,this.playerCores=[],this.playerNodes=[],this.playerAtk=0,this.playerDef=0,this.enemyCores=[],this.enemyDatabases=[],this.enemyNodes=[],this.enemyAtk=0,this.enemyDef=0,this.miscNodes=[],this.selectedNode=[],this.actionButtons=[],this.availablePositions=[];for(var a=0;a<8;++a)for(var r=0;r<8;++r)this.availablePositions.push([a,r]);this.map=[];for(var i=0;i<8;++i)this.map.push([null,null,null,null,null,null,null,null]);this.jsplumbinstance=null,this.difficulty=e/n.a.HackingMissionRepToDiffConversion+1,this.reward=250+e/n.a.HackingMissionRepToRewardConversion}function I(e){e.selectedNode.length>0&&(e.selectedNode.forEach((function(t){t.deselect(e.actionButtons)})),e.selectedNode.length=0)}R.prototype.setPosition=function(e,t){this.pos=[e,t]},R.prototype.setControlledByPlayer=function(){this.plyrCtrl=!0,this.enmyCtrl=!1,this.el&&(this.el.classList.remove("hack-mission-enemy-node"),this.el.classList.add("hack-mission-player-node"))},R.prototype.setControlledByEnemy=function(){this.plyrCtrl=!1,this.enmyCtrl=!0,this.el&&(this.el.classList.remove("hack-mission-player-node"),this.el.classList.add("hack-mission-enemy-node"))},R.prototype.select=function(e){if(!this.enmyCtrl){this.el.classList.add("hack-mission-player-node-active");for(var t=0;t(this.start(),!1));var u=document.createElement("a");u.innerHTML="Forfeit Mission (Exit)",u.classList.add("a-link-button"),u.classList.add("hack-mission-header-element"),u.style.display="inline-block",u.addEventListener("click",()=>(this.finishMission(!1),!1));var m=document.createElement("p");m.setAttribute("id","hacking-mission-timer"),m.style.display="inline-block",m.style.margin="6px";var h=document.createElement("span");h.style.display="block",h.classList.add("hack-mission-action-buttons-container");for(var p=0;p<6;++p)this.actionButtons.push(document.createElement("a")),this.actionButtons[p].style.display="inline-block",this.actionButtons[p].classList.add("a-link-button-inactive"),this.actionButtons[p].classList.add("tooltip"),this.actionButtons[p].classList.add("hack-mission-header-element"),h.appendChild(this.actionButtons[p]);this.actionButtons[0].innerText="Attack(a)";var d=document.createElement("span");d.classList.add("tooltiptexthigh"),d.innerText="Lowers the targeted node's HP. The effectiveness of this depends on this node's Attack level, your hacking level, and the opponent's defense level.",this.actionButtons[0].appendChild(d),this.actionButtons[1].innerText="Scan(s)";var g=document.createElement("span");g.classList.add("tooltiptexthigh"),g.innerText="Lowers the targeted node's defense. The effectiveness of this depends on this node's Attack level, your hacking level, and the opponent's defense level.",this.actionButtons[1].appendChild(g),this.actionButtons[2].innerText="Weaken(w)";var b=document.createElement("span");b.classList.add("tooltiptexthigh"),b.innerText="Lowers the targeted node's attack. The effectiveness of this depends on this node's Attack level, your hacking level, and the opponent's defense level.",this.actionButtons[2].appendChild(b),this.actionButtons[3].innerText="Fortify(f)";var E=document.createElement("span");E.classList.add("tooltiptexthigh"),E.innerText="Raises this node's Defense level. The effectiveness of this depends on your hacking level",this.actionButtons[3].appendChild(E),this.actionButtons[4].innerText="Overflow(r)";var v=document.createElement("span");v.classList.add("tooltiptexthigh"),v.innerText="Raises this node's Attack level but lowers its Defense level. The effectiveness of this depends on your hacking level.",this.actionButtons[4].appendChild(v),this.actionButtons[5].innerText="Drop Connection(d)";var _=document.createElement("span");_.classList.add("tooltiptexthigh"),_.innerText="Removes this Node's current connection to some target Node, if it has one. This can also be done by simply clicking the white connection line.",this.actionButtons[5].appendChild(_);var C=document.createElement("p"),w=document.createElement("p");C.style.display="inline-block",w.style.display="inline-block",C.style.color="#00ccff",w.style.color="red",C.style.margin="4px",w.style.margin="4px",C.setAttribute("id","hacking-mission-player-stats"),w.setAttribute("id","hacking-mission-enemy-stats"),h.appendChild(C),h.appendChild(w),this.actionButtons[0].addEventListener("click",()=>{this.selectedNode.length>0?this.selectedNode[0].type===k&&(this.setActionButtonsActive(this.selectedNode[0].type),this.setActionButton(O,!1),this.selectedNode.forEach((function(e){e.action=O}))):console.error("Pressing Action button without selected node")}),this.actionButtons[1].addEventListener("click",()=>{if(this.selectedNode.length>0){var e=this.selectedNode[0].type;e!==k&&e!==S||(this.setActionButtonsActive(e),this.setActionButton(T,!1),this.selectedNode.forEach((function(e){e.action=T})))}else console.error("Pressing Action button without selected node")}),this.actionButtons[2].addEventListener("click",()=>{if(this.selectedNode.length>0){var e=this.selectedNode[0].type;e!==k&&e!==S||(this.setActionButtonsActive(e),this.setActionButton(M,!1),this.selectedNode.forEach((function(e){e.action=M})))}else console.error("Pressing Action button without selected node")}),this.actionButtons[3].addEventListener("click",()=>{this.selectedNode.length>0?(this.setActionButtonsActive(this.selectedNode[0].type),this.setActionButton(P,!1),this.selectedNode.forEach((function(e){e.action=P}))):console.error("Pressing Action button without selected node")}),this.actionButtons[4].addEventListener("click",()=>{if(this.selectedNode.length>0){var e=this.selectedNode[0].type;e!==k&&e!==S||(this.setActionButtonsActive(e),this.setActionButton(A,!1),this.selectedNode.forEach((function(e){e.action=A})))}else console.error("Pressing Action button without selected node")}),this.actionButtons[5].addEventListener("click",()=>{this.selectedNode.length>0?this.selectedNode.forEach((function(e){if(e.conn){var t=e.conn.endpoints;t[0].detachFrom(t[1])}e.action=P})):console.error("Pressing Action button without selected node")});var x=document.createElement("p");e.appendChild(r),e.appendChild(i),e.appendChild(l),e.appendChild(u),e.appendChild(m),e.appendChild(h),e.appendChild(x)},N.prototype.setActionButtonsInactive=function(){for(var e=0;ePlayer Defense: "+Object(l.c)(this.playerDef,1),e=0;for(t=0;tEnemy Defense: "+Object(l.c)(this.enemyDef,1)},N.prototype.calculateDefenses=function(){for(var e=0,t=0;tPlayer Defense: "+Object(l.c)(this.playerDef,1),e=0;for(t=0;tEnemy Defense: "+Object(l.c)(this.enemyDef,1)},N.prototype.removeAvailablePosition=function(e,t){for(var a=0;aDef: "+Object(l.c)(e.def,1),a.innerHTML=n,t.appendChild(a),document.getElementById("hacking-mission-map").appendChild(t)},N.prototype.updateNodeDomElement=function(e){if(null==e.el)return void console.error("Calling updateNodeDomElement on a Node without an element");let t,a="hacking-mission-node-"+e.pos[0]+"-"+e.pos[1],n=document.getElementById(a+"-txt");switch(e.type){case k:t="CPU Core
HP: "+Object(l.c)(e.hp,1);break;case _:t="Firewall
HP: "+Object(l.c)(e.hp,1);break;case C:t="Database
HP: "+Object(l.c)(e.hp,1);break;case w:t="Spam
HP: "+Object(l.c)(e.hp,1);break;case S:t="Transfer
HP: "+Object(l.c)(e.hp,1);break;case x:default:t="Shield
HP: "+Object(l.c)(e.hp,1)}t+="
Atk: "+Object(l.c)(e.atk,1)+"
Def: "+Object(l.c)(e.def,1),e.action&&(t+="
"+e.action),n.innerHTML=t},N.prototype.getNodeFromElement=function(e){var t=(Object(h.a)(e)?e:e.id).replace("hacking-mission-node-","").split("-");if(2!=t.length)return console.error("Parsing hacking mission node id. could not find coordinates"),null;var a=t[0],n=t[1];return isNaN(a)||isNaN(n)||a>=8||n>=8||a<0||n<0?(console.error(`Unexpected values (${a}, ${n}) for (x, y)`),null):this.map[a][n]},N.prototype.configurePlayerNodeElement=function(e){null==this.getNodeFromElement(e)&&console.error("Failed getting Node object");const t=()=>{!function(e,t){var a=e.getNodeFromElement(t);null==a&&console.error("Failed getting Node object"),a.plyrCtrl&&(I(e),a.select(e.actionButtons),e.selectedNode.push(a))}(this,e)};e.addEventListener("click",t);e.addEventListener("dblclick",()=>{!function(e,t){var a=e.getNodeFromElement(t);if(null==a&&console.error("Failed getting Node Object in multiselectNode()"),a.plyrCtrl){I(e);var n=a.type;n===k?e.playerCores.forEach((function(t){t.select(e.actionButtons),e.selectedNode.push(t)})):e.playerNodes.forEach((function(t){t.type===n&&(t.select(e.actionButtons),e.selectedNode.push(t))}))}}(this,e)}),e.firstChild&&e.firstChild.addEventListener("click",t)},N.prototype.configureEnemyNodeElement=function(e){for(var t=this.getNodeFromElement(e),a=0;a0&&this.map[t-1][a].plyrCtrl)||(!!(t<7&&this.map[t+1][a].plyrCtrl)||(!!(a>0&&this.map[t][a-1].plyrCtrl)||!!(a<7&&this.map[t][a+1].plyrCtrl)))},N.prototype.nodeReachableByEnemy=function(e){if(null==e)return!1;var t=e.pos[0],a=e.pos[1];return!!(t>0&&this.map[t-1][a].enmyCtrl)||(!!(t<7&&this.map[t+1][a].enmyCtrl)||(!!(a>0&&this.map[t][a-1].enmyCtrl)||!!(a<7&&this.map[t][a+1].enmyCtrl)))},N.prototype.start=function(){this.started=!0,this.initJsPlumb();var e=Object(p.a)("hack-mission-start-btn");e.classList.remove("a-link-button"),e.classList.add("a-link-button-inactive")},N.prototype.initJsPlumb=function(){var e=jsPlumb.getInstance({DragOptions:{cursor:"pointer",zIndex:2e3},PaintStyle:{gradient:{stops:[[0,"#FFFFFF"],[1,"#FFFFFF"]]},stroke:"#FFFFFF",strokeWidth:8}});this.jsplumbinstance=e;for(var t=0;t{if(!this.getNodeFromElement(e.source).enmyCtrl){var t=e.endpoints;t[0].detachFrom(t[1])}}),e.bind("connection",e=>{var t=this.getNodeFromElement(e.target);this.getNodeFromElement(e.source).enmyCtrl||(this.nodeReachable(t)?(this.getNodeFromElement(e.source).conn=e.connection,++(t=this.getNodeFromElement(e.target)).targetedCount):e.sourceEndpoint.detachFrom(e.targetEndpoint))}),e.bind("connectionDetached",e=>{this.getNodeFromElement(e.source).conn=null,this.getNodeFromElement(e.target).untarget()})},N.prototype.dropAllConnectionsFromNode=function(e){for(var t=this.jsplumbinstance.getAllConnections(),a=t.length-1;a>=0;--a)t[a].source==e.el&&t[a].endpoints[0].detachFrom(t[a].endpoints[1])},N.prototype.dropAllConnectionsToNode=function(e){for(var t=this.jsplumbinstance.getAllConnections(),a=t.length-1;a>=0;--a)t[a].target==e.el&&t[a].endpoints[0].detachFrom(t[a].endpoints[1]);e.beingTargeted=!1};var j=0;N.prototype.process=function(e=1){if(this.started&&!((j+=e)<2)){var t=!1;this.playerCores.forEach(e=>{t|=this.processNode(e,j)}),this.playerNodes.forEach(e=>{e.type!==S&&e.type!==x&&e.type!==_||(t|=this.processNode(e,j))}),this.enemyCores.forEach(e=>{this.enemyAISelectAction(e),t|=this.processNode(e,j)}),this.enemyNodes.forEach(e=>{e.type!==S&&e.type!==x&&e.type!==_||(this.enemyAISelectAction(e),t|=this.processNode(e,j))}),this.enemyDatabases.forEach(e=>{e.maxhp+=.1*j,e.hp+=.1*j}),t&&(this.calculateAttacks(),this.calculateDefenses()),0!==this.enemyDatabases.length?0!==this.playerCores.length?(this.miscNodes.forEach(e=>{e.def+=.1*j,e.maxhp+=.05*j,e.hp+=.1*j,e.hp>e.maxhp&&(e.hp=e.maxhp),this.updateNodeDomElement(e)}),this.time-=j*r.Engine._idleSpeed,this.time<=0?this.finishMission(!1):(this.updateTimer(),j=0)):this.finishMission(!1):this.finishMission(!0)}},N.prototype.processNode=function(e,t=1){if(null!=e.action){var a,r,i=null;e.conn&&(null==(i=null!=e.conn.target?this.getNodeFromElement(e.conn.target):this.getNodeFromElement(e.conn.targetId))||(i.plyrCtrl?(a=this.playerDef,r=this.enemyAtk):i.enmyCtrl?(a=this.enemyDef,r=this.playerAtk):(a=i.def,r=e.plyrCtrl?this.playerAtk:this.enemyAtk)));var s=!1,l=e.plyrCtrl,c=this.difficulty*n.a.HackingMissionDifficultyToHacking;switch(e.action){case O:if(null==i)break;if(null==e.conn)break;var u=this.calculateAttackDamage(r,a,l?o.a.hacking_skill:c);i.hp-=u/5*t;break;case T:if(null==i)break;if(null==e.conn)break;var m=this.calculateScanEffect(r,a,l?o.a.hacking_skill:c);i.def-=m/5*t,s=!0;break;case M:if(null==i)break;if(null==e.conn)break;m=this.calculateWeakenEffect(r,a,l?o.a.hacking_skill:c);i.atk-=m/5*t,s=!0;break;case P:m=this.calculateFortifyEffect(o.a.hacking_skill);e.def+=m/5*t,s=!0;break;case A:m=this.calculateOverflowEffect(o.a.hacking_skill);if(e.def{0===e.targetedCount&&(e.def*=n.a.HackingMissionMiscDefenseIncrease)})}return this.updateNodeDomElement(e),i&&this.updateNodeDomElement(i),s}},N.prototype.enemyAISelectAction=function(e){if(null!=e)switch(e.type){case k:if(null==e.conn){if(0===this.miscNodes.length){var t=Object(m.a)(0,this.playerNodes.length-1);if(a=0===this.playerNodes.length?null:this.playerNodes[t],this.nodeReachableByEnemy(a))e.conn=this.jsplumbinstance.connect({source:e.el,target:a.el}),++a.targetedCount;else{if(t=Object(m.a)(0,this.playerCores.length-1),0===this.playerCores.length)return;a=this.playerCores[t],this.nodeReachableByEnemy(a)&&(e.conn=this.jsplumbinstance.connect({source:e.el,target:a.el}),++a.targetedCount)}}else{t=Object(m.a)(0,this.miscNodes.length-1);var a=this.miscNodes[t];this.nodeReachableByEnemy(a)&&(e.conn=this.jsplumbinstance.connect({source:e.el,target:a.el}),++a.targetedCount)}e.action=P}else{var n;null==(n=e.conn.target?this.getNodeFromElement(e.conn.target):this.getNodeFromElement(e.conn.targetId))&&console.error("Error getting Target node Object in enemyAISelectAction()"),n.def>this.enemyAtk+15?e.def<50?e.action=P:e.action=A:Math.abs(n.def-this.enemyAtk)<=15?e.action=T:e.action=O}break;case S:e.def<125?e.action=P:e.action=A;break;case _:case x:e.action=P}};N.prototype.calculateAttackDamage=function(e,t,a=0){return Math.max(.55*(e+a/80-t),1)},N.prototype.calculateScanEffect=function(e,t,a=0){return Math.max(.6*(e+a/25-.95*t),2)},N.prototype.calculateWeakenEffect=function(e,t,a=0){return Math.max(e+a/25-.95*t,2)},N.prototype.calculateFortifyEffect=function(e=0){return.9*e/130},N.prototype.calculateOverflowEffect=function(e=0){return.95*e/130},N.prototype.updateTimer=function(){var e=document.getElementById("hacking-mission-timer"),t=Math.round(this.time/1e3),a=Math.trunc(t/60);t%=60;var n=("0"+a).slice(-2)+":"+("0"+t).slice(-2);e.innerText="Time left: "+n},N.prototype.finishMission=function(e){if(b=!1,E=null,e){var t=1+this.faction.favor/100,a=this.reward*o.a.faction_rep_mult*t;Object(s.a)(f.a.createElement(f.a.Fragment,null,"Mission won! You earned ",Object(c.a)(a)," reputation with ",this.faction.name)),o.a.gainIntelligenceExp(Math.pow(this.difficulty*n.a.IntelligenceHackingMissionBaseExpGain,.5)),this.faction.playerReputation+=a}else Object(s.a)("Mission lost/forfeited! You did not gain any faction reputation.");for(var l=document.getElementById("mission-container");l.firstChild;)l.removeChild(l.firstChild);document.getElementById("mainmenu-container").style.visibility="visible",document.getElementById("character-overview-wrapper").style.visibility="visible",r.Engine.loadFactionContent(),Object(i.a)(this.faction.name)}}).call(this,a(360))},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),a.d(t,"b",(function(){return r})),function(e){e.Weapon="w",e.Armor="a",e.Vehicle="v",e.Rootkit="r",e.Augmentation="g"}(n||(n={}));const r=[{cost:1e6,mults:{str:1.04,def:1.04},name:"Baseball Bat",upgType:n.Weapon},{cost:12e6,mults:{str:1.08,def:1.08,dex:1.08},name:"Katana",upgType:n.Weapon},{cost:25e6,mults:{str:1.1,def:1.1,dex:1.1,agi:1.1},name:"Glock 18C",upgType:n.Weapon},{cost:5e7,mults:{str:1.12,def:1.1,agi:1.1},name:"P90C",upgType:n.Weapon},{cost:6e7,mults:{str:1.2,def:1.15},name:"Steyr AUG",upgType:n.Weapon},{cost:1e8,mults:{str:1.25,def:1.2},name:"AK-47",upgType:n.Weapon},{cost:15e7,mults:{str:1.3,def:1.25},name:"M15A10 Assault Rifle",upgType:n.Weapon},{cost:225e6,mults:{str:1.3,dex:1.25,agi:1.3},name:"AWM Sniper Rifle",upgType:n.Weapon},{cost:2e6,mults:{def:1.04},name:"Bulletproof Vest",upgType:n.Armor},{cost:5e6,mults:{def:1.08},name:"Full Body Armor",upgType:n.Armor},{cost:25e6,mults:{def:1.15,agi:1.15},name:"Liquid Body Armor",upgType:n.Armor},{cost:4e7,mults:{def:1.2},name:"Graphene Plating Armor",upgType:n.Armor},{cost:3e6,mults:{agi:1.04,cha:1.04},name:"Ford Flex V20",upgType:n.Vehicle},{cost:9e6,mults:{agi:1.08,cha:1.08},name:"ATX1070 Superbike",upgType:n.Vehicle},{cost:18e6,mults:{agi:1.12,cha:1.12},name:"Mercedes-Benz S9001",upgType:n.Vehicle},{cost:3e7,mults:{agi:1.16,cha:1.16},name:"White Ferrari",upgType:n.Vehicle},{cost:5e6,mults:{hack:1.05},name:"NUKE Rootkit",upgType:n.Rootkit},{cost:25e6,mults:{hack:1.1},name:"Soulstealer Rootkit",upgType:n.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Demon Rootkit",upgType:n.Rootkit},{cost:4e7,mults:{hack:1.12},name:"Hmap Node",upgType:n.Rootkit},{cost:75e6,mults:{hack:1.15},name:"Jack the Ripper",upgType:n.Rootkit},{cost:1e10,mults:{str:1.3,dex:1.3},name:"Bionic Arms",upgType:n.Augmentation},{cost:1e10,mults:{agi:1.6},name:"Bionic Legs",upgType:n.Augmentation},{cost:15e9,mults:{str:1.15,def:1.15,dex:1.15,agi:1.15},name:"Bionic Spine",upgType:n.Augmentation},{cost:2e10,mults:{str:1.4,def:1.4},name:"BrachiBlades",upgType:n.Augmentation},{cost:12e9,mults:{str:1.2,def:1.2},name:"Nanofiber Weave",upgType:n.Augmentation},{cost:25e9,mults:{str:1.5,agi:1.5},name:"Synthetic Heart",upgType:n.Augmentation},{cost:15e9,mults:{str:1.3,def:1.3},name:"Synfibril Muscle",upgType:n.Augmentation},{cost:5e9,mults:{hack:1.05},name:"BitWire",upgType:n.Augmentation},{cost:1e10,mults:{hack:1.15},name:"Neuralstimulator",upgType:n.Augmentation},{cost:75e8,mults:{hack:1.1},name:"DataJack",upgType:n.Augmentation},{cost:5e10,mults:{str:1.7,def:1.7},name:"Graphene Bone Lacings",upgType:n.Augmentation}]},,function(e,t,a){"use strict";a.d(t,"a",(function(){return r})),a.d(t,"b",(function(){return i}));var n=a(0);let r;!function(e){e[e.Tag_span=0]="Tag_span",e[e.Tag_h1=1]="Tag_h1"}(r||(r={}));class i extends n.Component{constructor(e){super(e),this.copy=this.copy.bind(this),this.tooltipClasses=this.tooltipClasses.bind(this),this.textClasses=this.textClasses.bind(this),this.state={tooltipVisible:!1}}copy(){const e=document.createElement("textarea");e.value=this.props.value,document.body.appendChild(e),e.select(),e.setSelectionRange(0,1e10),document.execCommand("copy"),document.body.removeChild(e),this.setState({tooltipVisible:!0}),setTimeout(()=>this.setState({tooltipVisible:!1}),1e3)}tooltipClasses(){let e="copy_tooltip_text";return this.state.tooltipVisible&&(e+=" copy_tooltip_text_visible"),e}textClasses(){let e="copy_tooltip noselect text";return this.state.tooltipVisible&&(e+=" copy_tooltip_copied"),e}render(){switch(this.props.tag){case r.Tag_h1:return n.createElement("h1",{className:this.textClasses(),onClick:this.copy},this.props.value,n.createElement("span",{className:this.tooltipClasses()},"Copied!"));case r.Tag_span:return n.createElement("span",{className:this.textClasses(),onClick:this.copy},n.createElement("b",null,this.props.value),n.createElement("span",{className:this.tooltipClasses()},"Copied!"))}}}var o,s,l;o=i,s="defaultProps",l={tag:r.Tag_span},s in o?Object.defineProperty(o,s,{value:l,enumerable:!0,configurable:!0,writable:!0}):o[s]=l},function(e,t,a){"use strict";a.d(t,"b",(function(){return f})),a.d(t,"a",(function(){return g}));var n=a(37),r=a(1),i=a(260),o=a(425),s=a(50),l=a(263),c=a(9),u=a(705),m=a(0),h=a.n(m),p=a(52),d=a.n(p);let f=!1;function g(e,t=!1,a=!1){const r=document.getElementById("red-pill-container");d.a.unmountComponentAtNode(r),n.Engine.loadRedPillContent(),d.a.render(h.a.createElement(u.a,{destroyedBitNodeNum:e,flume:t,enter:y,quick:a}),r),f=!0}function y(e,t,a){e?0===s.a[5]&&5!==a&&(r.a.intelligence=0,r.a.intelligence_exp=0):function(e){var t="SourceFile"+e.toString(),a=l.a[t];if(null!=a){for(var n=!1,i=null,s=0;s=3&&12!==i.n?Object(c.a)("The Source-File for the BitNode you just destroyed, "+a.name+", is already at max level!"):(++i.lvl,Object(c.a)(a.name+" was upgraded to level "+i.lvl+" for destroying its corresponding BitNode!"));else{var u=new o.a(e,1);r.a.sourceFiles.push(u),5===e&&0===r.a.intelligence&&(r.a.intelligence=1),Object(c.a)("You received a Source-File for destroying a Bit Node!

"+a.name+"

"+a.info)}}else console.error("Could not find source file for Bit node: "+e)}(t),5===a&&0===r.a.intelligence&&(r.a.intelligence=1),f=!1;const n=document.getElementById("red-pill-container");d.a.unmountComponentAtNode(n),r.a.bitNodeN=a,Object(i.b)(e)}},function(e,t,a){"use strict";a.d(t,"e",(function(){return S})),a.d(t,"d",(function(){return C})),a.d(t,"c",(function(){return v})),a.d(t,"a",(function(){return _})),a.d(t,"b",(function(){return w}));var n=a(26),r=a(18),i=a(259),o=a(4),s=a(6),l=a(5),c=a(24),u=a(1),m=a(260),h=a(55),p=a(50),d=a(9),f=a(715),g=a(264),y=a(0),b=a.n(y);function E(e){var t=e.name;r.a[t]=e}function v(){for(var e in c.a)c.a.hasOwnProperty(e)&&(c.a[e].augmentations=[]);Object(f.a)(r.a);const t=function(){var e=[{bonuses:{hacking_chance_mult:1.25,hacking_speed_mult:1.1,hacking_money_mult:1.25,hacking_grow_mult:1.1},description:"Increases the player's hacking chance by 25%.
Increases the player's hacking speed by 10%.
Increases the amount of money the player's gains from hacking by 25%.
Improves grow() by 10%."},{bonuses:{hacking_mult:1.15,hacking_exp_mult:2},description:"Increases the player's hacking skill by 15%.
Increases the player's hacking experience gain rate by 100%."},{bonuses:{strength_mult:1.25,strength_exp_mult:2,defense_mult:1.25,defense_exp_mult:2,dexterity_mult:1.25,dexterity_exp_mult:2,agility_mult:1.25,agility_exp_mult:2},description:"Increases all of the player's combat stats by 25%.
Increases all of the player's combat stat experience gain rate by 100%."},{bonuses:{charisma_mult:1.5,charisma_exp_mult:2},description:"This augmentation increases the player's charisma by 50%.
Increases the player's charisma experience gain rate by 100%."},{bonuses:{hacknet_node_money_mult:1.2,hacknet_node_purchase_cost_mult:.85,hacknet_node_ram_cost_mult:.85,hacknet_node_core_cost_mult:.85,hacknet_node_level_cost_mult:.85},description:"Increases the amount of money produced by Hacknet Nodes by 20%.
Decreases all costs related to Hacknet Node by 15%."},{bonuses:{company_rep_mult:1.25,faction_rep_mult:1.15,work_money_mult:1.7},description:"Increases the amount of money the player gains from working by 70%.
Increases the amount of reputation the player gains when working for a company by 25%.
Increases the amount of reputation the player gains for a faction by 15%."},{bonuses:{crime_success_mult:2,crime_money_mult:2},description:"Increases the player's crime success rate by 100%.
Increases the amount of money the player gains from crimes by 100%."}];const t=new g.b(Math.floor(u.a.lastUpdate/36e5));for(let e=0;e<5;e++)t.step();return e[Math.floor(e.length*t.random())]}(),a={name:o.a.UnstableCircadianModulator,moneyCost:5e9,repCost:362500,info:"An experimental nanobot injection. Its unstable nature leads to unpredictable results based on your circadian rhythm."};Object.keys(t.bonuses).forEach(e=>a[e]=t.bonuses[e]);const i=new n.a(a);i.addToFactions(["Speakers for the Dead"]),w(o.a.UnstableCircadianModulator)&&delete r.a[o.a.UnstableCircadianModulator],E(i);const m=new n.a({name:o.a.HemoRecirculator,moneyCost:45e6,repCost:1e4,info:"A heart implant that greatly increases the body's ability to effectively use and pump blood.",strength_mult:1.08,defense_mult:1.08,agility_mult:1.08,dexterity_mult:1.08});m.addToFactions(["Tetrads","The Dark Army","The Syndicate"]),w(o.a.HemoRecirculator)&&delete r.a[o.a.HemoRecirculator],E(m);const d=new n.a({name:o.a.Targeting1,moneyCost:15e6,repCost:5e3,info:"A cranial implant that is embedded within the inner ear structures and optic nerves. It regulates and enhances balance and hand-eye coordination.",dexterity_mult:1.1});d.addToFactions(["Slum Snakes","The Dark Army","The Syndicate","Sector-12","Ishima","OmniTek Incorporated","KuaiGong International","Blade Industries"]),w(o.a.Targeting1)&&delete r.a[o.a.Targeting1],E(d);const y=new n.a({name:o.a.Targeting2,moneyCost:425e5,repCost:8750,info:"This upgraded version of the 'Augmented Targeting' implant is capable of augmenting reality by digitally displaying weaknesses and vital signs of threats.",prereqs:[o.a.Targeting1],dexterity_mult:1.2});y.addToFactions(["The Dark Army","The Syndicate","Sector-12","OmniTek Incorporated","KuaiGong International","Blade Industries"]),w(o.a.Targeting2)&&delete r.a[o.a.Targeting2],E(y);const v=new n.a({name:o.a.Targeting3,moneyCost:115e6,repCost:27500,info:"The latest version of the 'Augmented Targeting' implant adds the ability to lock-on and track threats.",prereqs:[o.a.Targeting2],dexterity_mult:1.3});v.addToFactions(["The Dark Army","The Syndicate","OmniTek Incorporated","KuaiGong International","Blade Industries","The Covenant"]),w(o.a.Targeting3)&&delete r.a[o.a.Targeting3],E(v);const _=new n.a({name:o.a.SyntheticHeart,moneyCost:2875e6,repCost:75e4,info:"This advanced artificial heart, created from plasteel and graphene, is capable of pumping blood more efficiently than an organic heart.",agility_mult:1.5,strength_mult:1.5});_.addToFactions(["KuaiGong International","Fulcrum Secret Technologies","Speakers for the Dead","NWO","The Covenant","Daedalus","Illuminati"]),w(o.a.SyntheticHeart)&&delete r.a[o.a.SyntheticHeart],E(_);const C=new n.a({name:o.a.SynfibrilMuscle,repCost:437500,moneyCost:1125e6,info:"The myofibrils in human muscles are injected with special chemicals that react with the proteins inside the myofibrils, altering their underlying structure. The end result is muscles that are stronger and more elastic. Scientists have named these artificially enhanced units 'synfibrils'.",strength_mult:1.3,defense_mult:1.3});C.addToFactions(["KuaiGong International","Fulcrum Secret Technologies","Speakers for the Dead","NWO","The Covenant","Daedalus","Illuminati","Blade Industries"]),w(o.a.SynfibrilMuscle)&&delete r.a[o.a.SynfibrilMuscle],E(C);const S=new n.a({name:o.a.CombatRib1,repCost:7500,moneyCost:2375e4,info:"The rib cage is augmented to continuously release boosters into the bloodstream which increase the oxygen-carrying capacity of blood.",strength_mult:1.1,defense_mult:1.1});S.addToFactions(["Slum Snakes","The Dark Army","The Syndicate","Volhaven","Ishima","OmniTek Incorporated","KuaiGong International","Blade Industries"]),w(o.a.CombatRib1)&&delete r.a[o.a.CombatRib1],E(S);const x=new n.a({name:o.a.CombatRib2,repCost:18750,moneyCost:65e6,info:"An upgraded version of the 'Combat Rib' augmentation that adds potent stimulants which improve focus and endurance while decreasing reaction time and fatigue.",prereqs:[o.a.CombatRib1],strength_mult:1.14,defense_mult:1.14});x.addToFactions(["The Dark Army","The Syndicate","Volhaven","OmniTek Incorporated","KuaiGong International","Blade Industries"]),w(o.a.CombatRib2)&&delete r.a[o.a.CombatRib2],E(x);const O=new n.a({name:o.a.CombatRib3,repCost:35e3,moneyCost:12e7,info:"The latest version of the 'Combat Rib' augmentation releases advanced anabolic steroids that improve muscle mass and physical performance while being safe and free of side effects.",prereqs:[o.a.CombatRib2],strength_mult:1.18,defense_mult:1.18});O.addToFactions(["The Dark Army","The Syndicate","OmniTek Incorporated","KuaiGong International","Blade Industries","The Covenant"]),w(o.a.CombatRib3)&&delete r.a[o.a.CombatRib3],E(O);const T=new n.a({name:o.a.NanofiberWeave,repCost:37500,moneyCost:125e6,info:"Synthetic nanofibers are woven into the skin's extracellular matrix using electrospinning, which improves its regenerative and extracellular homeostasis abilities.",strength_mult:1.2,defense_mult:1.2});T.addToFactions(["Tian Di Hui","The Syndicate","The Dark Army","Speakers for the Dead","Blade Industries","Fulcrum Secret Technologies","OmniTek Incorporated"]),w(o.a.NanofiberWeave)&&delete r.a[o.a.NanofiberWeave],E(T);const M=new n.a({name:o.a.SubdermalArmor,repCost:875e3,moneyCost:325e7,info:"The NEMEAN Subdermal Weave is a thin, light-weight, graphene plating that houses a dilatant fluid. The material is implanted underneath the skin, and is the most advanced form of defensive enhancement that has ever been created. The dilatant fluid, despite being thin and light, is extremely effective at stopping piercing blows and reducing blunt trauma. The properties of graphene allow the plating to mitigate damage from any fire or electrical traumas.",defense_mult:2.2});M.addToFactions(["The Syndicate","Fulcrum Secret Technologies","Illuminati","Daedalus","The Covenant"]),w(o.a.SubdermalArmor)&&delete r.a[o.a.SubdermalArmor],E(M);const P=new n.a({name:o.a.WiredReflexes,repCost:1250,moneyCost:25e5,info:"Synthetic nerve-enhancements are injected into all major parts of the somatic nervous system, supercharging the spread of neural signals and increasing reflex speed.",agility_mult:1.05,dexterity_mult:1.05});P.addToFactions(["Tian Di Hui","Slum Snakes","Sector-12","Volhaven","Aevum","Ishima","The Syndicate","The Dark Army","Speakers for the Dead"]),w(o.a.WiredReflexes)&&delete r.a[o.a.WiredReflexes],E(P);const A=new n.a({name:o.a.GrapheneBoneLacings,repCost:1125e3,moneyCost:425e7,info:"Graphene is grafted and fused into the skeletal structure, enhancing bone density and tensile strength.",strength_mult:1.7,defense_mult:1.7});A.addToFactions(["Fulcrum Secret Technologies","The Covenant"]),w(o.a.GrapheneBoneLacings)&&delete r.a[o.a.GrapheneBoneLacings],E(A);const R=new n.a({name:o.a.BionicSpine,repCost:45e3,moneyCost:125e6,info:"The spine is reconstructed using plasteel and carbon fibers. It is now capable of stimulating and regulating neural signals passing through the spinal cord, improving senses and reaction speed. The 'Bionic Spine' also interfaces with all other 'Bionic' implants.",strength_mult:1.15,defense_mult:1.15,agility_mult:1.15,dexterity_mult:1.15});R.addToFactions(["Speakers for the Dead","The Syndicate","KuaiGong International","OmniTek Incorporated","Blade Industries"]),w(o.a.BionicSpine)&&delete r.a[o.a.BionicSpine],E(R);const N=new n.a({name:o.a.GrapheneBionicSpine,repCost:1625e3,moneyCost:6e9,info:"An upgrade to the 'Bionic Spine' augmentation. The spine is fused with graphene which enhances durability and supercharges all body functions.",prereqs:[o.a.BionicSpine],strength_mult:1.6,defense_mult:1.6,agility_mult:1.6,dexterity_mult:1.6});N.addToFactions(["Fulcrum Secret Technologies","ECorp"]),w(o.a.GrapheneBionicSpine)&&delete r.a[o.a.GrapheneBionicSpine],E(N);const I=new n.a({name:o.a.BionicLegs,repCost:15e4,moneyCost:375e6,info:"Cybernetic legs, created from plasteel and carbon fibers, enhance running speed.",agility_mult:1.6});I.addToFactions(["Speakers for the Dead","The Syndicate","KuaiGong International","OmniTek Incorporated","Blade Industries"]),w(o.a.BionicLegs)&&delete r.a[o.a.BionicLegs],E(I);const j=new n.a({name:o.a.GrapheneBionicLegs,repCost:75e4,moneyCost:45e8,info:"An upgrade to the 'Bionic Legs' augmentation. The legs are fused with graphene, greatly enhancing jumping ability.",prereqs:[o.a.BionicLegs],agility_mult:2.5});j.addToFactions(["MegaCorp","ECorp","Fulcrum Secret Technologies"]),w(o.a.GrapheneBionicLegs)&&delete r.a[o.a.GrapheneBionicLegs],E(j);const F=new n.a({name:o.a.SpeechProcessor,repCost:7500,moneyCost:5e7,info:"A cochlear implant with an embedded computer that analyzes incoming speech. The embedded computer processes characteristics of incoming speech, such as tone and inflection, to pick up on subtle cues and aid in social interactions.",charisma_mult:1.2});F.addToFactions(["Tian Di Hui","Chongqing","Sector-12","New Tokyo","Aevum","Ishima","Volhaven","Silhouette"]),w(o.a.SpeechProcessor)&&delete r.a[o.a.SpeechProcessor],E(F);const D=new n.a({name:o.a.TITN41Injection,repCost:25e3,moneyCost:19e7,info:"TITN is a series of viruses that targets and alters the sequences of human DNA in genes that control personality. The TITN-41 strain alters these genes so that the subject becomes more outgoing and socialable.",charisma_mult:1.15,charisma_exp_mult:1.15});D.addToFactions(["Silhouette"]),w(o.a.TITN41Injection)&&delete r.a[o.a.TITN41Injection],E(D);const B=new n.a({name:o.a.EnhancedSocialInteractionImplant,repCost:375e3,moneyCost:1375e6,info:"A cranial implant that greatly assists in the user's ability to analyze social situations and interactions. The system uses a wide variety of factors such as facial expressions, body language, and the voice tone, and inflection to determine the best course of action during socialsituations. The implant also uses deep learning software to continuously learn new behaviorpatterns and how to best respond.",charisma_mult:1.6,charisma_exp_mult:1.6});B.addToFactions(["Bachman & Associates","NWO","Clarke Incorporated","OmniTek Incorporated","Four Sigma"]),w(o.a.EnhancedSocialInteractionImplant)&&delete r.a[o.a.EnhancedSocialInteractionImplant],E(B);const L=new n.a({name:o.a.BitWire,repCost:3750,moneyCost:1e7,info:"A small brain implant embedded in the cerebrum. This regulates and improves the brain's computing capabilities.",hacking_mult:1.05});L.addToFactions(["CyberSec","NiteSec"]),w(o.a.BitWire)&&delete r.a[o.a.BitWire],E(L);const G=new n.a({name:o.a.ArtificialBioNeuralNetwork,repCost:275e3,moneyCost:3e9,info:"A network consisting of millions of nanoprocessors is embedded into the brain. The network is meant to mimic the way a biological brain solves a problem, with each nanoprocessor acting similar to the way a neuron would in a neural network. However, these nanoprocessors are programmed to perform computations much faster than organic neurons, allowing the user to solve much more complex problems at a much faster rate.",hacking_speed_mult:1.03,hacking_money_mult:1.15,hacking_mult:1.12});G.addToFactions(["BitRunners","Fulcrum Secret Technologies"]),w(o.a.ArtificialBioNeuralNetwork)&&delete r.a[o.a.ArtificialBioNeuralNetwork],E(G);const W=new n.a({name:o.a.ArtificialSynapticPotentiation,repCost:6250,moneyCost:8e7,info:"The body is injected with a chemical that artificially induces synaptic potentiation, otherwise known as the strengthening of synapses. This results in enhanced cognitive abilities.",hacking_speed_mult:1.02,hacking_chance_mult:1.05,hacking_exp_mult:1.05});W.addToFactions(["The Black Hand","NiteSec"]),w(o.a.ArtificialSynapticPotentiation)&&delete r.a[o.a.ArtificialSynapticPotentiation],E(W);const H=new n.a({name:o.a.EnhancedMyelinSheathing,repCost:1e5,moneyCost:1375e6,info:"Electrical signals are used to induce a new, artificial form of myelinogenesis in the human body. This process results in the proliferation of new, synthetic myelin sheaths in the nervous system. These myelin sheaths can propogate neuro-signals much faster than their organic counterparts, leading to greater processing speeds and better brain function.",hacking_speed_mult:1.03,hacking_exp_mult:1.1,hacking_mult:1.08});H.addToFactions(["Fulcrum Secret Technologies","BitRunners","The Black Hand"]),w(o.a.EnhancedMyelinSheathing)&&delete r.a[o.a.EnhancedMyelinSheathing],E(H);const U=new n.a({name:o.a.SynapticEnhancement,repCost:2e3,moneyCost:75e5,info:"A small cranial implant that continuously uses weak electrical signals to stimulate the brain and induce stronger synaptic activity. This improves the user's cognitive abilities.",hacking_speed_mult:1.03});U.addToFactions(["CyberSec","Aevum"]),w(o.a.SynapticEnhancement)&&delete r.a[o.a.SynapticEnhancement],E(U);const q=new n.a({name:o.a.NeuralRetentionEnhancement,repCost:2e4,moneyCost:25e7,info:"Chemical injections are used to permanently alter and strengthen the brain's neuronal circuits, strengthening the ability to retain information.",hacking_exp_mult:1.25});q.addToFactions(["NiteSec"]),w(o.a.NeuralRetentionEnhancement)&&delete r.a[o.a.NeuralRetentionEnhancement],E(q);const K=new n.a({name:o.a.DataJack,repCost:112500,moneyCost:45e7,info:"A brain implant that provides an interface for direct, wireless communication between a computer's main memory and the mind. This implant allows the user to not only access a computer's memory, but also alter and delete it.",hacking_money_mult:1.25});K.addToFactions(["BitRunners","The Black Hand","NiteSec","Chongqing","New Tokyo"]),w(o.a.DataJack)&&delete r.a[o.a.DataJack],E(K);const $=new n.a({name:o.a.ENM,repCost:15e3,moneyCost:25e7,info:"A thin device embedded inside the arm containing a wireless module capable of connecting to nearby networks. Once connected, the Netburner Module is capable of capturing and processing all of the traffic on that network. By itself, the Embedded Netburner Module does not do much, but a variety of very powerful upgrades can be installed that allow you to fully control the traffic on a network.",hacking_mult:1.08});$.addToFactions(["BitRunners","The Black Hand","NiteSec","ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Blade Industries"]),w(o.a.ENM)&&delete r.a[o.a.ENM],E($);const z=new n.a({name:o.a.ENMCore,repCost:25e4,moneyCost:25e8,info:"The Core library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgrade allows the Embedded Netburner Module to generate its own data on a network.",prereqs:[o.a.ENM],hacking_speed_mult:1.03,hacking_money_mult:1.1,hacking_chance_mult:1.03,hacking_exp_mult:1.07,hacking_mult:1.07});z.addToFactions(["BitRunners","The Black Hand","ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Blade Industries"]),w(o.a.ENMCore)&&delete r.a[o.a.ENMCore],E(z);const Y=new n.a({name:o.a.ENMCoreV2,repCost:1e6,moneyCost:45e8,info:"The Core V2 library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgraded firmware allows the Embedded Netburner Module to control information on a network by re-routing traffic, spoofing IP addresses, and altering the data inside network packets.",prereqs:[o.a.ENMCore],hacking_speed_mult:1.05,hacking_money_mult:1.3,hacking_chance_mult:1.05,hacking_exp_mult:1.15,hacking_mult:1.08});Y.addToFactions(["BitRunners","ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Blade Industries","OmniTek Incorporated","KuaiGong International"]),w(o.a.ENMCoreV2)&&delete r.a[o.a.ENMCoreV2],E(Y);const V=new n.a({name:o.a.ENMCoreV3,repCost:175e4,moneyCost:75e8,info:"The Core V3 library is an implant that upgrades the firmware of the Embedded Netburner Module. This upgraded firmware allows the Embedded Netburner Module to seamlessly inject code into any device on a network.",prereqs:[o.a.ENMCoreV2],hacking_speed_mult:1.05,hacking_money_mult:1.4,hacking_chance_mult:1.1,hacking_exp_mult:1.25,hacking_mult:1.1});V.addToFactions(["ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Daedalus","The Covenant","Illuminati"]),w(o.a.ENMCoreV3)&&delete r.a[o.a.ENMCoreV3],E(V);const J=new n.a({name:o.a.ENMAnalyzeEngine,repCost:625e3,moneyCost:6e9,info:"Installs the Analyze Engine for the Embedded Netburner Module, which is a CPU cluster that vastly outperforms the Netburner Module's native single-core processor.",prereqs:[o.a.ENM],hacking_speed_mult:1.1});J.addToFactions(["ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Daedalus","The Covenant","Illuminati"]),w(o.a.ENMAnalyzeEngine)&&delete r.a[o.a.ENMAnalyzeEngine],E(J);const Q=new n.a({name:o.a.ENMDMA,repCost:1e6,moneyCost:7e9,info:"This implant installs a Direct Memory Access (DMA) controller into the Embedded Netburner Module. This allows the Module to send and receive data directly to and from the main memory of devices on a network.",prereqs:[o.a.ENM],hacking_money_mult:1.4,hacking_chance_mult:1.2});Q.addToFactions(["ECorp","MegaCorp","Fulcrum Secret Technologies","NWO","Daedalus","The Covenant","Illuminati"]),w(o.a.ENMDMA)&&delete r.a[o.a.ENMDMA],E(Q);const X=new n.a({name:o.a.Neuralstimulator,repCost:5e4,moneyCost:3e9,info:"A cranial implant that intelligently stimulates certain areas of the brain in order to improve cognitive functions.",hacking_speed_mult:1.02,hacking_chance_mult:1.1,hacking_exp_mult:1.12});X.addToFactions(["The Black Hand","Chongqing","Sector-12","New Tokyo","Aevum","Ishima","Volhaven","Bachman & Associates","Clarke Incorporated","Four Sigma"]),w(o.a.Neuralstimulator)&&delete r.a[o.a.Neuralstimulator],E(X);const Z=new n.a({name:o.a.NeuralAccelerator,repCost:2e5,moneyCost:175e7,info:"A microprocessor that accelerates the processing speed of biological neural networks. This is a cranial implant that is embedded inside the brain.",hacking_mult:1.1,hacking_exp_mult:1.15,hacking_money_mult:1.2});Z.addToFactions(["BitRunners"]),w(o.a.NeuralAccelerator)&&delete r.a[o.a.NeuralAccelerator],E(Z);const ee=new n.a({name:o.a.CranialSignalProcessorsG1,repCost:1e4,moneyCost:7e7,info:"The first generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",hacking_speed_mult:1.01,hacking_mult:1.05});ee.addToFactions(["CyberSec"]),w(o.a.CranialSignalProcessorsG1)&&delete r.a[o.a.CranialSignalProcessorsG1],E(ee);const te=new n.a({name:o.a.CranialSignalProcessorsG2,repCost:18750,moneyCost:125e6,info:"The second generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[o.a.CranialSignalProcessorsG1],hacking_speed_mult:1.02,hacking_chance_mult:1.05,hacking_mult:1.07});te.addToFactions(["CyberSec","NiteSec"]),w(o.a.CranialSignalProcessorsG2)&&delete r.a[o.a.CranialSignalProcessorsG2],E(te);const ae=new n.a({name:o.a.CranialSignalProcessorsG3,repCost:5e4,moneyCost:55e7,info:"The third generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[o.a.CranialSignalProcessorsG2],hacking_speed_mult:1.02,hacking_money_mult:1.15,hacking_mult:1.09});ae.addToFactions(["NiteSec","The Black Hand","BitRunners"]),w(o.a.CranialSignalProcessorsG3)&&delete r.a[o.a.CranialSignalProcessorsG3],E(ae);const ne=new n.a({name:o.a.CranialSignalProcessorsG4,repCost:125e3,moneyCost:11e8,info:"The fourth generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[o.a.CranialSignalProcessorsG3],hacking_speed_mult:1.02,hacking_money_mult:1.2,hacking_grow_mult:1.25});ne.addToFactions(["The Black Hand","BitRunners"]),w(o.a.CranialSignalProcessorsG4)&&delete r.a[o.a.CranialSignalProcessorsG4],E(ne);const re=new n.a({name:o.a.CranialSignalProcessorsG5,repCost:25e4,moneyCost:225e7,info:"The fifth generation of Cranial Signal Processors. Cranial Signal Processors are a set of specialized microprocessors that are attached to neurons in the brain. These chips process neural signals to quickly and automatically perform specific computations so that the brain doesn't have to.",prereqs:[o.a.CranialSignalProcessorsG4],hacking_mult:1.3,hacking_money_mult:1.25,hacking_grow_mult:1.75});re.addToFactions(["BitRunners"]),w(o.a.CranialSignalProcessorsG5)&&delete r.a[o.a.CranialSignalProcessorsG5],E(re);const ie=new n.a({name:o.a.NeuronalDensification,repCost:187500,moneyCost:1375e6,info:"The brain is surgically re-engineered to have increased neuronal density by decreasing the neuron gap junction. Then, the body is genetically modified to enhance the production and capabilities of its neural stem cells.",hacking_mult:1.15,hacking_exp_mult:1.1,hacking_speed_mult:1.03});ie.addToFactions(["Clarke Incorporated"]),w(o.a.NeuronalDensification)&&delete r.a[o.a.NeuronalDensification],E(ie);const oe=new n.a({name:o.a.NuoptimalInjectorImplant,repCost:5e3,moneyCost:2e7,info:"This torso implant automatically injects nootropic supplements into the bloodstream to improve memory, increase focus, and provide other cognitive enhancements.",company_rep_mult:1.2});oe.addToFactions(["Tian Di Hui","Volhaven","New Tokyo","Chongqing","Clarke Incorporated","Four Sigma","Bachman & Associates"]),w(o.a.NuoptimalInjectorImplant)&&delete r.a[o.a.NuoptimalInjectorImplant],E(oe);const se=new n.a({name:o.a.SpeechEnhancement,repCost:2500,moneyCost:125e5,info:"An advanced neural implant that improves your speaking abilities, making you more convincing and likable in conversations and overall improving your social interactions.",company_rep_mult:1.1,charisma_mult:1.1});se.addToFactions(["Tian Di Hui","Speakers for the Dead","Four Sigma","KuaiGong International","Clarke Incorporated","Bachman & Associates"]),w(o.a.SpeechEnhancement)&&delete r.a[o.a.SpeechEnhancement],E(se);const le=new n.a({name:o.a.FocusWire,repCost:75e3,moneyCost:9e8,info:"A cranial implant that stops procrastination by blocking specific neural pathways in the brain.",hacking_exp_mult:1.05,strength_exp_mult:1.05,defense_exp_mult:1.05,dexterity_exp_mult:1.05,agility_exp_mult:1.05,charisma_exp_mult:1.05,company_rep_mult:1.1,work_money_mult:1.2});le.addToFactions(["Bachman & Associates","Clarke Incorporated","Four Sigma","KuaiGong International"]),w(o.a.FocusWire)&&delete r.a[o.a.FocusWire],E(le);const ce=new n.a({name:o.a.PCDNI,repCost:375e3,moneyCost:375e7,info:"Installs a Direct-Neural Interface jack into your arm that is compatible with most computers. Connecting to a computer through this jack allows you to interface with it using the brain's electrochemical signals.",company_rep_mult:1.3,hacking_mult:1.08});ce.addToFactions(["Four Sigma","OmniTek Incorporated","ECorp","Blade Industries"]),w(o.a.PCDNI)&&delete r.a[o.a.PCDNI],E(ce);const ue=new n.a({name:o.a.PCDNIOptimizer,repCost:5e5,moneyCost:45e8,info:"This is a submodule upgrade to the PC Direct-Neural Interface augmentation. It improves the performance of the interface and gives the user more control options to a connected computer.",prereqs:[o.a.PCDNI],company_rep_mult:1.75,hacking_mult:1.1});ue.addToFactions(["Fulcrum Secret Technologies","ECorp","Blade Industries"]),w(o.a.PCDNIOptimizer)&&delete r.a[o.a.PCDNIOptimizer],E(ue);const me=new n.a({name:o.a.PCDNINeuralNetwork,repCost:15e5,moneyCost:75e8,info:"This is an additional installation that upgrades the functionality of the PC Direct-Neural Interface augmentation. When connected to a computer, The Neural Network upgrade allows the user to use their own brain's processing power to aid the computer in computational tasks.",prereqs:[o.a.PCDNI],company_rep_mult:2,hacking_mult:1.1,hacking_speed_mult:1.05});me.addToFactions(["Fulcrum Secret Technologies"]),w(o.a.PCDNINeuralNetwork)&&delete r.a[o.a.PCDNINeuralNetwork],E(me);const he=new n.a({name:o.a.ADRPheromone1,repCost:3750,moneyCost:175e5,info:"The body is genetically re-engineered so that it produces the ADR-V1 pheromone, an artificial pheromone discovered by scientists. The ADR-V1 pheromone, when excreted, triggers feelings of admiration and approval in other people.",company_rep_mult:1.1,faction_rep_mult:1.1});he.addToFactions(["Tian Di Hui","The Syndicate","NWO","MegaCorp","Four Sigma"]),w(o.a.ADRPheromone1)&&delete r.a[o.a.ADRPheromone1],E(he);const pe=new n.a({name:o.a.ADRPheromone2,repCost:62500,moneyCost:55e7,info:"The body is genetically re-engineered so that it produces the ADR-V2 pheromone, which is similar to but more potent than ADR-V1. This pheromone, when excreted, triggers feelings of admiration, approval, and respect in others.",company_rep_mult:1.2,faction_rep_mult:1.2});pe.addToFactions(["Silhouette","Four Sigma","Bachman & Associates","Clarke Incorporated"]),w(o.a.ADRPheromone2)&&delete r.a[o.a.ADRPheromone2],E(pe);const de=new n.a({name:o.a.ShadowsSimulacrum,repCost:37500,moneyCost:4e8,info:"A crude but functional matter phase-shifter module that is embedded in the brainstem and cerebellum. This augmentation was developed by criminal organizations and allows the user to project and control holographic simulacrums within a large radius. These simulacrums are commonly used for espionage and surveillance work.",company_rep_mult:1.15,faction_rep_mult:1.15});de.addToFactions(["The Syndicate","The Dark Army","Speakers for the Dead"]),w(o.a.ShadowsSimulacrum)&&delete r.a[o.a.ShadowsSimulacrum],E(de);const fe=new n.a({name:o.a.HacknetNodeCPUUpload,repCost:3750,moneyCost:11e6,info:"Uploads the architecture and design details of a Hacknet Node's CPU into the brain. This allows the user to engineer custom hardware and software for the Hacknet Node that provides better performance.",hacknet_node_money_mult:1.15,hacknet_node_purchase_cost_mult:.85});fe.addToFactions(["Netburners"]),w(o.a.HacknetNodeCPUUpload)&&delete r.a[o.a.HacknetNodeCPUUpload],E(fe);const ge=new n.a({name:o.a.HacknetNodeCacheUpload,repCost:2500,moneyCost:55e5,info:"Uploads the architecture and design details of a Hacknet Node's main-memory cache into the brain. This allows the user to engineer custom cache hardware for the Hacknet Node that offers better performance.",hacknet_node_money_mult:1.1,hacknet_node_level_cost_mult:.85});ge.addToFactions(["Netburners"]),w(o.a.HacknetNodeCacheUpload)&&delete r.a[o.a.HacknetNodeCacheUpload],E(ge);const ye=new n.a({name:o.a.HacknetNodeNICUpload,repCost:1875,moneyCost:45e5,info:"Uploads the architecture and design details of a Hacknet Node's Network Interface Card (NIC) into the brain. This allows the user to engineer a custom NIC for the Hacknet Node that offers better performance.",hacknet_node_money_mult:1.1,hacknet_node_purchase_cost_mult:.9});ye.addToFactions(["Netburners"]),w(o.a.HacknetNodeNICUpload)&&delete r.a[o.a.HacknetNodeNICUpload],E(ye);const be=new n.a({name:o.a.HacknetNodeKernelDNI,repCost:7500,moneyCost:4e7,info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a Hacknet Node. This lets the user access and manipulate the Node's kernel using electrochemical signals.",hacknet_node_money_mult:1.25});be.addToFactions(["Netburners"]),w(o.a.HacknetNodeKernelDNI)&&delete r.a[o.a.HacknetNodeKernelDNI],E(be);const Ee=new n.a({name:o.a.HacknetNodeCoreDNI,repCost:12500,moneyCost:6e7,info:"Installs a Direct-Neural Interface jack into the arm that is capable of connecting to a Hacknet Node. This lets the user access and manipulate the Node's processing logic using electrochemical signals.",hacknet_node_money_mult:1.45});Ee.addToFactions(["Netburners"]),w(o.a.HacknetNodeCoreDNI)&&delete r.a[o.a.HacknetNodeCoreDNI],E(Ee);const ve=new n.a({name:o.a.NeuroFluxGovernor,repCost:1250,moneyCost:375e4,info:"A device that is embedded in the back of the neck. The NeuroFlux Governor monitors and regulates nervous impulses coming to and from the spinal column, essentially 'governing' the body. By doing so, it improves the functionality of the body's nervous system.",stats:b.a.createElement(b.a.Fragment,null,"This special augmentation can be leveled up infinitely. Each level of this augmentation increases ALL multipliers by 1%, stacking multiplicatively."),hacking_chance_mult:1.01,hacking_speed_mult:1.01,hacking_money_mult:1.01,hacking_grow_mult:1.01,hacking_mult:1.01,strength_mult:1.01,defense_mult:1.01,dexterity_mult:1.01,agility_mult:1.01,charisma_mult:1.01,hacking_exp_mult:1.01,strength_exp_mult:1.01,defense_exp_mult:1.01,dexterity_exp_mult:1.01,agility_exp_mult:1.01,charisma_exp_mult:1.01,company_rep_mult:1.01,faction_rep_mult:1.01,crime_money_mult:1.01,crime_success_mult:1.01,hacknet_node_money_mult:1.01,hacknet_node_purchase_cost_mult:.99,hacknet_node_ram_cost_mult:.99,hacknet_node_core_cost_mult:.99,hacknet_node_level_cost_mult:.99,work_money_mult:1.01});let ke=0;for(let e=0;e=0;e--)if(u.a.queuedAugmentations[e].name===o.a.NeuroFluxGovernor){t=e;break}for(let a=0;a"}u.a.queuedAugmentations=[],Object(d.a)("You slowly drift to sleep as scientists put you under in order to install the following Augmentations:
"+e+"
You wake up in your home...you feel different..."),Object(m.a)()}function w(e){return r.a.hasOwnProperty(e)}function S(e){return(e instanceof n.a?e.name:e)===o.a.NeuroFluxGovernor}},function(e,t,a){"use strict";let n;a.d(t,"a",(function(){return n})),function(e){e[e.Field=0]="Field",e[e.Hacking=1]="Hacking",e[e.None=2]="None",e[e.Security=3]="Security"}(n||(n={}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return M})),a.d(t,"c",(function(){return A})),a.d(t,"e",(function(){return N})),a.d(t,"f",(function(){return j})),a.d(t,"b",(function(){return F})),a.d(t,"d",(function(){return D}));var n=a(99),r=a(241),i=a(148),o=a(207),s=a(371),l=a(5),c=a(37),u=a(422),m=a(110),h=a(372),p=a(703),d=a(254),f=a(1),g=a(262),y=a(420),b=a(166),E=a(27),v=a(33),k=a(126),_=a(453),C=a(9),w=a(211),S=a(292),x=a(80),O=a(173),T=a(300);const M=[];for(var P=0;P{i=!0;let t=e.source.value;t.startsWith("./")&&(t=t.slice(2));let a=function(e){for(let t=0;t{a.push(e.id.name),n.push(e)}}),r+="var "+t+";\n(function (namespace) {\n",n.forEach(e=>{r+=Object(_.generate)(e),r+="\n"}),a.forEach(e=>{r+="namespace."+e+" = "+e,r+="\n"}),r+="})("+t+" || ("+t+" = {}));\n"}else{let t=[];e.specifiers.forEach(e=>{t.push(e.local.name)});let a=[];Object(T.b)(o,{FunctionDeclaration:e=>{t.includes(e.id.name)&&a.push(e)}}),a.forEach(e=>{r+=Object(_.generate)(e),r+="\n"})}}}),!i)return{code:e,lineOffset:0};var o=0;if("Program"!==a.type||null==a.body)throw new Error("Code could not be properly parsed");for(let e=a.body.length-1;e>=0;--e)"ImportDeclaration"===a.body[e].type&&(a.body.splice(e,1),++o);var s=(r.match(/\n/g)||[]).length-o;return e=Object(_.generate)(a),{code:e=r+e,lineOffset:s}}(t,e);a=n.code,i=n.lineOffset}catch(t){return Object(C.a)("Error processing Imports in "+e.name+":
"+t),e.env.stopFlag=!0,e.running=!1,void Object(n.a)(e)}var o;try{o=new u.a(a,(function(t,a){var n=Object(h.a)(e);for(let e in n){let r=n[e];if("function"==typeof r)if("hack"===e||"grow"===e||"weaken"===e||"sleep"===e||"prompt"===e||"manualHack"===e){let n=function(){let e=[];for(let a=0;a"+t),e.env.stopFlag=!0,e.running=!1,void Object(n.a)(e)}return new Promise((function(t,a){try{!function n(){try{if(e.env.stopFlag)return a(e);o.step()?Object(k.a)(n,v.a.CodeInstructionRunTime):t(e)}catch(t){return t=t.toString(),Object(m.a)(t)||(t=Object(m.b)(e,t)),e.errorMessage=t,a(e)}}()}catch(t){return Object(x.a)(t)?(e.errorMessage=t,a(e)):t instanceof r.a?a(t):a(e)}}))}function N(e,t,a){return I(e,t,a)?(t.runScript(e,f.a.hacknet_node_money_mult),e.pid):0}function I(e,t,a){let l=1;e.threads&&!isNaN(e.threads)?l=e.threads:e.threads=1;const c=Object(S.a)(Object(y.a)(e)*l);if(c>t.maxRam-t.ramUsed)return Object(C.a)(`Not enough RAM to run script ${e.filename} with args `+Object(w.a)(e.args)+". This likely occurred because you re-loaded the game and the script's RAM usage increased (either because of an update to the game or your changes to the script.)"),!1;t.ramUsed=Object(S.a)(t.ramUsed+c);const u=Object(s.a)();if(-1===u)throw new Error("Failed to start script because could not find available PID. This is most because you have too many scripts running.");const d=new r.a(e,u,h.a);d.ramUsage=c,i.a.set(u,d),o.a.emitEvent();let f=null;if(d.name.endsWith(".js")||d.name.endsWith(".ns"))f=function(e){e.running=!0;let t=null;function a(a,n){return function(...r){if(e.env.stopFlag)throw e;if("sleep"===a)return n(...r);if(t)throw e.errorMessage=Object(m.b)(e,sprintf("Concurrent calls to Netscript functions not allowed! Did you forget to await hack(), grow(), or some other promise-returning function? (Currently running: %s tried to run: %s)",t,a),null),e;let i;t=a;try{i=n(...r)}catch(e){throw t=null,e}return i&&void 0!==i.finally?i.finally((function(){t=null})):(t=null,i)}}for(let t in e.env.vars)"function"==typeof e.env.vars[t]&&(e.env.vars[t]=a(t,e.env.vars[t]));return Object(p.a)(e.getServer().scripts,e).then((function(t){return void 0===t?e:[t,e]})).catch(t=>{if(t instanceof Error)throw e.errorMessage=Object(m.b)(e,t.message+(t.stack&&"\nstack:\n"+t.stack.toString()||"")),e;if(Object(m.a)(t))throw e.errorMessage=t,e;throw t})}(d);else if(f=R(d),!(f instanceof Promise))return!1;return f.then((function(t){a&&a.running&&(a.scriptRef.onlineExpGained+=e.onlineExpGained,a.scriptRef.onlineMoneyMade+=e.onlineMoneyMade),t.running&&(Object(n.a)(d),t.log("","Script finished running"))})).catch((function(e){if(e instanceof Error)return Object(C.a)("Script runtime unknown error. This is a bug please contact game developer"),void console.error("Evaluating workerscript returns an Error. THIS SHOULDN'T HAPPEN: "+e.toString());if(e instanceof r.a){if(!Object(m.a)(e.errorMessage))return void e.log("","Script killed");{const t=e.errorMessage.split("|");if(4!=t.length)return console.error("ERROR: Something wrong with Error text in evaluator..."),void console.error("Error text: "+errorText);const a=t[1],n=t[2],r=t[3];let i=`RUNTIME ERROR
${n}@${a}
`;e.args.length>0&&(i+=`Args: ${Object(w.a)(e.args)}
`),i+="
",i+=r,Object(C.a)(i),e.log("","Script crashed with runtime error")}e.running=!1,e.env.stopFlag=!0}else{if(Object(m.a)(e))return Object(C.a)("Script runtime unknown error. This is a bug please contact game developer"),void console.error("ERROR: Evaluating workerscript returns only error message rather than WorkerScript object. THIS SHOULDN'T HAPPEN: "+e.toString());Object(C.a)("An unknown script died for an unknown reason. This is a bug please contact game dev"),console.error(e)}Object(n.a)(d)})),!0}function j(e=1){var t=e*c.Engine._idleSpeed/1e3;for(const e of i.a.values())e.scriptRef.onlineRunningTime+=t}function F(){let e=-1!==window.location.href.toLowerCase().indexOf("?noscripts");e&&console.info("Skipping the load of any scripts during startup");for(const t in E.b)if(E.b.hasOwnProperty(t)){const a=E.b[t];a.ramUsed=0;for(let e=0;ec)return i.log(e,`Cannot run script '${a}' (t=${o}) on '${t.hostname}' because there is not enough available RAM!`),0;{i.log(e,`'${a}' on '${t.hostname}' with ${o} threads and args: ${Object(w.a)(n)}.`);let r=new g.a(s,n);return r.threads=o,N(r,t,i)}}return i.log(e,`Could not find script '${a}' on '${t.hostname}'`),0}},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=window.setTimeout.bind(window)},,function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(14);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class i{constructor(e={}){r(this,"name","InitName"),r(this,"qty",0),r(this,"qlt",0),r(this,"dmd",0),r(this,"dmdR",[0,0]),r(this,"cmp",0),r(this,"cmpR",[0,0]),r(this,"mv",0),r(this,"mku",0),r(this,"buy",0),r(this,"sll",0),r(this,"prd",0),r(this,"imp",0),r(this,"exp",[]),r(this,"totalExp",0),r(this,"bCost",0),r(this,"sCost",0),r(this,"prdman",[!1,0]),r(this,"sllman",[!1,0]),r(this,"marketTa1",!1),r(this,"marketTa2",!1),r(this,"marketTa2Price",0),e.name&&(this.name=e.name),this.init()}getMarkupLimit(){return this.qlt/this.mku}init(){switch(this.name){case"Water":this.dmd=75,this.dmdR=[65,85],this.cmp=50,this.cmpR=[40,60],this.bCost=1500,this.mv=.2,this.mku=6;break;case"Energy":this.dmd=90,this.dmdR=[80,99],this.cmp=80,this.cmpR=[65,95],this.bCost=2e3,this.mv=.2,this.mku=6;break;case"Food":this.dmd=80,this.dmdR=[70,90],this.cmp=60,this.cmpR=[35,85],this.bCost=5e3,this.mv=1,this.mku=3;break;case"Plants":this.dmd=70,this.dmdR=[20,90],this.cmp=50,this.cmpR=[30,70],this.bCost=3e3,this.mv=.6,this.mku=3.75;break;case"Metal":this.dmd=80,this.dmdR=[75,85],this.cmp=70,this.cmpR=[60,80],this.bCost=2650,this.mv=1,this.mku=6;break;case"Hardware":this.dmd=85,this.dmdR=[80,90],this.cmp=80,this.cmpR=[65,95],this.bCost=8e3,this.mv=.5,this.mku=1;break;case"Chemicals":this.dmd=55,this.dmdR=[40,70],this.cmp=60,this.cmpR=[40,80],this.bCost=9e3,this.mv=1.2,this.mku=2;break;case"Real Estate":this.dmd=50,this.dmdR=[5,99],this.cmp=50,this.cmpR=[25,75],this.bCost=8e4,this.mv=1.5,this.mku=1.5;break;case"Drugs":this.dmd=60,this.dmdR=[45,75],this.cmp=70,this.cmpR=[40,99],this.bCost=4e4,this.mv=1.6,this.mku=1;break;case"Robots":this.dmd=90,this.dmdR=[80,9],this.cmp=90,this.cmpR=[80,9],this.bCost=75e3,this.mv=.5,this.mku=1;break;case"AI Cores":this.dmd=90,this.dmdR=[80,99],this.cmp=90,this.cmpR=[80,9],this.bCost=15e3,this.mv=.8,this.mku=.5;break;case"Scientific Research":case"InitName":break;default:console.error("Invalid material type in init(): "+this.name)}}processMarket(){const e=1+Math.random()*this.mv/300,t=1+Math.random()*this.mv/100;Math.random()<.5?(this.cmp*=t,this.cmp>this.cmpR[1]&&(this.cmp=this.cmpR[1]),this.bCost*=1/e):(this.cmp*=1/t,this.cmpthis.dmdR[1]&&(this.dmd=this.dmdR[1]),this.bCost*=e):(this.dmd*=1/a,this.dmd({ind:e.ind,city:e.city,amt:e.amt})),e}toJSON(){return Object(n.b)("Material",this)}static fromJSON(e){return Object(n.a)(i,e.data)}}n.c.constructors.Material=i},function(e,t,a){"use strict";a.d(t,"a",(function(){return b})),a.d(t,"b",(function(){return g})),a.d(t,"e",(function(){return f})),a.d(t,"d",(function(){return E})),a.d(t,"c",(function(){return k}));var n=a(95),r=a(18),i=a(4),o=a(55),s=a(118),l=a(1),c=a(122),u=a(35),m=a(33),h=a(9),p=a(14);function d(e,t=!1){e.recvd=!0,!t&&m.a.SuppressMessages||f(e),function(e,t){var a=Object(u.a)(t);if(null==a)return void console.warn("Could not find server "+t);for(var n=0;n

This message was saved as "+e.filename+" onto your home computer.";Object(h.a)(t)}function g(){var e=b[v.Jumper0],t=b[v.Jumper1],a=b[v.Jumper2],n=b[v.Jumper3],u=b[v.Jumper4],m=b[v.CyberSecTest],h=b[v.NiteSecTest],p=b[v.BitRunnersTest],f=b[v.RedPill],g=!1;if(r.a[i.a.TheRedPill].owned&&(g=!0),f&&g&&0===l.a.sourceFiles.length&&!c.b&&!s.c)d(f,!0);else if(f&&g)c.b||s.c||d(f);else if(e&&!e.recvd&&l.a.hacking_skill>=25){d(e);const t=o.a.Flight.name,a=l.a.getHomeComputer();a.programs.includes(t)||a.programs.push(t)}else t&&!t.recvd&&l.a.hacking_skill>=40?d(t):m&&!m.recvd&&l.a.hacking_skill>=50?d(m):a&&!a.recvd&&l.a.hacking_skill>=175?d(a):h&&!h.recvd&&l.a.hacking_skill>=200?d(h):n&&!n.recvd&&l.a.hacking_skill>=350?d(n):u&&!u.recvd&&l.a.hacking_skill>=490?d(u):p&&!p.recvd&&l.a.hacking_skill>=500&&d(p)}function y(e){b[e.filename]=e}let b={};function E(e){b=JSON.parse(e,p.c)}let v={Jumper0:"j0.msg",Jumper1:"j1.msg",Jumper2:"j2.msg",Jumper3:"j3.msg",Jumper4:"j4.msg",CyberSecTest:"csec-test.msg",NiteSecTest:"nitesec-test.msg",BitRunnersTest:"19dfj3l1nd.msg",RedPill:"icarus.msg"};function k(){b={},y(new n.a(v.Jumper0,"I know you can sense it. I know you're searching for it. It's why you spend night after night at your computer.

It's real, I've seen it. And I can help you find it. But not right now. You're not ready yet.

Use this program to track your progress

The fl1ght.exe program was added to your home computer

-jump3R")),y(new n.a(v.Jumper1,"Soon you will be contacted by a hacking group known as CyberSec. They can help you with your search.

You should join them, garner their favor, and exploit them for their Augmentations. But do not trust them. They are not what they seem. No one is.

-jump3R")),y(new n.a(v.Jumper2,"Do not try to save the world. There is no world to save. If you want to find the truth, worry only about yourself. Ethics and morals will get you killed.

Watch out for a hacking group known as NiteSec.

-jump3R")),y(new n.a(v.Jumper3,"You must learn to walk before you can run. And you must run before you can fly. Look for the black hand.

I.I.I.I

-jump3R")),y(new n.a(v.Jumper4,"To find what you are searching for, you must understand the bits. The bits are all around us. The runners will help you.

-jump3R")),y(new n.a(v.CyberSecTest,"We've been watching you. Your skills are very impressive. But you're wasting your talents. If you join us, you can put your skills to good use and change the world for the better. If you join us, we can unlock your full potential.

But first, you must pass our test. Find and install the backdoor on our server.

-CyberSec")),y(new n.a(v.NiteSecTest,"People say that the corrupted governments and corporations rule the world. Yes, maybe they do. But do you know who everyone really fears? People like us. Because they can't hide from us. Because they can't fight shadows and ideas with bullets.

Join us, and people will fear you, too.

Find and install the backdoor on our server. Then, we will contact you again.

-NiteSec")),y(new n.a(v.BitRunnersTest,"We know what you are doing. We know what drives you. We know what you are looking for.

We can help you find the answers.

run4theh111z")),y(new n.a(v.RedPill,"@)(#V%*N)@(#*)*C)@#%*)*V)@#(*%V@)(#VN%*)@#(*%
)@B(*#%)@)M#B*%V)____FIND___#$@)#%(B*)@#(*%B)
@_#(%_@#M(BDSPOMB__THE-CAVE_#)$(*@#$)@#BNBEGB
DFLSMFVMV)#@($*)@#*$MV)@#(*$V)M#(*$)M@(#*VM$)"))}},function(e,t,a){"use strict";a.d(t,"b",(function(){return l})),a.d(t,"a",(function(){return u}));var n=a(0),r=a.n(n),i=a(455),o=a(736),s=a(1315);const l={primarylight:"#0f0",primary:"#0c0",primarydark:"#090",errorlight:"#f00",error:"#c00",errordark:"#900",secondarylight:"#AAA",secondary:"#888",secondarydark:"#666",welllight:"#444",well:"#222",white:"#fff",black:"#000",hp:"#dd3434",money:"#ffd700",hack:"#adff2f",combat:"#faffdf",cha:"#a671d1",int:"#6495ed"},c=Object(i.a)({palette:{primary:{light:l.primarylight,main:l.primary,dark:l.primarydark},secondary:{light:l.secondarylight,main:l.secondary,dark:l.secondarydark},error:{light:l.errorlight,main:l.error,dark:l.errordark},background:{paper:l.well}},typography:{fontFamily:"monospace",button:{textTransform:"none"}},components:{MuiInputBase:{styleOverrides:{root:{backgroundColor:l.well},input:{color:l.primary,"&::placeholder":{userSelect:"none",color:l.primarydark}}}},MuiInput:{styleOverrides:{root:{backgroundColor:l.well,borderBottomColor:"#fff"},underline:{"&:hover":{borderBottomColor:l.primarydark},"&:before":{borderBottomColor:l.primary},"&:after":{borderBottomColor:l.primarylight}}}},MuiInputLabel:{styleOverrides:{root:{color:l.primarydark,userSelect:"none","&:before":{color:l.primarylight}}}},MuiButton:{styleOverrides:{root:{backgroundColor:"#333",border:"1px solid "+l.well,margin:"5px",padding:"3px 5px","&:hover":{backgroundColor:l.black},borderRadius:0}}},MuiSelect:{styleOverrides:{icon:{color:l.primary}}},MuiMenu:{styleOverrides:{list:{backgroundColor:l.well}}},MuiMenuItem:{styleOverrides:{root:{color:l.primary}}},MuiAccordionSummary:{styleOverrides:{root:{backgroundColor:"#111"}}},MuiAccordionDetails:{styleOverrides:{root:{backgroundColor:l.black}}},MuiIconButton:{styleOverrides:{root:{color:l.primary}}},MuiTooltip:{styleOverrides:{tooltip:{fontSize:"1em",color:l.primary,backgroundColor:l.well,borderRadius:0,border:"2px solid white"}}},MuiSlider:{styleOverrides:{valueLabel:{color:l.primary,backgroundColor:l.well}}},MuiDrawer:{styleOverrides:{paper:{"&::-webkit-scrollbar":{display:"none"},scrollbarWidth:"none",backgroundColor:l.black},paperAnchorDockedLeft:{borderRight:"1px solid "+l.welllight}}},MuiDivider:{styleOverrides:{root:{backgroundColor:l.welllight}}},MuiFormControlLabel:{styleOverrides:{root:{color:l.primary}}},MuiSwitch:{styleOverrides:{switchBase:{color:l.primarydark},track:{backgroundColor:l.welllight}}},MuiPaper:{styleOverrides:{root:{backgroundColor:l.black,border:"1px solid "+l.welllight}}}}}),u=({children:e})=>r.a.createElement(o.a,{injectFirst:!0},r.a.createElement(s.a,{theme:c},e))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var n=a(412),r=a(447),i=a(14);function o(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class s{constructor(e=""){o(this,"alreadyInvited",!1),o(this,"augmentations",[]),o(this,"favor",0),o(this,"isBanned",!1),o(this,"isMember",!1),o(this,"name",""),o(this,"playerReputation",0),o(this,"rolloverRep",0),this.name=e}getInfo(){const e=n.a[this.name];if(null==e)throw new Error(`Missing faction from FactionInfos: ${this.name} this probably means the faction got corrupted somehow`);return e}gainFavor(){null==this.favor&&(this.favor=0),null==this.rolloverRep&&(this.rolloverRep=0);const e=this.getFavorGain();2===e.length?(this.favor+=e[0],this.rolloverRep=e[1]):console.error("Invalid result from getFavorGain() function")}getFavorGain(){null==this.favor&&(this.favor=0),null==this.rolloverRep&&(this.rolloverRep=0);const e=Math.max(0,Object(r.a)(this.favor-1))+this.rolloverRep+this.playerReputation,t=Math.floor(Object(r.b)(e)),a=Object(r.a)(t);return[t-this.favor+1,e-a]}toJSON(){return Object(i.b)("Faction",this)}static fromJSON(e){return Object(i.a)(s,e.data)}}i.c.constructors.Faction=s},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(9);function r(e){console.error(e),Object(n.a)("Caught an exception: "+e+"

Filename: "+(e.fileName||"UNKNOWN FILE NAME")+"

Line Number: "+(e.lineNumber||"UNKNOWN LINE NUMBER")+"

This is a bug, please report to game developer with this message as well as details about how to reproduce the bug.

If you want to be safe, I suggest refreshing the game WITHOUT saving so that your safe doesn't get corrupted",!1)}},function(e,t,a){"use strict";let n,r,i,o,s,l;a.d(t,"b",(function(){return s})),a.d(t,"a",(function(){return l})),function(e){e.Ace="ace",e.Emacs="emacs",e.Vim="vim"}(n||(n={})),function(e){e.Default="default",e.Emacs="emacs",e.Sublime="sublime",e.Vim="vim"}(r||(r={})),function(e){e.Monokai="monokai",e.Day_3024="3024-day",e.Night_3024="3024-night",e.abcdef="abcdef",e.Ambiance_mobile="ambiance-mobile",e.Ambiance="ambiance",e.Base16_dark="base16-dark",e.Base16_light="base16-light",e.Bespin="bespin",e.Blackboard="blackboard",e.Cobalt="cobalt",e.Colorforth="colorforth",e.Darcula="darcula",e.Dracula="dracula",e.Duotone_dark="duotone-dark",e.Duotone_light="duotone-light",e.Eclipse="eclipse",e.Elegant="elegant",e.Erlang_dark="erlang-dark",e.Gruvbox_dark="gruvbox-dark",e.Hopscotch="hopscotch",e.Icecoder="icecoder",e.Idea="idea",e.Isotope="isotope",e.Lesser_dark="lesser-dark",e.Liquibyte="liquibyte",e.Lucario="lucario",e.Material="material",e.Mbo="mbo",e.Mdn_like="mdn-like",e.Midnight="midnight",e.Neat="neat",e.Neo="neo",e.Night="night",e.Oceanic_next="oceanic-next",e.Panda_syntax="panda-syntax",e.Paraiso_dark="paraiso-dark",e.Paraiso_light="paraiso-light",e.Pastel_on_dark="pastel-on-dark",e.Railscasts="railscasts",e.Rubyblue="rubyblue",e.Seti="seti",e.Shadowfox="shadowfox",e.Solarized="solarized",e.SolarizedDark="solarized dark",e.ssms="ssms",e.The_matrix="the-matrix",e.Tomorrow_night_bright="tomorrow-night-bright",e.Tomorrow_night_eighties="tomorrow-night-eighties",e.Ttcn="ttcn",e.Twilight="twilight",e.Vibrant_ink="vibrant-ink",e.xq_dark="xq-dark",e.xq_light="xq-light",e.Yeti="yeti",e.Zenburn="zenburn"}(i||(i={})),function(e){e.Ace="Ace",e.CodeMirror="CodeMirror"}(o||(o={})),function(e){e[e.Cost=0]="Cost",e[e.Default=1]="Default",e[e.Reputation=2]="Reputation"}(s||(s={})),function(e){e[e.Alphabetically=0]="Alphabetically",e[e.AcquirementTime=1]="AcquirementTime"}(l||(l={}))},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n={Water:.05,Energy:.01,Food:.03,Plants:.05,Metal:.1,Hardware:.06,Chemicals:.05,Drugs:.02,Robots:.5,AICores:.1,RealEstate:0,"Real Estate":0,"AI Cores":0}},function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(0);class r extends n.Component{constructor(e){var t,a,n;super(e),n=0,(a="interval")in(t=this)?Object.defineProperty(t,a,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[a]=n,this.state={i:0}}componentDidMount(){const e=this.props.intervalTime?this.props.intervalTime:1e3;this.interval=window.setInterval(()=>this.tick(),e)}componentWillUnmount(){clearInterval(this.interval)}tick(){this.setState(e=>({i:e.i+1}))}render(){const e=null!=this.props.tooltip&&""!==this.props.tooltip;let t=this.props.disabled?"std-button-disabled":"std-button";e&&(t+=" tooltip");const a={__html:this.props.tooltip?this.props.tooltip:""};return n.createElement("button",{className:t,onClick:this.props.onClick,style:this.props.style},this.props.text,e&&n.createElement("span",{className:"tooltiptext",dangerouslySetInnerHTML:a}))}}},,function(e,t,a){"use strict";function n(e){const t=Object.assign({},{progress:0,totalTicks:20},e);t.progress=Math.max(Math.min(t.progress,1),0);const a=Math.max(Math.floor(t.progress/(1/t.totalTicks)),1),n=Math.max(t.totalTicks-a,0);return`[${"|".repeat(a)}${"-".repeat(n)}]`}a.d(t,"a",(function(){return n}))},,,function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(0),r=a.n(n);function i(e){let t;return Object(n.useEffect)(()=>t.focus()),r.a.createElement("div",{tabIndex:1,ref:e=>t=e,onKeyDown:function(t){t.isTrusted?e.onKeyDown(t):e.onFailure({automated:!0})}})}},function(e,t,a){"use strict";a.d(t,"a",(function(){return c}));var n=a(1353),r=a(0),i=a.n(r),o=a(1351),s=a(70);const l=Object(o.a)(()=>({bar:{transition:"none",backgroundColor:"#adff2f"}}))(n.a);function c(e){const[t,a]=Object(r.useState)(100);return Object(r.useEffect)(()=>{const t=setInterval(()=>{a(t=>(t<=0&&e.onExpire(),t-200/e.millis*100))},200);return()=>{clearInterval(t)}},[]),i.a.createElement(s.a,{item:!0,xs:12},i.a.createElement(l,{variant:"determinate",value:t}))}},function(e,t,a){"use strict";function n(e,t,a){function n(e,t,n){function r(e,t,a){return(1-a)*e+a*t}for(const i of Object.keys(e))a[i]=r(e[i],t[i],n);return e}return t<0?n(e.Trivial,e.Trivial,0):t>=0&&t<1?n(e.Trivial,e.Normal,t):t>=1&&t<2?n(e.Normal,e.Hard,t-1):t>=2&&t<3?n(e.Hard,e.Impossible,t-2):n(e.Impossible,e.Impossible,0)}a.d(t,"a",(function(){return n}))},,function(e,t,a){"use strict";a.d(t,"a",(function(){return I}));var n=a(14),r=a(190),i=a(29),o=a(494),s=a(198),l=a(96),c=a(253),u=a(448),m=a(199),h=a(12),p=a(188),d=a(178),f=a(303),g=a(449),y=a(135),b=a(16),E=a(42),v=a(2),k=a(6),_=a(185),C=a(132),w=a(24),S=a(291),x=a(122),O=a(9),T=a(33),M=a(18),P=a(4),A=a(421),R=a(84);function N(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class I{constructor(e){N(this,"numHosp",0),N(this,"moneyLost",0),N(this,"rank",0),N(this,"maxRank",0),N(this,"skillPoints",0),N(this,"totalSkillPoints",0),N(this,"teamSize",0),N(this,"teamLost",0),N(this,"hpLost",0),N(this,"storedCycles",0),N(this,"randomEventCounter",Object(b.a)(240,600)),N(this,"actionTimeToComplete",0),N(this,"actionTimeCurrent",0),N(this,"actionTimeOverflow",0),N(this,"action",new r.a({type:i.a.Idle})),N(this,"cities",{}),N(this,"city",E.a.CityNames[2]),N(this,"skills",{}),N(this,"skillMultipliers",{}),N(this,"staminaBonus",0),N(this,"maxStamina",0),N(this,"stamina",0),N(this,"contracts",{}),N(this,"operations",{}),N(this,"blackops",{}),N(this,"logging",{general:!0,contracts:!0,ops:!0,blackops:!0,events:!0}),N(this,"automateEnabled",!1),N(this,"automateActionHigh",new r.a({type:i.a.Idle})),N(this,"automateThreshHigh",0),N(this,"automateActionLow",new r.a({type:i.a.Idle})),N(this,"automateThreshLow",0),N(this,"consoleHistory",[]),N(this,"consoleLogs",["Bladeburner Console","Type 'help' to see console commands"]);for(let e=0;e50&&this.consoleHistory.splice(0,1));const a=t.split(";");for(let t=0;t100&&this.consoleLogs.shift())}log(e){this.postToConsole(`[${Object(A.a)()}] ${e}`)}resetAction(){this.action=new r.a({type:i.a.Idle})}clearConsole(){this.consoleLogs.length=0}prestige(){this.resetAction();const e=w.a.Bladeburners;this.rank>=E.a.RankNeededForFaction&&Object(R.e)(e)}storeCycles(e=0){this.storedCycles+=e}getActionIdFromTypeAndName(e="",t=""){if(""===e||""===t)return null;const a=new r.a,n=e.toLowerCase().trim(),o=t.toLowerCase().trim();switch(n){case"contract":case"contracts":case"contr":return a.type=i.a.Contract,this.contracts.hasOwnProperty(t)?(a.name=t,a):null;case"operation":case"operations":case"op":case"ops":return a.type=i.a.Operation,this.operations.hasOwnProperty(t)?(a.name=t,a):null;case"blackoperation":case"black operation":case"black operations":case"black op":case"black ops":case"blackop":case"blackops":return a.type=i.a.BlackOp,s.a.hasOwnProperty(t)?(a.name=t,a):null;case"general":case"general action":case"gen":break;default:return null}if(n.startsWith("gen")){switch(o){case"training":a.type=i.a.Training,a.name="Training";break;case"recruitment":case"recruit":a.type=i.a.Recruitment,a.name="Recruitment";break;case"field analysis":case"fieldanalysis":a.type=i.a["Field Analysis"],a.name="Field Analysis";break;case"diplomacy":a.type=i.a.Diplomacy,a.name="Diplomacy";break;case"hyperbolic regeneration chamber":a.type=i.a["Hyperbolic Regeneration Chamber"],a.name="Hyperbolic Regeneration Chamber";break;default:return null}return a}return null}executeStartConsoleCommand(e,t){if(3!==t.length)return this.postToConsole("Invalid usage of 'start' console command: start [type] [name]"),void this.postToConsole("Use 'help start' for more info");const a=t[2];switch(t[1].toLowerCase()){case"general":case"gen":null!=m.a[a]?(this.action.type=i.a[a],this.action.name=a,this.startAction(e,this.action)):this.postToConsole("Invalid action name specified: "+t[2]);break;case"contract":case"contracts":null!=this.contracts[a]?(this.action.type=i.a.Contract,this.action.name=a,this.startAction(e,this.action)):this.postToConsole("Invalid contract name specified: "+t[2]);break;case"ops":case"op":case"operations":case"operation":null!=this.operations[a]?(this.action.type=i.a.Operation,this.action.name=a,this.startAction(e,this.action)):this.postToConsole("Invalid Operation name specified: "+t[2]);break;case"blackops":case"blackop":case"black operations":case"black operation":null!=s.a[a]?(this.action.type=i.a.BlackOperation,this.action.name=a,this.startAction(e,this.action)):this.postToConsole("Invalid BlackOp name specified: "+t[2]);break;default:this.postToConsole("Invalid action/event type specified: "+t[1]),this.postToConsole("Examples of valid action/event identifiers are: [general, contract, op, blackop]")}}executeSkillConsoleCommand(e){switch(e.length){case 1:this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info");break;case 2:if("list"===e[1].toLowerCase()){this.postToConsole("Skills: ");const e=Object.keys(p.a);for(let t=0;t=n?(this.skillPoints-=n,this.upgradeSkill(a),this.log(a.name+" upgraded to Level "+this.skills[t])):this.postToConsole("You do not have enough Skill Points to upgrade this. You need "+Object(h.c)(n,0))}else this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info");break}default:this.postToConsole("Invalid usage of 'skill' console command: skill [action] [name]"),this.postToConsole("Use 'help skill' for more info")}}executeLogConsoleCommand(e){if(e.length<3)return this.postToConsole("Invalid usage of log command: log [enable/disable] [action/event]"),void this.postToConsole("Use 'help log' for more details and examples");let t=!0;switch(e[1].toLowerCase().includes("d")&&(t=!1),e[2].toLowerCase()){case"general":case"gen":this.logging.general=t,this.log("Logging "+(t?"enabled":"disabled")+" for general actions");break;case"contract":case"contracts":this.logging.contracts=t,this.log("Logging "+(t?"enabled":"disabled")+" for Contracts");break;case"ops":case"op":case"operations":case"operation":this.logging.ops=t,this.log("Logging "+(t?"enabled":"disabled")+" for Operations");break;case"blackops":case"blackop":case"black operations":case"black operation":this.logging.blackops=t,this.log("Logging "+(t?"enabled":"disabled")+" for BlackOps");break;case"event":case"events":this.logging.events=t,this.log("Logging "+(t?"enabled":"disabled")+" for events");break;case"all":this.logging.general=t,this.logging.contracts=t,this.logging.ops=t,this.logging.blackops=t,this.logging.events=t,this.log("Logging "+(t?"enabled":"disabled")+" for everything");break;default:this.postToConsole("Invalid action/event type specified: "+e[2]),this.postToConsole("Examples of valid action/event identifiers are: [general, contracts, ops, blackops, events]")}}executeHelpConsoleCommand(e){if(1===e.length)for(const e of g.a.helpList)this.postToConsole(e);else for(let t=1;t0&&(i*=Object(b.a)(2,4),--n.comms,++a.comms);const o=Math.round(n.pop*i);n.pop-=o,a.pop+=o}triggerPotentialMigration(e,t){(null==t||isNaN(t))&&console.error("Invalid 'chance' parameter passed into Bladeburner.triggerPotentialMigration()"),t>1&&(t/=100),Math.random()1&&(u=Math.pow(u,.8)),e.gainIntelligenceExp(u)}getDiplomacyEffectiveness(e){return(100-(Math.pow(e.charisma,.045)+e.charisma/1e3))/100}getRecruitmentSuccessChance(e){return Math.pow(e.charisma,.45)/(this.teamSize+1)}getRecruitmentTime(e){const t=e.charisma*this.skillMultipliers.effCha,a=Math.pow(t,.81)+t/90;return Math.max(10,Math.round(E.a.BaseRecruitmentTimeNeeded-a))}resetSkillMultipliers(){this.skillMultipliers={successChanceAll:1,successChanceStealth:1,successChanceKill:1,successChanceContract:1,successChanceOperation:1,successChanceEstimate:1,actionTime:1,effHack:1,effStr:1,effDef:1,effDex:1,effAgi:1,effCha:1,effInt:1,stamina:1,money:1,expGain:1}}updateSkillMultipliers(){this.resetSkillMultipliers();for(const e in this.skills)if(this.skills.hasOwnProperty(e)){const t=p.a[e];if(null==t)throw new Error("Could not find Skill Object for: "+e);const a=this.skills[e];if(null==a||a<=0)continue;const n=Object.keys(this.skillMultipliers);for(let e=0;e=1){let n;n=e?Math.ceil(a/2):Math.floor(a);const r=Object(b.a)(0,n);this.teamSize-=r,this.teamLost+=r,this.logging.ops&&r>0&&this.log("Lost "+Object(h.c)(r,0)+" team members during this "+t.name)}const n=this.getCurrentCity();switch(t.name){case"Investigation":e?(n.improvePopulationEstimateByPercentage(.4*this.skillMultipliers.successChanceEstimate),Math.random()<.02*this.skillMultipliers.successChanceEstimate&&n.improveCommunityEstimate(1)):this.triggerPotentialMigration(this.city,.1);break;case"Undercover Operation":e?(n.improvePopulationEstimateByPercentage(.8*this.skillMultipliers.successChanceEstimate),Math.random()<.02*this.skillMultipliers.successChanceEstimate&&n.improveCommunityEstimate(1)):this.triggerPotentialMigration(this.city,.15);break;case"Sting Operation":e&&n.changePopulationByPercentage(-.1,{changeEstEqually:!0,nonZero:!0}),n.changeChaosByCount(.1);break;case"Raid":if(e)n.changePopulationByPercentage(-1,{changeEstEqually:!0,nonZero:!0}),--n.comms,--n.commsEst;else{const e=Object(b.a)(-10,-5)/10;n.changePopulationByPercentage(e,{nonZero:!0,changeEstEqually:!1})}n.changeChaosByPercentage(Object(b.a)(1,5));break;case"Stealth Retirement Operation":e&&n.changePopulationByPercentage(-.5,{changeEstEqually:!0,nonZero:!0}),n.changeChaosByPercentage(Object(b.a)(-3,-1));break;case"Assassination":e&&n.changePopulationByCount(-1,{estChange:-1,estOffset:0}),n.changeChaosByPercentage(Object(b.a)(-5,5));break;default:throw new Error("Invalid Action name in completeOperation: "+this.action.name)}}getActionObject(e){switch(e.type){case i.a.Contract:return this.contracts[e.name];case i.a.Operation:return this.operations[e.name];case i.a.BlackOp:case i.a.BlackOperation:return s.a[e.name];case i.a.Training:return m.a.Training;case i.a["Field Analysis"]:return m.a["Field Analysis"];case i.a.Recruitment:return m.a.Recruitment;case i.a.Diplomacy:return m.a.Diplomacy;case i.a["Hyperbolic Regeneration Chamber"]:return m.a["Hyperbolic Regeneration Chamber"];default:return null}}completeContract(e){if(this.action.type!==i.a.Contract)throw new Error("completeContract() called even though current action is not a Contract");const t=this.getCurrentCity();if(e)switch(this.action.name){case"Tracking":t.improvePopulationEstimateByCount(Object(b.a)(100,1e3));break;case"Bounty Hunter":t.changePopulationByCount(-1,{estChange:-1,estOffset:0}),t.changeChaosByCount(.02);break;case"Retirement":t.changePopulationByCount(-1,{estChange:-1,estOffset:0}),t.changeChaosByCount(.04);break;default:throw new Error("Invalid Action name in completeContract: "+this.action.name)}}completeAction(e){switch(this.action.type){case i.a.Contract:case i.a.Operation:try{const t=this.action.type===i.a.Operation,a=this.getActionObject(this.action);if(null==a)throw new Error("Failed to get Contract/Operation Object for: "+this.action.name);const n=a.getDifficulty(),r=Math.pow(n,E.a.DiffMultExponentialFactor)+n/E.a.DiffMultLinearFactor,o=Math.pow(a.rewardFac,a.level-1);if(this.stamina-=E.a.BaseStaminaLoss*r,this.stamina<0&&(this.stamina=0),a.attempt(this)){this.gainActionStats(e,a,!0),++a.successes,--a.count;let n=0;if(t||(n=E.a.ContractBaseMoneyGain*o*this.skillMultipliers.money,e.gainMoney(n),e.recordMoneySource(n,"bladeburner")),t?a.setMaxLevel(E.a.OperationSuccessesPerLevel):a.setMaxLevel(E.a.ContractSuccessesPerLevel),a.rankGain){const r=Object(_.a)(a.rankGain*o*k.a.BladeburnerRank,10);this.changeRank(e,r),t&&this.logging.ops?this.log(a.name+" successfully completed! Gained "+Object(h.c)(r,3)+" rank"):!t&&this.logging.contracts&&this.log(a.name+" contract successfully completed! Gained "+Object(h.c)(r,3)+" rank and "+v.a.formatMoney(n))}t?this.completeOperation(!0):this.completeContract(!0)}else{this.gainActionStats(e,a,!1),++a.failures;let n=0,i=0;if(a.rankLoss&&(n=Object(_.a)(a.rankLoss*o,10),this.changeRank(e,-1*n)),a.hpLoss){i=a.hpLoss*r,i=Math.ceil(Object(_.a)(i,10)),this.hpLost+=i;const t=Object(S.a)(e,i);e.takeDamage(i)&&(++this.numHosp,this.moneyLost+=t)}let s="";n>0&&(s+="Lost "+Object(h.c)(n,3)+" rank. "),i>0&&(s+="Took "+Object(h.c)(i,0)+" damage."),t&&this.logging.ops?this.log(a.name+" failed! "+s):!t&&this.logging.contracts&&this.log(a.name+" contract failed! "+s),t?this.completeOperation(!1):this.completeContract(!1)}a.autoLevel&&(a.level=a.maxLevel),this.startAction(e,this.action)}catch(e){Object(y.a)(e)}break;case i.a.BlackOp:case i.a.BlackOperation:try{const t=this.getActionObject(this.action);if(null==t||!(t instanceof l.a))throw new Error("Failed to get BlackOperation Object for: "+this.action.name);const a=t.getDifficulty(),n=Math.pow(a,E.a.DiffMultExponentialFactor)+a/E.a.DiffMultLinearFactor;this.stamina-=E.a.BaseStaminaLoss*n,this.stamina<0&&(this.stamina=0);const r=t.teamCount;let i;if(t.attempt(this)){this.gainActionStats(e,t,!0),t.count=0,this.blackops[t.name]=!0;let a=0;if(t.rankGain&&(a=Object(_.a)(t.rankGain*k.a.BladeburnerRank,10),this.changeRank(e,a)),i=Math.ceil(r/2),"Operation Daedalus"===t.name)return this.resetAction(),Object(x.a)(e.bitNodeN);this.logging.blackops&&this.log(t.name+" successful! Gained "+Object(h.c)(a,1)+" rank")}else{this.gainActionStats(e,t,!1);let a=0,o=0;if(t.rankLoss&&(a=Object(_.a)(t.rankLoss,10),this.changeRank(e,-1*a)),t.hpLoss){o=t.hpLoss*n,o=Math.ceil(Object(_.a)(o,10));const a=Object(S.a)(e,o);e.takeDamage(o)&&(++this.numHosp,this.moneyLost+=a)}i=Math.floor(r),this.logging.blackops&&this.log(t.name+" failed! Lost "+Object(h.c)(a,1)+" rank and took "+Object(h.c)(o,0)+" damage")}if(this.resetAction(),r>=1){const e=Object(b.a)(1,i);this.teamSize-=e,this.teamLost+=e,this.logging.blackops&&this.log("You lost "+Object(h.c)(e,0)+" team members during "+t.name)}}catch(e){Object(y.a)(e)}break;case i.a.Training:{this.stamina-=.5*E.a.BaseStaminaLoss;const t=30*e.strength_exp_mult,a=30*e.defense_exp_mult,n=30*e.dexterity_exp_mult,r=30*e.agility_exp_mult,i=.04*this.skillMultipliers.stamina;e.gainStrengthExp(t),e.gainDefenseExp(a),e.gainDexterityExp(n),e.gainAgilityExp(r),this.staminaBonus+=i,this.logging.general&&this.log("Training completed. Gained: "+Object(h.c)(t,1)+" str exp, "+Object(h.c)(a,1)+" def exp, "+Object(h.c)(n,1)+" dex exp, "+Object(h.c)(r,1)+" agi exp, "+Object(h.c)(i,3)+" max stamina"),this.startAction(e,this.action);break}case i.a.FieldAnalysis:case i.a["Field Analysis"]:{let t=.04*Math.pow(e.hacking_skill,.3)+.04*Math.pow(e.intelligence,.9)+.02*Math.pow(e.charisma,.3);if(t*=e.bladeburner_analysis_mult,isNaN(t)||t<0)throw new Error("Field Analysis Effectiveness calculated to be NaN or negative");const a=20*e.hacking_exp_mult,n=20*e.charisma_exp_mult;e.gainHackingExp(a),e.gainIntelligenceExp(E.a.BaseIntGain),e.gainCharismaExp(n),this.changeRank(e,.1*k.a.BladeburnerRank),this.getCurrentCity().improvePopulationEstimateByPercentage(t*this.skillMultipliers.successChanceEstimate),this.logging.general&&this.log("Field analysis completed. Gained 0.1 rank, "+Object(h.c)(a,1)+" hacking exp, and "+Object(h.c)(n,1)+" charisma exp"),this.startAction(e,this.action);break}case i.a.Recruitment:{const t=this.getRecruitmentSuccessChance(e);if(Math.random()=a){const e=Math.floor((this.maxRank-a)/E.a.RanksPerSkillPoint+1);this.skillPoints+=e,this.totalSkillPoints+=e}}processAction(e,t){if(this.action.type!==i.a.Idle){if(this.actionTimeToComplete<=0)throw new Error(`Invalid actionTimeToComplete value: ${this.actionTimeToComplete}, type; ${this.action.type}`);if(!(this.action instanceof r.a))throw new Error("Bladeburner.action is not an ActionIdentifier Object");return this.actionTimeCurrent+=t+this.actionTimeOverflow,this.actionTimeOverflow=0,this.actionTimeCurrent>=this.actionTimeToComplete?(this.actionTimeOverflow=this.actionTimeCurrent-this.actionTimeToComplete,this.completeAction(e)):void 0}}calculateStaminaGainPerSecond(e){const t=e.agility*this.skillMultipliers.effAgi,a=this.maxStamina/E.a.MaxStaminaToGainFactor;return(E.a.StaminaGainPerSecond+a)*Math.pow(t,.17)*(this.skillMultipliers.stamina*e.bladeburner_stamina_gain_mult)}calculateMaxStamina(e){const t=e.agility*this.skillMultipliers.effAgi,a=(Math.pow(t,.8)+this.staminaBonus)*this.skillMultipliers.stamina*e.bladeburner_max_stamina_mult;if(this.maxStamina!==a){const e=this.maxStamina;this.maxStamina=a,this.stamina=this.maxStamina*this.stamina/e}if(isNaN(a))throw new Error("Max Stamina calculated to be NaN in Bladeburner.calculateMaxStamina()")}create(){this.contracts.Tracking=new u.a({name:"Tracking",desc:"Identify and locate Synthoids. This contract involves reconnaissance and information-gathering ONLY. Do NOT engage. Stealth is of the utmost importance.

Successfully completing Tracking contracts will slightly improve your Synthoid population estimate for whatever city you are currently in.",baseDifficulty:125,difficultyFac:1.02,rewardFac:1.041,rankGain:.3,hpLoss:.5,count:Object(b.a)(25,150),weights:{hack:0,str:.05,def:.05,dex:.35,agi:.35,cha:.1,int:.05},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.9,int:1},isStealth:!0}),this.contracts["Bounty Hunter"]=new u.a({name:"Bounty Hunter",desc:"Hunt down and capture fugitive Synthoids. These Synthoids are wanted alive.

Successfully completing a Bounty Hunter contract will lower the population in your current city, and will also increase its chaos level.",baseDifficulty:250,difficultyFac:1.04,rewardFac:1.085,rankGain:.9,hpLoss:1,count:Object(b.a)(5,150),weights:{hack:0,str:.15,def:.15,dex:.25,agi:.25,cha:.1,int:.1},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.8,int:.9},isKill:!0}),this.contracts.Retirement=new u.a({name:"Retirement",desc:"Hunt down and retire (kill) rogue Synthoids.

Successfully completing a Retirement contract will lower the population in your current city, and will also increase its chaos level.",baseDifficulty:200,difficultyFac:1.03,rewardFac:1.065,rankGain:.6,hpLoss:1,count:Object(b.a)(5,150),weights:{hack:0,str:.2,def:.2,dex:.2,agi:.2,cha:.1,int:.1},decays:{hack:0,str:.91,def:.91,dex:.91,agi:.91,cha:.8,int:.9},isKill:!0}),this.operations.Investigation=new c.a({name:"Investigation",desc:"As a field agent, investigate and identify Synthoid populations, movements, and operations.

Successful Investigation ops will increase the accuracy of your synthoid data.

You will NOT lose HP from failed Investigation ops.",baseDifficulty:400,difficultyFac:1.03,rewardFac:1.07,reqdRank:25,rankGain:2.2,rankLoss:.2,count:Object(b.a)(1,100),weights:{hack:.25,str:.05,def:.05,dex:.2,agi:.1,cha:.25,int:.1},decays:{hack:.85,str:.9,def:.9,dex:.9,agi:.9,cha:.7,int:.9},isStealth:!0}),this.operations["Undercover Operation"]=new c.a({name:"Undercover Operation",desc:"Conduct undercover operations to identify hidden and underground Synthoid communities and organizations.

Successful Undercover ops will increase the accuracy of your synthoid data.",baseDifficulty:500,difficultyFac:1.04,rewardFac:1.09,reqdRank:100,rankGain:4.4,rankLoss:.4,hpLoss:2,count:Object(b.a)(1,100),weights:{hack:.2,str:.05,def:.05,dex:.2,agi:.2,cha:.2,int:.1},decays:{hack:.8,str:.9,def:.9,dex:.9,agi:.9,cha:.7,int:.9},isStealth:!0}),this.operations["Sting Operation"]=new c.a({name:"Sting Operation",desc:"Conduct a sting operation to bait and capture particularly notorious Synthoid criminals.",baseDifficulty:650,difficultyFac:1.04,rewardFac:1.095,reqdRank:500,rankGain:5.5,rankLoss:.5,hpLoss:2.5,count:Object(b.a)(1,150),weights:{hack:.25,str:.05,def:.05,dex:.25,agi:.1,cha:.2,int:.1},decays:{hack:.8,str:.85,def:.85,dex:.85,agi:.85,cha:.7,int:.9},isStealth:!0}),this.operations.Raid=new c.a({name:"Raid",desc:"Lead an assault on a known Synthoid community. Note that there must be an existing Synthoid community in your current city in order for this Operation to be successful.",baseDifficulty:800,difficultyFac:1.045,rewardFac:1.1,reqdRank:3e3,rankGain:55,rankLoss:2.5,hpLoss:50,count:Object(b.a)(1,150),weights:{hack:.1,str:.2,def:.2,dex:.2,agi:.2,cha:0,int:.1},decays:{hack:.7,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.9},isKill:!0}),this.operations["Stealth Retirement Operation"]=new c.a({name:"Stealth Retirement Operation",desc:"Lead a covert operation to retire Synthoids. The objective is to complete the task without drawing any attention. Stealth and discretion are key.",baseDifficulty:1e3,difficultyFac:1.05,rewardFac:1.11,reqdRank:2e4,rankGain:22,rankLoss:2,hpLoss:10,count:Object(b.a)(1,150),weights:{hack:.1,str:.1,def:.1,dex:.3,agi:.3,cha:0,int:.1},decays:{hack:.7,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.9},isStealth:!0,isKill:!0}),this.operations.Assassination=new c.a({name:"Assassination",desc:"Assassinate Synthoids that have been identified as important, high-profile social and political leaders in the Synthoid communities.",baseDifficulty:1500,difficultyFac:1.06,rewardFac:1.14,reqdRank:5e4,rankGain:44,rankLoss:4,hpLoss:5,count:Object(b.a)(1,150),weights:{hack:.1,str:.1,def:.1,dex:.3,agi:.3,cha:0,int:.1},decays:{hack:.6,str:.8,def:.8,dex:.8,agi:.8,cha:0,int:.8},isStealth:!0,isKill:!0})}process(e){if(!1===x.b&&this.blackops.hasOwnProperty("Operation Daedalus"))return Object(x.a)(e.bitNodeN);if(!1===M.a[P.a.BladesSimulacrum].owned&&e.isWorking){if(this.action.type!==i.a.Idle){let e="Your Bladeburner action was cancelled because you started doing something else.";this.automateEnabled&&(e+="

Your automation was disabled as well. You will have to re-enable it through the Bladeburner console",this.automateEnabled=!1),T.a.SuppressBladeburnerPopup||Object(O.a)(e)}this.resetAction()}if(this.stamina<=0&&(this.log("Your Bladeburner action was cancelled because your stamina hit 0"),this.resetAction()),this.storedCycles>=E.a.CyclesPerSecond){let t=Math.floor(this.storedCycles/E.a.CyclesPerSecond);t=Math.min(t,5),this.storedCycles-=t*E.a.CyclesPerSecond,this.calculateMaxStamina(e),this.stamina+=this.calculateStaminaGainPerSecond(e)*t,this.stamina=Math.min(this.maxStamina,this.stamina);for(const e of Object.values(this.contracts)){const a=o.a[e.name];if(void 0===a)throw new Error(`growth formula for action '${e.name}' is undefined`);e.count+=t*a()/E.a.ActionCountGrowthPeriod}for(const e of Object.values(this.operations)){const a=o.a[e.name];if(void 0===a)throw new Error(`growth formula for action '${e.name}' is undefined`);void 0!==a&&(e.count+=t*a()/E.a.ActionCountGrowthPeriod)}for(const e of E.a.CityNames){const a=this.cities[e];if(!(a instanceof f.a))throw new Error("Invalid City object when processing passive chaos reduction in Bladeburner.process");a.chaos-=1e-4*t,a.chaos=Math.max(0,a.chaos)}this.randomEventCounter-=t,this.randomEventCounter<=0&&(this.randomEvent(),this.randomEventCounter+=Object(b.a)(240,600)),this.processAction(e,t),this.automateEnabled&&(this.stamina<=this.automateThreshLow?this.action.name===this.automateActionLow.name&&this.action.type===this.automateActionLow.type||(this.action=new r.a({type:this.automateActionLow.type,name:this.automateActionLow.name}),this.startAction(e,this.action)):this.stamina>=this.automateThreshHigh&&(this.action.name===this.automateActionHigh.name&&this.action.type===this.automateActionHigh.type||(this.action=new r.a({type:this.automateActionHigh.type,name:this.automateActionHigh.name}),this.startAction(e,this.action))))}}getTypeAndNameFromActionId(e){const t={type:"",name:""},a=Object.keys(i.a);for(let n=0;nthis.rank)return n.log("bladeburner.startAction",`Insufficient rank to start Black Op '${o.name}'.`),!1;if(null!=this.blackops[o.name])return n.log("bladeburner.startAction",`Black Op ${o.name} has already been completed.`),!1;const t=[];for(const e in s.a)s.a.hasOwnProperty(e)&&t.push(e);t.sort((function(e,t){return s.a[e].reqdRank-s.a[t].reqdRank}));const r=t.indexOf(o.name);if(-1===r)return n.log("bladeburner.startAction",`Invalid Black Op: '${a}'`),!1;if(r>0&&null==this.blackops[t[r-1]])return n.log("bladeburner.startAction",`Preceding Black Op must be completed before starting '${o.name}'.`),!1}try{return this.startAction(e,o),n.log("bladeburner.startAction",`Starting bladeburner action with type '${t}' and name ${a}"`),!0}catch(e){return this.resetAction(),n.log("bladeburner.startAction",r),!1}}getActionTimeNetscriptFn(e,t,a,n){const r=`Invalid action: type='${t}' name='${a}'`,o=this.getActionIdFromTypeAndName(t,a);if(null==o)return n.log("bladeburner.getActionTime",r),-1;const s=this.getActionObject(o);if(null==s)return n.log("bladeburner.getActionTime",r),-1;switch(o.type){case i.a.Contract:case i.a.Operation:case i.a.BlackOp:case i.a.BlackOperation:return s.getActionTime(this);case i.a.Training:case i.a["Field Analysis"]:case i.a.FieldAnalysis:return 30;case i.a.Recruitment:return this.getRecruitmentTime(e);case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:return 60;default:return n.log("bladeburner.getActionTime",r),-1}}getActionEstimatedSuccessChanceNetscriptFn(e,t,a,n){const r=`Invalid action: type='${t}' name='${a}'`,o=this.getActionIdFromTypeAndName(t,a);if(null==o)return n.log("bladeburner.getActionEstimatedSuccessChance",r),[-1,-1];const s=this.getActionObject(o);if(null==s)return n.log("bladeburner.getActionEstimatedSuccessChance",r),[-1,-1];switch(o.type){case i.a.Contract:case i.a.Operation:case i.a.BlackOp:case i.a.BlackOperation:return s.getEstSuccessChance(this);case i.a.Training:case i.a["Field Analysis"]:case i.a.FieldAnalysis:case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:return[1,1];case i.a.Recruitment:{const t=this.getRecruitmentSuccessChance(e);return[t,t]}default:return n.log("bladeburner.getActionEstimatedSuccessChance",r),[-1,-1]}}getActionCountRemainingNetscriptFn(e,t,a){const n=`Invalid action: type='${e}' name='${t}'`,r=this.getActionIdFromTypeAndName(e,t);if(null==r)return a.log("bladeburner.getActionCountRemaining",n),-1;const o=this.getActionObject(r);if(null==o)return a.log("bladeburner.getActionCountRemaining",n),-1;switch(r.type){case i.a.Contract:case i.a.Operation:return Math.floor(o.count);case i.a.BlackOp:case i.a.BlackOperation:return null!=this.blackops[t]?0:1;case i.a.Training:case i.a.Recruitment:case i.a["Field Analysis"]:case i.a.FieldAnalysis:case i.a.Diplomacy:case i.a["Hyperbolic Regeneration Chamber"]:return 1/0;default:return a.log("bladeburner.getActionCountRemaining",n),-1}}getSkillLevelNetscriptFn(e,t){return""!==e&&p.a.hasOwnProperty(e)?null==this.skills[e]?0:this.skills[e]:(t.log("bladeburner.getSkillLevel",`Invalid skill: '${e}'`),-1)}getSkillUpgradeCostNetscriptFn(e,t){if(""===e||!p.a.hasOwnProperty(e))return t.log("bladeburner.getSkillUpgradeCost",`Invalid skill: '${e}'`),-1;const a=p.a[e];return null==this.skills[e]?a.calculateCost(0):a.calculateCost(this.skills[e])}upgradeSkillNetscriptFn(e,t){const a=`Invalid skill: '${e}'`;if(!p.a.hasOwnProperty(e))return t.log("bladeburner.upgradeSkill",a),!1;const n=p.a[e];let r=0;this.skills[e]&&!isNaN(this.skills[e])&&(r=this.skills[e]);const i=n.calculateCost(r);return n.maxLvl&&r>=n.maxLvl?(t.log("bladeburner.upgradeSkill",`Skill '${e}' is already maxed.`),!1):this.skillPoints=E.a.RankNeededForFaction?(Object(R.e)(t),e.log("bladeburner.joinBladeburnerFaction","Joined Bladeburners faction."),!0):(e.log("bladeburner.joinBladeburnerFaction",`You do not have the required rank (${this.rank}/${E.a.RankNeededForFaction}).`),!1))}toJSON(){return Object(n.b)("Bladeburner",this)}static fromJSON(e){return Object(n.a)(I,e.data)}}n.c.constructors.Bladeburner=I},function(e,t,a){"use strict";a.d(t,"a",(function(){return n}));const n=new Map},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(119),r=a(690);const i={};n.b.forEach(e=>{i[e.name]=new r.a(e.name,e.cost,e.upgType,e.mults)})},function(e,t,a){"use strict";a.d(t,"a",(function(){return m})),a.d(t,"c",(function(){return h})),a.d(t,"d",(function(){return p})),a.d(t,"b",(function(){return d}));var n=a(151),r=a(53),i=a(5),o=a(1),s=a(2),l=a(11),c=a(9),u=a(0);function m(e,t,a=null,m={}){if((t=Math.round(t))<=0)return!1;if(null==e||isNaN(t))return a?a.log("buyStock",`Invalid arguments: stock='${e}' shares='${t}'`):!0!==m.suppressDialog&&Object(c.a)("Failed to buy stock. This may be a bug, contact developer"),!1;const h=Object(n.b)(e,t,r.a.Long);if(null==h)return!1;if(o.a.money.lt(h))return a?a.log("buyStock",`You do not have enough money to purchase this position. You need ${s.a.formatMoney(h)}.`):!0!==m.suppressDialog&&Object(c.a)(u.createElement(u.Fragment,null,"You do not have enough money to purchase this. You need ",u.createElement(l.a,{money:h}))),!1;if(t+e.playerShares+e.playerShortShares>e.maxShares)return a?a.log("buyStock",`Purchasing '${t+e.playerShares+e.playerShortShares}' shares would exceed ${e.symbol}'s maximum (${e.maxShares}) number of shares`):!0!==m.suppressDialog&&Object(c.a)(`You cannot purchase this many shares. ${e.symbol} has a maximum of ${s.a.formatShares(e.maxShares)} shares.`),!1;const p=e.playerShares*e.playerAvgPx;o.a.loseMoney(h);const d=p+h-i.a.StockMarketCommission;if(e.playerShares=Math.round(e.playerShares+t),e.playerAvgPx=d/e.playerShares,Object(n.d)(e,t),null!=m.rerenderFn&&"function"==typeof m.rerenderFn&&m.rerenderFn(),a){const n=`Bought ${s.a.formatShares(t)} shares of ${e.symbol} for ${s.a.formatMoney(h)}. Paid ${s.a.formatMoney(i.a.StockMarketCommission)} in commission fees.`;a.log("buyStock",n)}else!0!==m.suppressDialog&&Object(c.a)(u.createElement(u.Fragment,null,"Bought ",s.a.formatShares(t)," shares of ",e.symbol," for ",u.createElement(l.a,{money:h}),". Paid"," ",u.createElement(l.a,{money:i.a.StockMarketCommission})," in commission fees."));return!0}function h(e,t,a=null,i={}){if(null==e||t<0||isNaN(t))return a?a.log("sellStock",`Invalid arguments: stock='${e}' shares='${t}'`):!0!==i.suppressDialog&&Object(c.a)("Failed to sell stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, contact developer"),!1;if((t=Math.round(t))>e.playerShares&&(t=e.playerShares),0===t)return!1;const m=Object(n.c)(e,t,r.a.Long);if(null==m)return!1;let h=m-e.playerAvgPx*t;if(isNaN(h)&&(h=0),o.a.gainMoney(m),o.a.recordMoneySource(h,"stock"),a&&(a.scriptRef.onlineMoneyMade+=h,o.a.scriptProdSinceLastAug+=h),e.playerShares=Math.round(e.playerShares-t),0===e.playerShares&&(e.playerAvgPx=0),Object(n.d)(e,t),null!=i.rerenderFn&&"function"==typeof i.rerenderFn&&i.rerenderFn(),a){const n=`Sold ${s.a.formatShares(t)} shares of ${e.symbol}. After commissions, you gained a total of ${s.a.formatMoney(m)}.`;a.log("sellStock",n)}else!0!==i.suppressDialog&&Object(c.a)(u.createElement(u.Fragment,null,"Sold ",s.a.formatShares(t)," shares of ",e.symbol,". After commissions, you gained a total of"," ",u.createElement(l.a,{money:m}),"."));return!0}function p(e,t,a=null,m={}){if((t=Math.round(t))<=0)return!1;if(null==e||isNaN(t))return a?a.log("shortStock",`Invalid arguments: stock='${e}' shares='${t}'`):!0!==m.suppressDialog&&Object(c.a)("Failed to initiate a short position in a stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, so contact developer"),!1;const h=Object(n.b)(e,t,r.a.Short);if(null==h)return!1;if(o.a.money.lt(h))return a?a.log("shortStock","You do not have enough money to purchase this short position. You need "+s.a.formatMoney(h)):!0!==m.suppressDialog&&Object(c.a)(u.createElement(u.Fragment,null,"You do not have enough money to purchase this short position. You need ",u.createElement(l.a,{money:h}))),!1;if(t+e.playerShares+e.playerShortShares>e.maxShares)return a?a.log("shortStock",`This '${t+e.playerShares+e.playerShortShares}' short shares would exceed ${e.symbol}'s maximum (${e.maxShares}) number of shares.`):!0!==m.suppressDialog&&Object(c.a)(`You cannot purchase this many shares. ${e.symbol} has a maximum of ${e.maxShares} shares.`),!1;const p=e.playerShortShares*e.playerAvgShortPx;o.a.loseMoney(h);const d=p+h-i.a.StockMarketCommission;if(e.playerShortShares=Math.round(e.playerShortShares+t),e.playerAvgShortPx=d/e.playerShortShares,Object(n.d)(e,t),null!=m.rerenderFn&&"function"==typeof m.rerenderFn&&m.rerenderFn(),a){const n=`Bought a short position of ${s.a.formatShares(t)} shares of ${e.symbol} for ${s.a.formatMoney(h)}. Paid ${s.a.formatMoney(i.a.StockMarketCommission)} in commission fees.`;a.log("shortStock",n)}else m.suppressDialog||Object(c.a)(u.createElement(u.Fragment,null,"Bought a short position of ",s.a.formatShares(t)," shares of ",e.symbol," for"," ",u.createElement(l.a,{money:h}),". Paid ",u.createElement(l.a,{money:i.a.StockMarketCommission})," in commission fees."));return!0}function d(e,t,a=null,i={}){if(null==e||isNaN(t)||t<0)return a?a.log("sellShort",`Invalid arguments: stock='${e}' shares='${t}'`):i.suppressDialog||Object(c.a)("Failed to sell a short position in a stock. This is probably due to an invalid quantity. Otherwise, this may be a bug, so contact developer"),!1;if((t=Math.round(t))>e.playerShortShares&&(t=e.playerShortShares),0===t)return!1;const m=t*e.playerAvgShortPx,h=Object(n.c)(e,t,r.a.Short);if(null==h||isNaN(h)||null==m)return a?a.log("sellShort","Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug"):i.suppressDialog||Object(c.a)("Failed to sell short position in a stock. This is probably either due to invalid arguments, or a bug"),!1;let p=h-m;if(isNaN(p)&&(p=0),o.a.gainMoney(h),o.a.recordMoneySource(p,"stock"),a&&(a.scriptRef.onlineMoneyMade+=p,o.a.scriptProdSinceLastAug+=p),e.playerShortShares=Math.round(e.playerShortShares-t),0===e.playerShortShares&&(e.playerAvgShortPx=0),Object(n.d)(e,t),null!=i.rerenderFn&&"function"==typeof i.rerenderFn&&i.rerenderFn(),a){const n=`Sold your short position of ${s.a.formatShares(t)} shares of ${e.symbol}. After commissions, you gained a total of `+s.a.formatMoney(h);a.log("sellShort",n)}else i.suppressDialog||Object(c.a)(u.createElement(u.Fragment,null,"Sold your short position of ",s.a.formatShares(t)," shares of ",e.symbol,". After commissions, you gained a total of ",u.createElement(l.a,{money:h})));return!0}},function(e,t,a){"use strict";a.d(t,"b",(function(){return o})),a.d(t,"c",(function(){return s})),a.d(t,"d",(function(){return l})),a.d(t,"a",(function(){return c}));var n=a(100),r=a(53),i=a(5);function o(e,t,a){if(isNaN(t)||t<=0||!(e instanceof n.a))return null;t=Math.min(t,e.maxShares);return a===r.a.Long?t*e.getAskPrice()+i.a.StockMarketCommission:t*e.getBidPrice()+i.a.StockMarketCommission}function s(e,t,a){if(isNaN(t)||t<=0||!(e instanceof n.a))return null;t=Math.min(t,e.maxShares);if(a===r.a.Long)return t*e.getBidPrice()-i.a.StockMarketCommission;return t*e.playerAvgShortPx+((e.playerAvgShortPx-e.getAskPrice())*t-i.a.StockMarketCommission)}function l(e,t){if(isNaN(t)||t<=0||!(e instanceof n.a))return;t=Math.min(t,e.maxShares);const a=e.shareTxUntilMovement;if(t<=a)return e.shareTxUntilMovement-=t,void(e.shareTxUntilMovement<=0&&(e.shareTxUntilMovement=e.shareTxForMovement,e.influenceForecast(.006),e.influenceForecastForecast(e.mv/100*.006)));const r=t-a;let i=1+Math.ceil(r/e.shareTxForMovement);e.shareTxUntilMovement=e.shareTxForMovement-(t-e.shareTxUntilMovement)%e.shareTxForMovement,(e.shareTxUntilMovement===e.shareTxForMovement||e.shareTxUntilMovement<=0)&&(++i,e.shareTxUntilMovement=e.shareTxForMovement);const o=.006*(i-1),s=o*(e.mv/100);e.influenceForecast(o),e.influenceForecastForecast(s)}function c(e,t,a){if(!(e instanceof n.a))return 0;const o=t===r.a.Long,s=a-i.a.StockMarketCommission,l=o?e.getAskPrice():e.getBidPrice();return Math.floor(s/l)}},function(e,t,a){"use strict";a.d(t,"b",(function(){return c})),a.d(t,"a",(function(){return u}));var n=a(6),r=a(20),i=a(5),o=a(196),s=a(293);function l(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function c(){return{hack:0,str:0,def:0,dex:0,agi:0,cha:0,money:0}}class u{constructor(){l(this,"hacking_skill",1),l(this,"strength",1),l(this,"defense",1),l(this,"dexterity",1),l(this,"agility",1),l(this,"charisma",1),l(this,"intelligence",1),l(this,"hp",10),l(this,"max_hp",10),l(this,"hacking_exp",0),l(this,"strength_exp",0),l(this,"defense_exp",0),l(this,"dexterity_exp",0),l(this,"agility_exp",0),l(this,"charisma_exp",0),l(this,"intelligence_exp",0),l(this,"hacking_mult",1),l(this,"strength_mult",1),l(this,"defense_mult",1),l(this,"dexterity_mult",1),l(this,"agility_mult",1),l(this,"charisma_mult",1),l(this,"hacking_exp_mult",1),l(this,"strength_exp_mult",1),l(this,"defense_exp_mult",1),l(this,"dexterity_exp_mult",1),l(this,"agility_exp_mult",1),l(this,"charisma_exp_mult",1),l(this,"hacking_chance_mult",1),l(this,"hacking_speed_mult",1),l(this,"hacking_money_mult",1),l(this,"hacking_grow_mult",1),l(this,"company_rep_mult",1),l(this,"faction_rep_mult",1),l(this,"crime_money_mult",1),l(this,"crime_success_mult",1),l(this,"work_money_mult",1),l(this,"hacknet_node_money_mult",1),l(this,"hacknet_node_purchase_cost_mult",1),l(this,"hacknet_node_ram_cost_mult",1),l(this,"hacknet_node_core_cost_mult",1),l(this,"hacknet_node_level_cost_mult",1),l(this,"bladeburner_max_stamina_mult",1),l(this,"bladeburner_stamina_gain_mult",1),l(this,"bladeburner_analysis_mult",1),l(this,"bladeburner_success_chance_mult",1),l(this,"augmentations",[]),l(this,"queuedAugmentations",[]),l(this,"city",r.a.Sector12)}applyAugmentation(e){for(const t in e.mults)null==this[t]?console.warn("Augmentation has unrecognized multiplier property: "+t):this[t]*=e.mults[t]}calculateStat(e,t=1){return Object(o.b)(e,t)}getFactionFieldWorkRepGain(){return.9*(this.hacking_skill/i.a.MaxSkillLevel+this.strength/i.a.MaxSkillLevel+this.defense/i.a.MaxSkillLevel+this.dexterity/i.a.MaxSkillLevel+this.agility/i.a.MaxSkillLevel+this.charisma/i.a.MaxSkillLevel)/5.5*this.faction_rep_mult}getFactionHackingWorkRepGain(){return this.hacking_skill/i.a.MaxSkillLevel*this.faction_rep_mult}getFactionSecurityWorkRepGain(){return.9*(this.hacking_skill/i.a.MaxSkillLevel+this.strength/i.a.MaxSkillLevel+this.defense/i.a.MaxSkillLevel+this.dexterity/i.a.MaxSkillLevel+this.agility/i.a.MaxSkillLevel)/4.5*this.faction_rep_mult}resetMultipliers(){this.hacking_mult=1,this.strength_mult=1,this.defense_mult=1,this.dexterity_mult=1,this.agility_mult=1,this.charisma_mult=1,this.hacking_exp_mult=1,this.strength_exp_mult=1,this.defense_exp_mult=1,this.dexterity_exp_mult=1,this.agility_exp_mult=1,this.charisma_exp_mult=1,this.company_rep_mult=1,this.faction_rep_mult=1,this.crime_money_mult=1,this.crime_success_mult=1,this.work_money_mult=1}updateStatLevels(){this.hacking_skill=Math.max(1,Math.floor(this.calculateStat(this.hacking_exp,this.hacking_mult*n.a.HackingLevelMultiplier))),this.strength=Math.max(1,Math.floor(this.calculateStat(this.strength_exp,this.strength_mult*n.a.StrengthLevelMultiplier))),this.defense=Math.max(1,Math.floor(this.calculateStat(this.defense_exp,this.defense_mult*n.a.DefenseLevelMultiplier))),this.dexterity=Math.max(1,Math.floor(this.calculateStat(this.dexterity_exp,this.dexterity_mult*n.a.DexterityLevelMultiplier))),this.agility=Math.max(1,Math.floor(this.calculateStat(this.agility_exp,this.agility_mult*n.a.AgilityLevelMultiplier))),this.charisma=Math.max(1,Math.floor(this.calculateStat(this.charisma_exp,this.charisma_mult*n.a.CharismaLevelMultiplier)));const e=this.hp/this.max_hp;this.max_hp=Math.floor(10+this.defense/10),this.hp=Math.round(this.max_hp*e)}getIntelligenceBonus(e){return Object(s.a)(this.intelligence,e)}}},function(e,t,a){"use strict";a.d(t,"a",(function(){return i}));var n=a(5);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}class i{constructor(e="",t="",a=0,n=0,i=0,o=0,s={}){r(this,"difficulty",0),r(this,"karma",0),r(this,"kills",0),r(this,"money",0),r(this,"name",""),r(this,"time",0),r(this,"type",""),r(this,"hacking_success_weight",0),r(this,"strength_success_weight",0),r(this,"defense_success_weight",0),r(this,"dexterity_success_weight",0),r(this,"agility_success_weight",0),r(this,"charisma_success_weight",0),r(this,"hacking_exp",0),r(this,"strength_exp",0),r(this,"defense_exp",0),r(this,"dexterity_exp",0),r(this,"agility_exp",0),r(this,"charisma_exp",0),r(this,"intelligence_exp",0),this.name=e,this.type=t,this.time=a,this.money=n,this.difficulty=i,this.karma=o,this.hacking_success_weight=s.hacking_success_weight?s.hacking_success_weight:0,this.strength_success_weight=s.strength_success_weight?s.strength_success_weight:0,this.defense_success_weight=s.defense_success_weight?s.defense_success_weight:0,this.dexterity_success_weight=s.dexterity_success_weight?s.dexterity_success_weight:0,this.agility_success_weight=s.agility_success_weight?s.agility_success_weight:0,this.charisma_success_weight=s.charisma_success_weight?s.charisma_success_weight:0,this.hacking_exp=s.hacking_exp?s.hacking_exp:0,this.strength_exp=s.strength_exp?s.strength_exp:0,this.defense_exp=s.defense_exp?s.defense_exp:0,this.dexterity_exp=s.dexterity_exp?s.dexterity_exp:0,this.agility_exp=s.agility_exp?s.agility_exp:0,this.charisma_exp=s.charisma_exp?s.charisma_exp:0,this.intelligence_exp=s.intelligence_exp?s.intelligence_exp:0,this.kills=s.kills?s.kills:0}commit(e,t=1,a=null){return t<=0&&(t=1),e.startCrime(this.type,this.hacking_exp/t,this.strength_exp/t,this.defense_exp/t,this.dexterity_exp/t,this.agility_exp/t,this.charisma_exp/t,this.money/t,this.time,a),this.time}successRate(e){let t=this.hacking_success_weight*e.hacking_skill+this.strength_success_weight*e.strength+this.defense_success_weight*e.defense+this.dexterity_success_weight*e.dexterity+this.agility_success_weight*e.agility+this.charisma_success_weight*e.charisma+n.a.IntelligenceCrimeWeight*e.intelligence;return t/=n.a.MaxSkillLevel,t/=this.difficulty,t*=e.crime_success_mult,t*=e.getIntelligenceBonus(1),Math.min(t,1)}}},,,,,,,,,,function(e,t,a){"use strict";a.d(t,"a",(function(){return r}));var n=a(0);class r extends n.Component{constructor(e){super(e),this.handleHeaderClick=this.handleHeaderClick.bind(this),this.state={panelOpened:!!e.panelInitiallyOpened&&e.panelInitiallyOpened}}handleHeaderClick(){this.setState({panelOpened:!this.state.panelOpened})}render(){let e="accordion-header";return"string"==typeof this.props.headerClass&&(e=this.props.headerClass),this.state.panelOpened&&(e+=" active"),n.createElement(n.Fragment,null,n.createElement("button",{className:e,onClick:this.handleHeaderClick},this.props.headerContent),n.createElement(i,{opened:this.state.panelOpened,panelClass:this.props.panelClass,panelContent:this.props.panelContent}))}}class i extends n.Component{shouldComponentUpdate(e){return this.props.opened||e.opened}render(){let e="accordion-panel";return"string"==typeof this.props.panelClass&&(e=this.props.panelClass),this.props.opened?n.createElement("div",{className:e,style:{display:"block"}},this.props.panelContent):n.createElement(n.Fragment,null)}}},,function(e,t,a){"use strict";a.d(t,"a",(function(){return s})),a.d(t,"b",(function(){return l}));var n=a(0),r=a.n(n),i=a(6);class o{constructor(e,t,a="",n=r.a.createElement(r.a.Fragment,null)){this.number=e,this.name=t,this.desc=a,this.info=n}}const s={};function l(e){null==e.bitNodeN&&(e.bitNodeN=1);for(const e in i.a)i.a.hasOwnProperty(e)&&(i.a[e]=1);switch(e.bitNodeN){case 1:break;case 2:i.a.HackingLevelMultiplier=.8,i.a.ServerGrowthRate=.8,i.a.ServerMaxMoney=.2,i.a.ServerStartingMoney=.4,i.a.CrimeMoney=3,i.a.InfiltrationMoney=3,i.a.FactionWorkRepGain=.5,i.a.FactionPassiveRepGain=0,i.a.GangKarmaRequirement=0;break;case 3:i.a.HackingLevelMultiplier=.8,i.a.RepToDonateToFaction=.5,i.a.AugmentationRepCost=3,i.a.AugmentationMoneyCost=3,i.a.ServerMaxMoney=.2,i.a.ServerStartingMoney=.2,i.a.ServerGrowthRate=.2,i.a.ScriptHackMoney=.2,i.a.CompanyWorkMoney=.25,i.a.CrimeMoney=.25,i.a.HacknetNodeMoney=.25,i.a.HomeComputerRamCost=1.5,i.a.PurchasedServerCost=2,i.a.GangKarmaRequirement=3;break;case 4:i.a.ServerMaxMoney=.15,i.a.ServerStartingMoney=.75,i.a.ScriptHackMoney=.2,i.a.CompanyWorkMoney=.1,i.a.CrimeMoney=.2,i.a.HacknetNodeMoney=.05,i.a.CompanyWorkExpGain=.5,i.a.ClassGymExpGain=.5,i.a.FactionWorkExpGain=.5,i.a.HackExpGain=.4,i.a.CrimeExpGain=.5,i.a.FactionWorkRepGain=.75;break;case 5:i.a.ServerMaxMoney=2,i.a.ServerStartingSecurity=2,i.a.ServerStartingMoney=.5,i.a.ScriptHackMoney=.15,i.a.HacknetNodeMoney=.2,i.a.CrimeMoney=.5,i.a.InfiltrationRep=1.5,i.a.InfiltrationMoney=1.5,i.a.AugmentationMoneyCost=2,i.a.HackExpGain=.5,i.a.CorporationValuation=.5;break;case 6:i.a.HackingLevelMultiplier=.35,i.a.ServerMaxMoney=.4,i.a.ServerStartingMoney=.5,i.a.ServerStartingSecurity=1.5,i.a.ScriptHackMoney=.75,i.a.CompanyWorkMoney=.5,i.a.CrimeMoney=.75,i.a.InfiltrationMoney=.75,i.a.CorporationValuation=.2,i.a.HacknetNodeMoney=.2,i.a.FactionPassiveRepGain=0,i.a.HackExpGain=.25,i.a.DaedalusAugsRequirement=1.166,i.a.GangKarmaRequirement=5;break;case 7:i.a.BladeburnerRank=.6,i.a.BladeburnerSkillCost=2,i.a.AugmentationMoneyCost=3,i.a.HackingLevelMultiplier=.35,i.a.ServerMaxMoney=.4,i.a.ServerStartingMoney=.5,i.a.ServerStartingSecurity=1.5,i.a.ScriptHackMoney=.5,i.a.CompanyWorkMoney=.5,i.a.CrimeMoney=.75,i.a.InfiltrationMoney=.75,i.a.CorporationValuation=.2,i.a.HacknetNodeMoney=.2,i.a.FactionPassiveRepGain=0,i.a.HackExpGain=.25,i.a.FourSigmaMarketDataCost=2,i.a.FourSigmaMarketDataApiCost=2,i.a.DaedalusAugsRequirement=1.166,i.a.GangKarmaRequirement=5;break;case 8:i.a.ScriptHackMoney=.3,i.a.ScriptHackMoneyGain=0,i.a.ManualHackMoney=0,i.a.CompanyWorkMoney=0,i.a.CrimeMoney=0,i.a.HacknetNodeMoney=0,i.a.InfiltrationMoney=0,i.a.RepToDonateToFaction=0,i.a.CorporationValuation=0,i.a.CodingContractMoney=0,i.a.GangKarmaRequirement=10;break;case 9:i.a.HackingLevelMultiplier=.4,i.a.StrengthLevelMultiplier=.45,i.a.DefenseLevelMultiplier=.45,i.a.DexterityLevelMultiplier=.45,i.a.AgilityLevelMultiplier=.45,i.a.CharismaLevelMultiplier=.45,i.a.PurchasedServerLimit=0,i.a.HomeComputerRamCost=5,i.a.CrimeMoney=.5,i.a.ScriptHackMoney=.1,i.a.HackExpGain=.05,i.a.ServerStartingMoney=.1,i.a.ServerMaxMoney=.1,i.a.ServerStartingSecurity=2.5,i.a.CorporationValuation=.5,i.a.FourSigmaMarketDataCost=5,i.a.FourSigmaMarketDataApiCost=4,i.a.BladeburnerRank=.9,i.a.BladeburnerSkillCost=1.2,i.a.GangKarmaRequirement=3;break;case 10:i.a.HackingLevelMultiplier=.2,i.a.StrengthLevelMultiplier=.4,i.a.DefenseLevelMultiplier=.4,i.a.DexterityLevelMultiplier=.4,i.a.AgilityLevelMultiplier=.4,i.a.CharismaLevelMultiplier=.4,i.a.CompanyWorkMoney=.5,i.a.CrimeMoney=.5,i.a.HacknetNodeMoney=.5,i.a.ManualHackMoney=.5,i.a.ScriptHackMoney=.5,i.a.CodingContractMoney=.5,i.a.InfiltrationMoney=.5,i.a.CorporationValuation=.5,i.a.AugmentationMoneyCost=5,i.a.AugmentationRepCost=2,i.a.HomeComputerRamCost=1.5,i.a.PurchasedServerCost=5,i.a.PurchasedServerLimit=.6,i.a.PurchasedServerMaxRam=.5,i.a.BladeburnerRank=.8,i.a.GangKarmaRequirement=3;break;case 11:i.a.HackingLevelMultiplier=.5,i.a.HackExpGain=.5,i.a.ServerMaxMoney=.1,i.a.ServerStartingMoney=.1,i.a.ServerGrowthRate=.2,i.a.ServerWeakenRate=2,i.a.CrimeMoney=3,i.a.CompanyWorkMoney=.5,i.a.HacknetNodeMoney=.1,i.a.AugmentationMoneyCost=2,i.a.InfiltrationMoney=2.5,i.a.InfiltrationRep=2.5,i.a.CorporationValuation=.1,i.a.CodingContractMoney=.25,i.a.FourSigmaMarketDataCost=4,i.a.FourSigmaMarketDataApiCost=4;break;case 12:{let t=0;for(let a=0;a