{ if (event.target === dialog && !busy) open = false; }} oncancel={event => { if (busy) event.preventDefault(); }} onclose={() => open = false}>
One blueprint. Your whole lineup.

{blueprint ? 'Edit your blueprint' : 'Build a server collection'}

Choose the total lobbies you want for each map. Existing and queued servers count; only missing lobbies are created. Mix Black Ops I and II in the same blueprint.

{#if error}{/if} {#if !loaded}

Loading maps…

{#if error}{/if} {:else}
{ event.preventDefault(); void save(true); }}>

Your lineup

{total} server{total === 1 ? '' : 's'}
{#each rows as row, index (row.key)}
{String(index + 1).padStart(2, '0')}
{/each}

{blueprint ? 'Changing lobby counts keeps the saved files for each map. Newly added maps use their current promoted setup.' : 'Each map saves its current promoted setup. Before launch, you’ll review every new server ID, port, and key.'}

{/if}