@opentrons/step-generation 0.3.18-alpha.0 → 0.3.20-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/lib/index.cjs +2 -2
- package/lib/index.mjs +2 -0
- package/lib/types.d.ts +16 -0
- package/package.json +2 -2
package/README.md
CHANGED
package/lib/index.cjs
CHANGED
|
@@ -52,7 +52,7 @@ ${K(m.join(`,
|
|
|
52
52
|
)`;return{commands:p,python:h}},hI=(e,t,r)=>{const{axes:n,skipIfMountPositionOk:a}=e,s={commandType:"home",key:D(),params:{axes:n,skipIfMountPositionOk:a}},o=[...n!=null?[`axes=${Ls(n)},
|
|
53
53
|
`]:[],...a!=null?[`skipIfMountPositionOk=${N(a)},
|
|
54
54
|
`]:[]],i=`${be}.home(${o.join(", ")})`;return{commands:[s],python:i}},_I=(e,t,r)=>{const{pipetteId:n,axis:a,distance:s}=e,{pipetteEntities:o}=t,i=o[n].pythonName,l=[{commandType:"moveRelative",key:D(),params:{pipetteId:n,axis:a,distance:s}}],u=[`axis=${N(a)}`,`distance=${s}`];return{commands:l,python:`${i}.move_axes_relative(${u.join(", ")})`}},yI=(e,t,r)=>{const{pipetteId:n,coordinates:a,minimumZHeight:s,forceDirect:o}=e,{pipetteEntities:i}=t,l=i[n].pythonName,u=[{commandType:"moveToCoordinates",key:D(),params:{pipetteId:n,coordinates:a,minimumZHeight:s,forceDirect:o}}],p=[`coordinates=${Cc([a.x,a.y,a.z])}`,...o?["force_direct=True"]:[],...s?[`minimum_z_height=${s}`]:[]];return{commands:u,python:`${l}.move_axes_to(${p.join(", ")})`}},bI=(e,t,r)=>{const{pipetteId:n,labwareId:a,wellName:s,wellLocation:o}=e,{pipetteEntities:i}=t,l=i[n].pythonName,u=t.labwareEntities[a].pythonName;return{commands:[{commandType:"tryLiquidProbe",key:D(),params:{pipetteId:n,labwareId:a,wellName:s,wellLocation:o}}],python:`${l}.detect_liquid_presence(${u}[${N(s)}])`}},q_=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/closeLabwareLatch",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.close_labware_latch()`}},Gu=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/deactivateHeater",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_heater()`}},TI=["1","4","7","10"],$_=(e,t,r)=>{const{pipetteEntities:n,labwareEntities:a,moduleEntities:s}=t,o=r.modules[e.moduleId].slot,i=Object.keys(n)[0],l=n[i]?.spec;if(!((l?.displayCategory==="FLEX"||l?.channels===96)??!1)&&Uy(r.labware,a,o)){const d=TI.includes(o)?"right":"left";return{errors:[Wb(d)]}}const p=s[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/openLabwareLatch",key:D(),params:{moduleId:e.moduleId}}],python:`${p}.open_labware_latch()`}},V_=(e,t,r)=>{const{moduleEntities:n}=t,{moduleId:a,rpm:s}=e;if(a===null)return{errors:[Q()]};if(n[a]?.type!==c.HEATERSHAKER_MODULE_TYPE)throw new Error(`expected module ${a} to be heaterShaker, got ${n[a]?.type}`);const o=n[a].pythonName;return{commands:[{commandType:"heaterShaker/setAndWaitForShakeSpeed",key:D(),params:{moduleId:a,rpm:s}}],python:`${o}.set_and_wait_for_shake_speed(${s})`}},Wu=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"heaterShaker/deactivateShaker",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_shaker()`}},Uc=(e,t,r)=>{const{moduleId:n}=e,{moduleEntities:a,labwareEntities:s}=t,o=[],i=a[n].pythonName,u=Object.values(r.labware).filter(f=>f.stack.includes(n)).find(f=>f.stack.find(_=>s[_]?.def.allowedRoles?.includes("lid")&&s[_]?.def.parameters.loadName!=="opentrons_tough_pcr_auto_sealing_lid")),p=u!=null?xc(u.stack):null,d=p!=null?s[p].def.metadata.displayName:null;return d!=null&&o.push(rT({lidDisplayName:d})),o.length>0?{errors:o}:{commands:[{commandType:"thermocycler/closeLid",key:D(),params:{moduleId:n}}],python:`${i}.close_lid()`}},B_=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/deactivateBlock",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_block()`}},x_=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/deactivateLid",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.deactivate_lid()`}},H_=(e,t,r)=>{const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/openLid",key:D(),params:{moduleId:e.moduleId}}],python:`${n}.open_lid()`}},z_=(e,t,r)=>{e.celsius!==void 0&&console.warn("'volume' param not implemented for thermocycler/setTargetBlockTemperature, should not be set!");const n=t.moduleEntities[e.moduleId].pythonName;return{commands:[{commandType:"thermocycler/setTargetBlockTemperature",key:D(),params:{moduleId:e.moduleId,celsius:e.celsius}}],python:`${n}.set_block_temperature(${e.celsius})`}},qc=(e,t,r)=>{const{moduleId:n,celsius:a}=e,s=t.moduleEntities[n].pythonName;return{commands:[{commandType:"thermocycler/setTargetLidTemperature",key:D(),params:{moduleId:n,celsius:a}}],python:`${s}.set_lid_temperature(${a})`}};function O(e,t){return(r,n)=>e(t,r,n)}function R(e,t){return(r,n)=>{const a=e(t,r,n);if("python"in a){const{python:s,...o}=a;return o}return a}}const je="__air__",zr="source_well",Mn="dest_well";function j_(e){return Kh.includes(e.parameters.loadName)}const gI=e=>(e.parameters.quirks??[]).includes("vacuumModuleDock"),G_=(e,t,r)=>{const s=c.getDeckDefFromRobotType(r).cutoutFixtures.find(l=>l.id.includes(t))?.providesAddressableAreas,i=(l=>{if(s!=null){for(const u in s)if(s[u].includes(l))return u}return null})(e);if(i==null)throw Error(`expected to find cutoutId from addressableAreaName ${e} but could not`);return i};function W_(e){switch(e){case 1:return c.ONE_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA;case 8:return c.EIGHT_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA;case 96:return c.NINETY_SIX_CHANNEL_WASTE_CHUTE_ADDRESSABLE_AREA}}function $c(e){const t=c.getDeckDefFromRobotType(e==="cutout12"?c.OT2_ROBOT_TYPE:c.FLEX_ROBOT_TYPE);let r=null;return t.robot.model===c.FLEX_ROBOT_TYPE&&(r=t.cutoutFixtures.find(n=>n.id==="trashBinAdapter")?.providesAddressableAreas??null),t.robot.model===c.FLEX_ROBOT_TYPE&&r==null&&console.error(`expected to find a list of cutouts for the Flex but could not with trashLocation ${e}`),r!=null?r[e]?.[0]:"fixedTrash"}function Y_(e){if(e==="fixedTrash")return"cutout12";const r=c.getDeckDefFromRobotType(c.FLEX_ROBOT_TYPE).cutoutFixtures.find(n=>n.id==="trashBinAdapter")?.providesAddressableAreas??null;if(r==null)return console.error("Could not find trashBinAdapter cutouts for Flex"),null;for(const[n,a]of Object.entries(r))if(a.includes(e))return n;return console.error(`Could not find trashLocation for addressableAreaName ${e}`),null}function Fn(e,t,r,n){return e[n]!=null?"labware":t[n]!=null?"wasteChute":r[n]!=null?"trashBin":(console.error(`expected to determine if dest labware is a labware or waste chute with destLabware ${n} but could not`),null)}function K_(e,t){return Sn(bn(t),r=>e)}function mr(e){return ut(e,(t,r,n)=>n===je?t:t+r.volume,0)}function er(e,t){const r=mr(t);if(r===0)return{source:t,dest:{[je]:{volume:e}}};if(e>r)return{source:rr(t,()=>({volume:0})),dest:{...t,[je]:{volume:e-r}}};const n=ut(t,(a,s,o)=>({...a,[o]:s.volume/r}),{});return Object.keys(t).reduce((a,s)=>{const o=n[s]*e;return{source:{...a.source,[s]:{volume:t[s].volume-o}},dest:{...a.dest,[s]:{volume:o}}}},{source:{},dest:{}})}function hr(e,t){return{...t,...ut(e,(r,n,a)=>{const o=a in t?n.volume+t[a].volume:n.volume;return{...r,[a]:{volume:o}}},{})}}function Vc(e,t,r){const n=e===1?[r]:c.getWellNamePerMultiTip(t,r,e);if(!n)return console.warn(e===1?`Invalid well: ${r}`:`For labware def (URI ${c.getLabwareDefURI(t)}), with primary well ${r}, no wells are accessible by 8-channel's 1st tip`),{wellsForTips:[],allWellsShared:!1};const a=n.every(s=>s&&s===n[0]);return{wellsForTips:n,allWellsShared:a}}const X_=e=>{const{pipette:t,sourceLabwareId:r,sourceWell:n,destLabwareId:a,destWell:s,blowoutLocation:o,flowRate:i,offsetFromTopMm:l,invariantContext:u}=e;if(!o)return[];const{trashBinEntities:p,wasteChuteEntities:d}=u;let f=null,_=null;return o===zr?(f=r,_=n):o===Mn&&(f=a,_=s),_!=null&&f!=null?[O(Rc,{pipetteId:t,labwareId:f,wellName:_,flowRate:i,wellLocation:{origin:"top",offset:{z:l}}})]:d[o]!=null?[O(pb,{pipetteId:t,flowRate:i,wasteChuteId:Object.keys(d)[0]})]:[O(cb,{pipetteId:t,trashId:Object.keys(p)[0],flowRate:i})]};function Z_(e){const{labwareEntities:t,pipetteEntities:r,wasteChuteEntities:n,trashBinEntities:a}=e;return{pipettes:ut(r,(s,o,i)=>{const l=o.spec;return{...s,[i]:Q_(l.channels,{})}},{}),labware:ut(t,(s,o,i)=>({...s,[i]:rr(o.def.wells,()=>({}))}),{}),trashBins:ut(a,(s,o,i)=>({...s,[i]:{}}),{}),wasteChute:ut(n,(s,o,i)=>({...s,[i]:{}}),{})}}function Q_(e,t){return bn(e).reduce((r,n)=>({...r,[n]:t}),{})}const J_=e=>{const{blowoutLocation:t,sourceLabware:r,destLabware:n,sourceWell:a,destWell:s}=e;return t===zr&&r!=null&&a!=null?{dispenseAirGapLabware:r,dispenseAirGapWell:a}:{dispenseAirGapLabware:n,dispenseAirGapWell:s}};function Bc(e){const{invariantContext:t,labwareLocations:r,moduleLocations:n={},pipetteLocations:a}=e;return{labware:r,modules:n,pipettes:a,liquidState:Z_(t),tipState:{pipettes:ut(a,(s,o,i)=>o.mount?{...s,[i]:{hasTip:!1,tiprackURI:null}}:s,{}),tipracks:ut(r,(s,o,i)=>{const l=t.labwareEntities[i].def;if(!c.getIsTiprack(l))return s;const u=rr(l.wells,()=>Ra);return{...s,[i]:u}},{})}}}const ey=(e,t)=>e.tipracks[t]!=null?Object.values(e.tipracks[t]).some(r=>r!==ue):!1,ty=(e,t)=>e.labware[t]!=null?Object.values(e.labware[t]).some(r=>Object.values(r).some(n=>n.volume>0)):!1,II=(e,t,r)=>{const{destinationId:n,pipetteId:a,volume:s,flowRate:o,offsetFromBottomMm:i,well:l,xOffset:u,yOffset:p,tipRack:d,primaryNozzle:f,nozzles:_}=e,{labwareEntities:m,trashBinEntities:h,wasteChuteEntities:b}=t,T=Fn(m,b,h,n);let y=[];return T==="labware"&&i!=null&&l!=null?y=[O(kc,{pipetteId:a,volume:s,labwareId:n,wellName:l,flowRate:o,wellLocation:{origin:"bottom",offset:{z:i,x:u,y:p}},tipRack:d,primaryNozzle:f,nozzles:_})]:T==="wasteChute"?y=[O(cA,{pipetteId:a,volume:s,flowRate:o,wasteChuteId:b[n].id})]:y=[O(uA,{pipetteId:a,volume:s,flowRate:o,trashId:h[n].id})],ae(y,t,r)},EI=(e,t,r)=>{const{destinationId:n,pipetteId:a,zOffset:s,well:o}=e,{labwareEntities:i,wasteChuteEntities:l,trashBinEntities:u}=t,p=Fn(i,l,u,n);let d=[];return p==="labware"&&o!=null?d=[O(B,{pipetteId:a,labwareId:n,wellName:o,wellLocation:{origin:"bottom",offset:{x:0,y:0,z:s}}})]:p==="wasteChute"?d=[O(Fe,{pipetteId:a,fixtureId:l[n].id,offset:{x:0,y:0,z:0}})]:d=[O(Fe,{pipetteId:a,fixtureId:u[n].id,offset:wt})],ae(d,t,r)},wI=(e,t,r)=>{const{blowOutLocation:n,destinationId:a,destWell:s,flowRate:o,pipetteId:i,sourceId:l,sourceWell:u,volume:p}=e,{labwareEntities:d,trashBinEntities:f,wasteChuteEntities:_}=t,m=Fn(d,_,f,a);let h=[];if(m==="labware"&&s!=null){const{dispenseAirGapLabware:b,dispenseAirGapWell:T}=J_({blowoutLocation:n,sourceLabware:l,destLabware:a,sourceWell:u,destWell:s});h=[O(aA,{flowRate:o,pipetteId:i,labwareId:b,wellName:T,volume:p,type:"dispense"})]}else m==="wasteChute"?h=[O(nA,{pipetteId:i,volume:p,flowRate:o,wasteChuteId:_[a].id})]:h=[O(rA,{pipetteId:i,volume:p,flowRate:o,trashId:f[a].id})];return ae(h,t,r)},SI=(e,t,r)=>{const{pipetteId:n,destinationId:a,well:s,zOffset:o,seconds:i}=e,{labwareEntities:l,trashBinEntities:u,wasteChuteEntities:p}=t,d=Fn(l,p,u,a);let f=[];return s!=null&&d==="labware"?f=[O(B,{pipetteId:n,labwareId:a,wellName:s,wellLocation:{origin:"bottom",offset:{x:0,y:0,z:o}}}),O(me,{seconds:i})]:d==="wasteChute"?f=[O(Fe,{pipetteId:n,fixtureId:a,offset:wt}),O(me,{seconds:i})]:f=[O(Fe,{pipetteId:n,fixtureId:a,offset:wt}),O(me,{seconds:i})],ae(f,t,r)},G=(e,t=!1)=>{if(e==null)return console.error("expected to find stack but could not"),"unknown slot";{const r=e[e.length-1];return t?`STACKER ${r.slice(-2,-1)}`:r}},AI=e=>e===c.VACUUM_MODULE_DOCK_A4_ADDRESSABLE_AREA?Xh:e,xc=e=>e==null?(console.error("expected to find stack but could not"),"unknown top location"):e[0],ry=e=>e.length>=2?e[1]:null,fa=e=>{const{slot:t,labwareState:r,modulesState:n}=e,a=Object.values(n).find(({slot:s,moduleState:o})=>s===t&&o.type===c.FLEX_STACKER_MODULE_TYPE);if(a!=null){const s=a.moduleState.labwareOnShuttle;return s==null?[]:[s.lidLabwareId,s.primaryLabwareId,s.adapterLabwareId].filter(i=>i!=null)}return Object.values(r).reduce((s,{stack:o})=>(o[o.length-1]===t&&o.length>s.length&&(s=o),s),[])},Hc=e=>c.FLEX_SINGLE_SLOT_BY_CUTOUT_ID[c.FLEX_CUTOUT_BY_SLOT_ID[e]],ny=e=>{const t=c.FLEX_STACKER_ADDRESSABLE_AREAS.indexOf(e);return t===-1?null:ve[t]},LI=e=>{const t=ny(e);return t!=null?Hc(t):null},ay=(e,t,r)=>{if(e==null)return null;if(ve.includes(e)){const n=Hc(e);return Object.entries(t).some(([s,o])=>r[s]?.type===c.FLEX_STACKER_MODULE_TYPE&&o.slot===n)?n:e}return e},Rs=e=>{const t=c.getDeckDefFromRobotType(c.FLEX_ROBOT_TYPE),r=`${e[0]}3`,n=c.FLEX_CUTOUT_BY_SLOT_ID[r],a=t.cutoutFixtures.find(({id:s})=>s===c.FLEX_STACKER_V1_FIXTURE)?.providesAddressableAreas[n];return c.FLEX_STACKER_ADDRESSABLE_AREAS.find(s=>a?.includes(s))??null},sy=(e,t,r,n)=>{if(t.length===0)return{isCompatible:!0,isAboveStackLimit:!1};let a=!1;const s=t.find(u=>u in n);s!=null&&(a=n[s].type===c.FLEX_STACKER_MODULE_TYPE&&t.includes(Ze));const o=xc(t);let i=!0,l=!1;if(o in r){const u=r[e],p=r[o],d=t.filter(g=>r[g]!=null),f=d.filter(g=>r[g]?.def?.allowedRoles?.includes("lid"))[0],_=d.filter(g=>r[g]?.def?.allowedRoles?.includes("adapter"))[0],m=p.def.parameters.loadName,h=d.filter(g=>!r[g]?.def?.allowedRoles?.includes("adapter")&&!r[g]?.def?.allowedRoles?.includes("lid"))[0];if(a){const g=c.getMaxPoolCount({labwareDefinitions:{primary:r[h]?.def??null,adapter:r[_]?.def??null,lid:r[f]?.def??null},model:c.FLEX_STACKER_MODULE_V1});l=t.length>g}else{const g=p.def.stackLimit??1,k=m===u.def.parameters.loadName,v=t.filter(q=>r[q]?.def.parameters.loadName===m)?.length;l=k&&v>=g}const b=u.def.parameters.loadName==="opentrons_tough_universal_lid",T=p.def.metadata.displayCategory==="tubeRack",y=p.def.metadata.displayCategory==="aluminumBlock",A=p.def.parameters.isTiprack,I=(p.def.allowedRoles??[]).includes("lid"),S=j_(p.def),L=t.some(g=>g in r&&gI(r[g].def)),E=u.def.parameters.quirks?.includes("vacuumModuleDock")??!1;i=(u.def.parameters.quirks?.includes("filterPlate")??!1)&&!I&&!A&&!(p.def.parameters.quirks?.includes("filterPlate")??!1)||!L&&E||(p.def.parameters.quirks?.includes("providesStackingDefault")??!1)&&!S||u.def.compatibleParentLabware?.some(g=>g===m)||Object.keys(u.def.stackingOffsetWithLabware??{}).some(g=>g===m)||b&&!T&&!y&&!A&&(p.def.parameters.loadName==="opentrons_tough_universal_lid"||!I)}else if(o in n){const u=n[o],{model:p}=u;i=Object.keys(r[e].def.stackingOffsetWithModule??{}).some(d=>p===d)}return{isCompatible:i,isAboveStackLimit:l}},Fa=(e,t)=>t?.find(r=>e[r]!=null)??null,OI=(e,t,r)=>t?e:r?Wh[e]:e,ks=(e,t,r)=>{if(t==="offDeck"&&r==null)return console.error("offDeck slot is not allowed to be used without an offDeckOverrideId"),[];const n=ma(t),a=oy(t),s=OI(t,n,a),o=Object.values(e).filter(i=>i.stack.includes(s)&&(r==null||i.stack.includes(r))&&i.stack.includes(Ze)===a&&i.stack.includes(pc)===n);return o.length===0?[]:a?o.at(-1)?.stack??[]:n?o.at(-1)?.stack??[]:o.toSorted((i,l)=>l.stack.length-i.stack.length)[0]?.stack??[]},RI=(e,t)=>Object.values(t).filter(r=>r.stack.includes(e)).sort((r,n)=>n.stack.length-r.stack.length)[0]?.stack[0],ua=(e,t,r,n=!0)=>{const a=c.linearInterpolate(e,t)??0,s=c.linearInterpolate(e,r)??0;return e+(n?a:0)+s},zc=e=>{const{path:t,volume:r,pipetteSpecs:n,tiprackDefinition:a,conditioningByVolume:s,disposalByVolume:o,numDispenseWells:i,numAspirateWells:l,aspirateAirGapByVolume:u}=e,{liquids:p}=n,f=r<p.default.minVolume&&"lowVolumeDefault"in p?p.lowVolumeDefault.maxVolume:p.default.maxVolume,_=a?.wells.A1.totalLiquidVolume,m=_==null?f:Math.min(f,_),h=r*2,b=s!=null?c.linearInterpolate(h,s)??0:0,y=a?.namespace!=="opentrons"||s!=null&&o!=null&&m>=h+b+(c.linearInterpolate(h,o)??0)+(b===0?c.linearInterpolate(h,u)??0:0),A=m>=h;if(t==="multiAspirate"&&l<=i?console.warn("Invalid combination of source and destination wells for multiAspirate path"):t==="multiDispense"&&l>=i?console.warn("Invalid combination of source and destination wells for multiDispense path"):t==="single"&&l!==i&&console.warn("Invalid combination of source and destination wells for single path"),t==="single"||t==="multiDispense"&&!y||t==="multiAspirate"&&!A){const L=c.linearInterpolate(r,u)??0,E=Math.ceil((r+L)/m),g=r/E;return{referenceVolumes:{airGap:{aspirate:g,dispense:0},correction:{aspirate:g,dispense:g},pushOut:g,flowRate:{aspirate:g,dispense:g}},multiWellHandling:{isSupported:!1}}}if(t==="multiDispense"){let L=0,E=0;for(let g=0;g<i&&!(ua((g+1)*r,s??[],o??[])>m);g++)L=(g+1)*r,E+=1;return{referenceVolumes:{airGap:{aspirate:ua(L,s??[],o??[],!1),dispense:ua((E-1)*r,s??[],o??[],!1)},correction:{aspirate:ua(L,s??[],o??[]),dispense:r},flowRate:{aspirate:ua(L,s??[],o??[]),dispense:r},pushOut:r,conditioning:L,disposal:L},multiWellHandling:{isSupported:!0,numWellsToFitInTip:E}}}const w=Math.floor(m/r),I=Math.min(w,l),S=I*r;return{referenceVolumes:{airGap:{aspirate:S,dispense:0},pushOut:S,correction:{aspirate:S,dispense:S},flowRate:{aspirate:r,dispense:S}},multiWellHandling:{isSupported:!0,numWellsToFitInTip:I}}},Ur=e=>{const{retractZOffset:t,retractPositionReference:r,labwareId:n,labwareEntities:a,well:s}=e;if(s==null)return!1;const o=a[n]?.def.wells[s]?.depth;if(o==null)return!1;const i=c.getMmFromBottom(t,r,o);return i==null?!1:i-o>=c.SAFE_MOVE_TO_WELL_OFFSET_FROM_TOP_MM},Yu=e=>e.reduce((t,r)=>{const{kind:n}=r;return n==="onCutoutFixture"?t:n==="onLabware"?[...t,r.labwareId]:n==="onModule"||n==="inStackerHopper"?[...t,r.moduleId]:n==="onAddressableArea"?[...t,r.addressableAreaName]:[...t,r.logicalLocationName]},[]),kI={A4:"cutoutA3",B4:"cutoutB3",C4:"cutoutC3",D4:"cutoutD3"};function Ku(e){if(e.location!=="offDeck"&&e.location!=="systemLocation"&&e.location!=="wasteChuteLocation"&&"addressableAreaName"in e.location&&jh.includes(e.location.addressableAreaName)){const t=D(),r=e.location.addressableAreaName,n=kI[r]??r;return{[t]:{id:t,location:n}}}return{}}const oy=e=>Gh.includes(e),ma=e=>e===c.VACUUM_MODULE_DOCK_A4_ADDRESSABLE_AREA,jc=e=>e.labwareOnShuttle?.primaryLabwareId??null,Gc=(e,t,r)=>{if(r?.storedLabwareDetails==null)return!0;const n=Object.values(r?.storedLabwareDetails??{}).reduce((s,o)=>o!=null?[...s,o]:s,[]),a=t.labwareEntities[e];return n.some(s=>a?.labwareDefURI===s)},Wc=(e,t)=>{const{storedLabwareDetails:r}=e??{};if(r==null)return!0;const{primaryLabwareURI:n,adapterLabwareURI:a,lidLabwareURI:s}=r,o=Object.values(t).find(({labwareDefURI:f})=>f===n),i=Object.values(t).find(({labwareDefURI:f})=>f===a),l=Object.values(t).find(({labwareDefURI:f})=>f===s);if(o==null)return console.error("Primary labware entity not found"),!1;const u=c.getMaxPoolCount({labwareDefinitions:{primary:o.def,adapter:i?.def??null,lid:l?.def??null},model:c.FLEX_STACKER_MODULE_V1}),d=e?.labwareInHopper?.length??0;return u>d},iy=e=>{const{labwareId:t,labwareRobotState:r,labwareEntities:n}=e;return Object.entries(r).some(([a,{stackedOnNode:s}])=>typeof s=="object"&&"labwareId"in s&&s.labwareId===t&&c.getIsLid(n[a].def))},ly=e=>![Ln,c.GRIPPER_WASTE_CHUTE_ADDRESSABLE_AREA,...ve].some(t=>e===t),Ua=(e,t,r)=>{const n=t[r]?.stack,a=Fa(e,n),s=a!=null?e[a].moduleState:null;return!!(s&&s.type===c.ABSORBANCE_READER_TYPE&&s.lidOpen!==!0)};var Il,Xf;function uy(){if(Xf)return Il;Xf=1;function e(t){var r=t==null?0:t.length;return r?t[r-1]:void 0}return Il=e,Il}var vI=uy();const Yc=xe(vI);var cy=Symbol.for("immer-nothing"),Zf=Symbol.for("immer-draftable"),st=Symbol.for("immer-state"),PI=process.env.NODE_ENV!=="production"?[function(e){return`The plugin for '${e}' has not been loaded into Immer. To enable the plugin, import and call \`enable${e}()\` when initializing your application.`},function(e){return`produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${e}'`},"This object has been frozen and should not be mutated",function(e){return"Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? "+e},"An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.","Immer forbids circular references","The first or second argument to `produce` must be a function","The third argument to `produce` must be a function or undefined","First argument to `createDraft` must be a plain object, an array, or an immerable object","First argument to `finishDraft` must be a draft returned by `createDraft`",function(e){return`'current' expects a draft, got: ${e}`},"Object.defineProperty() cannot be used on an Immer draft","Object.setPrototypeOf() cannot be used on an Immer draft","Immer only supports deleting array indices","Immer only supports setting array indices and the 'length' property",function(e){return`'original' expects a draft, got: ${e}`}]:[];function Ke(e,...t){if(process.env.NODE_ENV!=="production"){const r=PI[e],n=typeof r=="function"?r.apply(null,t):r;throw new Error(`[Immer] ${n}`)}throw new Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var ha=Object.getPrototypeOf;function On(e){return!!e&&!!e[st]}function qr(e){return e?py(e)||Array.isArray(e)||!!e[Zf]||!!e.constructor?.[Zf]||qa(e)||Ps(e):!1}var CI=Object.prototype.constructor.toString(),Qf=new WeakMap;function py(e){if(!e||typeof e!="object")return!1;const t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;const r=Object.hasOwnProperty.call(t,"constructor")&&t.constructor;if(r===Object)return!0;if(typeof r!="function")return!1;let n=Qf.get(r);return n===void 0&&(n=Function.toString.call(r),Qf.set(r,n)),n===CI}function is(e,t,r=!0){vs(e)===0?(r?Reflect.ownKeys(e):Object.keys(e)).forEach(a=>{t(a,e[a],e)}):e.forEach((n,a)=>t(a,n,e))}function vs(e){const t=e[st];return t?t.type_:Array.isArray(e)?1:qa(e)?2:Ps(e)?3:0}function Xu(e,t){return vs(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function dy(e,t,r){const n=vs(e);n===2?e.set(t,r):n===3?e.add(r):e[t]=r}function NI(e,t){return e===t?e!==0||1/e===1/t:e!==e&&t!==t}function qa(e){return e instanceof Map}function Ps(e){return e instanceof Set}function Nr(e){return e.copy_||e.base_}function Zu(e,t){if(qa(e))return new Map(e);if(Ps(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);const r=py(e);if(t===!0||t==="class_only"&&!r){const n=Object.getOwnPropertyDescriptors(e);delete n[st];let a=Reflect.ownKeys(n);for(let s=0;s<a.length;s++){const o=a[s],i=n[o];i.writable===!1&&(i.writable=!0,i.configurable=!0),(i.get||i.set)&&(n[o]={configurable:!0,writable:!0,enumerable:i.enumerable,value:e[o]})}return Object.create(ha(e),n)}else{const n=ha(e);if(n!==null&&r)return{...e};const a=Object.create(n);return Object.assign(a,e)}}function Kc(e,t=!1){return Cs(e)||On(e)||!qr(e)||(vs(e)>1&&Object.defineProperties(e,{set:ts,add:ts,clear:ts,delete:ts}),Object.freeze(e),t&&Object.values(e).forEach(r=>Kc(r,!0))),e}function DI(){Ke(2)}var ts={value:DI};function Cs(e){return e===null||typeof e!="object"?!0:Object.isFrozen(e)}var MI={};function $r(e){const t=MI[e];return t||Ke(0,e),t}var _a;function fy(){return _a}function FI(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Jf(e,t){t&&($r("Patches"),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Qu(e){Ju(e),e.drafts_.forEach(UI),e.drafts_=null}function Ju(e){e===_a&&(_a=e.parent_)}function em(e){return _a=FI(_a,e)}function UI(e){const t=e[st];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function tm(e,t){t.unfinalizedDrafts_=t.drafts_.length;const r=t.drafts_[0];return e!==void 0&&e!==r?(r[st].modified_&&(Qu(t),Ke(4)),qr(e)&&(e=ls(t,e),t.parent_||us(t,e)),t.patches_&&$r("Patches").generateReplacementPatches_(r[st].base_,e,t.patches_,t.inversePatches_)):e=ls(t,r,[]),Qu(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e!==cy?e:void 0}function ls(e,t,r){if(Cs(t))return t;const n=e.immer_.shouldUseStrictIteration(),a=t[st];if(!a)return is(t,(s,o)=>rm(e,a,t,s,o,r),n),t;if(a.scope_!==e)return t;if(!a.modified_)return us(e,a.base_,!0),a.base_;if(!a.finalized_){a.finalized_=!0,a.scope_.unfinalizedDrafts_--;const s=a.copy_;let o=s,i=!1;a.type_===3&&(o=new Set(s),s.clear(),i=!0),is(o,(l,u)=>rm(e,a,s,l,u,r,i),n),us(e,s,!1),r&&e.patches_&&$r("Patches").generatePatches_(a,r,e.patches_,e.inversePatches_)}return a.copy_}function rm(e,t,r,n,a,s,o){if(a==null||typeof a!="object"&&!o)return;const i=Cs(a);if(!(i&&!o)){if(process.env.NODE_ENV!=="production"&&a===r&&Ke(5),On(a)){const l=s&&t&&t.type_!==3&&!Xu(t.assigned_,n)?s.concat(n):void 0,u=ls(e,a,l);if(dy(r,n,u),On(u))e.canAutoFreeze_=!1;else return}else o&&r.add(a);if(qr(a)&&!i){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[n]===a&&i)return;ls(e,a),(!t||!t.scope_.parent_)&&typeof n!="symbol"&&(qa(r)?r.has(n):Object.prototype.propertyIsEnumerable.call(r,n))&&us(e,a)}}}function us(e,t,r=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Kc(t,r)}function qI(e,t){const r=Array.isArray(e),n={type_:r?1:0,scope_:t?t.scope_:fy(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1};let a=n,s=Xc;r&&(a=[n],s=ya);const{revoke:o,proxy:i}=Proxy.revocable(a,s);return n.draft_=i,n.revoke_=o,i}var Xc={get(e,t){if(t===st)return e;const r=Nr(e);if(!Xu(r,t))return $I(e,r,t);const n=r[t];return e.finalized_||!qr(n)?n:n===El(e.base_,t)?(wl(e),e.copy_[t]=tc(n,e)):n},has(e,t){return t in Nr(e)},ownKeys(e){return Reflect.ownKeys(Nr(e))},set(e,t,r){const n=my(Nr(e),t);if(n?.set)return n.set.call(e.draft_,r),!0;if(!e.modified_){const a=El(Nr(e),t),s=a?.[st];if(s&&s.base_===r)return e.copy_[t]=r,e.assigned_[t]=!1,!0;if(NI(r,a)&&(r!==void 0||Xu(e.base_,t)))return!0;wl(e),ec(e)}return e.copy_[t]===r&&(r!==void 0||t in e.copy_)||Number.isNaN(r)&&Number.isNaN(e.copy_[t])||(e.copy_[t]=r,e.assigned_[t]=!0),!0},deleteProperty(e,t){return El(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,wl(e),ec(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){const r=Nr(e),n=Reflect.getOwnPropertyDescriptor(r,t);return n&&{writable:!0,configurable:e.type_!==1||t!=="length",enumerable:n.enumerable,value:r[t]}},defineProperty(){Ke(11)},getPrototypeOf(e){return ha(e.base_)},setPrototypeOf(){Ke(12)}},ya={};is(Xc,(e,t)=>{ya[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}});ya.deleteProperty=function(e,t){return process.env.NODE_ENV!=="production"&&isNaN(parseInt(t))&&Ke(13),ya.set.call(this,e,t,void 0)};ya.set=function(e,t,r){return process.env.NODE_ENV!=="production"&&t!=="length"&&isNaN(parseInt(t))&&Ke(14),Xc.set.call(this,e[0],t,r,e[0])};function El(e,t){const r=e[st];return(r?Nr(r):e)[t]}function $I(e,t,r){const n=my(t,r);return n?"value"in n?n.value:n.get?.call(e.draft_):void 0}function my(e,t){if(!(t in e))return;let r=ha(e);for(;r;){const n=Object.getOwnPropertyDescriptor(r,t);if(n)return n;r=ha(r)}}function ec(e){e.modified_||(e.modified_=!0,e.parent_&&ec(e.parent_))}function wl(e){e.copy_||(e.copy_=Zu(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var VI=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(t,r,n)=>{if(typeof t=="function"&&typeof r!="function"){const s=r;r=t;const o=this;return function(l=s,...u){return o.produce(l,p=>r.call(this,p,...u))}}typeof r!="function"&&Ke(6),n!==void 0&&typeof n!="function"&&Ke(7);let a;if(qr(t)){const s=em(this),o=tc(t,void 0);let i=!0;try{a=r(o),i=!1}finally{i?Qu(s):Ju(s)}return Jf(s,n),tm(a,s)}else if(!t||typeof t!="object"){if(a=r(t),a===void 0&&(a=t),a===cy&&(a=void 0),this.autoFreeze_&&Kc(a,!0),n){const s=[],o=[];$r("Patches").generateReplacementPatches_(t,a,s,o),n(s,o)}return a}else Ke(1,t)},this.produceWithPatches=(t,r)=>{if(typeof t=="function")return(o,...i)=>this.produceWithPatches(o,l=>t(l,...i));let n,a;return[this.produce(t,r,(o,i)=>{n=o,a=i}),n,a]},typeof e?.autoFreeze=="boolean"&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy=="boolean"&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration=="boolean"&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){qr(e)||Ke(8),On(e)&&(e=BI(e));const t=em(this),r=tc(e,void 0);return r[st].isManual_=!0,Ju(t),r}finishDraft(e,t){const r=e&&e[st];(!r||!r.isManual_)&&Ke(9);const{scope_:n}=r;return Jf(n,t),tm(void 0,n)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let r;for(r=t.length-1;r>=0;r--){const a=t[r];if(a.path.length===0&&a.op==="replace"){e=a.value;break}}r>-1&&(t=t.slice(r+1));const n=$r("Patches").applyPatches_;return On(e)?n(e,t):this.produce(e,a=>n(a,t))}};function tc(e,t){const r=qa(e)?$r("MapSet").proxyMap_(e,t):Ps(e)?$r("MapSet").proxySet_(e,t):qI(e,t);return(t?t.scope_:fy()).drafts_.push(r),r}function BI(e){return On(e)||Ke(10,e),hy(e)}function hy(e){if(!qr(e)||Cs(e))return e;const t=e[st];let r,n=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,r=Zu(e,t.scope_.immer_.useStrictShallowCopy_),n=t.scope_.immer_.shouldUseStrictIteration()}else r=Zu(e,!0);return is(r,(a,s)=>{dy(r,a,hy(s))},n),t&&(t.finalized_=!1),r}var xI=new VI,_y=xI.produce;function HI(e,t){let n=0;const a=[];for(;n+1<e.length;){const s=e[n],o=e[n+1];if(t(s,o)){n+=2;continue}else a.push(s),n+=1}return n+1===e.length&&a.push(e[n]),a}const zI=(e,t)=>["pipetteId","volume","labwareId","wellName"].every(n=>e[n]===t[n]),jI=e=>HI(e,(t,r)=>t.commandType==="aspirate"&&r.commandType==="dispense"&&zI(t.params,r.params)),yy=e=>jI(e),Zc=(e,t)=>{const r=Ot(e,t);return r.type===c.ABSORBANCE_READER_TYPE?r:(console.error(`Absorbance reader state updater expected ${t} moduleState to be absorbanceReader, but it was ${r.type}`),null)},GI=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Zc(n,a);s!=null&&(s.lidOpen=!0)},WI=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Zc(n,a);s!=null&&(s.lidOpen=!1)},YI=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,measureMode:s,sampleWavelengths:o,referenceWavelength:i}=e,l=Zc(n,a);l!=null&&(l.initialization={mode:s,wavelengths:o,referenceWavelength:i},l.lidOpen=!1)};function KI(e,t,r){const{pipetteId:n,volume:a}=e,{robotState:s}=r,o=s.pipettes[n].nozzles;let l=t.pipetteEntities[n].spec.channels;o===c.COLUMN?l=8:o===c.SINGLE&&(l=1),bn(l).forEach(u=>{const p=s.liquidState.pipettes[n][u]??{},d=p[je]?.volume??0;s.liquidState.pipettes[n][u]={...p,[je]:{volume:d+a}}})}var Sl,nm;function XI(){if(nm)return Sl;nm=1;var e=p_(),t=Ca(),r=fs(),n=Qe(),a=xr(),s=Ts(),o=Is(),i=Ec(),l="[object Map]",u="[object Set]",p=Object.prototype,d=p.hasOwnProperty;function f(_){if(_==null)return!0;if(a(_)&&(n(_)||typeof _=="string"||typeof _.splice=="function"||s(_)||i(_)||r(_)))return!_.length;var m=t(_);if(m==l||m==u)return!_.size;if(o(_))return!e(_).length;for(var h in _)if(d.call(_,h))return!1;return!0}return Sl=f,Sl}var ZI=XI();const Al=xe(ZI);var Ll,am;function QI(){if(am)return Ll;am=1;function e(t,r,n,a){for(var s=t.length,o=n+(a?1:-1);a?o--:++o<s;)if(r(t[o],o,t))return o;return-1}return Ll=e,Ll}var Ol,sm;function JI(){if(sm)return Ol;sm=1;function e(t){return t!==t}return Ol=e,Ol}var Rl,om;function eE(){if(om)return Rl;om=1;function e(t,r,n){for(var a=n-1,s=t.length;++a<s;)if(t[a]===r)return a;return-1}return Rl=e,Rl}var kl,im;function tE(){if(im)return kl;im=1;var e=QI(),t=JI(),r=eE();function n(a,s,o){return s===s?r(a,s,o):e(a,t,o)}return kl=n,kl}var vl,lm;function rE(){if(lm)return vl;lm=1;var e=tE();function t(r,n){var a=r==null?0:r.length;return!!a&&e(r,n,0)>-1}return vl=t,vl}var Pl,um;function nE(){if(um)return Pl;um=1;function e(t,r,n){for(var a=-1,s=t==null?0:t.length;++a<s;)if(n(r,t[a]))return!0;return!1}return Pl=e,Pl}var Cl,cm;function aE(){if(cm)return Cl;cm=1;function e(){}return Cl=e,Cl}var Nl,pm;function sE(){if(pm)return Nl;pm=1;var e=f_(),t=aE(),r=yc(),n=1/0,a=e&&1/r(new e([,-0]))[1]==n?function(s){return new e(s)}:t;return Nl=a,Nl}var Dl,dm;function oE(){if(dm)return Dl;dm=1;var e=e_(),t=rE(),r=nE(),n=r_(),a=sE(),s=yc(),o=200;function i(l,u,p){var d=-1,f=t,_=l.length,m=!0,h=[],b=h;if(p)m=!1,f=r;else if(_>=o){var T=u?null:a(l);if(T)return s(T);m=!1,f=n,b=new e}else b=u?[]:h;e:for(;++d<_;){var y=l[d],A=u?u(y):y;if(y=p||y!==0?y:0,m&&A===A){for(var w=b.length;w--;)if(b[w]===A)continue e;u&&b.push(A),h.push(y)}else f(b,A,p)||(b!==h&&b.push(A),h.push(y))}return h}return Dl=i,Dl}var Ml,fm;function iE(){if(fm)return Ml;fm=1;var e=oE();function t(r){return r&&r.length?e(r):[]}return Ml=t,Ml}var lE=iE();const uE=xe(lE),Qc=e=>{const{nozzles:t,pipetteSpec:r,primaryNozzle:n}=e,a=r.channels;if(t==null)return a;switch(t){case c.ROW:return 12;case c.COLUMN:return 8;case c.SINGLE:return 1;case c.ALL:return a;case c.PARTIAL_COLUMN:return c.PARTIAL_NOZZLE_MAP[n];default:return a}};function cE(e,t,r){const{pipetteId:n,volume:a}=e,{robotState:s,warnings:o}=r,i="labwareId"in e?e.labwareId:s.pipettes[n].entityId??"",l="wellName"in e?e.wellName:s.pipettes[n].wellName??"",{liquidState:u}=s,p=s.pipettes[n].nozzles,d=r.robotState.pipettes[n].primaryNozzle,f=t.pipetteEntities[n].spec,_=t.labwareEntities[i].def,m=_.metadata.displayCategory==="reservoir",h=Qc({pipetteSpec:f,nozzles:p,primaryNozzle:d}),{allWellsShared:b,wellsForTips:T}=Vc(h,_,l);if(console.assert(uE(T).length===b?1:T.length,`expected all wells to be shared, or no wells to be shared. Got: ${JSON.stringify(T)}`),h>1&&b){const A=T[0],w=u.labware[i][A],I=a*h>mr(w);Al(w)?o.push(gl()):I&&o.push(Tl());const S=I?mr(w)/h:a,L=er(S,w).dest;bn(h).forEach(E=>{const g=u.pipettes[n],k=E.toString(),v=g[k],q=I?hr(v,{...L,[je]:{volume:a-S}}):hr(v,L);g[k]=q}),u.labware[i][A]=er(a*h,u.labware[i][A]).source;return}if(h===96&&m){T.forEach(A=>{const w=u.labware[i][A],I=a*8>mr(w);Al(w)?o.push(gl()):I&&o.push(Tl());const S=I?mr(w)/8:a,L=er(S,w).dest;bn(h).forEach(E=>{const g=u.pipettes[n],k=E.toString(),v=g[k],q=I?hr(v,{...L,[je]:{volume:a-S}}):hr(v,L);g[k]=q}),u.labware[i][A]=er(S*8,u.labware[i][A]).source});return}bn(h).forEach(A=>{const w=A.toString(),I=u.pipettes[n],S=I[w],L=u.labware[i][T[A]],E=er(a,L).dest;Al(L)?o.push(gl()):a>mr(L)&&o.push(Tl()),I[w]=hr(S,E)});const y=u.labware[i];T.forEach(A=>{y[A]=er(a,y[A]).source}),"labwareId"in e&&(s.pipettes[n]={...s.pipettes[n],entityId:e.labwareId,wellName:l})}function Ns(e){const{robotStateAndWarnings:t,invariantContext:r,entityId:n,pipetteId:a,prevLiquidState:s,useFullVolume:o,volume:i,wellName:l}=e,u=r.pipetteEntities[a].spec,p=t.robotState.pipettes[a].nozzles,d=t.robotState.pipettes[a].primaryNozzle,f=Qc({pipetteSpec:u,nozzles:p,primaryNozzle:d}),_=l??null,m=r.labwareEntities[n]!=null?r.labwareEntities[n].def:null;console.assert(!(o&&typeof i=="number"),"dispenseUpdateLiquidState takes either `volume` or `useFullVolume`, but got both"),console.assert(typeof i=="number"||o,"in dispenseUpdateLiquidState, either volume or useFullVolume are required");const{wellsForTips:h,allWellsShared:b}=m!=null&&l!=null?Vc(f,m,l):{wellsForTips:null,allWellsShared:!0},T=s.labware[n]!=null?s.labware[n]:null;let y=null;s.trashBins[n]!=null?y=s.trashBins[n]:s.wasteChute[n]!=null&&(y=s.wasteChute[n]);const A=rr(s.pipettes[a],L=>{const{...E}=L;if(o){const g=mr(E);return g>0?er(g,E):{source:{},dest:{}}}return er(i||0,E)});let w=null;if(_!=null&&T!=null)w={[_]:ut(A,(L,E)=>hr(L,E.dest),T[_])};else if(y!=null){const L=Object.values(s.pipettes[a]).reduce((E,g)=>E+(g[0]?.volume??0),0);y[0]={volume:L}}w==null&&y==null&&console.assert(!1,`expected to merge liquid to a single well with sourceId ${n}`);const I=_!=null&&T!=null&&h!=null?h.reduce((L,E,g)=>({...L,[E]:hr(A[`${g}`].dest,T[E]||{})}),{}):{},S=b?w:I;s.pipettes[a]=rr(A,"source"),s.trashBins[n]!=null&&y!=null?Object.assign(s.trashBins[n],y):s.wasteChute[n]!=null&&y!=null?Object.assign(s.wasteChute[n],y):s.labware[n]!=null&&S!=null&&(s.labware[n]=Object.assign(T??{},S))}function pE(e,t,r){const{pipetteId:n,labwareId:a,wellName:s}=e,{robotState:o}=r;Ns({pipetteId:n,entityId:a,useFullVolume:!0,wellName:s,prevLiquidState:o.liquidState,invariantContext:t,robotStateAndWarnings:r})}function dE(e,t,r){const{pipetteId:n,configurationParams:a}=e,{robotState:s}=r;s.pipettes[n].nozzles=a.style,s.pipettes[n].primaryNozzle=a.primaryNozzle}function fE(e,t,r){const{pipetteId:n,volume:a}=e,{robotState:s}=r,o="labwareId"in e?e.labwareId:s.pipettes[n].entityId??"",i="wellName"in e?e.wellName:s.pipettes[n].wellName??"",l=s.liquidState.pipettes[n],p=Object.values(l)[0]?.[je]?.volume??0,d=r.robotState.pipettes[n].primaryNozzle;if(Ns({invariantContext:t,entityId:o,pipetteId:n,prevLiquidState:s.liquidState,useFullVolume:!1,volume:a,wellName:i,robotStateAndWarnings:r}),p>0){const f=r.robotState.pipettes[n].nozzles,_=t.pipetteEntities[n].spec,m=Qc({pipetteSpec:_,nozzles:f,primaryNozzle:d});Object.keys(l).slice(0,m).forEach(b=>{const T=l[b]??{};l[b]={...T,[je]:{volume:0}}})}"labwareId"in e&&(s.pipettes[n]={...s.pipettes[n],entityId:e.labwareId})}function mE(e,t,r){const{pipetteId:n,wellName:a,labwareId:s}=e,{robotState:o}=r;o.tipState.pipettes[n].hasTip=!1,o.tipState.pipettes[n].tiprackURI=null,o.pipettes[n].tiprackId=void 0;const i=o.tipState,l=t.pipetteEntities[n].spec,u=o.pipettes[n].nozzles,p=lp(u,l),d=(_,m)=>_.find(h=>h.includes(m)),f=t.labwareEntities[s]?.def;f==null||!c.getIsTiprack(f)?console.warn(`forDropTip expected ${s} to have definition and to be a tiprack`):(p===c.SINGLE?i.tipracks[s][a]=Qt:p===c.COLUMN?(d(f.ordering,a)??[]).forEach(m=>i.tipracks[s][m]=Qt):p===c.ALL?l.channels===96?f.ordering.reduce((m,h)=>m.concat(h),[]).forEach(function(m){i.tipracks[s][m]=Qt}):(d(f.ordering,a)??[]).forEach(m=>i.tipracks[s][m]=Qt):l.channels===1?i.tipracks[s][a]=Qt:l.channels===96?f.ordering.reduce((m,h)=>m.concat(h),[]).forEach(function(m){i.tipracks[s][m]=Qt}):(d(f.ordering,a)??[]).forEach(m=>i.tipracks[s][m]=Qt),o.pipettes[n].entityId=s,o.pipettes[n].wellName=a)}function hE(e,t,r){const{labwareId:n,liquidId:a,volumeByWell:s}=e;Object.entries(s).forEach(([o,i])=>{r.robotState.liquidState.labware[n][o][a]={volume:i}})}var Fl,mm;function _E(){if(mm)return Fl;mm=1;function e(t,r){for(var n=-1,a=t==null?0:t.length;++n<a&&r(t[n],n,t)!==!1;);return t}return Fl=e,Fl}var Ul,hm;function Jc(){if(hm)return Ul;hm=1;var e=Lc(),t=ms(),r=Object.prototype,n=r.hasOwnProperty;function a(s,o,i){var l=s[o];(!(n.call(s,o)&&t(l,i))||i===void 0&&!(o in s))&&e(s,o,i)}return Ul=a,Ul}var ql,_m;function $a(){if(_m)return ql;_m=1;var e=Jc(),t=Lc();function r(n,a,s,o){var i=!s;s||(s={});for(var l=-1,u=a.length;++l<u;){var p=a[l],d=o?o(s[p],n[p],p,s,n):void 0;d===void 0&&(d=n[p]),i?t(s,p,d):e(s,p,d)}return s}return ql=r,ql}var $l,ym;function yE(){if(ym)return $l;ym=1;var e=$a(),t=Pa();function r(n,a){return n&&e(a,t(a),n)}return $l=r,$l}var Vl,bm;function bE(){if(bm)return Vl;bm=1;function e(t){var r=[];if(t!=null)for(var n in Object(t))r.push(n);return r}return Vl=e,Vl}var Bl,Tm;function TE(){if(Tm)return Bl;Tm=1;var e=ar(),t=Is(),r=bE(),n=Object.prototype,a=n.hasOwnProperty;function s(o){if(!e(o))return r(o);var i=t(o),l=[];for(var u in o)u=="constructor"&&(i||!a.call(o,u))||l.push(u);return l}return Bl=s,Bl}var xl,gm;function ep(){if(gm)return xl;gm=1;var e=u_(),t=TE(),r=xr();function n(a){return r(a)?e(a,!0):t(a)}return xl=n,xl}var Hl,Im;function gE(){if(Im)return Hl;Im=1;var e=$a(),t=ep();function r(n,a){return n&&e(a,t(a),n)}return Hl=r,Hl}var da={exports:{}};da.exports;var Em;function IE(){return Em||(Em=1,(function(e,t){var r=Ht(),n=t&&!t.nodeType&&t,a=n&&!0&&e&&!e.nodeType&&e,s=a&&a.exports===n,o=s?r.Buffer:void 0,i=o?o.allocUnsafe:void 0;function l(u,p){if(p)return u.slice();var d=u.length,f=i?i(d):new u.constructor(d);return u.copy(f),f}e.exports=l})(da,da.exports)),da.exports}var zl,wm;function EE(){if(wm)return zl;wm=1;function e(t,r){var n=-1,a=t.length;for(r||(r=Array(a));++n<a;)r[n]=t[n];return r}return zl=e,zl}var jl,Sm;function wE(){if(Sm)return jl;Sm=1;var e=$a(),t=bc();function r(n,a){return e(n,t(n),a)}return jl=r,jl}var Gl,Am;function tp(){if(Am)return Gl;Am=1;var e=c_(),t=e(Object.getPrototypeOf,Object);return Gl=t,Gl}var Wl,Lm;function by(){if(Lm)return Wl;Lm=1;var e=fc(),t=tp(),r=bc(),n=i_(),a=Object.getOwnPropertySymbols,s=a?function(o){for(var i=[];o;)e(i,r(o)),o=t(o);return i}:n;return Wl=s,Wl}var Yl,Om;function SE(){if(Om)return Yl;Om=1;var e=$a(),t=by();function r(n,a){return e(n,t(n),a)}return Yl=r,Yl}var Kl,Rm;function rp(){if(Rm)return Kl;Rm=1;var e=s_(),t=by(),r=ep();function n(a){return e(a,r,t)}return Kl=n,Kl}var Xl,km;function AE(){if(km)return Xl;km=1;var e=Object.prototype,t=e.hasOwnProperty;function r(n){var a=n.length,s=new n.constructor(a);return a&&typeof n[0]=="string"&&t.call(n,"index")&&(s.index=n.index,s.input=n.input),s}return Xl=r,Xl}var Zl,vm;function np(){if(vm)return Zl;vm=1;var e=a_();function t(r){var n=new r.constructor(r.byteLength);return new e(n).set(new e(r)),n}return Zl=t,Zl}var Ql,Pm;function LE(){if(Pm)return Ql;Pm=1;var e=np();function t(r,n){var a=n?e(r.buffer):r.buffer;return new r.constructor(a,r.byteOffset,r.byteLength)}return Ql=t,Ql}var Jl,Cm;function OE(){if(Cm)return Jl;Cm=1;var e=/\w*$/;function t(r){var n=new r.constructor(r.source,e.exec(r));return n.lastIndex=r.lastIndex,n}return Jl=t,Jl}var eu,Nm;function RE(){if(Nm)return eu;Nm=1;var e=kn(),t=e?e.prototype:void 0,r=t?t.valueOf:void 0;function n(a){return r?Object(r.call(a)):{}}return eu=n,eu}var tu,Dm;function kE(){if(Dm)return tu;Dm=1;var e=np();function t(r,n){var a=n?e(r.buffer):r.buffer;return new r.constructor(a,r.byteOffset,r.length)}return tu=t,tu}var ru,Mm;function vE(){if(Mm)return ru;Mm=1;var e=np(),t=LE(),r=OE(),n=RE(),a=kE(),s="[object Boolean]",o="[object Date]",i="[object Map]",l="[object Number]",u="[object RegExp]",p="[object Set]",d="[object String]",f="[object Symbol]",_="[object ArrayBuffer]",m="[object DataView]",h="[object Float32Array]",b="[object Float64Array]",T="[object Int8Array]",y="[object Int16Array]",A="[object Int32Array]",w="[object Uint8Array]",I="[object Uint8ClampedArray]",S="[object Uint16Array]",L="[object Uint32Array]";function E(g,k,v){var q=g.constructor;switch(k){case _:return e(g);case s:case o:return new q(+g);case m:return t(g,v);case h:case b:case T:case y:case A:case w:case I:case S:case L:return a(g,v);case i:return new q;case l:case d:return new q(g);case u:return r(g);case p:return new q;case f:return n(g)}}return ru=E,ru}var nu,Fm;function PE(){if(Fm)return nu;Fm=1;var e=ar(),t=Object.create,r=(function(){function n(){}return function(a){if(!e(a))return{};if(t)return t(a);n.prototype=a;var s=new n;return n.prototype=void 0,s}})();return nu=r,nu}var au,Um;function CE(){if(Um)return au;Um=1;var e=PE(),t=tp(),r=Is();function n(a){return typeof a.constructor=="function"&&!r(a)?e(t(a)):{}}return au=n,au}var su,qm;function NE(){if(qm)return su;qm=1;var e=Ca(),t=nr(),r="[object Map]";function n(a){return t(a)&&e(a)==r}return su=n,su}var ou,$m;function DE(){if($m)return ou;$m=1;var e=NE(),t=gc(),r=Ic(),n=r&&r.isMap,a=n?t(n):e;return ou=a,ou}var iu,Vm;function ME(){if(Vm)return iu;Vm=1;var e=Ca(),t=nr(),r="[object Set]";function n(a){return t(a)&&e(a)==r}return iu=n,iu}var lu,Bm;function FE(){if(Bm)return lu;Bm=1;var e=ME(),t=gc(),r=Ic(),n=r&&r.isSet,a=n?t(n):e;return lu=a,lu}var uu,xm;function Ty(){if(xm)return uu;xm=1;var e=_c(),t=_E(),r=Jc(),n=yE(),a=gE(),s=IE(),o=EE(),i=wE(),l=SE(),u=d_(),p=rp(),d=Ca(),f=AE(),_=vE(),m=CE(),h=Qe(),b=Ts(),T=DE(),y=ar(),A=FE(),w=Pa(),I=ep(),S=1,L=2,E=4,g="[object Arguments]",k="[object Array]",v="[object Boolean]",q="[object Date]",$="[object Error]",ee="[object Function]",de="[object GeneratorFunction]",Te="[object Map]",se="[object Number]",Ie="[object Object]",Pe="[object RegExp]",He="[object Set]",Ve="[object String]",te="[object Symbol]",Se="[object WeakMap]",ze="[object ArrayBuffer]",Ce="[object DataView]",Ee="[object Float32Array]",X="[object Float64Array]",W="[object Int8Array]",C="[object Int16Array]",P="[object Int32Array]",V="[object Uint8Array]",M="[object Uint8ClampedArray]",oe="[object Uint16Array]",U="[object Uint32Array]",z={};z[g]=z[k]=z[ze]=z[Ce]=z[v]=z[q]=z[Ee]=z[X]=z[W]=z[C]=z[P]=z[Te]=z[se]=z[Ie]=z[Pe]=z[He]=z[Ve]=z[te]=z[V]=z[M]=z[oe]=z[U]=!0,z[$]=z[ee]=z[Se]=!1;function x(F,H,ce,Ue,Je,Be){var pe,et=H&S,ht=H&L,Rt=H&E;if(ce&&(pe=Je?ce(F,Ue,Je,Be):ce(F)),pe!==void 0)return pe;if(!y(F))return F;var _t=h(F);if(_t){if(pe=f(F),!et)return o(F,pe)}else{var Re=d(F),tt=Re==ee||Re==de;if(b(F))return s(F,et);if(Re==Ie||Re==g||tt&&!Je){if(pe=ht||tt?{}:m(F),!et)return ht?l(F,a(pe,F)):i(F,n(pe,F))}else{if(!z[Re])return Je?F:{};pe=_(F,Re,et)}}Be||(Be=new e);var ge=Be.get(F);if(ge)return ge;Be.set(F,pe),A(F)?F.forEach(function(re){pe.add(x(re,H,ce,re,F,Be))}):T(F)&&F.forEach(function(re,ne){pe.set(ne,x(re,H,ce,ne,F,Be))});var ke=Rt?ht?p:u:ht?I:w,Ne=_t?void 0:ke(F);return t(Ne||F,function(re,ne){Ne&&(ne=re,re=F[ne]),r(pe,ne,x(re,H,ce,ne,F,Be))}),pe}return uu=x,uu}var cu,Hm;function gy(){if(Hm)return cu;Hm=1;function e(t,r,n){var a=-1,s=t.length;r<0&&(r=-r>s?0:s+r),n=n>s?s:n,n<0&&(n+=s),s=r>n?0:n-r>>>0,r>>>=0;for(var o=Array(s);++a<s;)o[a]=t[a+r];return o}return cu=e,cu}var pu,zm;function UE(){if(zm)return pu;zm=1;var e=Es(),t=gy();function r(n,a){return a.length<2?n:e(n,t(a,0,-1))}return pu=r,pu}var du,jm;function qE(){if(jm)return du;jm=1;var e=Pn(),t=uy(),r=UE(),n=Cn(),a=Object.prototype,s=a.hasOwnProperty;function o(i,l){l=e(l,i);var u=-1,p=l.length;if(!p)return!0;for(;++u<p;){var d=n(l[u]);if(d==="__proto__"&&!s.call(i,"__proto__")||(d==="constructor"||d==="prototype")&&u<p-1)return!1}var f=r(i,l);return f==null||delete f[n(t(l))]}return du=o,du}var fu,Gm;function $E(){if(Gm)return fu;Gm=1;var e=vn(),t=tp(),r=nr(),n="[object Object]",a=Function.prototype,s=Object.prototype,o=a.toString,i=s.hasOwnProperty,l=o.call(Object);function u(p){if(!r(p)||e(p)!=n)return!1;var d=t(p);if(d===null)return!0;var f=i.call(d,"constructor")&&d.constructor;return typeof f=="function"&&f instanceof f&&o.call(f)==l}return fu=u,fu}var mu,Wm;function VE(){if(Wm)return mu;Wm=1;var e=$E();function t(r){return e(r)?void 0:r}return mu=t,mu}var hu,Ym;function BE(){if(Ym)return hu;Ym=1;var e=Zh();function t(r){var n=r==null?0:r.length;return n?e(r,1):[]}return hu=t,hu}var _u,Km;function xE(){if(Km)return _u;Km=1;function e(t,r,n){switch(n.length){case 0:return t.call(r);case 1:return t.call(r,n[0]);case 2:return t.call(r,n[0],n[1]);case 3:return t.call(r,n[0],n[1],n[2])}return t.apply(r,n)}return _u=e,_u}var yu,Xm;function Iy(){if(Xm)return yu;Xm=1;var e=xE(),t=Math.max;function r(n,a,s){return a=t(a===void 0?n.length-1:a,0),function(){for(var o=arguments,i=-1,l=t(o.length-a,0),u=Array(l);++i<l;)u[i]=o[a+i];i=-1;for(var p=Array(a+1);++i<a;)p[i]=o[i];return p[a]=s(u),e(n,this,p)}}return yu=r,yu}var bu,Zm;function HE(){if(Zm)return bu;Zm=1;function e(t){return function(){return t}}return bu=e,bu}var Tu,Qm;function zE(){if(Qm)return Tu;Qm=1;var e=HE(),t=b_(),r=La(),n=t?function(a,s){return t(a,"toString",{configurable:!0,enumerable:!1,value:e(s),writable:!0})}:r;return Tu=n,Tu}var gu,Jm;function jE(){if(Jm)return gu;Jm=1;var e=800,t=16,r=Date.now;function n(a){var s=0,o=0;return function(){var i=r(),l=t-(i-o);if(o=i,l>0){if(++s>=e)return arguments[0]}else s=0;return a.apply(void 0,arguments)}}return gu=n,gu}var Iu,eh;function Ey(){if(eh)return Iu;eh=1;var e=zE(),t=jE(),r=t(e);return Iu=r,Iu}var Eu,th;function GE(){if(th)return Eu;th=1;var e=BE(),t=Iy(),r=Ey();function n(a){return r(t(a,void 0,e),a+"")}return Eu=n,Eu}var wu,rh;function WE(){if(rh)return wu;rh=1;var e=va(),t=Ty(),r=qE(),n=Pn(),a=$a(),s=VE(),o=GE(),i=rp(),l=1,u=2,p=4,d=o(function(f,_){var m={};if(f==null)return m;var h=!1;_=e(_,function(T){return T=n(T,f),h||(h=T.length>1),T}),a(f,i(f),m),h&&(m=t(m,l|u|p,s));for(var b=_.length;b--;)r(m,_[b]);return m});return wu=d,wu}var YE=WE();const KE=xe(YE),rc="TOUCHED_PIPETTABLE_LABWARE";var Su,nh;function XE(){if(nh)return Su;nh=1;var e=wc();function t(r,n){return e(r,n)}return Su=t,Su}var ZE=XE();const QE=xe(ZE),Ds=e=>{const{node:t,stack:r=[],robotState:n,memo:a=new Map}=e;let s=r;if(!(typeof t=="object"&&"labwareId"in t))return s=[...r,t],a.set(t,s),{stack:s,memo:a};const{labwareId:o}=t,i=n.labware[o];if(i!=null&&i.stackedOnNode!=null){const{stack:l,memo:u}=Ds({node:i.stackedOnNode,stack:[...r,t],robotState:n,memo:a});wy(a,u),s=l,a.set(t,s)}return{stack:s,memo:a}},JE=e=>{const{node:t,robotState:r,deckDef:n,deckConfiguration:a}=e,{stack:s}=Ds({node:t,robotState:r}),{cutoutFixtures:o}=n,i=s.find(l=>typeof l=="object"&&"addressableAreaName"in l);if(i!=null&&typeof i=="object"&&"addressableAreaName"in i){const{addressableAreaName:l}=i;for(const{id:u,providesAddressableAreas:p}of o){const[d]=Object.entries(p).find(([f,_])=>_.includes(l))??[];if(d!=null){const f=a.find(({cutoutId:T})=>T===d),{cutoutFixtureId:_,cutoutId:m}=f,h=_===u&&m===d,b=Object.entries(r.modules).find(([T,{slot:y}])=>c.FLEX_CUTOUT_BY_SLOT_ID[y]===m);if(h&&b!=null)return b[0]}}}return null},wy=(e,t)=>{t.forEach((r,n)=>{e.set(n,r)})},ew=(e,t)=>e.some(r=>QE(r,t)),Sy=e=>{const{labwareId:t,robotState:r}=e,n=new Map,a={labwareId:t};let s=[];for(const[o,{stackedOnNode:i}]of Object.entries(r.labware)){const l={labwareId:o};if(i==null)continue;let u;const p=n.get(l);if(p!=null)u=p;else{const{stack:d,memo:f}=Ds({node:l,robotState:r,memo:n});if(wy(n,f),!ew(d,a))continue;n.set(l,d),u=d}u.length>s.length&&(s=u)}return s},Ay=e=>{const t=[],r=new Set;for(const n of Object.keys(e.labware)){if(r.has(n))continue;const a=Sy({labwareId:n,robotState:e});a.forEach(s=>{typeof s=="object"&&"labwareId"in s&&r.add(s.labwareId)}),t.push(a)}return t},ap=e=>{const{moduleId:t,robotState:r,moduleEntities:n,deckDef:a}=e,s=r.modules[t],o=n[t];if(s==null||o==null)return null;const{slot:i}=s,{model:l}=o,u=c.getAddressableAreaNamesFromLoadedModule(l,i,a);return u.length===0?null:u[0]},tw=e=>{const{location:t,robotState:r,moduleEntities:n,deckDef:a}=e;if(t==="offDeck"||t==="systemLocation"||t==="wasteChuteLocation")return null;if("slotName"in t)return t.slotName;if("addressableAreaName"in t)return t.addressableAreaName;if("moduleId"in t){const{moduleId:s}=t;return ap({moduleId:s,robotState:r,moduleEntities:n,deckDef:a})}return null},Ly=e=>{const{deckConfiguration:t,deckDefinition:r}=e;return t.reduce((n,{cutoutFixtureId:a,cutoutId:s})=>((r.cutoutFixtures.find(({id:i})=>a===i)?.providesAddressableAreas[s]??[]).forEach(i=>{n.add(i)}),n),new Set)},rw=e=>{const{robotState:t,deckConfiguration:r,deckDefinition:n,moduleEntities:a}=e,s=Ly({deckConfiguration:r,deckDefinition:n}),o=new Set(s),i=Ay(t);for(const l of i){const u=Yc(l);if(typeof u=="object"&&"addressableAreaName"in u){const{addressableAreaName:p}=u;o.delete(p)}if(typeof u=="object"&&"slotName"in u){const{slotName:p}=u;o.delete(p)}if(typeof u=="object"&&"moduleId"in u){const{moduleId:p}=u,d=ap({moduleId:p,robotState:t,moduleEntities:a,deckDef:n});d!=null&&o.delete(d)}}return o},nw=e=>{const t=e.toLowerCase();return t.includes("chute")||t.includes("waste")||t.startsWith("gripper")||t==="96channelwastechute"},Oy=e=>{const{stack:t,subjectLabwareId:r,moduleEntities:n,labwareEntityIds:a,modules:s}=e;if(t.length===0||t[0]!==r||t.length<2)return;const o=t[1];if(o===Ze){const u=t[2];return u==null?void 0:{kind:"inStackerHopper",moduleId:u}}if(n[o]!=null)return{moduleId:o};if(a.has(o))return{labwareId:o};if(o==="offDeck")return"offDeck";if(o==="systemLocation")return"systemLocation";if(o==="wasteChuteLocation")return"wasteChuteLocation";if(nw(o))return{addressableAreaName:o};const i=ay(o,s,n)??o;if(Object.entries(s).some(([u,p])=>n[u]?.type===c.FLEX_STACKER_MODULE_TYPE&&p.slot===i)){const u=Rs(i);if(u!=null)return{addressableAreaName:u}}return{slotName:o}},aw=e=>typeof e=="object"&&e!==null&&"kind"in e&&e.kind==="inStackerHopper",sw=e=>typeof e!="object"||e===null?!1:!aw(e),ow=(e,t)=>{const{id:r,def:n}=e,{id:a,def:s}=t,o=n.dimensions.xDimension,i=n.dimensions.yDimension,l=s.dimensions.xDimension,u=s.dimensions.yDimension;return o>l&&i>u?{containerLabwareId:r,containedLabwareId:a}:l>o&&u>i?{containerLabwareId:a,containedLabwareId:r}:null},sp=(e,t)=>{const r=new Map;for(const a of Object.keys(e)){const s=e[a].stackedOnNode;if(s==null||!sw(s))continue;const o=JSON.stringify(s),i=r.get(o)??[];i.push(a),r.set(o,i)}const n={};for(const a of r.values()){if(a.length!==2)continue;const[s,o]=a,i=t[s],l=t[o];if(i==null||l==null)continue;const u=ow(i,l);if(u==null)continue;const{containerLabwareId:p,containedLabwareId:d}=u;n[p]=d}return Object.keys(n).length===0?e:rr(e,(a,s)=>n[s]!=null?{...a,contains:n[s]}:a)},iw=(e,t,r)=>{const n=Object.keys(e.labware),a=new Set(n);let s=rr(e.labware,(o,i)=>{const l=o.stackedOnNode??Oy({stack:o.stack,subjectLabwareId:i,moduleEntities:t,labwareEntityIds:a,modules:e.modules});return l!=null?{...o,stackedOnNode:l}:{...o}});return s=sp(s,r),{...e,labware:s}};function lw(e,t,r){const{labwareId:n,newLocation:a}=e,{robotState:s}=r,{labwareEntities:o}=t,{modules:i,labware:l}=s;if(l[n]==null)return;const u=G(l[n].stack),p=ks(l,u,n),d=p.indexOf(n),f=p.slice(0,d+1),_=c.getIsLid(o[n].def);let m=!1;const h=Object.entries(i).find(([E,{slot:g}])=>{const{type:k}=t.moduleEntities[E]??{};return k===c.FLEX_STACKER_MODULE_TYPE&&g===u})??null,b=h!=null&&h[1].moduleState.type===c.FLEX_STACKER_MODULE_TYPE?Jt.map(E=>h[1].moduleState.labwareOnShuttle?.[E]).filter(E=>E!=null):[],T=b.includes(n)?b.slice(0,b.indexOf(n)+1):[];if(h!=null&&h[1].moduleState.type===c.FLEX_STACKER_MODULE_TYPE){const E=h[1].moduleState,g=Jt.findIndex(k=>E.labwareOnShuttle?.[k]===n);if(g!==-1&&E.labwareOnShuttle!=null)for(const k of Jt.slice(g,Jt.length))if(k==="primaryLabwareId"){E.labwareOnShuttle=null;break}else E.labwareOnShuttle[k]=null}const y=Object.entries(i).find(([E,{slot:g}])=>{const{type:k}=t.moduleEntities[E]??{};return k===c.FLEX_STACKER_MODULE_TYPE&&typeof a=="object"&&("moduleId"in a&&a.moduleId===E||"slotName"in a&&g===a.slotName)})??null,[A,w]=y??[];if(A!=null&&w!=null){const E=T.length>0?T:fa({slot:u,labwareState:l,modulesState:i}),g=E.indexOf(n),k=w.moduleState;if(g!==-1){const v=E.slice(0,g+1).toReversed();if(k.labwareOnShuttle==null&&(k.labwareOnShuttle={primaryLabwareId:"",adapterLabwareId:null,lidLabwareId:null}),v.length===3)for(let q=0;q<Jt.length;q++){const $=Jt[q];k.labwareOnShuttle[$]=v[q]}else if(v.length===2){const q=v.some($=>t.labwareEntities[$].def.allowedRoles?.some(ee=>ee==="lid"))?["primaryLabwareId","lidLabwareId"]:["adapterLabwareId","primaryLabwareId"];for(let $=0;$<q.length;$++){const ee=q[$];k.labwareOnShuttle[ee]=v[$]}}else v.length===1&&(k.labwareOnShuttle.primaryLabwareId=v[0])}}const I=[];if(c.locationIsOffDeck(a))I.push(a);else if("moduleId"in a)if(i[a.moduleId].moduleState.type===c.FLEX_STACKER_MODULE_TYPE)I.push(i[a.moduleId].slot);else if(t.moduleEntities[a.moduleId]?.type===c.VACUUM_MODULE_TYPE){const E=i[a.moduleId].slot,g=fa({slot:E,labwareState:l,modulesState:i});g.length>0?I.push(...g):I.push(a.moduleId,E)}else I.push(a.moduleId,i[a.moduleId].slot);else if("slotName"in a){const{slotName:E}=a;E in l?(m=c.getIsPipettableLabware(o[E].def),I.push(...l[E].stack)):I.push(E)}else if("labwareId"in a){const E=a.labwareId;m=c.getIsPipettableLabware(o[E].def);const g=l[E].stack;I.push(...g)}else if("addressableAreaName"in a)if(ma(a.addressableAreaName)){const E=Object.entries(i).find(([g])=>t.moduleEntities[g]?.type===c.VACUUM_MODULE_TYPE)?.[0];I.push(pc),E!=null&&I.push(E),I.push(a.addressableAreaName)}else I.push(a.addressableAreaName);f.forEach((E,g)=>{if(l[E]!=null){const k=f.slice(g+1);s.labware[E]={...s.labware[E],stack:[E,...k,...I],..._&&m?{sterility:rc}:{}}}});const S=typeof a=="object"&&"labwareId"in a&&c.getIsPipettableLabware(o[a.labwareId].def);let L=a;if(typeof a=="object"&&a!==null&&"moduleId"in a&&i[a.moduleId].moduleState.type===c.FLEX_STACKER_MODULE_TYPE){const E=Rs(i[a.moduleId].slot);E!=null&&(L={addressableAreaName:E})}else if(typeof a=="object"&&a!==null&&"moduleId"in a&&t.moduleEntities[a.moduleId]?.type===c.VACUUM_MODULE_TYPE){const E=i[a.moduleId].slot,g=fa({slot:E,labwareState:l,modulesState:i}),k=g.length>0?g[0]:null;k!=null&&k in o&&(L={labwareId:k})}s.labware[n].stackedOnNode=L,S&&(s.labware[n].sterility=rc),s.labware=sp(rr(s.labware,E=>KE(E,"contains")),o)}function uw(e,t,r){const{pipetteId:n,addressableAreaName:a}=e,{wasteChuteEntities:s,trashBinEntities:o}=t,i=c.WASTE_CHUTE_ADDRESSABLE_AREAS.includes(a),l=Object.values(o).find(d=>d.location===Y_(a))?.id,u=i?Object.values(s)[0].id:l,{robotState:p}=r;p.pipettes[n]={...p.pipettes[n],entityId:u}}function cw(e,t,r){const{pipetteId:n,labwareId:a,wellName:s}=e,{robotState:o}=r;o.pipettes[n]={...o.pipettes[n],entityId:a,wellName:s}}function pw(e,t,r){const{pipetteId:n,labwareId:a,wellName:s}=e,o=t.pipetteEntities[n].spec,i=t.labwareEntities[a].def;if(!c.getIsTiprack(i))throw new Error(`forPickUpTip expected ${a} to be a tiprack`);const l=r.robotState.tipState,u=r.robotState.pipettes[n].nozzles,p=r.robotState.pipettes[n].primaryNozzle,d=lp(u,o),f=(h,b)=>h.find(T=>T.includes(b)),_=(h,b)=>{const T=h.findIndex(A=>A.includes(b));if(T===-1)return null;const y=h[T].indexOf(b);return h.map(A=>A[y])},m=(h,b)=>{const T=c.PARTIAL_NOZZLE_MAP[p],y=h.findIndex(L=>L.includes(b)),A=h[y].indexOf(b),w=h[y];if(w.length-A<T){const L=w.length-T;return w.slice(L,w.length)}const S=A+T;return w.slice(A,Math.min(S,w.length))};if(l.pipettes[n].hasTip=!0,l.pipettes[n].tiprackURI=a,d===c.SINGLE)l.tipracks[a][s]=ue;else if(d===c.PARTIAL_COLUMN&&p){const h=m(i.ordering,s);h==null?console.error(`Invalid primary well for tip pick up for partial config: ${s}`):h.forEach(function(b){l.tipracks[a][b]=ue})}else if(d===c.COLUMN){const h=f(i.ordering,s);h==null&&console.error(`Invalid primary well for tip pickup: ${s}`),h?.forEach(function(b){l.tipracks[a][b]=ue})}else if(d===c.ROW){const h=_(i.ordering,s);h==null&&console.error("Invalid primary well for tip pickup: "+s),h?.forEach(function(b){l.tipracks[a][b]=ue})}else if(d===c.ALL)if(o.channels===96)i.ordering.reduce((b,T)=>b.concat(T),[]).forEach(function(b){l.tipracks[a][b]=ue});else{const h=f(i.ordering,s);h==null&&console.error(`Invalid primary well for tip pickup: ${s}`),h?.forEach(function(b){l.tipracks[a][b]=ue})}else if(o.channels===1)l.tipracks[a][s]=ue;else if(o.channels===96)i.ordering.reduce((b,T)=>b.concat(T),[]).forEach(function(b){l.tipracks[a][b]=ue});else{const h=f(i.ordering,s);h==null&&console.error(`Invalid primary well for tip pickup: ${s}`),h?.forEach(function(b){l.tipracks[a][b]=ue})}r.robotState.pipettes[n].tiprackId=a,r.robotState.pipettes[n].tipWell=s}const dw={clean:Ra,empty:ue,used:Qt};function fw(e,t,r){const{labwareId:n,wellNames:a,tipWellState:s="clean"}=e,o=dw[s],i=r.robotState.tipState.tipracks[n];i!=null&&a.forEach(l=>{i[l]=o})}const jr=(e,t)=>{const r=Ot(e,t);return r.type===c.THERMOCYCLER_MODULE_TYPE?r:(console.error(`Thermocycler state updater expected ${t} moduleState to be thermocycler, but it was ${r.type}`),{})},mw=(e,t,r)=>{const{moduleId:n,celsius:a}=e,{robotState:s}=r,o=jr(s,n);o.currentBlockActivity={type:"blockTargetTemp",blockTargetTemp:a}},hw=(e,t,r)=>{const{moduleId:n,celsius:a}=e,{robotState:s}=r,o=jr(s,n);o.lidTargetTemp=a},_w=(e,t,r)=>{},yw=(e,t,r)=>{},bw=(e,t,r)=>{},Tw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=jr(a,n);s.currentBlockActivity={type:"blockDeactivated"}},gw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=jr(a,n);s.lidTargetTemp=null},Iw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=jr(a,n);s.lidOpen=!1},Ew=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=jr(a,n);s.lidOpen=!0},ww=(e,t,r)=>{const{profile:n,...a}=e;Ry({profileElements:n,...a},t,r)},Ry=(e,t,r)=>{const n=NaN+D();ky({...e,taskId:n},t,r),vy(n,r,c.THERMOCYCLER_MODULE_TYPE)},ky=(e,t,r)=>{const{moduleId:n,taskId:a,profileElements:s}=e,{robotState:o}=r,i=jr(o,n);i.currentBlockActivity={type:"profile",profileElements:s,taskId:a??null},i.numProfilesStarted++},Sw=e=>{if(e.currentBlockActivity.type==="profile"){const t=Aw(e.currentBlockActivity.profileElements);return e.currentBlockActivity=t!=null?{type:"blockTargetTemp",blockTargetTemp:t}:{type:"blockDeactivated"},!0}else return!1};function Aw(e){const t=Yc(pp(e));return t!=null?t.celsius:null}const Lw=(e,t)=>{const[r,n]=[e.ordering,t.ordering];if(r.length!==n.length)return!1;for(let a=0;a<r.length;a++){const[s,o]=[r[a],n[a]];if(s.length!==o.length)return!1}return!0},op=(e,t,r)=>{const{labware:n,liquidState:a}=t,o=ks(n,e).filter(i=>i in r&&c.getIsPipettableLabware(r[i].def));if(o.length===1){const i=a.labware[o[0]];Object.entries(i).forEach(([l,u])=>{i[l]={}});return}if(o.length===2){const i=o[0],l=o[1];if(!Lw(r[i].def,r[l].def))return;const u=a.labware[i],p=a.labware[l];Object.entries(p).forEach(([d,f])=>{const _=u[d];Object.entries(_).forEach(([m,{volume:h}])=>{f[m]={volume:m in f?f[m].volume+h:h}}),u[d]={}})}},Ow=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=ot(a,n);s!=null&&(s.ventStatus=dc)},Rw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=ot(a,n);s!=null&&(s.ventStatus=ka)},kw=(e,t,r)=>{const{moduleId:n,gaugePressure:a,duration:s,ventAfter:o=!0,taskId:i}=e,{robotState:l}=r,{labwareEntities:u}=t,p=ot(l,n);p!=null&&(op(n,l,u),s==null||i==null?p.currentPumpActivity={type:"indefiniteHold",mode:ju,targetPressure:a}:(p.currentPumpActivity={type:"timedHold",mode:ju,targetPressure:a,durationSeconds:s,taskId:i,ventAfter:o},p.numPumpActivitiesStarted++),p.ventStatus=ka)},vw=(e,t,r)=>{const{moduleId:n,percentPower:a,duration:s,ventAfter:o=!0,taskId:i}=e,{robotState:l}=r,{labwareEntities:u}=t,p=ot(l,n);p!=null&&(op(n,l,u),s==null||i==null?p.currentPumpActivity={type:"indefiniteHold",mode:zu,targetPower:a}:(p.currentPumpActivity={type:"timedHold",mode:zu,targetPower:a,durationSeconds:s,taskId:i,ventAfter:o},p.numPumpActivitiesStarted++),p.ventStatus=ka)},Pw=(e,t,r)=>{const{moduleId:n}=e,{robotState:a}=r,s=ot(a,n);s!=null&&(s.currentPumpActivity={type:"pumpDeactivated"})},Cw=(e,t,r)=>{const{moduleId:n,steps:a,taskId:s,ventAfter:o=!0}=e,{robotState:i}=r,{labwareEntities:l}=t,u=ot(i,n);u==null||s==null||(op(n,i,l),u.currentPumpActivity={type:"profile",profileElements:a,taskId:s,ventAfter:o},u.numPumpActivitiesStarted++)},Nw=e=>{if(e.currentPumpActivity.type==="timedHold"||e.currentPumpActivity.type==="profile"){const t=e.currentPumpActivity.ventAfter;return e.currentPumpActivity={type:"pumpDeactivated"},e.ventStatus=t?dc:ka,!0}return!1};function Dw(e,t,r){for(const n of e.task_ids)vy(n,r)||r.warnings.push(iI())}const vy=(e,t,r)=>{const{robotState:n}=t,a=Object.values(n.modules).find(s=>{if(r&&s.moduleState.type!==r)return!1;const o=s.moduleState.type==="thermocyclerModuleType"&&s.moduleState.currentBlockActivity.type==="profile"&&s.moduleState.currentBlockActivity.taskId===e,i=s.moduleState.type==="vacuumModuleType"&&(s.moduleState.currentPumpActivity.type==="timedHold"||s.moduleState.currentPumpActivity.type==="profile")&&s.moduleState.currentPumpActivity.taskId===e;return o||i});return a==null?!1:a.moduleState.type==="thermocyclerModuleType"?Sw(a.moduleState):a.moduleState.type==="vacuumModuleType"?Nw(a.moduleState):(console.log(`unexpected module type with task: ${a.moduleState.type}`),!1)},Un=(e,t)=>{const r=Ot(e,t);return r.type===c.HEATERSHAKER_MODULE_TYPE?r:(console.error(`Heater-Shaker state updater expected ${t} moduleState to be heaterShaker, but it was ${r.type}`),{})},Mw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,celsius:s}=e,o=Un(n,a);o.targetTemp=s},Fw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Un(n,a);s.targetTemp=null},Uw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,rpm:s}=e,o=Un(n,a);o.targetSpeed=s},qw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Un(n,a);s.targetSpeed=null},$w=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Un(n,a);s.latchOpen=!0},Vw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Un(n,a);s.latchOpen=!1},Bw=(e,t,r)=>{const{pipetteId:n}=e,{robotState:a}=r,s=a.pipettes[n].entityId??"";Ns({invariantContext:t,pipetteId:n,prevLiquidState:a.liquidState,useFullVolume:!0,robotStateAndWarnings:r,entityId:s})},xw=(e,t,r)=>{const{pipetteId:n}=e,{robotState:a}=r,s=a.pipettes[n].entityId??"";a.tipState.pipettes[n]={hasTip:!1,tiprackURI:null},Ns({invariantContext:t,prevLiquidState:a.liquidState,pipetteId:n,useFullVolume:!0,robotStateAndWarnings:r,entityId:s}),a.pipettes[n].tiprackId=void 0};function Py(e,t){e.type===c.MAGNETIC_MODULE_TYPE&&(e.engaged=t)}function Hw(e,t,r){const{moduleId:n}=e,{robotState:a}=r,s=Ot(a,n);Py(s,!0)}function zw(e,t,r){const{moduleId:n}=e,{robotState:a}=r,s=Ot(a,n);Py(s,!1)}const Au=(e,t)=>{if(t==null)return console.error("expected to find defURI but could not in getLabwareByDefURI"),null;const r=e.findIndex(a=>a.labwareDefURI===t);if(r===-1)return null;const[n]=e.splice(r,1);return n.id},Cy=(e,t,r,n)=>{const a=e.labwareInHopper??[];t.forEach(s=>{const{primaryLabwareId:o,adapterLabwareId:i,lidLabwareId:l}=s;r.labware[o]={stack:[o,...l!=null?[l]:[],...n]},i!=null&&(r.labware[i]={stack:[i,o,...l!=null?[l]:[],...n]}),l!=null&&(r.labware[l]={stack:[l,...n]}),a.push({primaryLabwareId:o,adapterLabwareId:i??null,lidLabwareId:l??null})}),e.labwareInHopper=a},Ny=(e,t,r,n,a,s,o,i)=>{const u=Object.entries(e.labware).filter(([d,f])=>f[s]===t[s]).map(([d])=>d).map(d=>r[d]),p=[];for(let d=0;d<n;d++){const f=Au(u,t.storedLabwareDetails?.primaryLabwareURI),_=o!=null?Au(u,t.storedLabwareDetails?.adapterLabwareURI):null,m=i!=null?Au(u,t.storedLabwareDetails?.lidLabwareURI):null;f!=null&&(e.labware[f]={stack:[f,...m!=null?[m]:[],...a]},_!=null&&(e.labware[_]={stack:[_,f,...m!=null?[m]:[],...a]}),m!=null&&(e.labware[m]={stack:[m,...a]}),p.push({primaryLabwareId:f,adapterLabwareId:_,lidLabwareId:m})),t.labwareInHopper=p}},jw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=Object.entries(n.labware).filter(([,i])=>i.stack.includes(Ze)&&i.stack.includes(a)),o=mt(n,a);o!=null&&o.labwareInHopper!=null&&(e.count!=null?o.labwareInHopper=o.labwareInHopper.slice(0,e.count):o.labwareInHopper=[]),s.forEach(([i])=>{n.labware[i]={...n.labware[i],stack:[i,c.SYSTEM_LOCATION]}})},Gw=(e,t,r)=>{const{robotState:n}=r,{labwareEntities:a}=t,{moduleId:s,labware:o}=e,i=n.modules[s].slot,l=mt(n,s);if(l==null||l.storedLabwareDetails==null)return;const{primaryLabwareURI:u,adapterLabwareURI:p,lidLabwareURI:d}=l.storedLabwareDetails,f=[];for(const b of o){const T=a[b].labwareDefURI;if(T===u)f.push({primaryLabwareId:b,adapterLabwareId:null,lidLabwareId:null});else if(T===p){const y=f[f.length-1];y&&(y.adapterLabwareId=b)}else if(T===d){const y=f[f.length-1];y&&(y.lidLabwareId=b)}}const _=[Ze,s,i];for(const b of f){const T=[b.adapterLabwareId,b.primaryLabwareId,b.lidLabwareId,..._].filter(A=>A!=null);n.labware[b.primaryLabwareId]={...n.labware[b.primaryLabwareId],stack:T.slice(T.indexOf(b.primaryLabwareId))},b.adapterLabwareId!=null&&(n.labware[b.adapterLabwareId]={...n.labware[b.adapterLabwareId],stack:T.slice(T.indexOf(b.adapterLabwareId))}),b.lidLabwareId!=null&&(n.labware[b.lidLabwareId]={...n.labware[b.lidLabwareId],stack:T.slice(T.indexOf(b.lidLabwareId))});let y=null;for(const A of T)a[A]!=null&&(y==null?n.labware[A].stackedOnNode={kind:"inStackerHopper",moduleId:s}:n.labware[A].stackedOnNode={labwareId:y},y=A)}const m=l.labwareInHopper??[],h=f.map(({primaryLabwareId:b,adapterLabwareId:T,lidLabwareId:y})=>({primaryLabwareId:b,adapterLabwareId:T,lidLabwareId:y}));l.labwareInHopper=[...m,...h]},Ww=(e,t,r)=>{const{robotState:n}=r,{labwareEntities:a}=t,{moduleId:s,primaryLabware:o,initialCount:i,adapterLabware:l,lidLabware:u,initialStoredLabware:p}=e,d=n.modules[s].slot,f=mt(n,s),_=[Ze,s,d];f!=null&&(f.storedLabwareDetails={primaryLabwareURI:`${o.namespace}/${o.loadName}/${o.version}`,adapterLabwareURI:l!=null?`${l.namespace}/${l.loadName}/${l.version}`:null,lidLabwareURI:u!=null?`${u.namespace}/${u.loadName}/${u.version}`:null},i!=null?Ny(n,f,a,i,_,"setStoredLabwareCount",l?.loadName,u?.loadName):p!=null&&Cy(f,p,n,_),f.setStoredLabwareCount=(f?.setStoredLabwareCount??0)+1)},Yw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,labware:s}=e,{labwareEntities:o}=t,i=n.modules[a].slot,l=mt(n,a);if(l==null)return;const u=s.map(I=>I.split(":")[1]),p=new Set(u),d=Array.from(p),f=d.find(I=>Object.values(o).find(S=>S.labwareDefURI===I&&!S.def.allowedRoles?.includes("lid")&&!S.def.allowedRoles?.includes("adapter"))),_=d.find(I=>Object.values(o).find(S=>S.labwareDefURI===I&&S.def.allowedRoles?.includes("adapter"))),m=d.find(I=>Object.values(o).find(S=>S.labwareDefURI===I&&S.def.allowedRoles?.includes("lid")));if(f==null)throw new Error(`expected to find primaryLabwareURI for storedLabwareDetails but could not with labware ${s}`);l.storedLabwareDetails={primaryLabwareURI:f,adapterLabwareURI:_??null,lidLabwareURI:m??null};const h=[];for(const I of s){const S=o[I].labwareDefURI;if(S===f)h.push({primary:I,adapter:null,lid:null});else if(S===_){const L=h[h.length-1];L&&(L.adapter=I)}else if(S===m){const L=h[h.length-1];L&&(L.lid=I)}}const b=[Ze,a,i];for(const I of h){const S=[I.adapter,I.primary,I.lid,...b].filter(L=>L!=null);n.labware[I.primary]={...n.labware[I.primary],stack:S.slice(S.indexOf(I.primary))},I.adapter!=null&&(n.labware[I.adapter]={...n.labware[I.adapter],stack:S.slice(S.indexOf(I.adapter))}),I.lid!=null&&(n.labware[I.lid]={...n.labware[I.lid],stack:S.slice(S.indexOf(I.lid))})}const T=l.labwareInHopper??[],y=h.map(I=>({primaryLabwareId:I.primary,adapterLabwareId:I.adapter,lidLabwareId:I.lid})),A=new Map(T.map(I=>[I.primaryLabwareId,I])),w=[];for(const I of y)w.push(I),A.delete(I.primaryLabwareId);for(const I of T)A.has(I.primaryLabwareId)&&w.push(I);l.labwareInHopper=w},Kw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a,count:s,labwareToStore:o}=e,{labwareEntities:i}=t,l=n.modules[a].slot,u=mt(n,a),p=[Ze,a,l];if(u!=null){const d=u.storedLabwareDetails?.adapterLabwareURI,f=u.storedLabwareDetails?.lidLabwareURI;s!=null?Ny(n,u,i,s,p,"fillCount",d,f):o!=null&&Cy(u,o,n,p),u.fillCount=(u?.fillCount??0)+1}},Xw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=mt(n,a),o=n.modules[a].slot;if(s!=null){const{labwareInHopper:i,labwareOnShuttle:l}=s;if(i!=null&&i.length>0&&l==null){const u=i[0];s.labwareOnShuttle=u,i.shift();const p=[o];let d=null;for(const f of Jt){const _=u[f];if(_!=null){if(p.unshift(_),n.labware[_].stack=[...p],d==null){const m=Rs(o);m!=null?n.labware[_].stackedOnNode={addressableAreaName:m}:console.warn(`Could not find an addressable area for retrieved labware in stacker module ${a} at slot ${o}`)}else n.labware[_].stackedOnNode={labwareId:d};d=_}}}}},Zw=(e,t,r)=>{const{robotState:n}=r,{moduleId:a}=e,s=mt(n,a),o=n.modules[a].slot;if(s!=null){const{labwareOnShuttle:i}=s;if(i!=null){s.labwareInHopper=[i,...s.labwareInHopper??[]],s.labwareOnShuttle=null;let l=null;for(const u of Jt){const p=i[u];p!=null&&(n.labware[p].stack=[p,Ze,a,o],l==null?(n.labware[p].stackedOnNode={kind:"inStackerHopper",moduleId:a},l=p):n.labware[p].stackedOnNode={labwareId:l})}s.storedLabwareDetails==null&&(s.storedLabwareDetails={primaryLabwareURI:t.labwareEntities[i.primaryLabwareId].labwareDefURI,adapterLabwareURI:i.adapterLabwareId!=null?t.labwareEntities[i.adapterLabwareId].labwareDefURI:null,lidLabwareURI:i.lidLabwareId!=null?t.labwareEntities[i.lidLabwareId].labwareDefURI:null})}}};function Dy(e,t,r){e.type===c.TEMPERATURE_MODULE_TYPE&&(e.targetTemperature=t,e.status=r)}function Qw(e,t,r){const{robotState:n}=r,{moduleId:a,celsius:s}=e,o=Ot(n,a);Dy(o,s,uc)}function Jw(e,t,r){const{robotState:n}=r,{moduleId:a,celsius:s}=e,o=Ot(n,a);o.type===c.TEMPERATURE_MODULE_TYPE&&s===o.targetTemperature&&(o.status=lc)}function eS(e,t,r){const{robotState:n}=r,{moduleId:a}=e,s=Ot(n,a);Dy(s,null,Oa)}function My(e,t,r){if(!e)throw new Error("undefined command passed to getNextRobotStateAndWarning");switch(e.commandType){case"aspirateWhileTracking":case"aspirate":case"aspirateInPlace":if(e.meta?.isAirGap===!0)break;cE(e.params,t,r);break;case"airGapInPlace":KI(e.params,t,r);break;case"dispenseWhileTracking":case"dispense":case"dispenseInPlace":if(e.meta?.isAirGap===!0)break;fE(e.params,t,r);break;case"blowout":pE(e.params,t,r);break;case"dropTip":mE(e.params,t,r);break;case"pickUpTip":pw(e.params,t,r);break;case"setTipState":fw(e.params,t,r);break;case"magneticModule/engage":Hw(e.params,t,r);break;case"magneticModule/disengage":zw(e.params,t,r);break;case"moveLabware":lw(e.params,t,r);break;case"waitForTasks":Dw(e.params,t,r);break;case"flexStacker/setStoredLabware":Ww(e.params,t,r);break;case"flexStacker/setStoredLabwareItems":Yw(e.params,t,r);break;case"flexStacker/prepareShuttle":case"flexStacker/closeLatch":case"flexStacker/openLatch":break;case"flexStacker/empty":jw(e.params,t,r);break;case"flexStacker/fill":Kw(e.params,t,r);break;case"flexStacker/fillItems":Gw(e.params,t,r);break;case"flexStacker/retrieve":Xw(e.params,t,r);break;case"flexStacker/store":Zw(e.params,t,r);break;case"setRailLights":case"touchTip":case"configureForVolume":case"loadPipette":case"loadLabware":case"loadModule":case"home":case"moveRelative":case"moveToSlot":case"moveToCoordinates":case"savePosition":case"waitForResume":case"waitForDuration":case"pause":case"delay":case"custom":case"comment":case"captureImage":case"prepareToAspirate":case"liquidProbe":case"loadLiquidClass":case"loadLidStack":case"loadLid":case"getTipPresence":case"identifyModule":case"getNextTip":case"retractAxis":case"sealPipetteToTip":case"tryLiquidProbe":case"unsealPipetteFromTip":case"verifyTipPresence":case"pressureDispense":case"createTimer":break;case"moveToAddressableArea":case"moveToAddressableAreaForDropTip":uw(e.params,t,r);break;case"moveToWell":cw(e.params,t,r);break;case"loadLiquid":hE(e.params,t,r);break;case"dropTipInPlace":xw(e.params,t,r);break;case"blowOutInPlace":Bw(e.params,t,r);break;case"configureNozzleLayout":dE(e.params,t,r);break;case"temperatureModule/setTargetTemperature":Qw(e.params,t,r);break;case"temperatureModule/deactivate":eS(e.params,t,r);break;case"temperatureModule/waitForTemperature":Jw(e.params,t,r);break;case"thermocycler/setTargetBlockTemperature":mw(e.params,t,r);break;case"thermocycler/setTargetLidTemperature":hw(e.params,t,r);break;case"thermocycler/waitForBlockTemperature":_w(e.params);break;case"thermocycler/waitForLidTemperature":yw(e.params);break;case"thermocycler/deactivateBlock":Tw(e.params,t,r);break;case"thermocycler/deactivateLid":gw(e.params,t,r);break;case"thermocycler/closeLid":Iw(e.params,t,r);break;case"thermocycler/openLid":Ew(e.params,t,r);break;case"thermocycler/runProfile":ww(e.params,t,r);break;case"thermocycler/runExtendedProfile":Ry(e.params,t,r);break;case"thermocycler/startRunExtendedProfile":ky(e.params,t,r);break;case"thermocycler/awaitProfileComplete":bw(e.params);break;case"heaterShaker/deactivateHeater":Fw(e.params,t,r);break;case"heaterShaker/setTargetTemperature":Mw(e.params,t,r);break;case"heaterShaker/setAndWaitForShakeSpeed":case"heaterShaker/setShakeSpeed":Uw(e.params,t,r);break;case"heaterShaker/deactivateShaker":qw(e.params,t,r);break;case"heaterShaker/openLabwareLatch":$w(e.params,t,r);break;case"heaterShaker/closeLabwareLatch":Vw(e.params,t,r);break;case"heaterShaker/waitForTemperature":break;case"absorbanceReader/openLid":GI(e.params,t,r);break;case"absorbanceReader/closeLid":WI(e.params,t,r);break;case"absorbanceReader/initialize":YI(e.params,t,r);break;case"absorbanceReader/read":break;case"vacuumModule/startSetVacuumPressure":kw(e.params,t,r);break;case"vacuumModule/startSetVacuumPower":vw(e.params,t,r);break;case"vacuumModule/openVent":Ow(e.params,t,r);break;case"vacuumModule/closeVent":Rw(e.params,t,r);break;case"vacuumModule/stopVacuum":Pw(e.params,t,r);break;case"vacuumModule/startRunProfile":Cw(e.params,t,r);break;default:console.error(`unknown command: ${e.commandType} passed to getNextRobotStateAndWarning`)}}function Fy(e,t,r){return _y({warnings:[],robotState:r},a=>{My(e,t,a)})}function ip(e,t,r){const n=yy(e);return _y({warnings:[],robotState:r},s=>{n.forEach(o=>{My(o,t,s)})})}const tS=(e,t,r)=>{const n=e.reduce((a,s,o)=>{const i=a.timeline.length===0?r:Yc(a.timeline).robotState;if(a.errors!=null)return a;const l=s(t,i);if("errors"in l)return{timeline:a.timeline,errors:l.errors};const p=yy(l.commands).reduce((f,_)=>Fy(_,t,f.robotState),{robotState:i,warnings:[]}),d={commands:l.commands,robotState:p.robotState,warnings:l.warnings,stepInfo:{stepNumber:l.stepNumber,name:l.name,description:l.description},python:l.python};return{timeline:[...a.timeline,d],errors:null}},{timeline:[],errors:null});return{timeline:n.timeline,errors:n.errors}},qn=(e,t)=>{const r=t[e]?.stack;return r!=null?G(r):""},$n=e=>{if(e.type===c.VACUUM_MODULE_TYPE){const t=e;return t.currentPumpActivity.type==="timedHold"||t.currentPumpActivity.type==="profile"}if(e.type===c.THERMOCYCLER_MODULE_TYPE){const t=e;return t.currentBlockActivity.type==="profile"||t.currentBlockActivity.type==="blockTargetTemp"}return!1},Vn=e=>{const{pipette:t,labware:r,invariantContext:n,prevRobotState:a}=e;if(n.config.OT_PD_DISABLE_MODULE_RESTRICTIONS)return!1;const s=t?n.pipetteEntities[t]:null,o=r?G(a.labware[r]?.stack):null;if(!t||!r||!s||!o)return!1;const i=Object.keys(n.moduleEntities).some(l=>{const u=n.moduleEntities[l].model;if(Dh.includes(u)){const p=a.modules[l]?.slot;return p==="1"&&o==="4"||p==="3"&&o==="6"}else return!1});return c.GEN_ONE_MULTI_PIPETTES.includes(s.name)&&i},ae=(e,t,r)=>{const n=e.reduce((a,s)=>{if(a.errors.length>0)return a;const o=s(t,a.robotState);if("errors"in o)return{robotState:a.robotState,commands:a.commands,errors:o.errors,warnings:a.warnings};const i=[...a.commands,...o.commands],l=[...a.python?[a.python]:[],...o.python?[o.python]:[]].join(`
|
|
55
|
-
`),u=ip(o.commands,t,a.robotState);return{...a,robotState:u.robotState,commands:i,warnings:[...a.warnings||[],...o.warnings||[],...u.warnings],...l&&{python:l}}},{robotState:r,commands:[],errors:[],warnings:[]});return n.errors.length>0?{errors:n.errors}:{commands:n.commands,warnings:n.warnings,...n.python&&{python:n.python}}},Va=(e,t,r)=>{const n=Fa(e,t[r]?.stack),a=n&&e[n].moduleState;return!!(a&&a.type===c.THERMOCYCLER_MODULE_TYPE&&a.lidOpen!==!0)},rS=e=>e.commandCreatorFnName!=="delay"&&e.commandCreatorFnName!=="engageMagnet"&&e.commandCreatorFnName!=="disengageMagnet"&&e.commandCreatorFnName!=="setTemperature"&&e.commandCreatorFnName!=="deactivateTemperature"&&"pipette"in e?e.pipette:null,nS=e=>e.commandCreatorFnName==="delay"||e.commandCreatorFnName==="engageMagnet"||e.commandCreatorFnName==="disengageMagnet"||e.commandCreatorFnName==="setTemperature"||e.commandCreatorFnName==="deactivateTemperature",aS=new Date("2025-03-19T00:00:00Z"),sS=2,oS=22;function iS(e,t,r){const{labware:n,modules:a,pipettes:s,commands:o,liquids:i}=e,l=t.protocolType==="python"?t.apiVersion:null,u=l!=null&&l[0]>=sS&&l[1]>=oS,p=t.protocolType==="json"&&r>=aS,d=c.getLabwareDefinitionsByURIForProtocol(o),f=i.reduce((y,A)=>{const{id:w,description:I,displayName:S,displayColor:L}=A;return{...y,[w]:{description:I,displayName:S??"Unknown Liquid",pythonName:"n/a",displayColor:L??"#B7B8B9",liquidGroupId:w}}},{}),_=a.reduce((y,A)=>{const{id:w,model:I}=A;return{...y,[w]:{id:w,type:c.getModuleType(I),model:I,pythonName:"n/a"}}},{}),m=n.reduce((y,A)=>{const{id:w,definitionUri:I}=A,S=d[I];return S==null||S.schemaVersion===3?y:{...y,[w]:{id:w,labwareDefURI:I,def:S,pythonName:"n/a"}}},{}),h=o.reduce((y,A)=>{if(A.commandType==="loadLidStack"&&A.result!=null){const{stackLabwareId:w,lidStackDefinition:I}=A.result;if(w!=null&&I!=null&&y[w]==null&&I.schemaVersion!==3)return{...y,[w]:{id:w,labwareDefURI:c.getLabwareDefURI(I),def:I,pythonName:"n/a"}}}return y},m),b=s.reduce((y,A)=>{const{id:w,pipetteName:I}=A,S=c.getPipetteSpecsV2(I),E=o.filter(v=>v.commandType==="pickUpTip"&&v.params.pipetteId===w).map(v=>h[v.params.labwareId]),g=Array.from(new Set(E.map(v=>v.labwareDefURI))),k=Array.from(new Set(E.map(v=>v.def)));return S==null||(y[w]={name:I,id:w,tiprackLabwareDef:k,tiprackDefURI:g,spec:S,pythonName:"n/a"}),y},{}),T=o.reduce((y,A)=>{if(A.commandType==="loadLidStack"&&A.result!=null){const{params:w}=A,I=Ku(w);return{...y,stagingAreaEntities:{...y.stagingAreaEntities,...I}}}else if((A.commandType==="loadLabware"||A.commandType==="loadLid")&&A.result!=null){const{params:w}=A,I=Ku(w);return{...y,stagingAreaEntities:{...y.stagingAreaEntities,...I}}}else if(A.commandType==="moveToAddressableArea"||A.commandType==="moveToAddressableAreaForDropTip"){const w=A.params.addressableAreaName,I=`${D()}:${w}`;let S=zh;w==="fixedTrash"?S="cutout12":w.includes("WasteChute")?S="cutoutD3":w.includes("movableTrash")&&(S=`cutout${w.split("movableTrash")[1]}`);let L=y.trashBinEntities;Object.values(y.trashBinEntities).some(g=>g.location===S)||(w.includes("movableTrash")?L={...y.trashBinEntities,[I]:{pythonName:"trash_bin_1",id:I,location:S}}:w==="fixedTrash"&&(L={...y.trashBinEntities,[I]:{pythonName:"trash_bin_1",id:I,location:S}}));let E=y.wasteChuteEntities;return w.includes("WasteChute")&&(E={[I]:{pythonName:"waste_chute",id:I,location:S}}),{...y,trashBinEntities:L,wasteChuteEntities:E}}return y},{wasteChuteEntities:{},trashBinEntities:{},stagingAreaEntities:{},gripperEntities:{},config:{OT_PD_DISABLE_MODULE_RESTRICTIONS:!0}});return{labwareEntities:h,pipetteEntities:b,moduleEntities:_,liquidEntities:u||p?f:{},...T}}const lS={A3:"A4",B3:"B4",C3:"C4",D3:"D4"};function uS(e,t){const r=e.reduce((o,i)=>i.commandType==="loadPipette"&&i.result!=null?{...o,[i.result.pipetteId]:{mount:i.params.mount}}:o,{}),n=e.reduce((o,i)=>{if(i.commandType==="loadModule"&&i.result!=null){const l=c.getModuleDef(i.params.model).moduleType;return{...o,[i.result.moduleId]:{slot:l===c.FLEX_STACKER_MODULE_TYPE?lS[i.params.location.slotName]:i.params.location.slotName,moduleState:Hh[l]}}}return o},{}),a=e.reduce((o,i)=>{if(i.commandType==="loadLidStack"&&i.result!=null){const{result:l}=i,u=l.locationSequences,p=l.labwareIds,d=l.stackLabwareId,f=l.stackLocationSequence,_=m=>{if(c.locationIsOffDeck(m))return[m];if("slotName"in m)return[m.slotName];if("moduleId"in m){const h=n[m.moduleId]?.slot??"offDeck";return[m.moduleId,h]}else if("addressableAreaName"in m)return[m.addressableAreaName];return["offDeck"]};if(u!=null){const m=u.reduce((T,y)=>{const A=y.find(w=>w.kind==="onLabware");return A!=null&&(T[A.labwareId]=y),T},{}),h=p.reduce((T,y,A)=>{const w=m[y]??u[A];if(w!=null){const I=Yu(w);T[y]={stack:I[0]===y?I:[y,...I]}}else{const I=i.params.location;c.locationIsOffDeck(I)?T[y]={stack:[y,I]}:"slotName"in I?T[y]={stack:[y,I.slotName]}:T[y]={stack:[y,"offDeck"]}}return T},{}),b=d!=null&&f!=null?[d,...Yu(f)]:null;return{...o,...h,...d!=null&&b!=null?{[d]:{stack:b}}:{}}}else{const m=i.params.location,h=p.reduce((T,y)=>{if(c.locationIsOffDeck(m))T[y]={stack:[y,m]};else if("slotName"in m)T[y]={stack:[y,m.slotName]};else if("moduleId"in m){const A=m.moduleId;T[y]={stack:[y,A,n[A].slot]}}else T[y]={stack:[y,"offDeck"]};return T},{}),b=d!=null?[d,..._(m)]:null;return{...o,...h,...d!=null&&b!=null?{[d]:{stack:b}}:{}}}}else if((i.commandType==="loadLabware"||i.commandType==="loadLid")&&i.result!=null){const l=[i.result.labwareId];if(c.locationIsOffDeck(i.params.location))l.push(i.params.location);else if("slotName"in i.params.location)l.push(i.params.location.slotName);else if("moduleId"in i.params.location){const u=i.params.location.moduleId;if(n[u]==null)return console.warn(`Module ${u} not found when processing loadLabware/loadLid command. `),o;l.push(i.params.location.moduleId,n[i.params.location.moduleId].slot)}else if("labwareId"in i.params.location){const u=i.params.location.labwareId;o[u]==null&&(console.warn(`Parent labware ${u} not found when processing loadLabware/loadLid command. `),o[u]={stack:[u,"offDeck"]});const p=o[u].stack;l.push(u,...p)}else l.push(i.params.location.addressableAreaName);return{...o,[i.result.labwareId]:{stack:l}}}else{if(i.commandType==="flexStacker/setStoredLabware")return sh(i).forEach(u=>{ah(o,u,"setStoredLabwareCount")}),o;if(i.commandType==="flexStacker/fill")return sh(i).forEach(u=>{ah(o,u,"fillCount")}),o}return o},{}),s=Bc({invariantContext:t,labwareLocations:a,moduleLocations:n,pipetteLocations:r});return{frame:{...ip(e,t,s),command:e[e.length-1]},invariantContext:t}}const ah=(e,t,r)=>{const n=e[t]??{stack:[t,"offDeck"]};e[t]={...n,[r]:(n[r]??0)+1}},sh=e=>e.result?.storedLabware?.flatMap(r=>[r.primaryLabwareId,r.adapterLabwareId,r.lidLabwareId].filter(n=>n!=null))??[],lp=(e,t)=>e??(t.channels===1?c.SINGLE:t.channels===96?c.ALL:c.COLUMN);var Lu,oh;function cS(){if(oh)return Lu;oh=1;var e=Ac();function t(r,n){var a;return e(r,function(s,o,i){return a=n(s,o,i),!a}),!!a}return Lu=t,Lu}var Ou,ih;function pS(){if(ih)return Ou;ih=1;var e=t_(),t=Nn(),r=cS(),n=Qe(),a=Oc();function s(o,i,l){var u=n(o)?e:r;return l&&a(o,i,l)&&(i=void 0),u(o,t(i,3))}return Ou=s,Ou}var dS=pS();const Ba=xe(dS),Bn=(e,t)=>Ba(e,r=>r.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&r.moduleState.latchOpen!==!1&&c.getAreSlotsHorizontallyAdjacent(r.slot,t)),xn=(e,t,r)=>r.channels!==1&&Ba(e,n=>n.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&c.getAreSlotsHorizontallyAdjacent(n.slot,t)),xa=(e,t,r,n)=>r.channels!==1&&!n.def.parameters.isTiprack&&Ba(e,a=>a.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&c.getAreSlotsVerticallyAdjacent(a.slot,t)),Uy=(e,t,r)=>Ba(e,(a,s)=>c.getAreSlotsHorizontallyAdjacent(r,G(a.stack))&&c.getIsLabwareAboveHeight(t[s].def,c.MAX_LABWARE_HEIGHT_EAST_WEST_HEATER_SHAKER_MM)),Ha=(e,t,r)=>{const n=Fa(e,t[r]?.stack),a=n!=null?e[n].moduleState:null;return!!(a&&a.type===c.HEATERSHAKER_MODULE_TYPE&&a.latchOpen!==!1)},Hn=(e,t,r)=>Ba(e,n=>n.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&n.moduleState.targetSpeed!=null&&n.moduleState.targetSpeed>0&&(r===c.OT2_ROBOT_TYPE?c.getAreSlotsAdjacent(n.slot,t):c.getAreFlexSlotsAdjacent(n.slot,t))),za=(e,t,r)=>{const n=Fa(e,t[r]?.stack),a=n!=null?e[n].moduleState:null;return!!(a&&a.type===c.HEATERSHAKER_MODULE_TYPE&&a.targetSpeed!==null)},Ms=e=>{const{args:t,pipetteName:r,tiprackUri:n,liquidClassValuesForTip:a}=e;let s=null;"mixBeforeAspirate"in t?s=t.mixBeforeAspirate:"mixFirstAspirate"in t&&(s=t.mixFirstAspirate);const o=fS(t),i={dispense_position:{offset:{x:t.dispenseXOffset,y:t.dispenseYOffset,z:t.dispenseZOffset},position_reference:t.dispensePositionReference},flow_rate_by_volume:[[0,t.dispenseFlowRateUlSec??0]],delay:{enabled:!!t.dispenseDelay?.seconds,...t.dispenseDelay?.seconds?{duration:t.dispenseDelay?.seconds}:{}},submerge:{delay:{enabled:!!t.dispenseSubmergeDelay?.seconds,...t.dispenseSubmergeDelay?.seconds?{duration:t.dispenseSubmergeDelay?.seconds}:{}},speed:t.dispenseSubmergeSpeed??void 0,start_position:{offset:{x:t.dispenseSubmergeXOffset,y:t.dispenseSubmergeYOffset,z:t.dispenseSubmergeZOffset},position_reference:t.dispenseSubmergePositionReference}},retract:{air_gap_by_volume:[[0,t.dispenseAirGapVolume??0]],delay:{enabled:!!t.dispenseRetractDelay?.seconds,...t.dispenseRetractDelay?.seconds?{duration:t.dispenseRetractDelay?.seconds}:{}},end_position:{offset:{x:t.dispenseRetractXOffset,y:t.dispenseRetractYOffset,z:t.dispenseRetractZOffset},position_reference:t.dispenseRetractPositionReference},speed:t.dispenseRetractSpeed??void 0,touch_tip:{enabled:t.touchTipAfterDispense,z_offset:t.touchTipAfterDispense?t.touchTipAfterDispenseOffsetMmFromTop:void 0,mm_from_edge:t.touchTipAfterDispense&&t.touchTipAfterDispenseMmFromEdge!=null?t.touchTipAfterDispenseMmFromEdge:void 0,speed:t.touchTipAfterDispense?t.touchTipAfterDispenseSpeed:void 0},blowout:{enabled:t.blowoutLocation!=null,location:qy(t.blowoutLocation),flow_rate:t.blowoutLocation!=null?t.blowoutFlowRateUlSec:void 0,...o!=null?{blowout_position:o}:{}}}},l={[r]:{[n]:{aspirate:{aspirate_position:{offset:{x:t.aspirateXOffset,y:t.aspirateYOffset,z:t.aspirateZOffset},position_reference:t.aspiratePositionReference},flow_rate_by_volume:[[0,t.aspirateFlowRateUlSec]],pre_wet:t.preWetTip,correction_by_volume:a?.aspirate.correctionByVolume??[[0,0]],delay:{enabled:!!t.aspirateDelay?.seconds,...t.aspirateDelay?.seconds?{duration:t.aspirateDelay?.seconds}:{}},mix:{enabled:!!s?.volume,...s?.times?{repetitions:s.times}:{},...s?.volume?{volume:s.volume}:{}},submerge:{delay:{enabled:!!t.aspirateSubmergeDelay?.seconds,...t.aspirateSubmergeDelay?.seconds?{duration:t.aspirateSubmergeDelay?.seconds}:{}},speed:t.aspirateSubmergeSpeed??void 0,start_position:{offset:{x:t.aspirateSubmergeXOffset,y:t.aspirateSubmergeYOffset,z:t.aspirateSubmergeZOffset},position_reference:t.aspirateSubmergePositionReference}},retract:{air_gap_by_volume:[[0,t.aspirateAirGapVolume??0]],delay:{enabled:!!t.aspirateRetractDelay?.seconds,...t.aspirateRetractDelay?.seconds?{duration:t.aspirateRetractDelay?.seconds}:{}},end_position:{offset:{x:t.aspirateRetractXOffset,y:t.aspirateRetractYOffset,z:t.aspirateRetractZOffset},position_reference:t.aspirateRetractPositionReference},speed:t.aspirateRetractSpeed??void 0,touch_tip:{enabled:t.touchTipAfterAspirate,z_offset:t.touchTipAfterAspirate?t.touchTipAfterAspirateOffsetMmFromTop:void 0,mm_from_edge:t.touchTipAfterAspirate&&t.touchTipAfterAspirateMmFromEdge!=null?t.touchTipAfterAspirateMmFromEdge:void 0,speed:t.touchTipAfterAspirate?t.touchTipAfterAspirateSpeed:void 0}}},dispense:{...i,correction_by_volume:a?.singleDispense.correctionByVolume??[[0,0]],push_out_by_volume:[[0,t.pushOut??0]],mix:{enabled:"mixInDestination"in t?t.mixInDestination!=null:!1,repetitions:"mixInDestination"in t?t.mixInDestination?.times??void 0:void 0,volume:"mixInDestination"in t?t.mixInDestination?.volume??void 0:void 0}},...t.commandCreatorFnName==="distribute"?{multi_dispense:{...i,correction_by_volume:a?.multiDispense?.correctionByVolume??[[0,0]],..."conditioningVolume"in t?{conditioning_by_volume:[[0,t.conditioningVolume??0]]}:{},..."disposalVolume"in t?{disposal_by_volume:[[0,t.disposalVolume??0]]}:{}}}:{}}}},u=JSON.parse(JSON.stringify(l));return Fr(u)},ja=(e,t)=>`${c.getAllLiquidClassDefs()[e].liquidClassName}${t?"_base_class":""}`,qy=e=>{if(e!=null)return e===zr?"source":e===Mn?"destination":"trash"},fS=e=>{const t=qy(e.blowoutLocation);return!t||t==="trash"?null:{offset:{x:e.blowoutXPosition??0,y:e.blowoutYPosition??0,z:e.blowoutOffsetFromTopMm??1},position_reference:e.blowoutPositionReference??c.POSITION_REFERENCE_TOP}},Fs=e=>{const{labwareEntities:t,tiprackIds:r}=e;return`tip_racks=[${r.map(a=>t[a].pythonName).join(", ")}]`};var Ru,lh;function mS(){if(lh)return Ru;lh=1;var e="Expected a function";function t(r){if(typeof r!="function")throw new TypeError(e);return function(){var n=arguments;switch(n.length){case 0:return!r.call(this);case 1:return!r.call(this,n[0]);case 2:return!r.call(this,n[0],n[1]);case 3:return!r.call(this,n[0],n[1],n[2])}return!r.apply(this,n)}}return Ru=t,Ru}var ku,uh;function hS(){if(uh)return ku;uh=1;var e=Jc(),t=Pn(),r=gs(),n=ar(),a=Cn();function s(o,i,l,u){if(!n(o))return o;i=t(i,o);for(var p=-1,d=i.length,f=d-1,_=o;_!=null&&++p<d;){var m=a(i[p]),h=l;if(m==="__proto__"||m==="constructor"||m==="prototype")return o;if(p!=f){var b=_[m];h=u?u(b,m,_):void 0,h===void 0&&(h=n(b)?b:r(i[p+1])?[]:{})}e(_,m,h),_=_[m]}return o}return ku=s,ku}var vu,ch;function _S(){if(ch)return vu;ch=1;var e=Es(),t=hS(),r=Pn();function n(a,s,o){for(var i=-1,l=s.length,u={};++i<l;){var p=s[i],d=e(a,p);o(d,p)&&t(u,r(p,a),d)}return u}return vu=n,vu}var Pu,ph;function yS(){if(ph)return Pu;ph=1;var e=va(),t=Nn(),r=_S(),n=rp();function a(s,o){if(s==null)return{};var i=e(n(s),function(l){return[l]});return o=t(o),r(s,i,function(l,u){return o(l,u[0])})}return Pu=a,Pu}var Cu,dh;function bS(){if(dh)return Cu;dh=1;var e=Nn(),t=mS(),r=yS();function n(a,s){return r(a,t(e(s)))}return Cu=n,Cu}var TS=bS();const gS=xe(TS);function $y(e){return Object.keys(e.wells)}const IS=(e,t)=>{const r=Object.keys(e||{}).filter(n=>e[n]&&e[n].volume>0);return{wellName:t,groupIds:r,ingreds:gS(e,n=>!n||n.volume<=0)}},ES=(e,t)=>{const r=$y(t);return ut(r,(n,a)=>{const s=e&&e[a];return{...n,[a]:s?IS(e[a],a):{}}},{})},wS=(e,t)=>{const r={};return t.forEach(n=>{const a=e!=null?Object.values(e).reduce((s,o)=>{if(o.groupIds.indexOf(n)!==-1){const l=o.ingreds[n];l?.volume!=null&&(s[o.wellName??"A1"]=l.volume)}return s},{}):{};r[n]=a}),r},SS=e=>{const t=e.flatMap(r=>r==null?[]:Object.values(r).flatMap(n=>n.groupIds.filter(a=>a!==je)));return Array.from(new Set(t))},AS=e=>{const t=e!=null?Object.values(e).flatMap(r=>r.groupIds)?.filter(r=>r!==je):[];return Array.from(new Set(t))},Vy="#737578",By=e=>{const t=Number(e);return Number.isInteger(t)?c.DEFAULT_LIQUID_COLORS[t%c.DEFAULT_LIQUID_COLORS.length]:(e!==je&&console.warn(`swatchColors expected an integer or ${je}, got ${e}`),"transparent")},LS=(e,t)=>{const r=e.filter(n=>n!==je);return r.length===0?null:r.length===1?t[r[0]]??By(r[0]):Vy},OS=(e,t)=>ut(e,(r,n,a)=>{const s=LS(n.groupIds,t);return s?{...r,[a]:s}:r},{});var Nu,fh;function RS(){if(fh)return Nu;fh=1;function e(t,r){return t>r}return Nu=e,Nu}var Du,mh;function kS(){if(mh)return Du;mh=1;var e=Nh(),t=RS(),r=La();function n(a){return a&&a.length?e(a,r,t):void 0}return Du=n,Du}var vS=kS();const PS=xe(vS),xy="2.31",CS="9.0.1";function NS(){return["import json","from opentrons import protocol_api, types"].join(`
|
|
55
|
+
`),u=ip(o.commands,t,a.robotState);return{...a,robotState:u.robotState,commands:i,warnings:[...a.warnings||[],...o.warnings||[],...u.warnings],...l&&{python:l}}},{robotState:r,commands:[],errors:[],warnings:[]});return n.errors.length>0?{errors:n.errors}:{commands:n.commands,warnings:n.warnings,...n.python&&{python:n.python}}},Va=(e,t,r)=>{const n=Fa(e,t[r]?.stack),a=n&&e[n].moduleState;return!!(a&&a.type===c.THERMOCYCLER_MODULE_TYPE&&a.lidOpen!==!0)},rS=e=>e.commandCreatorFnName!=="delay"&&e.commandCreatorFnName!=="engageMagnet"&&e.commandCreatorFnName!=="disengageMagnet"&&e.commandCreatorFnName!=="setTemperature"&&e.commandCreatorFnName!=="deactivateTemperature"&&"pipette"in e?e.pipette:null,nS=e=>e.commandCreatorFnName==="delay"||e.commandCreatorFnName==="engageMagnet"||e.commandCreatorFnName==="disengageMagnet"||e.commandCreatorFnName==="setTemperature"||e.commandCreatorFnName==="deactivateTemperature",aS=new Date("2025-03-19T00:00:00Z"),sS=2,oS=22;function iS(e,t,r){const{labware:n,modules:a,pipettes:s,commands:o,liquids:i}=e,l=t.protocolType==="python"?t.apiVersion:null,u=l!=null&&l[0]>=sS&&l[1]>=oS,p=t.protocolType==="json"&&r>=aS,d=c.getLabwareDefinitionsByURIForProtocol(o),f=i.reduce((y,A)=>{const{id:w,description:I,displayName:S,displayColor:L}=A;return{...y,[w]:{description:I,displayName:S??"Unknown Liquid",pythonName:"n/a",displayColor:L??"#B7B8B9",liquidGroupId:w}}},{}),_=a.reduce((y,A)=>{const{id:w,model:I}=A;return{...y,[w]:{id:w,type:c.getModuleType(I),model:I,pythonName:"n/a"}}},{}),m=n.reduce((y,A)=>{const{id:w,definitionUri:I}=A,S=d[I];return S==null||S.schemaVersion===3?y:{...y,[w]:{id:w,labwareDefURI:I,def:S,pythonName:"n/a"}}},{}),h=o.reduce((y,A)=>{if(A.commandType==="loadLidStack"&&A.result!=null){const{stackLabwareId:w,lidStackDefinition:I}=A.result;if(w!=null&&I!=null&&y[w]==null&&I.schemaVersion!==3)return{...y,[w]:{id:w,labwareDefURI:c.getLabwareDefURI(I),def:I,pythonName:"n/a"}}}return y},m),b=s.reduce((y,A)=>{const{id:w,pipetteName:I}=A,S=c.getPipetteSpecsV2(I),E=o.filter(v=>v.commandType==="pickUpTip"&&v.params.pipetteId===w).map(v=>h[v.params.labwareId]),g=Array.from(new Set(E.map(v=>v.labwareDefURI))),k=Array.from(new Set(E.map(v=>v.def)));return S==null||(y[w]={name:I,id:w,tiprackLabwareDef:k,tiprackDefURI:g,spec:S,pythonName:"n/a"}),y},{}),T=o.reduce((y,A)=>{if(A.commandType==="loadLidStack"&&A.result!=null){const{params:w}=A,I=Ku(w);return{...y,stagingAreaEntities:{...y.stagingAreaEntities,...I}}}else if((A.commandType==="loadLabware"||A.commandType==="loadLid")&&A.result!=null){const{params:w}=A,I=Ku(w);return{...y,stagingAreaEntities:{...y.stagingAreaEntities,...I}}}else if(A.commandType==="moveToAddressableArea"||A.commandType==="moveToAddressableAreaForDropTip"){const w=A.params.addressableAreaName,I=`${D()}:${w}`;let S=zh;w==="fixedTrash"?S="cutout12":w.includes("WasteChute")?S="cutoutD3":w.includes("movableTrash")&&(S=`cutout${w.split("movableTrash")[1]}`);let L=y.trashBinEntities;Object.values(y.trashBinEntities).some(g=>g.location===S)||(w.includes("movableTrash")?L={...y.trashBinEntities,[I]:{pythonName:"trash_bin_1",id:I,location:S}}:w==="fixedTrash"&&(L={...y.trashBinEntities,[I]:{pythonName:"trash_bin_1",id:I,location:S}}));let E=y.wasteChuteEntities;return w.includes("WasteChute")&&(E={[I]:{pythonName:"waste_chute",id:I,location:S}}),{...y,trashBinEntities:L,wasteChuteEntities:E}}return y},{wasteChuteEntities:{},trashBinEntities:{},stagingAreaEntities:{},runtimeParameters:{},gripperEntities:{},config:{OT_PD_DISABLE_MODULE_RESTRICTIONS:!0}});return{labwareEntities:h,pipetteEntities:b,moduleEntities:_,liquidEntities:u||p?f:{},...T}}const lS={A3:"A4",B3:"B4",C3:"C4",D3:"D4"};function uS(e,t){const r=e.reduce((o,i)=>i.commandType==="loadPipette"&&i.result!=null?{...o,[i.result.pipetteId]:{mount:i.params.mount}}:o,{}),n=e.reduce((o,i)=>{if(i.commandType==="loadModule"&&i.result!=null){const l=c.getModuleDef(i.params.model).moduleType;return{...o,[i.result.moduleId]:{slot:l===c.FLEX_STACKER_MODULE_TYPE?lS[i.params.location.slotName]:i.params.location.slotName,moduleState:Hh[l]}}}return o},{}),a=e.reduce((o,i)=>{if(i.commandType==="loadLidStack"&&i.result!=null){const{result:l}=i,u=l.locationSequences,p=l.labwareIds,d=l.stackLabwareId,f=l.stackLocationSequence,_=m=>{if(c.locationIsOffDeck(m))return[m];if("slotName"in m)return[m.slotName];if("moduleId"in m){const h=n[m.moduleId]?.slot??"offDeck";return[m.moduleId,h]}else if("addressableAreaName"in m)return[m.addressableAreaName];return["offDeck"]};if(u!=null){const m=u.reduce((T,y)=>{const A=y.find(w=>w.kind==="onLabware");return A!=null&&(T[A.labwareId]=y),T},{}),h=p.reduce((T,y,A)=>{const w=m[y]??u[A];if(w!=null){const I=Yu(w);T[y]={stack:I[0]===y?I:[y,...I]}}else{const I=i.params.location;c.locationIsOffDeck(I)?T[y]={stack:[y,I]}:"slotName"in I?T[y]={stack:[y,I.slotName]}:T[y]={stack:[y,"offDeck"]}}return T},{}),b=d!=null&&f!=null?[d,...Yu(f)]:null;return{...o,...h,...d!=null&&b!=null?{[d]:{stack:b}}:{}}}else{const m=i.params.location,h=p.reduce((T,y)=>{if(c.locationIsOffDeck(m))T[y]={stack:[y,m]};else if("slotName"in m)T[y]={stack:[y,m.slotName]};else if("moduleId"in m){const A=m.moduleId;T[y]={stack:[y,A,n[A].slot]}}else T[y]={stack:[y,"offDeck"]};return T},{}),b=d!=null?[d,..._(m)]:null;return{...o,...h,...d!=null&&b!=null?{[d]:{stack:b}}:{}}}}else if((i.commandType==="loadLabware"||i.commandType==="loadLid")&&i.result!=null){const l=[i.result.labwareId];if(c.locationIsOffDeck(i.params.location))l.push(i.params.location);else if("slotName"in i.params.location)l.push(i.params.location.slotName);else if("moduleId"in i.params.location){const u=i.params.location.moduleId;if(n[u]==null)return console.warn(`Module ${u} not found when processing loadLabware/loadLid command. `),o;l.push(i.params.location.moduleId,n[i.params.location.moduleId].slot)}else if("labwareId"in i.params.location){const u=i.params.location.labwareId;o[u]==null&&(console.warn(`Parent labware ${u} not found when processing loadLabware/loadLid command. `),o[u]={stack:[u,"offDeck"]});const p=o[u].stack;l.push(u,...p)}else l.push(i.params.location.addressableAreaName);return{...o,[i.result.labwareId]:{stack:l}}}else{if(i.commandType==="flexStacker/setStoredLabware")return sh(i).forEach(u=>{ah(o,u,"setStoredLabwareCount")}),o;if(i.commandType==="flexStacker/fill")return sh(i).forEach(u=>{ah(o,u,"fillCount")}),o}return o},{}),s=Bc({invariantContext:t,labwareLocations:a,moduleLocations:n,pipetteLocations:r});return{frame:{...ip(e,t,s),command:e[e.length-1]},invariantContext:t}}const ah=(e,t,r)=>{const n=e[t]??{stack:[t,"offDeck"]};e[t]={...n,[r]:(n[r]??0)+1}},sh=e=>e.result?.storedLabware?.flatMap(r=>[r.primaryLabwareId,r.adapterLabwareId,r.lidLabwareId].filter(n=>n!=null))??[],lp=(e,t)=>e??(t.channels===1?c.SINGLE:t.channels===96?c.ALL:c.COLUMN);var Lu,oh;function cS(){if(oh)return Lu;oh=1;var e=Ac();function t(r,n){var a;return e(r,function(s,o,i){return a=n(s,o,i),!a}),!!a}return Lu=t,Lu}var Ou,ih;function pS(){if(ih)return Ou;ih=1;var e=t_(),t=Nn(),r=cS(),n=Qe(),a=Oc();function s(o,i,l){var u=n(o)?e:r;return l&&a(o,i,l)&&(i=void 0),u(o,t(i,3))}return Ou=s,Ou}var dS=pS();const Ba=xe(dS),Bn=(e,t)=>Ba(e,r=>r.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&r.moduleState.latchOpen!==!1&&c.getAreSlotsHorizontallyAdjacent(r.slot,t)),xn=(e,t,r)=>r.channels!==1&&Ba(e,n=>n.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&c.getAreSlotsHorizontallyAdjacent(n.slot,t)),xa=(e,t,r,n)=>r.channels!==1&&!n.def.parameters.isTiprack&&Ba(e,a=>a.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&c.getAreSlotsVerticallyAdjacent(a.slot,t)),Uy=(e,t,r)=>Ba(e,(a,s)=>c.getAreSlotsHorizontallyAdjacent(r,G(a.stack))&&c.getIsLabwareAboveHeight(t[s].def,c.MAX_LABWARE_HEIGHT_EAST_WEST_HEATER_SHAKER_MM)),Ha=(e,t,r)=>{const n=Fa(e,t[r]?.stack),a=n!=null?e[n].moduleState:null;return!!(a&&a.type===c.HEATERSHAKER_MODULE_TYPE&&a.latchOpen!==!1)},Hn=(e,t,r)=>Ba(e,n=>n.moduleState.type===c.HEATERSHAKER_MODULE_TYPE&&n.moduleState.targetSpeed!=null&&n.moduleState.targetSpeed>0&&(r===c.OT2_ROBOT_TYPE?c.getAreSlotsAdjacent(n.slot,t):c.getAreFlexSlotsAdjacent(n.slot,t))),za=(e,t,r)=>{const n=Fa(e,t[r]?.stack),a=n!=null?e[n].moduleState:null;return!!(a&&a.type===c.HEATERSHAKER_MODULE_TYPE&&a.targetSpeed!==null)},Ms=e=>{const{args:t,pipetteName:r,tiprackUri:n,liquidClassValuesForTip:a}=e;let s=null;"mixBeforeAspirate"in t?s=t.mixBeforeAspirate:"mixFirstAspirate"in t&&(s=t.mixFirstAspirate);const o=fS(t),i={dispense_position:{offset:{x:t.dispenseXOffset,y:t.dispenseYOffset,z:t.dispenseZOffset},position_reference:t.dispensePositionReference},flow_rate_by_volume:[[0,t.dispenseFlowRateUlSec??0]],delay:{enabled:!!t.dispenseDelay?.seconds,...t.dispenseDelay?.seconds?{duration:t.dispenseDelay?.seconds}:{}},submerge:{delay:{enabled:!!t.dispenseSubmergeDelay?.seconds,...t.dispenseSubmergeDelay?.seconds?{duration:t.dispenseSubmergeDelay?.seconds}:{}},speed:t.dispenseSubmergeSpeed??void 0,start_position:{offset:{x:t.dispenseSubmergeXOffset,y:t.dispenseSubmergeYOffset,z:t.dispenseSubmergeZOffset},position_reference:t.dispenseSubmergePositionReference}},retract:{air_gap_by_volume:[[0,t.dispenseAirGapVolume??0]],delay:{enabled:!!t.dispenseRetractDelay?.seconds,...t.dispenseRetractDelay?.seconds?{duration:t.dispenseRetractDelay?.seconds}:{}},end_position:{offset:{x:t.dispenseRetractXOffset,y:t.dispenseRetractYOffset,z:t.dispenseRetractZOffset},position_reference:t.dispenseRetractPositionReference},speed:t.dispenseRetractSpeed??void 0,touch_tip:{enabled:t.touchTipAfterDispense,z_offset:t.touchTipAfterDispense?t.touchTipAfterDispenseOffsetMmFromTop:void 0,mm_from_edge:t.touchTipAfterDispense&&t.touchTipAfterDispenseMmFromEdge!=null?t.touchTipAfterDispenseMmFromEdge:void 0,speed:t.touchTipAfterDispense?t.touchTipAfterDispenseSpeed:void 0},blowout:{enabled:t.blowoutLocation!=null,location:qy(t.blowoutLocation),flow_rate:t.blowoutLocation!=null?t.blowoutFlowRateUlSec:void 0,...o!=null?{blowout_position:o}:{}}}},l={[r]:{[n]:{aspirate:{aspirate_position:{offset:{x:t.aspirateXOffset,y:t.aspirateYOffset,z:t.aspirateZOffset},position_reference:t.aspiratePositionReference},flow_rate_by_volume:[[0,t.aspirateFlowRateUlSec]],pre_wet:t.preWetTip,correction_by_volume:a?.aspirate.correctionByVolume??[[0,0]],delay:{enabled:!!t.aspirateDelay?.seconds,...t.aspirateDelay?.seconds?{duration:t.aspirateDelay?.seconds}:{}},mix:{enabled:!!s?.volume,...s?.times?{repetitions:s.times}:{},...s?.volume?{volume:s.volume}:{}},submerge:{delay:{enabled:!!t.aspirateSubmergeDelay?.seconds,...t.aspirateSubmergeDelay?.seconds?{duration:t.aspirateSubmergeDelay?.seconds}:{}},speed:t.aspirateSubmergeSpeed??void 0,start_position:{offset:{x:t.aspirateSubmergeXOffset,y:t.aspirateSubmergeYOffset,z:t.aspirateSubmergeZOffset},position_reference:t.aspirateSubmergePositionReference}},retract:{air_gap_by_volume:[[0,t.aspirateAirGapVolume??0]],delay:{enabled:!!t.aspirateRetractDelay?.seconds,...t.aspirateRetractDelay?.seconds?{duration:t.aspirateRetractDelay?.seconds}:{}},end_position:{offset:{x:t.aspirateRetractXOffset,y:t.aspirateRetractYOffset,z:t.aspirateRetractZOffset},position_reference:t.aspirateRetractPositionReference},speed:t.aspirateRetractSpeed??void 0,touch_tip:{enabled:t.touchTipAfterAspirate,z_offset:t.touchTipAfterAspirate?t.touchTipAfterAspirateOffsetMmFromTop:void 0,mm_from_edge:t.touchTipAfterAspirate&&t.touchTipAfterAspirateMmFromEdge!=null?t.touchTipAfterAspirateMmFromEdge:void 0,speed:t.touchTipAfterAspirate?t.touchTipAfterAspirateSpeed:void 0}}},dispense:{...i,correction_by_volume:a?.singleDispense.correctionByVolume??[[0,0]],push_out_by_volume:[[0,t.pushOut??0]],mix:{enabled:"mixInDestination"in t?t.mixInDestination!=null:!1,repetitions:"mixInDestination"in t?t.mixInDestination?.times??void 0:void 0,volume:"mixInDestination"in t?t.mixInDestination?.volume??void 0:void 0}},...t.commandCreatorFnName==="distribute"?{multi_dispense:{...i,correction_by_volume:a?.multiDispense?.correctionByVolume??[[0,0]],..."conditioningVolume"in t?{conditioning_by_volume:[[0,t.conditioningVolume??0]]}:{},..."disposalVolume"in t?{disposal_by_volume:[[0,t.disposalVolume??0]]}:{}}}:{}}}},u=JSON.parse(JSON.stringify(l));return Fr(u)},ja=(e,t)=>`${c.getAllLiquidClassDefs()[e].liquidClassName}${t?"_base_class":""}`,qy=e=>{if(e!=null)return e===zr?"source":e===Mn?"destination":"trash"},fS=e=>{const t=qy(e.blowoutLocation);return!t||t==="trash"?null:{offset:{x:e.blowoutXPosition??0,y:e.blowoutYPosition??0,z:e.blowoutOffsetFromTopMm??1},position_reference:e.blowoutPositionReference??c.POSITION_REFERENCE_TOP}},Fs=e=>{const{labwareEntities:t,tiprackIds:r}=e;return`tip_racks=[${r.map(a=>t[a].pythonName).join(", ")}]`};var Ru,lh;function mS(){if(lh)return Ru;lh=1;var e="Expected a function";function t(r){if(typeof r!="function")throw new TypeError(e);return function(){var n=arguments;switch(n.length){case 0:return!r.call(this);case 1:return!r.call(this,n[0]);case 2:return!r.call(this,n[0],n[1]);case 3:return!r.call(this,n[0],n[1],n[2])}return!r.apply(this,n)}}return Ru=t,Ru}var ku,uh;function hS(){if(uh)return ku;uh=1;var e=Jc(),t=Pn(),r=gs(),n=ar(),a=Cn();function s(o,i,l,u){if(!n(o))return o;i=t(i,o);for(var p=-1,d=i.length,f=d-1,_=o;_!=null&&++p<d;){var m=a(i[p]),h=l;if(m==="__proto__"||m==="constructor"||m==="prototype")return o;if(p!=f){var b=_[m];h=u?u(b,m,_):void 0,h===void 0&&(h=n(b)?b:r(i[p+1])?[]:{})}e(_,m,h),_=_[m]}return o}return ku=s,ku}var vu,ch;function _S(){if(ch)return vu;ch=1;var e=Es(),t=hS(),r=Pn();function n(a,s,o){for(var i=-1,l=s.length,u={};++i<l;){var p=s[i],d=e(a,p);o(d,p)&&t(u,r(p,a),d)}return u}return vu=n,vu}var Pu,ph;function yS(){if(ph)return Pu;ph=1;var e=va(),t=Nn(),r=_S(),n=rp();function a(s,o){if(s==null)return{};var i=e(n(s),function(l){return[l]});return o=t(o),r(s,i,function(l,u){return o(l,u[0])})}return Pu=a,Pu}var Cu,dh;function bS(){if(dh)return Cu;dh=1;var e=Nn(),t=mS(),r=yS();function n(a,s){return r(a,t(e(s)))}return Cu=n,Cu}var TS=bS();const gS=xe(TS);function $y(e){return Object.keys(e.wells)}const IS=(e,t)=>{const r=Object.keys(e||{}).filter(n=>e[n]&&e[n].volume>0);return{wellName:t,groupIds:r,ingreds:gS(e,n=>!n||n.volume<=0)}},ES=(e,t)=>{const r=$y(t);return ut(r,(n,a)=>{const s=e&&e[a];return{...n,[a]:s?IS(e[a],a):{}}},{})},wS=(e,t)=>{const r={};return t.forEach(n=>{const a=e!=null?Object.values(e).reduce((s,o)=>{if(o.groupIds.indexOf(n)!==-1){const l=o.ingreds[n];l?.volume!=null&&(s[o.wellName??"A1"]=l.volume)}return s},{}):{};r[n]=a}),r},SS=e=>{const t=e.flatMap(r=>r==null?[]:Object.values(r).flatMap(n=>n.groupIds.filter(a=>a!==je)));return Array.from(new Set(t))},AS=e=>{const t=e!=null?Object.values(e).flatMap(r=>r.groupIds)?.filter(r=>r!==je):[];return Array.from(new Set(t))},Vy="#737578",By=e=>{const t=Number(e);return Number.isInteger(t)?c.DEFAULT_LIQUID_COLORS[t%c.DEFAULT_LIQUID_COLORS.length]:(e!==je&&console.warn(`swatchColors expected an integer or ${je}, got ${e}`),"transparent")},LS=(e,t)=>{const r=e.filter(n=>n!==je);return r.length===0?null:r.length===1?t[r[0]]??By(r[0]):Vy},OS=(e,t)=>ut(e,(r,n,a)=>{const s=LS(n.groupIds,t);return s?{...r,[a]:s}:r},{});var Nu,fh;function RS(){if(fh)return Nu;fh=1;function e(t,r){return t>r}return Nu=e,Nu}var Du,mh;function kS(){if(mh)return Du;mh=1;var e=Nh(),t=RS(),r=La();function n(a){return a&&a.length?e(a,r,t):void 0}return Du=n,Du}var vS=kS();const PS=xe(vS),xy="2.31",CS="9.0.1";function NS(){return["import json","from opentrons import protocol_api, types"].join(`
|
|
56
56
|
`)}function DS(e){function t(n){return n?new Date(n).toISOString():""}const r=Object.fromEntries(Object.entries({protocolName:e.protocolName,author:e.author,description:e.description,created:t(e.created),internalAppBuildDate:e.internalAppBuildDate,lastModified:t(e.lastModified),category:e.category,subcategory:e.subcategory,tags:e.tags?.length&&e.tags.join(", "),protocolDesigner:e.protocolDesigner,source:e.source}).filter(([n,a])=>a));return`metadata = ${Fr(r)}`}function MS(e){const r={robotType:{[c.OT2_ROBOT_TYPE]:"OT-2",[c.FLEX_ROBOT_TYPE]:"Flex"}[e],apiLevel:xy};return`requirements = ${Fr(r)}`}function Hy(e,t){const r=Object.keys(e).length>0,n=r?Object.values(e).map(a=>`${a.pythonName} = ${be}.load_module(${N(a.model)}, ${N(t[a.id].slot)})`).join(`
|
|
57
57
|
`):"";return r?`# Load Modules:
|
|
58
58
|
${n}`:""}function zy(e,t,r){const n=Object.values(t).filter(s=>s.def.allowedRoles?.includes("adapter")),a=Object.values(n).map(s=>{const{id:o,def:i,pythonName:l}=s,{parameters:u,namespace:p,version:d}=i,f=r[o].stack[1],_=r[o].stack.find(y=>y in e),m=r[o].stack.some(y=>y===Yh);let h,b=null;if(_!=null){const y=e[_];[h,b]=m?[be,`location=${y.pythonName}.manifold_dock`]:[y.pythonName,null]}else h=be,b=`location=${f==="offDeck"?Ln:N(f)}`;if(c.getLabwareDefIsStandard(i)){const y=[`${N(u.loadName)}`,...b?[b]:[],`namespace=${N(p)}`,`version=${d}`].join(`,
|
|
@@ -147,4 +147,4 @@ ${K(Wn.join(`,
|
|
|
147
147
|
)`,Gt=Be===St&&pe!=null&&et!=null&&et.length>0?Ga({wellSets:et,nozzles:ce,channels:Ae.channels,primaryNozzle:x}):null,Kn=Gt!=null&&it!=null&&ce===c.PARTIAL_COLUMN?tr({labwareDef:it?.def,wells:Gt,primaryNozzle:x}):Gt,Dt=pe!=null?he[pe]?.pythonName:null,lr=Kn?.map(ie=>`${Dt}[${N(ie)}]`).join(", "),Xn=[`volume=${re}`,`source=[${nn}]`,`dest=${an!=null?`[${an}]`:Qr}`,`new_tip=${N(Us(E))}`,...Pt?["return_tip=True",...en!=null?[`trash_location=${en}`]:[]]:[`trash_location=${Jr}`,"keep_last_tip=True"],...Ae.channels>1?["group_wells=False"]:[],...Tr.filteredSortedTiprackIds.length>0?[Fs({labwareEntities:he,tiprackIds:Tr.filteredSortedTiprackIds})]:[],`liquid_class=${Yn}`,...Gt!=null&&Dt!=null?[`tips=[${lr}]`]:[]],Ir=()=>({commands:[],python:`${br}.transfer_with_liquid_class(
|
|
148
148
|
${K(Xn.join(`,
|
|
149
149
|
`))},
|
|
150
|
-
)`}),Zn=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??s,on=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??$,Qn=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??s,ln=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??$,Er=IA(Ue,k);let wr=null,Jn=null;const ye=[...Er.reduce((ie,yt,Mt)=>{const[Le,De]=yt,ea=Ct.reduce((le,Ye,ur)=>{const Sr=Mt===0&&ur===0,Ar=Mt+1===Er.length,un=ur+1===Ct.length&&Ar;let bt=!1;E==="always"?bt=!0:E==="once"?bt=Sr:E==="perSource"?bt=Le!==wr:E==="perDest"&&(bt=Sr||De!==Jn);const ra=c.LOW_VOLUME_PIPETTES.includes(Nt)?[R(An,{pipetteId:U,volume:Ye})]:[];let cr=[];if(bt){const It=Gt?.shift();cr=[O(Ya,{pipette:U,primaryNozzle:x,nozzles:ce,dropTipLocation:Pt&&We!=null?We:P,tipRack:Z,...ce!=null?{nozzles:ce}:{},...Be===St&&It!=null&&pe!=null?{tipSelectionArgs:{tipRackId:pe,tipWell:It}}:{}})]}const Lr=he[H]?.def.wells[Le]?.depth??null,Wt=c.getMmFromBottom(I,o,Lr),Yt=c.getMmFromBottom(y,m,Lr),cn=c.getMmFromBottom(f,l,Lr);Wt!=null&&Yt!=null&&Wt>Yt&&_e.push(vh());const Or=Ur({retractZOffset:f,retractPositionReference:l,labwareId:H,labwareEntities:he,well:Le}),pr=!Or&&Le!=null?[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[],pn=Ur({retractZOffset:He,retractPositionReference:Te,labwareId:g,labwareEntities:he,well:De}),Oe=!pn&&De!=null?[R(B,{pipetteId:U,labwareId:g,wellName:De,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[];Wt!=null&&cn!=null&&Wt>cn&&_e.push(Ph());const Kt=[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})],Rr=[R(Lt,{pipetteId:U})],Tt=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Xt=q!=null?[R(me,{seconds:q.seconds})]:[],na=lt>0&&!bt&&(ur>0||Mt>0)?[R(Xe,{isAirGap:!0,pipetteId:U,volume:lt,flowRate:ln,...Tt>0?{correctionVolume:Tt}:{},pushOut:0}),...Xt]:[],dn=[...Kt,...na,...ra,...Rr],fn=[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:Kr}),R(B,{pipetteId:U,labwareId:H,...h!=null?{speed:h}:{},wellName:Le,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[o],offset:{x:A,y:w,z:I}}}),..._!=null&&_.seconds>0?[R(me,{seconds:_.seconds})]:[]],aa=z?Dr({pipette:U,volume:Ye,times:1,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:$,aspirateDelaySeconds:a?.seconds??0,dispenseDelaySeconds:q?.seconds??0,finalPushOut:0,invariantContext:t,liquidClass:V,tiprack:Z,generatePython:!1}):[],mn=M!=null?Dr({pipette:U,volume:M.volume,times:M.times,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:$,aspirateDelaySeconds:a?.seconds,dispenseDelaySeconds:q?.seconds,finalPushOut:0,invariantContext:t,liquidClass:V,tiprack:Z,generatePython:!1}):[],kr=a!=null?[R(me,{seconds:a.seconds})]:[],sa=ht?[R(Et,{pipetteId:U,labwareId:H,wellName:Le,...Rt!=null?{mmFromEdge:Rt}:{},zOffsetFromTop:_t,...Re!=null?{speed:Re}:{}}),...j>0&&Or?[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:or})]:[]]:[],Me=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,vr=j>0?[...pr,R(At,{pipetteId:U,volume:j,flowRate:Zn,...Me>0?{correctionVolume:Me}:{}}),...kr]:[],hn=[R(Na,{pipetteId:U,volume:Ye,flowRate:s,...Zr>0?{correctionVolume:Zr}:{}}),...kr],dr=[R(B,{pipetteId:U,labwareId:H,...u!=null?{speed:u}:{},wellName:Le,wellLocation:or}),...i!=null&&i?.seconds>0?[R(me,{seconds:i.seconds})]:[]],Pr=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Zt=De!=null?[R(B,{pipetteId:U,labwareId:g,wellName:De,wellLocation:yr}),...j>0?[R(Xe,{isAirGap:!0,pipetteId:U,volume:j,flowRate:on,pushOut:0,...Pr>0?{correctionVolume:Pr}:{}}),...Xt]:[],R(B,{pipetteId:U,labwareId:g,...Se!=null?{speed:Se}:{},wellName:De,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[ee],offset:{x:X,y:W,z:C}}}),...Ve!=null&&Ve.seconds>0?[R(me,{seconds:Ve.seconds})]:[]]:[R(Fe,{fixtureId:g,pipetteId:U,offset:{x:0,y:0,z:0}})],fr=oe!=null&&De!=null?0:F,oa=[R(Xe,{pipetteId:U,volume:Ye,flowRate:$,...fr!=null?{pushOut:fr}:{},...gr>0?{correctionVolume:gr}:{}}),...Xt],Za=oe!=null&&De!=null?Dr({pipette:U,volume:oe.volume,times:oe.times,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:$,aspirateDelaySeconds:a?.seconds,dispenseDelaySeconds:q?.seconds,finalPushOut:F,invariantContext:t,liquidClass:V,tiprack:Z,generatePython:!1}):[],Vs=De!=null?[R(B,{pipetteId:U,labwareId:g,...se!=null?{speed:se}:{},wellName:De,wellLocation:ir}),...de!=null&&de?.seconds>0?[R(me,{seconds:de.seconds})]:[]]:[],Qa=R(Dn,{pipetteId:U,flowRate:S}),ia=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,gt=(It,Cr=!0)=>lt>0&&!(E==="never"&&un&&It)?[...Cr?Oe:[],R(Lt,{pipetteId:U}),R(At,{pipetteId:U,volume:lt,flowRate:Qn,...ia>0?{correctionVolume:ia}:{}}),...kr]:[],_n=It=>De!=null&&tt?[R(Et,{pipetteId:U,labwareId:g,wellName:De,...ge!=null?{mmFromEdge:ge}:{},zOffsetFromTop:ke,...Ne!=null?{speed:Ne}:{}}),...gt(It).length>0&&pn?[R(B,{pipetteId:U,labwareId:g,wellName:De,wellLocation:ir})]:[]]:[];let Ft=[];switch(L){case null:case void 0:Ft=[..._n(!0),...gt(!0)];break;case Mn:Ft=[Qa,..._n(!0),...gt(!0)];break;case zr:Ft=[..._n(!0),...gt(!1),R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:{origin:c.WELL_ORIGIN_TOP}}),Qa,...tt&&!rt?[R(Et,{pipetteId:U,labwareId:H,wellName:Le,...ge!=null?{mmFromEdge:ge}:{},zOffsetFromTop:ke,...Ne!=null?{speed:Ne}:{}})]:[],...gt(!0).length>0?[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:{origin:c.WELL_ORIGIN_TOP}})]:[],...gt(!0,!1)];break;default:L in Ge?Ft=[..._n(!1),...gt(!1),R(cb,{pipetteId:U,flowRate:S,trashId:L}),...gt(!0,!1)]:L in Y&&(Ft=[R(pb,{pipetteId:U,flowRate:S,wasteChuteId:L}),...gt(!0,!1)]);break}const Ja=Pt&&(un||E==="always")?[R(Hr,{pipette:U,dropTipLocation:Z,isReturnTip:Pt})]:[],Ut=[...cr,...dn,...fn,...mn,...aa,...hn,...dr,...sa,...vr,...Zt,...oa,...Za,...Vs,...Ft,...Ja];return wr=Le,Jn=De,[...le,...Ut]},[]);return[...ie,...ea]},[]),Ir];return ae(ye,t,r)},Eb=(e,t,r)=>ae([O(Da,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),O(Nc,{...e,commandCreatorFnName:"vacuumSetPumpPower"})],t,r),wb=(e,t,r)=>ae([O(Da,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),O(Dc,{...e,commandCreatorFnName:"vacuumSetPumpPressure"})],t,r),Sb=(e,t,r)=>{const{ventAfter:n}=e;return ae([O(Da,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),O(Mc,{...e,commandCreatorFnName:"vacuumStartRunProfile",ventAfter:n})],t,r)},Ab=(e,t,r)=>{const n=`[${e.task_ids.join(", ")}]`,a=`${be}.wait_for_tasks(${n})`;return{commands:[{key:D(),commandType:"waitForTasks",params:e}],python:a}},Lb=(e,t,r)=>{const{waitCondition:n}=e;return n==="thermocyclerProfileComplete"?EA(e,t,r):n==="vacuumProfileComplete"||n==="vacuumStateComplete"?wA(e,t,r):{errors:[cT(n)]}},EA=(e,t,r)=>{const{moduleId:n}=e,a=[],s=$s(r,n);if(s==null)return{errors:[Q()]};if(s.currentBlockActivity.type!=="profile")return{errors:[dp()]};const{taskId:o}=s.currentBlockActivity;return o==null?{errors:[dp()]}:(a.push(O(Ab,{task_ids:[o]})),ae(a,t,r))},wA=(e,t,r)=>{const{moduleId:n}=e,a=[],s=ot(r,n);if(s==null)return{errors:[Q()]};if(s.currentPumpActivity.type!=="timedHold"&&s.currentPumpActivity.type!=="profile")return{errors:[uT()]};const o=s.currentPumpActivity.taskId;return a.push(O(Ab,{task_ids:[o]})),ae(a,t,r)};var Bu,Sh;function SA(){if(Sh)return Bu;Sh=1;var e=Ty(),t=1,r=4;function n(a){return e(a,t|r)}return Bu=n,Bu}var AA=SA();const LA=xe(AA),Ob=["A1","B1","C1","D1","E1","F1","G1","H1","A2","B2","C2","D2","E2","F2","G2","H2","A3","B3","C3","D3","E3","F3","G3","H3","A4","B4","C4","D4","E4","F4","G4","H4","A5","B5","C5","D5","E5","F5","G5","H5","A6","B6","C6","D6","E6","F6","G6","H6","A7","B7","C7","D7","E7","F7","G7","H7","A8","B8","C8","D8","E8","F8","G8","H8","A9","B9","C9","D9","E9","F9","G9","H9","A10","B10","C10","D10","E10","F10","G10","H10","A11","B11","C11","D11","E11","F11","G11","H11","A12","B12","C12","D12","E12","F12","G12","H12"],Vr="p300SingleId",ba="p300MultiId",ac="p100096Id",sc="sourcePlateId",oc="destPlateId",ic="troughId",OA="A1",RA="tiprack1Id",kA={isAirGap:!0},rs=c.fixture96Plate,Ah=c.fixture12Trough,ns=c.fixtureTiprack10ul,qt=c.fixtureTiprack300ul,yn=c.fixtureTiprack1000ul,as=c.fixtureTiprackAdapter,Rb={OT_PD_DISABLE_MODULE_RESTRICTIONS:!1};function kb(e){return Ob.reduce((t,r)=>({...t,[r]:e?Ra:ue}),{})}function vA(e,t){return Array.from("ABCDEFGH").map(r=>`${r}${e}`).reduce((r,n)=>({...r,[n]:t}),{})}function vb(){const e={[sc]:{id:sc,pythonName:"mock_source_plate",labwareDefURI:c.getLabwareDefURI(rs),def:rs},[oc]:{id:oc,pythonName:"mock_dest_plate",labwareDefURI:c.getLabwareDefURI(rs),def:rs},[ic]:{id:ic,pythonName:"mock_trough",labwareDefURI:c.getLabwareDefURI(Ah),def:Ah},tiprack1Id:{id:"tiprack1Id",pythonName:"mock_tip_rack_1",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack2Id:{id:"tiprack2Id",pythonName:"mock_tip_rack_2",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack3Id:{id:"tiprack3Id",pythonName:"mock_tip_rack_3",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack4AdapterId:{id:"tiprack4AdapterId",pythonName:"mock_adapter_4",labwareDefURI:c.getLabwareDefURI(as),def:as},tiprack5AdapterId:{id:"tiprack5AdapterId",pythonName:"mock_adapter_5",labwareDefURI:c.getLabwareDefURI(as),def:as},tiprack4Id:{id:"tiprack4Id",pythonName:"mock_tip_rack_4",labwareDefURI:c.getLabwareDefURI(yn),def:yn},tiprack5Id:{id:"tiprack5Id",pythonName:"mock_tip_rack_5",labwareDefURI:c.getLabwareDefURI(yn),def:yn}},t={},r={[Hu]:{id:Hu,location:"cutoutA3",pythonName:"trash_bin_1"}},n={p10SingleId:{name:"p10_single",id:"p10SingleId",pythonName:"mock_pipette_p10",tiprackDefURI:[c.getLabwareDefURI(ns)],tiprackLabwareDef:[ns],spec:c.fixtureP10SingleV2Specs},p10MultiId:{name:"p10_multi",id:"p10MultiId",tiprackDefURI:[c.getLabwareDefURI(ns)],tiprackLabwareDef:[ns],spec:c.fixtureP10MultiV2Specs,pythonName:"mock_pipette_p10_multi"},[Vr]:{name:"p300_single",id:Vr,tiprackDefURI:[c.getLabwareDefURI(qt)],tiprackLabwareDef:[qt],spec:c.fixtureP300SingleV2Specs,pythonName:"mock_pipette"},[ba]:{name:"p300_multi",id:ba,tiprackDefURI:[c.getLabwareDefURI(qt)],tiprackLabwareDef:[qt],spec:c.fixtureP300MultiV2Specs,pythonName:"mock_pipette_p300_multi"},[ac]:{name:"p1000_96",id:ac,tiprackDefURI:[c.getLabwareDefURI(yn)],tiprackLabwareDef:[yn],spec:c.fixtureP100096V2Specs,pythonName:"mock_pipette_p1000_96"}};return{labwareEntities:e,moduleEntities:t,pipetteEntities:n,trashBinEntities:r,wasteChuteEntities:{},stagingAreaEntities:{},gripperEntities:{},liquidEntities:{},config:Rb}}const Gr=e=>{const{invariantContext:t,labwareLocations:r,moduleLocations:n,pipetteLocations:a,tiprackSetting:s}=e,o=Bc({invariantContext:t,labwareLocations:r,moduleLocations:n||{},pipetteLocations:a});return o.tipState.tipracks=rr(s,i=>kb(i)),o},jn=()=>({pipetteLocations:{[Vr]:{mount:"left",tiprackId:"tiprack1Id"},[ba]:{mount:"right",tiprackId:"tiprack1Id"}},labwareLocations:{tiprack1Id:{stack:["tiprack1Id","1"]},tiprack2Id:{stack:["tiprack2Id","5"]},tiprack4AdapterId:{stack:["tiprack4AdapterId","7"]},tiprack5AdapterId:{stack:["tiprack5AdapterId","8"]},tiprack4Id:{stack:["tiprack4Id","tiprack4AdapterId","7"]},tiprack5Id:{stack:["tiprack5Id","tiprack5AdapterId","8"]},sourcePlateId:{stack:["sourcePlateId","2"]},destPlateId:{stack:["destPlateId","3"]}},moduleLocations:{}}),Pb=()=>({pipetteLocations:{[Vr]:{mount:"left"},[ba]:{mount:"right"}},labwareLocations:{tiprack1Id:{stack:["tiprack1Id","B1"]},tiprack2Id:{stack:["tiprack2Id","A2"]},sourcePlateId:{stack:["sourcePlateId","offDeck"]},destPlateId:{stack:["destPlateId","C2"]}},moduleLocations:{}}),Cb=e=>Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}}),PA=e=>Gr({...Pb(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}}),CA=e=>({robotState:Cb(e),warnings:[]}),NA=e=>{const t=Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}});return t.tipState.pipettes[Vr]={hasTip:!0,tiprackURI:"tiprack1Id"},t},DA=e=>{const t=Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!0}});return t.tipState.pipettes[Vr]={hasTip:!0,tiprackURI:"tiprack1Id"},t.tipState.tipracks.tiprack1Id.A1=ue,t},MA=e=>Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!1,tiprack2Id:!1}}),FA=({temperatureModuleId:e,thermocyclerId:t})=>{const r=vb();r.moduleEntities={[e]:{id:e,type:c.TEMPERATURE_MODULE_TYPE,model:"foo",pythonName:"mock_temperature_module_1"},[t]:{id:t,type:c.THERMOCYCLER_MODULE_TYPE,model:"foo",pythonName:"mock_thermocycler"}};const n=Gr({...jn(),invariantContext:r,tiprackSetting:{tiprack1Id:!0}});return n.modules={[e]:{slot:"3",moduleState:{type:c.TEMPERATURE_MODULE_TYPE,status:Oa,targetTemperature:null}},[t]:{slot:"span7_8_10_11",moduleState:{type:c.THERMOCYCLER_MODULE_TYPE,currentBlockActivity:{type:"blockDeactivated"},lidTargetTemp:null,lidOpen:null,numProfilesStarted:0}}},{invariantContext:r,robotState:n}},UA=(e,t,r,n)=>{const a=LA(e);return a.modules[t].moduleState={type:c.TEMPERATURE_MODULE_TYPE,targetTemperature:n,status:r},a};exports.ABSORBANCE_READER_INITIAL_STATE=$h;exports.AIR=je;exports.AIR_GAP_META=kA;exports.AIR_GAP_OFFSET_FROM_TOP=xu;exports.AUTOMATIC=cc;exports.BOTTOM_UP_LABWARE_POOL_KEYS=Jt;exports.BOTTOM_UP_STORED_LABWARE_URI_KEYS=gT;exports.CLEAN=Ra;exports.COLUMN_4_SLOTS=ve;exports.CUSTOM_LABWARE_DICT_NAME=As;exports.DEFAULT_BLOWOUT_WELL=OA;exports.DEFAULT_CONFIG=Rb;exports.DEFAULT_PIPETTE=Vr;exports.DEST_LABWARE=oc;exports.DEST_WELL_BLOWOUT_DESTINATION=Mn;exports.DIRTY=Qt;exports.EMPTY=ue;exports.FAKE_HOPPER_LOCATION_MAP=Wh;exports.FIXED_TRASH_ID=Hu;exports.FLEX_STACKER_MODULE_INITIAL_STATE=Bh;exports.FLEX_TRASH_DEF_URI=bT;exports.GRIPPER_LOCATION=zh;exports.HEATERSHAKER_MODULE_INITIAL_STATE=qh;exports.HOPPER_FAKE_LOCATIONS=Gh;exports.HOPPER_STACKER_LOCATION=Ze;exports.INDENT=Ma;exports.MAGNETIC_BLOCK_INITIAL_STATE=Vh;exports.MAGNETIC_MODULE_INITIAL_STATE=Mh;exports.MANUAL=St;exports.MIXED_WELL_COLOR=Vy;exports.MODULES_WITH_COLLISION_ISSUES=Dh;exports.MODULE_INITIAL_STATE_BY_TYPE=Hh;exports.MULTI_PIPETTE=ba;exports.OFF_DECK=Ln;exports.OT2_TC_SLOTS=TT;exports.OT_2_TRASH_DEF_URI=yT;exports.PAPI_VERSION=xy;exports.PD_APPLICATION_VERSION=CS;exports.PIPETTE_96=ac;exports.PROTOCOL_CONTEXT_NAME=be;exports.SLOT_LOCATIONS_TO_FAKE_HOPPER_LOCATIONS=IT;exports.SOURCE_LABWARE=sc;exports.SOURCE_WELL_BLOWOUT_DESTINATION=zr;exports.STAGING_AREA_SLOTS=jh;exports.TEMPERATURE_APPROACHING_TARGET=uc;exports.TEMPERATURE_AT_TARGET=lc;exports.TEMPERATURE_DEACTIVATED=Oa;exports.TEMPERATURE_MODULE_INITIAL_STATE=Fh;exports.THERMOCYCLER_MODULE_INITIAL_STATE=Uh;exports.TIPRACK_1=RA;exports.TOUCHED_PIPETTABLE_LABWARE=rc;exports.TROUGH_LABWARE=ic;exports.VACUUM_AT_TARGET=vT;exports.VACUUM_DEACTIVATED=kT;exports.VACUUM_DOCK_ADDRESSABLE_AREA=Yh;exports.VACUUM_DOCK_DISPLAY_LOCATION=Xh;exports.VACUUM_DOCK_LOCATION=pc;exports.VACUUM_MODE_POWER=zu;exports.VACUUM_MODE_PRESSURE=ju;exports.VACUUM_MODULE_INITIAL_STATE=xh;exports.VACUUM_PROGRAM_PROFILE=wT;exports.VACUUM_PROGRAM_STATE=ET;exports.VACUUM_SPACER_LOAD_NAMES=Kh;exports.VACUUM_STATE_PUMP_OFF=ST;exports.VACUUM_STATE_PUMP_ON=AT;exports.VACUUM_STATE_VENT=LT;exports.VACUUM_VENT_CLOSED=ka;exports.VACUUM_VENT_OPEN=dc;exports.VACUUM_VENT_SET_CLOSED=RT;exports.VACUUM_VENT_SET_OPEN=OT;exports.ZERO_OFFSET=wt;exports._getNextTip=ib;exports._wellContentsForLabware=ES;exports.absorbanceReaderCloseInitialize=lb;exports.absorbanceReaderCloseLid=ws;exports.absorbanceReaderCloseRead=ub;exports.absorbanceReaderCollision=Ua;exports.absorbanceReaderInitialize=g_;exports.absorbanceReaderOpenLid=I_;exports.absorbanceReaderRead=E_;exports.absorbanceReaderStateGetter=zn;exports.airGapLocationHelper=wI;exports.aspirate=nI;exports.assignContainsAmongSiblings=sp;exports.blowOutInWell=Rc;exports.captureImage=w_;exports.column4StagingSlotIdFromFlexStackerShuttleAddressableArea=ny;exports.commandCreatorsTimeline=tS;exports.comment=S_;exports.consolidate=_b;exports.constructInvariantContextFromAnalysis=iS;exports.createEmptyLiquidState=Z_;exports.createStagingAreaForInvariantContext=Ku;exports.createTipLiquidState=Q_;exports.curryCommandCreator=O;exports.curryWithoutPython=R;exports.deactivateTemperature=L_;exports.deckSlotKeyForFlexStackerShuttleAddressableArea=LI;exports.delay=me;exports.delayLocationHelper=SI;exports.disengageMagnet=O_;exports.dispense=kc;exports.dispenseLocationHelper=II;exports.distribute=yb;exports.dropTip=Hr;exports.dropTipInPlace=Ss;exports.dropTipInTrash=fb;exports.dropTipInWasteChute=mb;exports.engageMagnet=R_;exports.enrichRobotStateForStackGraphTraversals=iw;exports.flexStackerEmpty=k_;exports.flexStackerFillItems=v_;exports.flexStackerRetrieve=P_;exports.flexStackerStateGetter=mt;exports.flexStackerStore=C_;exports.formatChangeTipArg=Us;exports.formatPyDict=Fr;exports.formatPyList=Ls;exports.formatPyStr=N;exports.formatPyTuple=Cc;exports.formatPyValue=dt;exports.formatPyWellLocation=Bt;exports.getAddressableAreaFromModule=ap;exports.getAddressableAreaNameFromLabwareLocation=tw;exports.getAllLargestStacks=Ay;exports.getAllProvidedAddressableAreasFromDeckConfig=Ly;exports.getAllWellsForLabware=$y;exports.getChunkForIndentingLists=Os;exports.getCommandCreatorFromStepArgs=tA;exports.getCustomLiquidClassProperties=Ms;exports.getCutoutFromSlot=tb;exports.getCutoutIdByAddressableArea=G_;exports.getDefaultPrimaryNozzle=cs;exports.getDefineLiquids=Yy;exports.getDispenseAirGapLocation=J_;exports.getFlexStackerCutoutBaseDeckSlotId=Hc;exports.getFlexStackerShuttleAddressableArea=Rs;exports.getFullStackFromLabwares=ks;exports.getFullStackFromNodeTopDownRecursive=Ds;exports.getHasNoWellsFromCCArgs=nS;exports.getInitialRobotStateStandard=Cb;exports.getInitialRobotStateWithOffDeckLabwareStandard=PA;exports.getIsHeaterShakerEastWestMultiChannelPipette=xn;exports.getIsHeaterShakerEastWestWithLatchOpen=Bn;exports.getIsHeaterShakerNorthSouthOfNonTiprackWithMultiChannelPipette=xa;exports.getIsInPipettableLocation=ly;exports.getIsLabwareCompatibleWithStack=sy;exports.getIsRetractSafeForAirGap=Ur;exports.getIsSafePickupWithinTiprack=up;exports.getIsSlotAHopper=oy;exports.getIsSlotAVacuumDock=ma;exports.getIsSpaceInHopper=Wc;exports.getIsTallLabwareEastWestOfHeaterShaker=Uy;exports.getIsVacuumSpacer=j_;exports.getLabwareHasLid=iy;exports.getLabwareHasLiquid=ty;exports.getLabwareIdOnShuttle=jc;exports.getLabwareSlot=qn;exports.getLargestStackContainingLabware=Sy;exports.getLargestStackInSlot=fa;exports.getLiquidClassName=ja;exports.getLiquidIdsOnLabware=AS;exports.getLiquidIdsOnLabwareStack=SS;exports.getLoadAdapters=zy;exports.getLoadLabware=Gy;exports.getLoadLidStacks=jy;exports.getLoadLiquidClasses=Xy;exports.getLoadLiquids=Ky;exports.getLoadModules=Hy;exports.getLoadPipettes=Wy;exports.getLoadTrashBins=Zy;exports.getLoadWasteChute=Qy;exports.getLocationTotalVolume=mr;exports.getModuleHasLiveTask=$n;exports.getModuleIdFromRobotStateStack=Fa;exports.getModuleLocationSlot=AI;exports.getModuleState=Ot;exports.getNearestParentInStack=ry;exports.getNextRobotStateAndWarnings=ip;exports.getNextRobotStateAndWarningsSingleCommand=Fy;exports.getNextTiprack=Wa;exports.getNodeParentModuleId=JE;exports.getNozzleConfig=lp;exports.getPipetteCenteringFullOffset=ab;exports.getPipetteIdFromCCArgs=rS;exports.getPipetteMovementSafetyStatus=ft;exports.getPipetteWithTipMaxVol=qs;exports.getProvidedAddressableAreasExposed=rw;exports.getPythonAssignTipRacksString=Fs;exports.getResultingTimelineFrameFromRunCommands=uS;exports.getRobotInitialStateNoTipsRemain=MA;exports.getRobotStateAndWarningsStandard=CA;exports.getRobotStatePickedUpTipStandard=DA;exports.getRobotStateWithTipStandard=NA;exports.getSetStoredLabware=eb;exports.getSlotInLocationStack=G;exports.getStackForLabwareLocation=Yu;exports.getStackedOnNodeFromPdStack=Oy;exports.getStateAndContextTempTCModules=FA;exports.getTargetTipsFromWellSets=Ga;exports.getThermocyclerProfileRepetitionsForPython=sb;exports.getTipColumn=vA;exports.getTipColumnIndex=nc;exports.getTipColumnName=cp;exports.getTipRowName=gn;exports.getTiprackHasTips=ey;exports.getTiprackTipstate=kb;exports.getTopLocationInStack=xc;exports.getTopmostLabwareOnModuleFromStackRobotState=RI;exports.getTransferPlanAndReferenceVolumes=zc;exports.getTrashBinAddressableAreaName=$c;exports.getTrashLocationFromAddressableAreaName=Y_;exports.getTrashOrLabware=Fn;exports.getVolumesPerLiquid=wS;exports.getWasteChuteAddressableAreaNamePip=W_;exports.getWellsForTips=Vc;exports.heaterShaker=bb;exports.indentPyLines=K;exports.labwareMatchesLabwareInHopper=Gc;exports.makeContext=vb;exports.makeInitialRobotState=Bc;exports.makeState=Gr;exports.makeStateArgsLabwareOffDeck=Pb;exports.makeStateArgsStandard=jn;exports.mergeLiquid=hr;exports.mix=hb;exports.mixBlowoutLocationHelper=X_;exports.modulePipetteCollision=Vn;exports.moveHelper=EI;exports.moveLabware=N_;exports.moveToAddressableArea=Fe;exports.moveToAddressableAreaForDropTip=vc;exports.pipetteAdjacentHeaterShakerWhileShaking=Hn;exports.pipetteIntoHeaterShakerLatchOpen=Ha;exports.pipetteIntoHeaterShakerWhileShaking=za;exports.pythonCustomLabwareDict=VS;exports.pythonDefRun=$S;exports.pythonImports=NS;exports.pythonMetadata=DS;exports.pythonRequirements=MS;exports.reduceCommandCreators=ae;exports.repeatArray=K_;exports.replaceTip=Ya;exports.resolveDeckSlotKeyForLabwareStackInSlot=ay;exports.robotWithStatusAndTemp=UA;exports.setTemperature=Pc;exports.sortLabwareBySlot=ob;exports.splitLiquid=er;exports.stepCommands=Jy;exports.swatchColors=By;exports.thermocyclerPipetteCollision=Va;exports.thermocyclerProfileStep=Tb;exports.thermocyclerStateGetter=$s;exports.thermocyclerStateStep=gb;exports.tiprackWellNamesFlat=Ob;exports.touchTip=Et;exports.transfer=Ib;exports.unrollThermocyclerProfile=pp;exports.uuid=D;exports.vacuumCloseVent=Da;exports.vacuumCloseVentSetPumpPower=Eb;exports.vacuumCloseVentSetPumpPressure=wb;exports.vacuumCloseVentStartProfile=Sb;exports.vacuumModuleStateGetter=ot;exports.vacuumOpenVent=M_;exports.vacuumSetPumpPower=Nc;exports.vacuumSetPumpPressure=Dc;exports.vacuumStartRunProfile=Mc;exports.vacuumStopPump=U_;exports.waitForModuleTask=Lb;exports.waitForTemperature=Fc;exports.wellFillFromWellContents=OS;
|
|
150
|
+
)`}),Zn=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??s,on=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??$,Qn=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"aspirate",byVolumeProperty:"flowRateByVolume",defaultValue:null})??s,ln=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"singleDispense",byVolumeProperty:"flowRateByVolume",defaultValue:null})??$,Er=IA(Ue,k);let wr=null,Jn=null;const ye=[...Er.reduce((ie,yt,Mt)=>{const[Le,De]=yt,ea=Ct.reduce((le,Ye,ur)=>{const Sr=Mt===0&&ur===0,Ar=Mt+1===Er.length,un=ur+1===Ct.length&&Ar;let bt=!1;E==="always"?bt=!0:E==="once"?bt=Sr:E==="perSource"?bt=Le!==wr:E==="perDest"&&(bt=Sr||De!==Jn);const ra=c.LOW_VOLUME_PIPETTES.includes(Nt)?[R(An,{pipetteId:U,volume:Ye})]:[];let cr=[];if(bt){const It=Gt?.shift();cr=[O(Ya,{pipette:U,primaryNozzle:x,nozzles:ce,dropTipLocation:Pt&&We!=null?We:P,tipRack:Z,...ce!=null?{nozzles:ce}:{},...Be===St&&It!=null&&pe!=null?{tipSelectionArgs:{tipRackId:pe,tipWell:It}}:{}})]}const Lr=he[H]?.def.wells[Le]?.depth??null,Wt=c.getMmFromBottom(I,o,Lr),Yt=c.getMmFromBottom(y,m,Lr),cn=c.getMmFromBottom(f,l,Lr);Wt!=null&&Yt!=null&&Wt>Yt&&_e.push(vh());const Or=Ur({retractZOffset:f,retractPositionReference:l,labwareId:H,labwareEntities:he,well:Le}),pr=!Or&&Le!=null?[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[],pn=Ur({retractZOffset:He,retractPositionReference:Te,labwareId:g,labwareEntities:he,well:De}),Oe=!pn&&De!=null?[R(B,{pipetteId:U,labwareId:g,wellName:De,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})]:[];Wt!=null&&cn!=null&&Wt>cn&&_e.push(Ph());const Kt=[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:c.SAFE_MOVE_TO_WELL_LOCATION})],Rr=[R(Lt,{pipetteId:U})],Tt=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Xt=q!=null?[R(me,{seconds:q.seconds})]:[],na=lt>0&&!bt&&(ur>0||Mt>0)?[R(Xe,{isAirGap:!0,pipetteId:U,volume:lt,flowRate:ln,...Tt>0?{correctionVolume:Tt}:{},pushOut:0}),...Xt]:[],dn=[...Kt,...na,...ra,...Rr],fn=[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:Kr}),R(B,{pipetteId:U,labwareId:H,...h!=null?{speed:h}:{},wellName:Le,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[o],offset:{x:A,y:w,z:I}}}),..._!=null&&_.seconds>0?[R(me,{seconds:_.seconds})]:[]],aa=z?Dr({pipette:U,volume:Ye,times:1,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:$,aspirateDelaySeconds:a?.seconds??0,dispenseDelaySeconds:q?.seconds??0,finalPushOut:0,invariantContext:t,liquidClass:V,tiprack:Z,generatePython:!1}):[],mn=M!=null?Dr({pipette:U,volume:M.volume,times:M.times,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:$,aspirateDelaySeconds:a?.seconds,dispenseDelaySeconds:q?.seconds,finalPushOut:0,invariantContext:t,liquidClass:V,tiprack:Z,generatePython:!1}):[],kr=a!=null?[R(me,{seconds:a.seconds})]:[],sa=ht?[R(Et,{pipetteId:U,labwareId:H,wellName:Le,...Rt!=null?{mmFromEdge:Rt}:{},zOffsetFromTop:_t,...Re!=null?{speed:Re}:{}}),...j>0&&Or?[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:or})]:[]]:[],Me=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,vr=j>0?[...pr,R(At,{pipetteId:U,volume:j,flowRate:Zn,...Me>0?{correctionVolume:Me}:{}}),...kr]:[],hn=[R(Na,{pipetteId:U,volume:Ye,flowRate:s,...Zr>0?{correctionVolume:Zr}:{}}),...kr],dr=[R(B,{pipetteId:U,labwareId:H,...u!=null?{speed:u}:{},wellName:Le,wellLocation:or}),...i!=null&&i?.seconds>0?[R(me,{seconds:i.seconds})]:[]],Pr=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:j,liquidHandlingAction:"singleDispense",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,Zt=De!=null?[R(B,{pipetteId:U,labwareId:g,wellName:De,wellLocation:yr}),...j>0?[R(Xe,{isAirGap:!0,pipetteId:U,volume:j,flowRate:on,pushOut:0,...Pr>0?{correctionVolume:Pr}:{}}),...Xt]:[],R(B,{pipetteId:U,labwareId:g,...Se!=null?{speed:Se}:{},wellName:De,wellLocation:{origin:c.POSITION_REFERENCE_MAPPED_TO_WELL_ORIGIN[ee],offset:{x:X,y:W,z:C}}}),...Ve!=null&&Ve.seconds>0?[R(me,{seconds:Ve.seconds})]:[]]:[R(Fe,{fixtureId:g,pipetteId:U,offset:{x:0,y:0,z:0}})],fr=oe!=null&&De!=null?0:F,oa=[R(Xe,{pipetteId:U,volume:Ye,flowRate:$,...fr!=null?{pushOut:fr}:{},...gr>0?{correctionVolume:gr}:{}}),...Xt],Za=oe!=null&&De!=null?Dr({pipette:U,volume:oe.volume,times:oe.times,aspirateFlowRateUlSec:s,dispenseFlowRateUlSec:$,aspirateDelaySeconds:a?.seconds,dispenseDelaySeconds:q?.seconds,finalPushOut:F,invariantContext:t,liquidClass:V,tiprack:Z,generatePython:!1}):[],Vs=De!=null?[R(B,{pipetteId:U,labwareId:g,...se!=null?{speed:se}:{},wellName:De,wellLocation:ir}),...de!=null&&de?.seconds>0?[R(me,{seconds:de.seconds})]:[]]:[],Qa=R(Dn,{pipetteId:U,flowRate:S}),ia=c.getByVolumeValue({liquidClass:V,pipetteSpecs:Ae,tiprackDefUri:Z,targetVolume:lt,liquidHandlingAction:"aspirate",byVolumeProperty:"correctionByVolume",defaultValue:0})??0,gt=(It,Cr=!0)=>lt>0&&!(E==="never"&&un&&It)?[...Cr?Oe:[],R(Lt,{pipetteId:U}),R(At,{pipetteId:U,volume:lt,flowRate:Qn,...ia>0?{correctionVolume:ia}:{}}),...kr]:[],_n=It=>De!=null&&tt?[R(Et,{pipetteId:U,labwareId:g,wellName:De,...ge!=null?{mmFromEdge:ge}:{},zOffsetFromTop:ke,...Ne!=null?{speed:Ne}:{}}),...gt(It).length>0&&pn?[R(B,{pipetteId:U,labwareId:g,wellName:De,wellLocation:ir})]:[]]:[];let Ft=[];switch(L){case null:case void 0:Ft=[..._n(!0),...gt(!0)];break;case Mn:Ft=[Qa,..._n(!0),...gt(!0)];break;case zr:Ft=[..._n(!0),...gt(!1),R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:{origin:c.WELL_ORIGIN_TOP}}),Qa,...tt&&!rt?[R(Et,{pipetteId:U,labwareId:H,wellName:Le,...ge!=null?{mmFromEdge:ge}:{},zOffsetFromTop:ke,...Ne!=null?{speed:Ne}:{}})]:[],...gt(!0).length>0?[R(B,{pipetteId:U,labwareId:H,wellName:Le,wellLocation:{origin:c.WELL_ORIGIN_TOP}})]:[],...gt(!0,!1)];break;default:L in Ge?Ft=[..._n(!1),...gt(!1),R(cb,{pipetteId:U,flowRate:S,trashId:L}),...gt(!0,!1)]:L in Y&&(Ft=[R(pb,{pipetteId:U,flowRate:S,wasteChuteId:L}),...gt(!0,!1)]);break}const Ja=Pt&&(un||E==="always")?[R(Hr,{pipette:U,dropTipLocation:Z,isReturnTip:Pt})]:[],Ut=[...cr,...dn,...fn,...mn,...aa,...hn,...dr,...sa,...vr,...Zt,...oa,...Za,...Vs,...Ft,...Ja];return wr=Le,Jn=De,[...le,...Ut]},[]);return[...ie,...ea]},[]),Ir];return ae(ye,t,r)},Eb=(e,t,r)=>ae([O(Da,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),O(Nc,{...e,commandCreatorFnName:"vacuumSetPumpPower"})],t,r),wb=(e,t,r)=>ae([O(Da,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),O(Dc,{...e,commandCreatorFnName:"vacuumSetPumpPressure"})],t,r),Sb=(e,t,r)=>{const{ventAfter:n}=e;return ae([O(Da,{moduleId:e.moduleId,commandCreatorFnName:"vacuumCloseVent"}),O(Mc,{...e,commandCreatorFnName:"vacuumStartRunProfile",ventAfter:n})],t,r)},Ab=(e,t,r)=>{const n=`[${e.task_ids.join(", ")}]`,a=`${be}.wait_for_tasks(${n})`;return{commands:[{key:D(),commandType:"waitForTasks",params:e}],python:a}},Lb=(e,t,r)=>{const{waitCondition:n}=e;return n==="thermocyclerProfileComplete"?EA(e,t,r):n==="vacuumProfileComplete"||n==="vacuumStateComplete"?wA(e,t,r):{errors:[cT(n)]}},EA=(e,t,r)=>{const{moduleId:n}=e,a=[],s=$s(r,n);if(s==null)return{errors:[Q()]};if(s.currentBlockActivity.type!=="profile")return{errors:[dp()]};const{taskId:o}=s.currentBlockActivity;return o==null?{errors:[dp()]}:(a.push(O(Ab,{task_ids:[o]})),ae(a,t,r))},wA=(e,t,r)=>{const{moduleId:n}=e,a=[],s=ot(r,n);if(s==null)return{errors:[Q()]};if(s.currentPumpActivity.type!=="timedHold"&&s.currentPumpActivity.type!=="profile")return{errors:[uT()]};const o=s.currentPumpActivity.taskId;return a.push(O(Ab,{task_ids:[o]})),ae(a,t,r)};var Bu,Sh;function SA(){if(Sh)return Bu;Sh=1;var e=Ty(),t=1,r=4;function n(a){return e(a,t|r)}return Bu=n,Bu}var AA=SA();const LA=xe(AA),Ob=["A1","B1","C1","D1","E1","F1","G1","H1","A2","B2","C2","D2","E2","F2","G2","H2","A3","B3","C3","D3","E3","F3","G3","H3","A4","B4","C4","D4","E4","F4","G4","H4","A5","B5","C5","D5","E5","F5","G5","H5","A6","B6","C6","D6","E6","F6","G6","H6","A7","B7","C7","D7","E7","F7","G7","H7","A8","B8","C8","D8","E8","F8","G8","H8","A9","B9","C9","D9","E9","F9","G9","H9","A10","B10","C10","D10","E10","F10","G10","H10","A11","B11","C11","D11","E11","F11","G11","H11","A12","B12","C12","D12","E12","F12","G12","H12"],Vr="p300SingleId",ba="p300MultiId",ac="p100096Id",sc="sourcePlateId",oc="destPlateId",ic="troughId",OA="A1",RA="tiprack1Id",kA={isAirGap:!0},rs=c.fixture96Plate,Ah=c.fixture12Trough,ns=c.fixtureTiprack10ul,qt=c.fixtureTiprack300ul,yn=c.fixtureTiprack1000ul,as=c.fixtureTiprackAdapter,Rb={OT_PD_DISABLE_MODULE_RESTRICTIONS:!1};function kb(e){return Ob.reduce((t,r)=>({...t,[r]:e?Ra:ue}),{})}function vA(e,t){return Array.from("ABCDEFGH").map(r=>`${r}${e}`).reduce((r,n)=>({...r,[n]:t}),{})}function vb(){const e={[sc]:{id:sc,pythonName:"mock_source_plate",labwareDefURI:c.getLabwareDefURI(rs),def:rs},[oc]:{id:oc,pythonName:"mock_dest_plate",labwareDefURI:c.getLabwareDefURI(rs),def:rs},[ic]:{id:ic,pythonName:"mock_trough",labwareDefURI:c.getLabwareDefURI(Ah),def:Ah},tiprack1Id:{id:"tiprack1Id",pythonName:"mock_tip_rack_1",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack2Id:{id:"tiprack2Id",pythonName:"mock_tip_rack_2",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack3Id:{id:"tiprack3Id",pythonName:"mock_tip_rack_3",labwareDefURI:c.getLabwareDefURI(qt),def:qt},tiprack4AdapterId:{id:"tiprack4AdapterId",pythonName:"mock_adapter_4",labwareDefURI:c.getLabwareDefURI(as),def:as},tiprack5AdapterId:{id:"tiprack5AdapterId",pythonName:"mock_adapter_5",labwareDefURI:c.getLabwareDefURI(as),def:as},tiprack4Id:{id:"tiprack4Id",pythonName:"mock_tip_rack_4",labwareDefURI:c.getLabwareDefURI(yn),def:yn},tiprack5Id:{id:"tiprack5Id",pythonName:"mock_tip_rack_5",labwareDefURI:c.getLabwareDefURI(yn),def:yn}},t={},r={[Hu]:{id:Hu,location:"cutoutA3",pythonName:"trash_bin_1"}},n={p10SingleId:{name:"p10_single",id:"p10SingleId",pythonName:"mock_pipette_p10",tiprackDefURI:[c.getLabwareDefURI(ns)],tiprackLabwareDef:[ns],spec:c.fixtureP10SingleV2Specs},p10MultiId:{name:"p10_multi",id:"p10MultiId",tiprackDefURI:[c.getLabwareDefURI(ns)],tiprackLabwareDef:[ns],spec:c.fixtureP10MultiV2Specs,pythonName:"mock_pipette_p10_multi"},[Vr]:{name:"p300_single",id:Vr,tiprackDefURI:[c.getLabwareDefURI(qt)],tiprackLabwareDef:[qt],spec:c.fixtureP300SingleV2Specs,pythonName:"mock_pipette"},[ba]:{name:"p300_multi",id:ba,tiprackDefURI:[c.getLabwareDefURI(qt)],tiprackLabwareDef:[qt],spec:c.fixtureP300MultiV2Specs,pythonName:"mock_pipette_p300_multi"},[ac]:{name:"p1000_96",id:ac,tiprackDefURI:[c.getLabwareDefURI(yn)],tiprackLabwareDef:[yn],spec:c.fixtureP100096V2Specs,pythonName:"mock_pipette_p1000_96"}};return{labwareEntities:e,moduleEntities:t,pipetteEntities:n,trashBinEntities:r,wasteChuteEntities:{},stagingAreaEntities:{},gripperEntities:{},liquidEntities:{},runtimeParameters:{},config:Rb}}const Gr=e=>{const{invariantContext:t,labwareLocations:r,moduleLocations:n,pipetteLocations:a,tiprackSetting:s}=e,o=Bc({invariantContext:t,labwareLocations:r,moduleLocations:n||{},pipetteLocations:a});return o.tipState.tipracks=rr(s,i=>kb(i)),o},jn=()=>({pipetteLocations:{[Vr]:{mount:"left",tiprackId:"tiprack1Id"},[ba]:{mount:"right",tiprackId:"tiprack1Id"}},labwareLocations:{tiprack1Id:{stack:["tiprack1Id","1"]},tiprack2Id:{stack:["tiprack2Id","5"]},tiprack4AdapterId:{stack:["tiprack4AdapterId","7"]},tiprack5AdapterId:{stack:["tiprack5AdapterId","8"]},tiprack4Id:{stack:["tiprack4Id","tiprack4AdapterId","7"]},tiprack5Id:{stack:["tiprack5Id","tiprack5AdapterId","8"]},sourcePlateId:{stack:["sourcePlateId","2"]},destPlateId:{stack:["destPlateId","3"]}},moduleLocations:{}}),Pb=()=>({pipetteLocations:{[Vr]:{mount:"left"},[ba]:{mount:"right"}},labwareLocations:{tiprack1Id:{stack:["tiprack1Id","B1"]},tiprack2Id:{stack:["tiprack2Id","A2"]},sourcePlateId:{stack:["sourcePlateId","offDeck"]},destPlateId:{stack:["destPlateId","C2"]}},moduleLocations:{}}),Cb=e=>Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}}),PA=e=>Gr({...Pb(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}}),CA=e=>({robotState:Cb(e),warnings:[]}),NA=e=>{const t=Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!0,tiprack2Id:!0}});return t.tipState.pipettes[Vr]={hasTip:!0,tiprackURI:"tiprack1Id"},t},DA=e=>{const t=Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!0}});return t.tipState.pipettes[Vr]={hasTip:!0,tiprackURI:"tiprack1Id"},t.tipState.tipracks.tiprack1Id.A1=ue,t},MA=e=>Gr({...jn(),invariantContext:e,tiprackSetting:{tiprack1Id:!1,tiprack2Id:!1}}),FA=({temperatureModuleId:e,thermocyclerId:t})=>{const r=vb();r.moduleEntities={[e]:{id:e,type:c.TEMPERATURE_MODULE_TYPE,model:"foo",pythonName:"mock_temperature_module_1"},[t]:{id:t,type:c.THERMOCYCLER_MODULE_TYPE,model:"foo",pythonName:"mock_thermocycler"}};const n=Gr({...jn(),invariantContext:r,tiprackSetting:{tiprack1Id:!0}});return n.modules={[e]:{slot:"3",moduleState:{type:c.TEMPERATURE_MODULE_TYPE,status:Oa,targetTemperature:null}},[t]:{slot:"span7_8_10_11",moduleState:{type:c.THERMOCYCLER_MODULE_TYPE,currentBlockActivity:{type:"blockDeactivated"},lidTargetTemp:null,lidOpen:null,numProfilesStarted:0}}},{invariantContext:r,robotState:n}},UA=(e,t,r,n)=>{const a=LA(e);return a.modules[t].moduleState={type:c.TEMPERATURE_MODULE_TYPE,targetTemperature:n,status:r},a};exports.ABSORBANCE_READER_INITIAL_STATE=$h;exports.AIR=je;exports.AIR_GAP_META=kA;exports.AIR_GAP_OFFSET_FROM_TOP=xu;exports.AUTOMATIC=cc;exports.BOTTOM_UP_LABWARE_POOL_KEYS=Jt;exports.BOTTOM_UP_STORED_LABWARE_URI_KEYS=gT;exports.CLEAN=Ra;exports.COLUMN_4_SLOTS=ve;exports.CUSTOM_LABWARE_DICT_NAME=As;exports.DEFAULT_BLOWOUT_WELL=OA;exports.DEFAULT_CONFIG=Rb;exports.DEFAULT_PIPETTE=Vr;exports.DEST_LABWARE=oc;exports.DEST_WELL_BLOWOUT_DESTINATION=Mn;exports.DIRTY=Qt;exports.EMPTY=ue;exports.FAKE_HOPPER_LOCATION_MAP=Wh;exports.FIXED_TRASH_ID=Hu;exports.FLEX_STACKER_MODULE_INITIAL_STATE=Bh;exports.FLEX_TRASH_DEF_URI=bT;exports.GRIPPER_LOCATION=zh;exports.HEATERSHAKER_MODULE_INITIAL_STATE=qh;exports.HOPPER_FAKE_LOCATIONS=Gh;exports.HOPPER_STACKER_LOCATION=Ze;exports.INDENT=Ma;exports.MAGNETIC_BLOCK_INITIAL_STATE=Vh;exports.MAGNETIC_MODULE_INITIAL_STATE=Mh;exports.MANUAL=St;exports.MIXED_WELL_COLOR=Vy;exports.MODULES_WITH_COLLISION_ISSUES=Dh;exports.MODULE_INITIAL_STATE_BY_TYPE=Hh;exports.MULTI_PIPETTE=ba;exports.OFF_DECK=Ln;exports.OT2_TC_SLOTS=TT;exports.OT_2_TRASH_DEF_URI=yT;exports.PAPI_VERSION=xy;exports.PD_APPLICATION_VERSION=CS;exports.PIPETTE_96=ac;exports.PROTOCOL_CONTEXT_NAME=be;exports.SLOT_LOCATIONS_TO_FAKE_HOPPER_LOCATIONS=IT;exports.SOURCE_LABWARE=sc;exports.SOURCE_WELL_BLOWOUT_DESTINATION=zr;exports.STAGING_AREA_SLOTS=jh;exports.TEMPERATURE_APPROACHING_TARGET=uc;exports.TEMPERATURE_AT_TARGET=lc;exports.TEMPERATURE_DEACTIVATED=Oa;exports.TEMPERATURE_MODULE_INITIAL_STATE=Fh;exports.THERMOCYCLER_MODULE_INITIAL_STATE=Uh;exports.TIPRACK_1=RA;exports.TOUCHED_PIPETTABLE_LABWARE=rc;exports.TROUGH_LABWARE=ic;exports.VACUUM_AT_TARGET=vT;exports.VACUUM_DEACTIVATED=kT;exports.VACUUM_DOCK_ADDRESSABLE_AREA=Yh;exports.VACUUM_DOCK_DISPLAY_LOCATION=Xh;exports.VACUUM_DOCK_LOCATION=pc;exports.VACUUM_MODE_POWER=zu;exports.VACUUM_MODE_PRESSURE=ju;exports.VACUUM_MODULE_INITIAL_STATE=xh;exports.VACUUM_PROGRAM_PROFILE=wT;exports.VACUUM_PROGRAM_STATE=ET;exports.VACUUM_SPACER_LOAD_NAMES=Kh;exports.VACUUM_STATE_PUMP_OFF=ST;exports.VACUUM_STATE_PUMP_ON=AT;exports.VACUUM_STATE_VENT=LT;exports.VACUUM_VENT_CLOSED=ka;exports.VACUUM_VENT_OPEN=dc;exports.VACUUM_VENT_SET_CLOSED=RT;exports.VACUUM_VENT_SET_OPEN=OT;exports.ZERO_OFFSET=wt;exports._getNextTip=ib;exports._wellContentsForLabware=ES;exports.absorbanceReaderCloseInitialize=lb;exports.absorbanceReaderCloseLid=ws;exports.absorbanceReaderCloseRead=ub;exports.absorbanceReaderCollision=Ua;exports.absorbanceReaderInitialize=g_;exports.absorbanceReaderOpenLid=I_;exports.absorbanceReaderRead=E_;exports.absorbanceReaderStateGetter=zn;exports.airGapLocationHelper=wI;exports.aspirate=nI;exports.assignContainsAmongSiblings=sp;exports.blowOutInWell=Rc;exports.captureImage=w_;exports.column4StagingSlotIdFromFlexStackerShuttleAddressableArea=ny;exports.commandCreatorsTimeline=tS;exports.comment=S_;exports.consolidate=_b;exports.constructInvariantContextFromAnalysis=iS;exports.createEmptyLiquidState=Z_;exports.createStagingAreaForInvariantContext=Ku;exports.createTipLiquidState=Q_;exports.curryCommandCreator=O;exports.curryWithoutPython=R;exports.deactivateTemperature=L_;exports.deckSlotKeyForFlexStackerShuttleAddressableArea=LI;exports.delay=me;exports.delayLocationHelper=SI;exports.disengageMagnet=O_;exports.dispense=kc;exports.dispenseLocationHelper=II;exports.distribute=yb;exports.dropTip=Hr;exports.dropTipInPlace=Ss;exports.dropTipInTrash=fb;exports.dropTipInWasteChute=mb;exports.engageMagnet=R_;exports.enrichRobotStateForStackGraphTraversals=iw;exports.flexStackerEmpty=k_;exports.flexStackerFillItems=v_;exports.flexStackerRetrieve=P_;exports.flexStackerStateGetter=mt;exports.flexStackerStore=C_;exports.formatChangeTipArg=Us;exports.formatPyDict=Fr;exports.formatPyList=Ls;exports.formatPyStr=N;exports.formatPyTuple=Cc;exports.formatPyValue=dt;exports.formatPyWellLocation=Bt;exports.getAddressableAreaFromModule=ap;exports.getAddressableAreaNameFromLabwareLocation=tw;exports.getAllLargestStacks=Ay;exports.getAllProvidedAddressableAreasFromDeckConfig=Ly;exports.getAllWellsForLabware=$y;exports.getChunkForIndentingLists=Os;exports.getCommandCreatorFromStepArgs=tA;exports.getCustomLiquidClassProperties=Ms;exports.getCutoutFromSlot=tb;exports.getCutoutIdByAddressableArea=G_;exports.getDefaultPrimaryNozzle=cs;exports.getDefineLiquids=Yy;exports.getDispenseAirGapLocation=J_;exports.getFlexStackerCutoutBaseDeckSlotId=Hc;exports.getFlexStackerShuttleAddressableArea=Rs;exports.getFullStackFromLabwares=ks;exports.getFullStackFromNodeTopDownRecursive=Ds;exports.getHasNoWellsFromCCArgs=nS;exports.getInitialRobotStateStandard=Cb;exports.getInitialRobotStateWithOffDeckLabwareStandard=PA;exports.getIsHeaterShakerEastWestMultiChannelPipette=xn;exports.getIsHeaterShakerEastWestWithLatchOpen=Bn;exports.getIsHeaterShakerNorthSouthOfNonTiprackWithMultiChannelPipette=xa;exports.getIsInPipettableLocation=ly;exports.getIsLabwareCompatibleWithStack=sy;exports.getIsRetractSafeForAirGap=Ur;exports.getIsSafePickupWithinTiprack=up;exports.getIsSlotAHopper=oy;exports.getIsSlotAVacuumDock=ma;exports.getIsSpaceInHopper=Wc;exports.getIsTallLabwareEastWestOfHeaterShaker=Uy;exports.getIsVacuumSpacer=j_;exports.getLabwareHasLid=iy;exports.getLabwareHasLiquid=ty;exports.getLabwareIdOnShuttle=jc;exports.getLabwareSlot=qn;exports.getLargestStackContainingLabware=Sy;exports.getLargestStackInSlot=fa;exports.getLiquidClassName=ja;exports.getLiquidIdsOnLabware=AS;exports.getLiquidIdsOnLabwareStack=SS;exports.getLoadAdapters=zy;exports.getLoadLabware=Gy;exports.getLoadLidStacks=jy;exports.getLoadLiquidClasses=Xy;exports.getLoadLiquids=Ky;exports.getLoadModules=Hy;exports.getLoadPipettes=Wy;exports.getLoadTrashBins=Zy;exports.getLoadWasteChute=Qy;exports.getLocationTotalVolume=mr;exports.getModuleHasLiveTask=$n;exports.getModuleIdFromRobotStateStack=Fa;exports.getModuleLocationSlot=AI;exports.getModuleState=Ot;exports.getNearestParentInStack=ry;exports.getNextRobotStateAndWarnings=ip;exports.getNextRobotStateAndWarningsSingleCommand=Fy;exports.getNextTiprack=Wa;exports.getNodeParentModuleId=JE;exports.getNozzleConfig=lp;exports.getPipetteCenteringFullOffset=ab;exports.getPipetteIdFromCCArgs=rS;exports.getPipetteMovementSafetyStatus=ft;exports.getPipetteWithTipMaxVol=qs;exports.getProvidedAddressableAreasExposed=rw;exports.getPythonAssignTipRacksString=Fs;exports.getResultingTimelineFrameFromRunCommands=uS;exports.getRobotInitialStateNoTipsRemain=MA;exports.getRobotStateAndWarningsStandard=CA;exports.getRobotStatePickedUpTipStandard=DA;exports.getRobotStateWithTipStandard=NA;exports.getSetStoredLabware=eb;exports.getSlotInLocationStack=G;exports.getStackForLabwareLocation=Yu;exports.getStackedOnNodeFromPdStack=Oy;exports.getStateAndContextTempTCModules=FA;exports.getTargetTipsFromWellSets=Ga;exports.getThermocyclerProfileRepetitionsForPython=sb;exports.getTipColumn=vA;exports.getTipColumnIndex=nc;exports.getTipColumnName=cp;exports.getTipRowName=gn;exports.getTiprackHasTips=ey;exports.getTiprackTipstate=kb;exports.getTopLocationInStack=xc;exports.getTopmostLabwareOnModuleFromStackRobotState=RI;exports.getTransferPlanAndReferenceVolumes=zc;exports.getTrashBinAddressableAreaName=$c;exports.getTrashLocationFromAddressableAreaName=Y_;exports.getTrashOrLabware=Fn;exports.getVolumesPerLiquid=wS;exports.getWasteChuteAddressableAreaNamePip=W_;exports.getWellsForTips=Vc;exports.heaterShaker=bb;exports.indentPyLines=K;exports.labwareMatchesLabwareInHopper=Gc;exports.makeContext=vb;exports.makeInitialRobotState=Bc;exports.makeState=Gr;exports.makeStateArgsLabwareOffDeck=Pb;exports.makeStateArgsStandard=jn;exports.mergeLiquid=hr;exports.mix=hb;exports.mixBlowoutLocationHelper=X_;exports.modulePipetteCollision=Vn;exports.moveHelper=EI;exports.moveLabware=N_;exports.moveToAddressableArea=Fe;exports.moveToAddressableAreaForDropTip=vc;exports.pipetteAdjacentHeaterShakerWhileShaking=Hn;exports.pipetteIntoHeaterShakerLatchOpen=Ha;exports.pipetteIntoHeaterShakerWhileShaking=za;exports.pythonCustomLabwareDict=VS;exports.pythonDefRun=$S;exports.pythonImports=NS;exports.pythonMetadata=DS;exports.pythonRequirements=MS;exports.reduceCommandCreators=ae;exports.repeatArray=K_;exports.replaceTip=Ya;exports.resolveDeckSlotKeyForLabwareStackInSlot=ay;exports.robotWithStatusAndTemp=UA;exports.setTemperature=Pc;exports.sortLabwareBySlot=ob;exports.splitLiquid=er;exports.stepCommands=Jy;exports.swatchColors=By;exports.thermocyclerPipetteCollision=Va;exports.thermocyclerProfileStep=Tb;exports.thermocyclerStateGetter=$s;exports.thermocyclerStateStep=gb;exports.tiprackWellNamesFlat=Ob;exports.touchTip=Et;exports.transfer=Ib;exports.unrollThermocyclerProfile=pp;exports.uuid=D;exports.vacuumCloseVent=Da;exports.vacuumCloseVentSetPumpPower=Eb;exports.vacuumCloseVentSetPumpPressure=wb;exports.vacuumCloseVentStartProfile=Sb;exports.vacuumModuleStateGetter=ot;exports.vacuumOpenVent=M_;exports.vacuumSetPumpPower=Nc;exports.vacuumSetPumpPressure=Dc;exports.vacuumStartRunProfile=Mc;exports.vacuumStopPump=U_;exports.waitForModuleTask=Lb;exports.waitForTemperature=Fc;exports.wellFillFromWellContents=OS;
|
package/lib/index.mjs
CHANGED
|
@@ -8317,6 +8317,7 @@ function sL(e, t, r) {
|
|
|
8317
8317
|
wasteChuteEntities: {},
|
|
8318
8318
|
trashBinEntities: {},
|
|
8319
8319
|
stagingAreaEntities: {},
|
|
8320
|
+
runtimeParameters: {},
|
|
8320
8321
|
// the timeline scrubber doesn't visualize gripper right now
|
|
8321
8322
|
gripperEntities: {},
|
|
8322
8323
|
config: { OT_PD_DISABLE_MODULE_RESTRICTIONS: !0 }
|
|
@@ -13834,6 +13835,7 @@ function kk() {
|
|
|
13834
13835
|
stagingAreaEntities: {},
|
|
13835
13836
|
gripperEntities: {},
|
|
13836
13837
|
liquidEntities: {},
|
|
13838
|
+
runtimeParameters: {},
|
|
13837
13839
|
config: Ak
|
|
13838
13840
|
};
|
|
13839
13841
|
}
|
package/lib/types.d.ts
CHANGED
|
@@ -184,6 +184,21 @@ export type Ingredient = Omit<LiquidEntity, 'pythonName'>;
|
|
|
184
184
|
export interface Ingredients {
|
|
185
185
|
[liquidId: string]: Ingredient;
|
|
186
186
|
}
|
|
187
|
+
export type Choices = number[] | string[];
|
|
188
|
+
export interface RuntimeParameter {
|
|
189
|
+
variableName: string;
|
|
190
|
+
displayName: string;
|
|
191
|
+
type: 'boolean' | 'string' | 'float' | 'int' | 'csv';
|
|
192
|
+
default: string | number | boolean;
|
|
193
|
+
minimum?: number;
|
|
194
|
+
maximum?: number;
|
|
195
|
+
choices?: Choices;
|
|
196
|
+
unit?: string;
|
|
197
|
+
description?: string;
|
|
198
|
+
}
|
|
199
|
+
export interface RuntimeParameters {
|
|
200
|
+
[variableName: string]: RuntimeParameter;
|
|
201
|
+
}
|
|
187
202
|
export type AdditionalEquipmentName = 'gripper' | 'wasteChute' | 'stagingArea' | 'trashBin';
|
|
188
203
|
export interface NormalizedAdditionalEquipmentById {
|
|
189
204
|
[additionalEquipmentId: string]: {
|
|
@@ -686,6 +701,7 @@ export interface InvariantContext {
|
|
|
686
701
|
stagingAreaEntities: StagingAreaEntities;
|
|
687
702
|
gripperEntities: GripperEntities;
|
|
688
703
|
liquidEntities: LiquidEntities;
|
|
704
|
+
runtimeParameters: RuntimeParameters;
|
|
689
705
|
config: Config;
|
|
690
706
|
}
|
|
691
707
|
export type TipState = typeof CLEAN | typeof DIRTY | typeof EMPTY;
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"name": "@opentrons/step-generation",
|
|
11
11
|
"productName": "Opentrons Step Generation",
|
|
12
|
-
"version": "0.3.
|
|
12
|
+
"version": "0.3.20-alpha.0",
|
|
13
13
|
"description": "Step generation",
|
|
14
14
|
"main": "lib/index.cjs",
|
|
15
15
|
"types": "lib/index.d.ts",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"immer": "^10.1.3",
|
|
38
38
|
"lodash": "4.18.1",
|
|
39
39
|
"uuid": "14.0.0",
|
|
40
|
-
"@opentrons/shared-data": "0.3.
|
|
40
|
+
"@opentrons/shared-data": "0.3.20-alpha.0"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/lodash": "4.17.24"
|