@hexpro/qr-code-studio 0.1.0 → 0.1.1

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.
@@ -3,10 +3,10 @@
3
3
  <head>
4
4
  <meta charset="utf-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
6
- <meta http-equiv="Content-Security-Policy" content="default-src 'none'; base-uri 'none'; form-action 'none'; script-src 'sha256-XV+n003Pd3YL4GsFMwwUNKGt0NxtFI8PK+HLQiBQ3o4='; style-src 'sha256-cMCwYhNvMLhTCdbI4r0DPFsGePLPpBTc9LQknP6OoAY='; img-src 'self' data: blob:; media-src 'self' blob: mediastream:; connect-src 'none'; frame-src 'none'; object-src 'none'" />
6
+ <meta http-equiv="Content-Security-Policy" content="default-src 'none'; base-uri 'none'; form-action 'none'; script-src 'sha256-13YEQDIqSETOoiivwzkriwQ/QVFGVI2D6MA7mvufbT4='; style-src 'sha256-mp8XE/tsLaKBfhkgWQ/BVXH6+nxZsBE8OsxPifClw7w='; img-src 'self' data: blob:; media-src 'self' blob: mediastream:; connect-src 'none'; frame-src 'none'; object-src 'none'" />
7
7
  <meta name="color-scheme" content="light dark" />
8
8
  <title>QR Code Studio</title>
9
- <style>:root{color-scheme:light dark;--desk: #e6e3dc;--desk-line: rgb(60 50 30 / .06);--panel: #f0eee9;--panel-raised: #f7f5f1;--field: #fbfaf8;--hover: #e9e6df;--ink: #1b1a17;--on-ink: #f7f5f1;--dim: #57534b;--edge: #cfcac0;--edge-strong: #8c867b;--accent: #ad3416;--on-accent: #ffffff;--focus: #ad3416;--pass: #2b6a3b;--warn: #855400;--fail: #b0311a;--paper: #fffdf8;--paper-ink: #1b1a17;--paper-dim: #6a655b;--paper-line: #d8d3c8;--sans: system-ui, -apple-system, "Segoe UI", "Helvetica Neue", "Noto Sans", "Liberation Sans", sans-serif;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", "URW Palladio L", Georgia, serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", "DejaVu Sans Mono", monospace;--radius: 6px;--paper-shadow: 0 1px 1px rgb(40 30 10 / .08), 0 8px 18px -6px rgb(40 30 10 / .22), 0 28px 60px -24px rgb(40 30 10 / .35)}@media (prefers-color-scheme: dark){:root{--desk: #131312;--desk-line: rgb(255 250 235 / .035);--panel: #1b1b19;--panel-raised: #222220;--field: #121211;--hover: #2a2a27;--ink: #ece9e2;--on-ink: #141413;--dim: #a8a398;--edge: #353430;--edge-strong: #77736a;--accent: #ff8f6b;--on-accent: #1c0b05;--focus: #ff8f6b;--pass: #86cf95;--warn: #e9b95a;--fail: #ff8f6b;--paper-shadow: 0 1px 1px rgb(0 0 0 / .5), 0 10px 24px -8px rgb(0 0 0 / .65), 0 34px 70px -30px rgb(0 0 0 / .8)}}@media (prefers-contrast: more){:root{--dim: #36332e;--edge: #6f6a60;--edge-strong: #36332e;--paper-dim: #3f3b34}}@media (prefers-contrast: more) and (prefers-color-scheme: dark){:root{--dim: #d6d2c9;--edge: #8e897f;--edge-strong: #d6d2c9}}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--desk);color:var(--ink);font:400 1rem/1.5 var(--sans);overflow-x:hidden}.desk{min-height:100vh;background-color:var(--desk);background-image:radial-gradient(120% 70% at 50% -10%,rgb(255 255 255 / .22),transparent 60%),linear-gradient(var(--desk-line) 1px,transparent 1px),linear-gradient(90deg,var(--desk-line) 1px,transparent 1px);background-size:100% 100%,24px 24px,24px 24px}@media (prefers-color-scheme: dark){.desk{background-image:radial-gradient(120% 70% at 50% -10%,rgb(255 250 235 / .04),transparent 60%),linear-gradient(var(--desk-line) 1px,transparent 1px),linear-gradient(90deg,var(--desk-line) 1px,transparent 1px)}}.shell,.footer{max-width:92rem;margin:0 auto;padding:1.25rem clamp(1rem,3vw,2.5rem) 1.5rem}.footer{padding-bottom:3rem}@media (max-width: 699px){.shell{padding-top:.9rem}}.sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.mono{font-family:var(--mono)}h1,h2,h3,p{overflow-wrap:break-word}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}fieldset{margin:0;padding:0;border:0;min-width:0}.legend{display:block;padding:0;margin:0 0 .45rem;font-size:.8125rem;font-weight:600}.masthead{display:grid;gap:1rem 2rem;align-items:end;padding:.75rem 0 1.5rem}@media (min-width: 900px){.masthead{grid-template-columns:minmax(0,1fr) auto}}.eyebrow{display:flex;align-items:center;gap:.55rem;margin:0 0 .6rem;font:500 .75rem/1.2 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}.eyebrow:before{content:"";width:.85rem;height:.85rem;border:1.5px solid var(--accent);border-radius:50%;background:linear-gradient(var(--accent),var(--accent)) center / 1.5px 100% no-repeat,linear-gradient(var(--accent),var(--accent)) center / 100% 1.5px no-repeat}.masthead__words{min-width:0}.masthead__title{margin:0;max-width:19ch;font-family:var(--serif);font-weight:600;font-size:clamp(1.75rem,1.15rem + 2.2vw,2.85rem);line-height:1.04;letter-spacing:-.015em;text-wrap:balance}.masthead__lede{margin:.65rem 0 0;max-width:58ch;color:var(--dim);font-size:.9375rem}.masthead__tools{display:flex;flex-direction:column;align-items:flex-end;gap:.6rem}.tabs{display:flex;gap:3px;padding:3px;border:1px solid var(--edge-strong);border-radius:var(--radius);background:var(--panel)}.tab{display:grid;min-height:2.75rem;padding:.4rem 1.1rem;border:0;border-radius:4px;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.tab:hover{background:var(--hover)}.tab[aria-selected=true]{background:var(--ink);color:var(--on-ink)}.tab__label{font-weight:600;font-size:.9375rem;line-height:1.25}.tab__hint{font:400 .6875rem/1.3 var(--mono);opacity:.8}.tools{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.4rem}@media (max-width: 899px){.masthead__tools{align-items:flex-start}.tools{justify-content:flex-start}}@media (max-width: 699px){.masthead{gap:.75rem;padding:0 0 .75rem}.eyebrow{margin-bottom:.45rem}.masthead__tools{flex-direction:row;flex-wrap:wrap;align-items:center;gap:.4rem}.tabs{flex:1 1 12rem}.tab{min-height:2.6rem}.tab__label{font-size:.875rem}.tools{flex-wrap:nowrap}.tools .btn__label{display:none}.tools .btn{min-width:2.5rem;min-height:2.6rem;padding:.3rem .5rem}.masthead__lede{font-size:.875rem;line-height:1.45}.tab{flex:1 1 0;justify-items:center;text-align:center;padding:.35rem .5rem}.tab__hint{display:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:2.5rem;padding:.5rem .95rem;border:1px solid var(--edge-strong);border-radius:4px;background:var(--panel-raised);color:var(--ink);font:500 .9375rem/1.2 var(--sans);text-align:center;cursor:pointer;transition:background-color .12s ease,border-color .12s ease}.btn:hover:not(:disabled){background:var(--hover);border-color:var(--ink)}.btn--primary{border-color:var(--ink);background:var(--ink);color:var(--on-ink)}.btn--primary:hover:not(:disabled){background:var(--ink);box-shadow:0 0 0 2px var(--panel),0 0 0 3px var(--ink)}.btn--small{min-height:2rem;padding:.3rem .65rem;font-size:.8125rem;gap:.35rem}.btn--compact .btn__label{display:none}.btn:disabled{cursor:not-allowed;opacity:.48}.btn[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.icon{width:1.1em;height:1.1em;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.card{border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel)}.card+.card{margin-top:.7rem}.card__head{display:flex;align-items:center;gap:.8rem;min-height:3.1rem;padding:.7rem 1rem;list-style:none;cursor:pointer;border-radius:var(--radius)}.card__head::-webkit-details-marker{display:none}.card__head:hover .card__title{text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px}.card__head--static{cursor:default}.card__head--static:hover .card__title{text-decoration:none}.card__num{font:500 .75rem/1 var(--mono);letter-spacing:.04em;color:var(--accent)}.card__title{margin:0;font:600 1rem/1.25 var(--sans)}.card__meta{min-width:0;max-width:55%;margin-left:auto;overflow:hidden;color:var(--dim);font:400 .75rem/1.3 var(--mono);text-overflow:ellipsis;white-space:nowrap}.card__chevron{width:1rem;height:1rem;margin-left:.25rem;color:var(--dim);transition:transform .16s ease}.card[open]>.card__head .card__chevron{transform:rotate(180deg)}.card[open]>.card__head{border-bottom:1px dashed var(--edge);border-radius:var(--radius) var(--radius) 0 0}.card__body{padding:.4rem 1rem 1.1rem}.card--static .card__body{padding-top:1rem}.notice{margin:0 0 .75rem;padding:.65rem .85rem;border-left:3px solid var(--warn);border-radius:0 4px 4px 0;background:var(--panel);font-size:.875rem}.choice{position:relative;display:block;min-width:0}.choice__input{position:absolute;inset:0;z-index:1;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.choice__input:disabled{cursor:not-allowed}.choice__box{display:flex;align-items:center;gap:.5rem;height:100%;border:1px solid var(--edge);border-radius:4px;background:var(--panel-raised);color:var(--ink);font-size:.875rem;line-height:1.25;transition:border-color .12s ease,background-color .12s ease}.choice__input:hover+.choice__box{border-color:var(--edge-strong)}.choice__input:checked+.choice__box{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.choice__input:focus-visible+.choice__box{outline:2px solid var(--focus);outline-offset:2px}.choice__input:disabled+.choice__box{opacity:.5}.choice__img{display:block;flex:none;background:var(--paper);border-radius:2px}.choice__label{min-width:0;overflow-wrap:anywhere}.choice__hint{color:var(--dim);font-size:.75rem}.segments{margin-top:.9rem}.segments__grid{display:flex;flex-wrap:wrap;gap:.3rem}.segments .choice__box{min-height:2.25rem;padding:.35rem .75rem}.segments .choice__input:checked+.choice__box{background:var(--ink);color:var(--on-ink)}.chips__grid{display:flex;flex-wrap:wrap;gap:.4rem;align-items:stretch}.chips .choice__box{min-height:2.35rem;padding:.35rem .85rem;border-radius:999px;white-space:nowrap}.chips .choice__input:checked+.choice__box{background:var(--ink);color:var(--on-ink)}.more{display:flex;min-width:9rem}.more__select.input{min-height:2.35rem;padding-top:.3rem;padding-bottom:.3rem;border-radius:999px;font-size:.875rem}.more[data-active=true] .more__select{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);font-weight:600}@media (max-width: 699px){.chips__grid{flex-wrap:nowrap;overflow-x:auto;margin:0 -1rem;padding:.15rem 1rem .5rem;scrollbar-width:thin}.chips .choice{flex:none}}.swatches{margin-top:.9rem}.swatches__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.4rem,1fr));gap:.45rem}.swatches .choice__box{flex-direction:column;justify-content:flex-start;gap:.35rem;padding:.45rem .35rem .5rem;text-align:center;font-size:.75rem}.swatches .choice__img{width:3rem;height:3rem}.gallery,.gallery__set{min-width:0}.gallery__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(6.25rem,1fr));gap:.5rem;margin-top:.4rem}.gallery__category{grid-column:1 / -1;margin:.75rem 0 0;font:500 .6875rem/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}.gallery__category:first-child{margin-top:.25rem}.choice--preset .choice__box{flex-direction:column;gap:.4rem;padding:.45rem .4rem .55rem;text-align:center;font-size:.75rem}.choice--preset .choice__img{width:100%;max-width:5rem;height:auto;aspect-ratio:1;object-fit:contain}.gallery__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1rem;margin-top:1rem}.gallery__actions .field__hint{flex:1 1 14rem}.field{display:grid;gap:.3rem;margin-top:.9rem}.field__label{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:0;font-size:.8125rem;font-weight:600}.field__hint{margin:0;color:var(--dim);font-size:.8125rem}.field__hint--error{color:var(--fail)}.field__issues{display:grid;gap:.3rem;margin:.15rem 0 0;padding:0;list-style:none}.field__extras{display:flex;flex-wrap:wrap;gap:.4rem}.field--check{gap:.2rem}.field--list .list{display:grid;gap:.4rem}.list__row{display:flex;gap:.4rem;align-items:center}.list__row .input{flex:1;min-width:0}.input{width:100%;min-height:2.6rem;padding:.5rem .7rem;border:1px solid var(--edge-strong);border-radius:4px;background:var(--field);color:var(--ink);font:inherit;font-size:1rem}.input:focus-visible{outline:2px solid var(--focus);outline-offset:1px;border-color:var(--ink)}.input[aria-invalid=true]{border-color:var(--fail);box-shadow:inset 3px 0 0 var(--fail)}.input::placeholder{color:var(--dim);opacity:.85}.input--area{min-height:5.5rem;resize:vertical}.input--mono{font-family:var(--mono);font-size:.875rem}.input--hex{width:6.5rem;font-family:var(--mono);font-size:.875rem}.input--number{max-width:11rem;font-family:var(--mono)}.input--select{cursor:pointer;overflow:hidden;text-overflow:ellipsis}.tick{display:inline-flex;align-items:center;gap:.55rem;min-height:2.25rem;margin-top:.6rem;font-size:.875rem;cursor:pointer}.tick input{width:1.15rem;height:1.15rem;margin:0;accent-color:var(--ink)}.tag{display:inline-block;padding:.2rem .35rem;border:1px solid var(--edge-strong);border-radius:3px;color:var(--dim);font:500 .625rem/1 var(--mono);letter-spacing:.06em;text-transform:uppercase}.note{display:flex;align-items:flex-start;gap:.45rem;margin:0;font-size:.8125rem;line-height:1.4}.note .icon{width:1rem;height:1rem;margin-top:.1rem}.note--error{color:var(--fail)}.note--warning{color:var(--warn)}.note--info{color:var(--dim)}p.note{display:block;margin-top:.75rem}.slider{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:.15rem .75rem;margin-top:.9rem}.slider__label{font-size:.8125rem;font-weight:600}.slider__value{color:var(--dim);font:400 .8125rem/1.2 var(--mono)}.slider__input{grid-column:1 / -1;width:100%;min-height:1.6rem;margin:0;accent-color:var(--ink)}.colour-well{width:2.75rem;height:2.5rem;padding:.15rem;border:1px solid var(--edge-strong);border-radius:4px;background:var(--field);cursor:pointer}.content,.form,.form__group{display:grid;min-width:0}.content__action-text{font-weight:500}.content__description{margin:.6rem 0 0;color:var(--dim);font-size:.8125rem}.content__action{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;margin:1.1rem 0 0;padding:.55rem .8rem;border-left:3px solid var(--accent);border-radius:0 4px 4px 0;background:var(--panel-raised);font-size:.9375rem}.content__action-label{color:var(--dim);font:500 .6875rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase}.content__notes{display:grid}.form__group--named{margin-top:1.1rem;padding-top:.6rem;border-top:1px dashed var(--edge)}.form__group--named>.legend{color:var(--dim);font:500 .6875rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase}.advanced{margin-top:1rem}.advanced__head{display:flex;align-items:center;min-height:2.25rem;list-style:none;font-size:.875rem;font-weight:600;cursor:pointer}.advanced__head::-webkit-details-marker{display:none}.advanced__head:after,.encoding__title:after{content:"+";margin-left:.4rem;color:var(--dim);font:500 .875rem/1 var(--mono)}.advanced[open]>.advanced__head:after,.encoding[open] .encoding__title:after{content:"\2212"}.advanced__body{padding-left:.75rem;border-left:2px solid var(--edge)}.notes{margin-top:1rem}.notes__title{margin:1.1rem 0 .45rem;color:var(--dim);font:500 .6875rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase}.notes__list{display:grid;gap:.35rem;margin:0;padding:0;list-style:none}.encoding{margin-top:1.1rem;padding-top:.7rem;border-top:1px solid var(--edge)}.encoding__head{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.3rem .8rem;min-height:2.5rem;list-style:none;cursor:pointer;border-radius:4px}.encoding__head::-webkit-details-marker{display:none}.encoding__title{font-size:.8125rem;font-weight:600}.encoding__reading{grid-column:1 / -1;color:var(--dim);font:400 .75rem/1.3 var(--mono)}.meter{position:relative;display:block;height:.45rem;overflow:hidden;border-radius:999px;background:var(--edge)}.meter__fill{position:absolute;inset:0;background:var(--ink);transform:scaleX(var(--fill, 0));transform-origin:left center;transition:transform .2s ease}.meter[data-level=high] .meter__fill{background:var(--warn)}.encoding__body{padding-top:.25rem}.facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:.4rem 1rem;margin:.75rem 0 0}.facts dt{font-size:.8125rem;font-weight:600}.facts dd{margin:0;font-size:.875rem;overflow-wrap:anywhere}.facts--mono dd{font:400 .8125rem/1.45 var(--mono)}.panel{display:grid}.panel__part+.panel__part{margin-top:1.1rem;padding-top:.2rem;border-top:1px dashed var(--edge)}.params,.paint,.paint__body{display:grid}.ink{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.75rem}.ink__label{min-width:4.5rem;font-size:.8125rem;font-weight:600}.ink .field__hint{flex-basis:100%}.stops{display:grid;gap:.6rem;margin:.6rem 0 0;padding:0;list-style:none}.stops__row{padding-top:.25rem;border-top:1px dashed var(--edge)}.stops__row>.btn{margin-top:.5rem}.stops+.btn{justify-self:start;margin-top:.75rem}.contrast{margin-top:1.25rem;padding:.8rem .9rem;border:1px solid var(--edge);border-radius:4px;background:var(--panel-raised)}.contrast__row{display:flex;align-items:center;gap:.85rem}.contrast__swatch{display:grid;flex:none;place-items:center;width:2.75rem;height:2.75rem;border:1px solid var(--edge);border-radius:3px;background:var(--bg, #ffffff)}.contrast__fg{width:1.2rem;height:1.2rem;background:var(--fg, #000000)}.contrast__ratio{margin:0;font:500 1.0625rem/1.3 var(--mono)}.contrast__verdict{margin:0;font-size:.8125rem}.contrast[data-level=good] .contrast__verdict{color:var(--pass)}.contrast[data-level=fair] .contrast__verdict{color:var(--warn)}.contrast[data-level=poor] .contrast__verdict{color:var(--fail)}.logo__upload{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .9rem;margin-top:1rem}.logo__upload .field__hint{flex:1 1 14rem}.logo__settings{display:grid}.logo__level{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-top:1rem}.frame__text{display:grid}.check__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem 1rem;margin-top:.4rem}.check__status{margin:0;font-weight:600}.check[data-status=unavailable] .check__status{color:var(--dim)}.check[data-verdict=pass] .check__status{color:var(--pass)}.check[data-verdict=warn] .check__status{color:var(--warn)}.check[data-verdict=fail] .check__status{color:var(--fail)}.check[data-depth=quick] .check__status{font-weight:500}.check:not([data-status=running]) .check__progress,.bulk:not([data-status=running]) .check__progress{display:none}.check__progress{position:relative;display:block;height:3px;margin-top:.75rem;overflow:hidden;background:var(--edge)}.check__progress-fill{position:absolute;inset:0;background:var(--accent);transform:scaleX(var(--fill, 0));transform-origin:left center;transition:transform .16s linear}.check__detail{display:grid}.check__limit{margin:.8rem 0 0;font:400 .875rem/1.45 var(--mono)}.checks{display:grid;gap:.55rem;margin:.9rem 0 0;padding:0;list-style:none}.checks__row{display:grid;grid-template-columns:1rem minmax(0,1fr) auto;align-items:baseline;gap:.15rem .55rem;font-size:.875rem}.checks__row .icon{align-self:center}.checks__name{font-weight:600}.checks__word{font:500 .75rem/1.2 var(--mono)}.checks__sentence,.checks__numbers{grid-column:2 / -1;color:var(--dim);font-size:.8125rem}.checks__numbers{font-family:var(--mono);font-size:.75rem}.checks--captures .checks__row{grid-template-columns:1rem minmax(0,1fr) auto}[data-result=pass]>.icon,.checks__row[data-result=pass] .checks__word{color:var(--pass)}[data-result=warn]>.icon,.checks__row[data-result=warn] .checks__word{color:var(--warn)}[data-result=fail]>.icon,.checks__row[data-result=fail] .checks__word{color:var(--fail)}.fixes{margin-top:.25rem}.fixes__list{display:flex;flex-wrap:wrap;gap:.45rem}.export__options{display:grid}.export>.btn--primary{justify-self:start;margin-top:1.1rem}@media (max-width: 699px){.export>.btn--primary{display:none}}.library__save{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.library__save .field{flex:1 1 100%;margin-bottom:.25rem}.library__list{display:grid;gap:.45rem;margin:.9rem 0 0;padding:0;list-style:none}.library__item{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;padding:.6rem .75rem;border:1px solid var(--edge);border-radius:4px;background:var(--panel-raised)}.library__about{min-width:0}.library__name{display:block;font-weight:600;overflow-wrap:anywhere}.library__when{display:block;color:var(--dim);font:400 .75rem/1.4 var(--mono)}.library__palette{display:flex;flex-wrap:wrap;gap:3px;margin-top:.35rem}.library__ink{width:1rem;height:1rem;border:1px solid var(--edge-strong);border-radius:2px;background:var(--ink-swatch, transparent);forced-color-adjust:none}.library__actions,.library__files{display:flex;flex-wrap:wrap;gap:.4rem}.library__files{margin-top:.9rem}.library>.note{margin-top:.75rem}.mode{display:block}.create{display:grid;gap:1.5rem;align-items:start}.create__controls{min-width:0}.proof-sentinel{display:block;height:0}.proof-spacer{display:none}@media (min-width: 700px){.create{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.25rem}.create__controls{grid-column:1;grid-row:1}.create__proof{position:sticky;top:1rem;grid-column:2;grid-row:1}}@media (min-width: 1100px){.create{grid-template-columns:minmax(27rem,36rem) minmax(0,1fr);gap:2.25rem}}.proof{display:grid;gap:.8rem}.proof__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.4rem}.proof__bar .segments{margin:0 auto 0 0}.proof__bar .segments .choice__box{min-height:2rem;padding:.25rem .65rem;font-size:.8125rem}.proof__desk{display:flex;justify-content:center}.proof__sheet{position:relative;width:fit-content;max-width:100%;padding:1.9rem 1.9rem 1rem 1.1rem;border-radius:2px;background:var(--paper);box-shadow:var(--paper-shadow);color:var(--paper-ink);forced-color-adjust:none}.proof__sheet[data-surround=dark]{--paper-ink: #e9e5dc;--paper-dim: #a59f93;--paper-line: #45423c;background:#1d1c1a}.proof__sheet[data-size=true]{min-width:min(100%,20rem);overflow:auto}.proof__registration{position:absolute;top:.5rem;left:50%;width:14px;height:14px;fill:none;stroke:var(--paper-dim);stroke-width:1;transform:translate(-50%)}.proof__frame{position:relative;display:grid;grid-template-columns:18px 14px max-content;grid-template-rows:18px 14px max-content}.proof__corner{grid-column:1;grid-row:1;align-self:end;justify-self:end;width:7px;height:7px;border-right:1px solid var(--paper-dim);border-bottom:1px solid var(--paper-dim)}.ruler{display:block;overflow:visible;color:var(--paper-dim)}.ruler path{fill:none;stroke:currentColor;stroke-width:1}.ruler text{fill:currentColor;font:8px var(--mono)}.ruler--top{grid-column:3;grid-row:1}.ruler--left{grid-column:1;grid-row:3}.proof__stage{position:relative;grid-column:3;grid-row:3;width:min(calc(100vw - 6rem),calc(100vh - 25rem),34rem);min-width:9rem;aspect-ratio:1 / var(--ratio, 1)}.proof__sheet[data-size=true] .proof__stage{width:var(--true-width, 10rem);min-width:0}@media (min-width: 700px){.proof__stage{width:min(calc(50vw - 7rem),calc(100vh - 25rem),34rem)}}@media (min-width: 1100px){.proof__stage{width:min(calc(100vw - 48rem),calc(100vh - 25.5rem),38rem);min-width:14rem}}.proof__stage[data-ground=transparent]{background:repeating-conic-gradient(#dcd8cf 0% 25%,#fff 0% 50%) 0 0 / 12px 12px}.proof__img{display:block;width:100%;height:100%}.proof__stage[data-state=sample] .proof__img{opacity:.3;filter:grayscale(1)}.proof__quiet{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.proof__quiet rect{fill:none;stroke:var(--accent);stroke-width:1;stroke-dasharray:4 3;opacity:.75}.proof__sheet[data-surround=dark] .proof__quiet rect{stroke:#ff8f6b}.crop{position:absolute;width:0;height:0;grid-column:3;grid-row:3;color:var(--paper-ink)}.crop:before,.crop:after{content:"";position:absolute;background:currentColor}.crop:before{width:1px;height:10px}.crop:after{width:10px;height:1px}.crop--tl{top:0;left:0}.crop--tr{top:0;right:0}.crop--bl{bottom:0;left:0}.crop--br{right:0;bottom:0}.crop--tl:before,.crop--tr:before{bottom:3px;left:-.5px}.crop--bl:before,.crop--br:before{top:3px;left:-.5px}.crop--tl:after,.crop--bl:after{top:-.5px;right:3px}.crop--tr:after,.crop--br:after{top:-.5px;left:3px}.proof__badge{position:absolute;top:.5rem;left:50%;z-index:2;padding:.3rem .55rem;border-radius:2px;background:var(--accent);color:var(--on-accent);font:700 .6875rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;transform:translate(-50%);white-space:nowrap}.proof__stage[data-state=sample] .proof__badge{top:50%;background:var(--paper-ink);color:var(--paper);transform:translate(-50%,-50%)}.proof__slug{contain:inline-size;display:flex;flex-wrap:wrap;gap:.15rem .9rem;margin:.9rem 0 0 32px;color:var(--paper-dim);font:400 .6875rem/1.4 var(--mono);letter-spacing:.02em}.proof__slug-label{color:var(--paper-ink);font-weight:700;letter-spacing:.12em;text-transform:uppercase}.proof__note{margin:0;color:var(--dim);font-size:.8125rem;text-align:center}.proof__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem}.card__body>.proof__actions{justify-content:flex-start;margin-top:1rem}@keyframes proof-print{0%{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}@keyframes proof-roller{0%{top:0;opacity:1}88%{opacity:1}to{top:100%;opacity:0}}.proof__stage--printing .proof__img{animation:proof-print .82s cubic-bezier(.3,.6,.2,1) both}.proof__stage--printing:after{content:"";position:absolute;left:-8px;right:-8px;z-index:3;height:2px;background:var(--accent);box-shadow:0 0 0 1px #fff9;animation:proof-roller .82s cubic-bezier(.3,.6,.2,1) both}.strip{display:grid;gap:.4rem}.strip__title{margin:0;color:var(--dim);font:500 .6875rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase}.strip__row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem;margin:0;padding:0;list-style:none}.strip__caption{margin:0;color:var(--dim);font-size:.75rem}.strip[data-stale=true] .strip__row{opacity:.6}.capture{display:grid;gap:.2rem;min-width:0;font-size:.6875rem;line-height:1.25}.capture__view{position:relative;display:grid;place-items:center;overflow:hidden;aspect-ratio:1;border-bottom:4px solid var(--edge);border-radius:2px 2px 0 0;background:var(--paper);forced-color-adjust:none}.capture[data-result=pass] .capture__view{border-bottom-color:var(--pass)}.capture[data-result=partial] .capture__view{border-bottom-color:var(--warn)}.capture[data-result=fail] .capture__view{border-bottom-color:var(--fail)}.capture__img{display:block;width:86%;height:86%;object-fit:contain}.capture--far .capture__img{width:34%;height:34%}.capture--soft .capture__img{filter:blur(1.4px)}.capture--angle .capture__img{transform:perspective(110px) rotateY(40deg) rotateX(12deg) scale(.8)}.capture--dim .capture__view{background:#6d6a63}.capture--dim .capture__img{filter:brightness(.4) contrast(.85)}.capture--glare .capture__view:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 46% 36% at 64% 36%,#fffffff5,#ffffff80 45%,#fff0 75%)}.capture--ink .capture__img{filter:blur(.7px) brightness(.78) contrast(2.6)}.capture__name{font-weight:600;overflow-wrap:anywhere}.capture__result{display:flex;align-items:center;gap:.2rem;color:var(--dim);font:400 .625rem/1.2 var(--mono)}.capture__result .icon{width:.85rem;height:.85rem}.capture[data-result=pass] .capture__result{color:var(--pass)}.capture[data-result=partial] .capture__result{color:var(--warn)}.capture[data-result=fail] .capture__result{color:var(--fail)}@media (max-width: 699px){.strip__row{grid-template-columns:repeat(auto-fill,minmax(4.25rem,1fr))}.create{display:flex;flex-direction:column;align-items:stretch;gap:0}.create__proof{order:-2}.proof-spacer{order:-1;flex:none}.create__proof{position:sticky;top:0;z-index:20;margin:0 -1rem .75rem;padding:.25rem 1rem .5rem;border-bottom:1px solid transparent}.proof__note{display:none}.card__body>.proof__bar{justify-content:flex-start;margin-top:.75rem}.proof-spacer{display:block;height:0}.proof__stage{width:min(calc(100vw - 7rem),8.5rem);min-width:0}.proof__sheet{padding:1.25rem 1.25rem .6rem .7rem}.proof__slug{margin-top:.5rem;font-size:.625rem;gap:0 .6rem}.create__proof[data-compact=true]{background:var(--desk);border-bottom-color:var(--edge);box-shadow:0 8px 18px -12px #00000059}.create__proof[data-compact=true] .proof__bar,.create__proof[data-compact=true] .proof__note,.create__proof[data-compact=true] .proof__registration,.create__proof[data-compact=true] .ruler,.create__proof[data-compact=true] .proof__corner,.create__proof[data-compact=true] .crop{display:none}.create__proof[data-compact=true] .proof__desk{justify-content:flex-start}.create__proof[data-compact=true] .proof__sheet{display:flex;align-items:center;gap:.9rem;width:100%;padding:.5rem .75rem}.create__proof[data-compact=true] .proof__frame{display:block}.create__proof[data-compact=true] .proof__stage{width:4.75rem}.create__proof[data-compact=true] .proof__slug{contain:none;flex:1 1 auto;margin:0;font-size:.6875rem}.create__proof[data-compact=true] .proof__badge{top:auto;bottom:-.2rem;font-size:.5625rem;padding:.2rem .3rem}}.dock{display:none}@media (max-width: 699px){body[data-mode=create] .dock{position:fixed;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem 1rem calc(.6rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--edge);background:var(--panel)}body[data-mode=create]{padding-bottom:4.5rem}}.dock__note{min-width:0;overflow:hidden;color:var(--dim);font-size:.75rem;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.dock .btn{flex:none}.toast{position:fixed;bottom:1.25rem;left:50%;z-index:40;max-width:min(34rem,calc(100vw - 2rem));margin:0;padding:.65rem .95rem;border-radius:4px;background:var(--ink);color:var(--on-ink);font-size:.875rem;opacity:0;pointer-events:none;transform:translate(-50%,.75rem);transition:opacity .18s ease,transform .18s ease}.toast[data-shown=true]{opacity:1;transform:translate(-50%)}@media (max-width: 699px){body[data-mode=create] .toast{bottom:5.25rem}}.veil{position:fixed;inset:0;z-index:50;display:none;place-items:center;padding:1rem;background:#14120e73;pointer-events:none}.veil[data-shown=true]{display:grid}.veil__card{max-width:28rem;padding:1.5rem 2rem;border:2px dashed var(--accent);border-radius:8px;background:var(--paper);color:var(--paper-ink);text-align:center}.veil__title{margin:0;font:600 1.5rem/1.2 var(--serif)}.veil__text{margin:.4rem 0 0;color:var(--paper-dim)}.calibrate{width:min(38rem,calc(100vw - 2rem));max-height:calc(100vh - 2rem);padding:1.25rem 1.4rem;border:1px solid var(--edge-strong);border-radius:8px;background:var(--panel);color:var(--ink)}.calibrate::backdrop{background:#14120e80}.calibrate__title{margin:0;font:600 1.35rem/1.2 var(--serif)}.calibrate__help{margin:.5rem 0 0;color:var(--dim);font-size:.875rem}.calibrate__bench{margin-top:1rem;padding:1rem 0;overflow-x:auto}.calibrate__card{border:2px solid var(--accent);border-radius:12px;background:repeating-linear-gradient(-45deg,transparent 0 6px,rgb(173 52 22 / .08) 6px 12px)}.calibrate__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:1.1rem}.scan,.scan__inputs,.results{min-width:0}.scan__intro{margin-bottom:1.25rem}.mode__title{margin:0;font:600 clamp(1.4rem,1.1rem + 1vw,1.85rem) / 1.15 var(--serif)}.mode__lede{max-width:60ch;margin:.4rem 0 0;color:var(--dim)}.scan__grid{display:grid;gap:1.25rem;align-items:start}@media (min-width: 900px){.scan__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.viewfinder{position:relative;display:grid;place-items:center;overflow:hidden;aspect-ratio:4 / 3;border-radius:4px;background:#0f0f0e;forced-color-adjust:none}.viewfinder__video{width:100%;height:100%;object-fit:contain}.viewfinder[data-live=false] .viewfinder__video,.viewfinder[data-live=refused] .viewfinder__video{opacity:0}.viewfinder__frame{position:absolute;inset:16% 26%;border:2px solid rgb(255 255 255 / .6);border-radius:8px}.viewfinder[data-live=refused] .viewfinder__frame{border-style:dashed;opacity:.45}.viewfinder__outline{position:absolute;inset:0;width:100%;height:100%}.viewfinder__outline polygon{fill:#ff8f6b2e;stroke:#ff8f6b;stroke-width:6;stroke-linejoin:round}.viewfinder__controls{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1rem;margin-top:.85rem}.viewfinder__status{flex:1 1 14rem;margin:0;color:var(--dim);font-size:.875rem}.dropzone{display:grid;justify-items:center;gap:.6rem;margin-top:1rem;padding:1.25rem 1rem;border:1.5px dashed var(--edge-strong);border-radius:var(--radius);text-align:center}.dropzone[data-over=true]{border-color:var(--accent);background:var(--panel-raised)}.dropzone--compact{margin-top:0}.dropzone__icon{width:2rem;height:2rem;color:var(--dim)}.dropzone__text{margin:0;font-weight:600}.results__head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.results__title{margin:0;font:600 1.35rem/1.2 var(--serif)}.results__status{margin:.3rem 0 .75rem;color:var(--dim)}.results__list{display:grid;gap:.75rem;margin:0;padding:0;list-style:none}.results__card+.results__card{margin-top:0}.results__symbol{margin:0;color:var(--dim);font:400 .75rem/1.3 var(--mono)}.results__type{margin:0;font-weight:600}.results__value{overflow-wrap:anywhere}.results__value--secret{font-family:var(--mono);letter-spacing:.1em}.results__secret{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.5rem}.results__host{margin:0;font:500 1rem/1.4 var(--mono);overflow-wrap:anywhere}.results__text{max-height:14rem;margin:0;padding:.75rem .85rem;overflow:auto;border-radius:3px;background:var(--paper);color:var(--paper-ink);font:400 .875rem/1.5 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere}.results__actions{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.9rem}.steps{display:grid;gap:.75rem;margin:0;padding:0;list-style:none}@media (min-width: 1100px){.steps{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}.step+.step{margin-top:0}.bulk__summary{margin:.65rem 0 0;color:var(--dim);font:400 .8125rem/1.4 var(--mono)}.mapping{display:grid;gap:.15rem}.mapping__row{display:grid;gap:.3rem;margin-top:.7rem}.preview{display:grid;gap:.4rem;margin:.75rem 0 0;padding:0;list-style:none}.preview__row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:.2rem .75rem;padding:.45rem .65rem;border:1px solid var(--edge);border-radius:4px;background:var(--panel-raised);font-size:.8125rem}.preview__number{color:var(--dim);font-family:var(--mono)}.preview__name{font-family:var(--mono);overflow-wrap:anywhere}.preview__state{display:inline-flex;align-items:center;gap:.25rem}.preview__row[data-result=pass] .preview__state{color:var(--pass)}.preview__row[data-result=fail] .preview__state{color:var(--fail)}.preview__issues{grid-column:1 / -1;margin:0;padding-left:1.1rem;color:var(--dim)}.preview__more{color:var(--dim);font-size:.8125rem}.bulk__output{display:grid}.bulk__run{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.1rem}.bulk[data-status=running] .check__progress-fill{background:var(--ink)}.about__body{display:grid;gap:.5rem 2rem}@media (min-width: 900px){.about__body{grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr)}.about__part:last-child{grid-column:1 / -1}}.about__line{margin:.6rem 0 0;font-size:.875rem}.about__line .mono{margin-left:.4rem}.licence{max-height:16rem;margin:.6rem 0 0;padding:.75rem .9rem;overflow:auto;border:1px solid var(--edge);border-radius:4px;background:var(--panel-raised);font:400 .6875rem/1.5 var(--mono);white-space:pre-wrap}.strip-host,.actions-host,.proof__bar-host{display:grid}.strip-host:empty,.actions-host:empty,.proof__bar-host:empty{display:none}@media (forced-colors: active){.choice__input:checked+.choice__box,.tab[aria-selected=true],.btn[aria-pressed=true]{outline:3px solid Highlight;outline-offset:-3px}.meter__fill,.check__progress-fill{background:Highlight}.capture__view,.proof__sheet,.viewfinder{border:1px solid CanvasText}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.print-sheet{display:none}@media print{@page{margin:12mm}body{background:#fff}body>:not(.print-sheet){display:none!important}.print-sheet{display:block}.print-sheet__img{display:block;height:auto;print-color-adjust:exact;-webkit-print-color-adjust:exact}}
9
+ <style>:root{color-scheme:light dark;--desk: #e6e3dc;--desk-line: rgb(60 50 30 / .06);--panel: #f0eee9;--panel-raised: #f7f5f1;--field: #fbfaf8;--hover: #e9e6df;--ink: #1b1a17;--on-ink: #f7f5f1;--dim: #57534b;--edge: #cfcac0;--edge-strong: #8c867b;--accent: #ad3416;--on-accent: #ffffff;--focus: #ad3416;--pass: #2b6a3b;--warn: #855400;--fail: #b0311a;--paper: #fffdf8;--paper-ink: #1b1a17;--paper-dim: #6a655b;--paper-line: #d8d3c8;--sans: system-ui, -apple-system, "Segoe UI", "Helvetica Neue", "Noto Sans", "Liberation Sans", sans-serif;--serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", "URW Palladio L", Georgia, serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", "DejaVu Sans Mono", monospace;--radius: 6px;--paper-shadow: 0 1px 1px rgb(40 30 10 / .08), 0 8px 18px -6px rgb(40 30 10 / .22), 0 28px 60px -24px rgb(40 30 10 / .35)}@media (prefers-color-scheme: dark){:root{--desk: #131312;--desk-line: rgb(255 250 235 / .035);--panel: #1b1b19;--panel-raised: #222220;--field: #121211;--hover: #2a2a27;--ink: #ece9e2;--on-ink: #141413;--dim: #a8a398;--edge: #353430;--edge-strong: #77736a;--accent: #ff8f6b;--on-accent: #1c0b05;--focus: #ff8f6b;--pass: #86cf95;--warn: #e9b95a;--fail: #ff8f6b;--paper-shadow: 0 1px 1px rgb(0 0 0 / .5), 0 10px 24px -8px rgb(0 0 0 / .65), 0 34px 70px -30px rgb(0 0 0 / .8)}}@media (prefers-contrast: more){:root{--dim: #36332e;--edge: #6f6a60;--edge-strong: #36332e;--paper-dim: #3f3b34}}@media (prefers-contrast: more) and (prefers-color-scheme: dark){:root{--dim: #d6d2c9;--edge: #8e897f;--edge-strong: #d6d2c9}}*,*:before,*:after{box-sizing:border-box}[hidden]{display:none!important}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{margin:0;background:var(--desk);color:var(--ink);font:400 1rem/1.5 var(--sans);overflow-x:hidden}.desk{min-height:100vh;background-color:var(--desk);background-image:radial-gradient(120% 70% at 50% -10%,rgb(255 255 255 / .22),transparent 60%),linear-gradient(var(--desk-line) 1px,transparent 1px),linear-gradient(90deg,var(--desk-line) 1px,transparent 1px);background-size:100% 100%,24px 24px,24px 24px}@media (prefers-color-scheme: dark){.desk{background-image:radial-gradient(120% 70% at 50% -10%,rgb(255 250 235 / .04),transparent 60%),linear-gradient(var(--desk-line) 1px,transparent 1px),linear-gradient(90deg,var(--desk-line) 1px,transparent 1px)}}.shell,.footer{max-width:92rem;margin:0 auto;padding:1.25rem clamp(1rem,3vw,2.5rem) 1.5rem}.footer{padding-bottom:3rem}@media (max-width: 699px){.shell{padding-top:.9rem}}.sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.mono{font-family:var(--mono)}h1,h2,h3,p{overflow-wrap:break-word}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}fieldset{margin:0;padding:0;border:0;min-width:0}.legend{display:block;padding:0;margin:0 0 .45rem;font-size:.8125rem;font-weight:600}.masthead{display:grid;gap:1rem 2rem;align-items:end;padding:.75rem 0 1.5rem}@media (min-width: 900px){.masthead{grid-template-columns:minmax(0,1fr) auto}}.eyebrow{display:flex;align-items:center;gap:.55rem;margin:0 0 .6rem;font:500 .75rem/1.2 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}.eyebrow:before{content:"";width:.85rem;height:.85rem;border:1.5px solid var(--accent);border-radius:50%;background:linear-gradient(var(--accent),var(--accent)) center / 1.5px 100% no-repeat,linear-gradient(var(--accent),var(--accent)) center / 100% 1.5px no-repeat}.masthead__words{min-width:0}.masthead__title{margin:0;max-width:19ch;font-family:var(--serif);font-weight:600;font-size:clamp(1.75rem,1.15rem + 2.2vw,2.85rem);line-height:1.04;letter-spacing:-.015em;text-wrap:balance}.masthead__lede{margin:.65rem 0 0;max-width:58ch;color:var(--dim);font-size:.9375rem}.masthead__tools{display:flex;flex-direction:column;align-items:flex-end;gap:.6rem}.tabs{display:flex;gap:3px;padding:3px;border:1px solid var(--edge-strong);border-radius:var(--radius);background:var(--panel)}.tab{display:grid;min-height:2.75rem;padding:.4rem 1.1rem;border:0;border-radius:4px;background:transparent;color:var(--ink);font:inherit;text-align:left;cursor:pointer}.tab:hover{background:var(--hover)}.tab[aria-selected=true]{background:var(--ink);color:var(--on-ink)}.tab__label{font-weight:600;font-size:.9375rem;line-height:1.25}.tab__hint{font:400 .6875rem/1.3 var(--mono);opacity:.8}.tools{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.4rem}@media (max-width: 899px){.masthead__tools{align-items:flex-start}.tools{justify-content:flex-start}}@media (max-width: 699px){.masthead{gap:.75rem;padding:0 0 .75rem}.eyebrow{margin-bottom:.45rem}.masthead__tools{flex-direction:row;flex-wrap:wrap;align-items:center;gap:.4rem}.tabs{flex:1 1 12rem}.tab{min-height:2.6rem}.tab__label{font-size:.875rem}.tools{flex-wrap:nowrap}.tools .btn__label{display:none}.tools .btn{min-width:2.5rem;min-height:2.6rem;padding:.3rem .5rem}.masthead__lede{font-size:.875rem;line-height:1.45}.tab{flex:1 1 0;justify-items:center;text-align:center;padding:.35rem .5rem}.tab__hint{display:none}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:2.5rem;padding:.5rem .95rem;border:1px solid var(--edge-strong);border-radius:4px;background:var(--panel-raised);color:var(--ink);font:500 .9375rem/1.2 var(--sans);text-align:center;cursor:pointer;transition:background-color .12s ease,border-color .12s ease}.btn:hover:not(:disabled){background:var(--hover);border-color:var(--ink)}.btn--primary{border-color:var(--ink);background:var(--ink);color:var(--on-ink)}.btn--primary:hover:not(:disabled){background:var(--ink);box-shadow:0 0 0 2px var(--panel),0 0 0 3px var(--ink)}.btn--small{min-height:2rem;padding:.3rem .65rem;font-size:.8125rem;gap:.35rem}.btn--compact .btn__label{display:none}.btn:disabled{cursor:not-allowed;opacity:.48}.btn[aria-pressed=true]{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.icon{width:1.1em;height:1.1em;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}.card{border:1px solid var(--edge);border-radius:var(--radius);background:var(--panel)}.card+.card{margin-top:.7rem}.card__head{display:flex;align-items:center;gap:.8rem;min-height:3.1rem;padding:.7rem 1rem;list-style:none;cursor:pointer;border-radius:var(--radius)}.card__head::-webkit-details-marker{display:none}.card__head:hover .card__title{text-decoration:underline;text-underline-offset:.2em;text-decoration-thickness:1px}.card__head--static{cursor:default}.card__head--static:hover .card__title{text-decoration:none}.card__num{font:500 .75rem/1 var(--mono);letter-spacing:.04em;color:var(--accent)}.card__title{margin:0;font:600 1rem/1.25 var(--sans)}.card__meta{min-width:0;max-width:55%;margin-left:auto;overflow:hidden;color:var(--dim);font:400 .75rem/1.3 var(--mono);text-overflow:ellipsis;white-space:nowrap}.card__chevron{width:1rem;height:1rem;margin-left:.25rem;color:var(--dim);transition:transform .16s ease}.card[open]>.card__head .card__chevron{transform:rotate(180deg)}.card[open]>.card__head{border-bottom:1px dashed var(--edge);border-radius:var(--radius) var(--radius) 0 0}.card__body{padding:.4rem 1rem 1.1rem}.card--static .card__body{padding-top:1rem}.notice{margin:0 0 .75rem;padding:.65rem .85rem;border-left:3px solid var(--warn);border-radius:0 4px 4px 0;background:var(--panel);font-size:.875rem}.choice{position:relative;display:block;min-width:0}.choice__input{position:absolute;inset:0;z-index:1;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}.choice__input:disabled{cursor:not-allowed}.choice__box{display:flex;align-items:center;gap:.5rem;height:100%;border:1px solid var(--edge);border-radius:4px;background:var(--panel-raised);color:var(--ink);font-size:.875rem;line-height:1.25;transition:border-color .12s ease,background-color .12s ease}.choice__input:hover+.choice__box{border-color:var(--edge-strong)}.choice__input:checked+.choice__box{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.choice__input:focus-visible+.choice__box{outline:2px solid var(--focus);outline-offset:2px}.choice__input:disabled+.choice__box{opacity:.5}.choice__img{display:block;flex:none;background:var(--paper);border-radius:2px}.choice__label{min-width:0;overflow-wrap:anywhere}.choice__hint{color:var(--dim);font-size:.75rem}.segments{margin-top:.9rem}.segments__grid{display:flex;flex-wrap:wrap;gap:.3rem}.segments .choice__box{min-height:2.25rem;padding:.35rem .75rem}.segments .choice__input:checked+.choice__box{background:var(--ink);color:var(--on-ink)}.chips__grid{display:flex;flex-wrap:wrap;gap:.4rem;align-items:stretch}.chips .choice__box{min-height:2.35rem;padding:.35rem .85rem;border-radius:999px;white-space:nowrap}.chips .choice__input:checked+.choice__box{background:var(--ink);color:var(--on-ink)}.more{display:flex;min-width:9rem}.more__select.input{min-height:2.35rem;padding-top:.3rem;padding-bottom:.3rem;border-radius:999px;font-size:.875rem}.more[data-active=true] .more__select{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);font-weight:600}@media (max-width: 699px){.chips__grid{flex-wrap:nowrap;overflow-x:auto;margin:0 -1rem;padding:.15rem 1rem .5rem;scrollbar-width:thin}.chips .choice{flex:none}}.swatches{margin-top:.9rem}.swatches__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(5.4rem,1fr));gap:.45rem}.swatches .choice__box{flex-direction:column;justify-content:flex-start;gap:.35rem;padding:.45rem .35rem .5rem;text-align:center;font-size:.75rem}.swatches .choice__img{width:3rem;height:3rem}.gallery,.gallery__set{min-width:0}.gallery__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(6.25rem,1fr));gap:.5rem;margin-top:.4rem}.gallery__category{grid-column:1 / -1;margin:.75rem 0 0;font:500 .6875rem/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--dim)}.gallery__category:first-child{margin-top:.25rem}.choice--preset .choice__box{flex-direction:column;gap:.4rem;padding:.45rem .4rem .55rem;text-align:center;font-size:.75rem}.choice--preset .choice__img{width:100%;max-width:5rem;height:auto;aspect-ratio:1;object-fit:contain}.gallery__actions{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1rem;margin-top:1rem}.gallery__actions .field__hint{flex:1 1 14rem}.field{display:grid;grid-template-columns:minmax(0,1fr);gap:.3rem;margin-top:.9rem}.field__select{overflow:hidden;margin:-3px;padding:3px}.field__label{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;padding:0;font-size:.8125rem;font-weight:600}.field__hint{margin:0;color:var(--dim);font-size:.8125rem}.field__hint--error{color:var(--fail)}.field__issues{display:grid;gap:.3rem;margin:.15rem 0 0;padding:0;list-style:none}.field__extras{display:flex;flex-wrap:wrap;gap:.4rem}.field--check{gap:.2rem}.field--list .list{display:grid;gap:.4rem}.list__row{display:flex;gap:.4rem;align-items:center}.list__row .input{flex:1;min-width:0}.input{width:100%;min-width:0;max-width:100%;min-height:2.6rem;padding:.5rem .7rem;border:1px solid var(--edge-strong);border-radius:4px;background:var(--field);color:var(--ink);font:inherit;font-size:1rem}.input:focus-visible{outline:2px solid var(--focus);outline-offset:1px;border-color:var(--ink)}.input[aria-invalid=true]{border-color:var(--fail);box-shadow:inset 3px 0 0 var(--fail)}.input::placeholder{color:var(--dim);opacity:.85}.input--area{min-height:5.5rem;resize:vertical}.input--mono{font-family:var(--mono);font-size:.875rem}.input--hex{width:6.5rem;font-family:var(--mono);font-size:.875rem}.input--number{max-width:11rem;font-family:var(--mono)}.input--select{cursor:pointer;overflow:hidden;text-overflow:ellipsis}.tick{display:inline-flex;align-items:center;gap:.55rem;min-height:2.25rem;margin-top:.6rem;font-size:.875rem;cursor:pointer}.tick input{width:1.15rem;height:1.15rem;margin:0;accent-color:var(--ink)}.tag{display:inline-block;padding:.2rem .35rem;border:1px solid var(--edge-strong);border-radius:3px;color:var(--dim);font:500 .625rem/1 var(--mono);letter-spacing:.06em;text-transform:uppercase}.note{display:flex;align-items:flex-start;gap:.45rem;margin:0;font-size:.8125rem;line-height:1.4}.note .icon{width:1rem;height:1rem;margin-top:.1rem}.note--error{color:var(--fail)}.note--warning{color:var(--warn)}.note--info{color:var(--dim)}p.note{display:block;margin-top:.75rem}.slider{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:.15rem .75rem;margin-top:.9rem}.slider__label{font-size:.8125rem;font-weight:600}.slider__value{color:var(--dim);font:400 .8125rem/1.2 var(--mono)}.slider__input{grid-column:1 / -1;width:100%;min-height:1.6rem;margin:0;accent-color:var(--ink)}.colour-well{width:2.75rem;height:2.5rem;padding:.15rem;border:1px solid var(--edge-strong);border-radius:4px;background:var(--field);cursor:pointer}.content,.form,.form__group{display:grid;min-width:0}.content__action-text{font-weight:500}.content__description{margin:.6rem 0 0;color:var(--dim);font-size:.8125rem}.content__action{display:flex;flex-wrap:wrap;align-items:baseline;gap:.25rem .75rem;margin:1.1rem 0 0;padding:.55rem .8rem;border-left:3px solid var(--accent);border-radius:0 4px 4px 0;background:var(--panel-raised);font-size:.9375rem}.content__action-label{color:var(--dim);font:500 .6875rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase}.content__notes{display:grid}.form__group--named{margin-top:1.1rem;padding-top:.6rem;border-top:1px dashed var(--edge)}.form__group--named>.legend{color:var(--dim);font:500 .6875rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase}.advanced{margin-top:1rem}.advanced__head{display:flex;align-items:center;min-height:2.25rem;list-style:none;font-size:.875rem;font-weight:600;cursor:pointer}.advanced__head::-webkit-details-marker{display:none}.advanced__head:after,.encoding__title:after{content:"+";margin-left:.4rem;color:var(--dim);font:500 .875rem/1 var(--mono)}.advanced[open]>.advanced__head:after,.encoding[open] .encoding__title:after{content:"\2212"}.advanced__body{padding-left:.75rem;border-left:2px solid var(--edge)}.notes{margin-top:1rem}.notes__title{margin:1.1rem 0 .45rem;color:var(--dim);font:500 .6875rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase}.notes__list{display:grid;gap:.35rem;margin:0;padding:0;list-style:none}.encoding{margin-top:1.1rem;padding-top:.7rem;border-top:1px solid var(--edge)}.encoding__head{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.3rem .8rem;min-height:2.5rem;list-style:none;cursor:pointer;border-radius:4px}.encoding__head::-webkit-details-marker{display:none}.encoding__title{font-size:.8125rem;font-weight:600}.encoding__reading{grid-column:1 / -1;color:var(--dim);font:400 .75rem/1.3 var(--mono)}.meter{position:relative;display:block;height:.45rem;overflow:hidden;border-radius:999px;background:var(--edge)}.meter__fill{position:absolute;inset:0;background:var(--ink);transform:scaleX(var(--fill, 0));transform-origin:left center;transition:transform .2s ease}.meter[data-level=high] .meter__fill{background:var(--warn)}.encoding__body{padding-top:.25rem}.facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:.4rem 1rem;margin:.75rem 0 0}.facts dt{font-size:.8125rem;font-weight:600}.facts dd{margin:0;font-size:.875rem;overflow-wrap:anywhere}.facts--mono dd{font:400 .8125rem/1.45 var(--mono)}.panel{display:grid}.panel__part+.panel__part{margin-top:1.1rem;padding-top:.2rem;border-top:1px dashed var(--edge)}.params,.paint,.paint__body{display:grid}.ink{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.75rem}.ink__label{min-width:4.5rem;font-size:.8125rem;font-weight:600}.ink .field__hint{flex-basis:100%}.stops{display:grid;gap:.6rem;margin:.6rem 0 0;padding:0;list-style:none}.stops__row{padding-top:.25rem;border-top:1px dashed var(--edge)}.stops__row>.btn{margin-top:.5rem}.stops+.btn{justify-self:start;margin-top:.75rem}.contrast{margin-top:1.25rem;padding:.8rem .9rem;border:1px solid var(--edge);border-radius:4px;background:var(--panel-raised)}.contrast__row{display:flex;align-items:center;gap:.85rem}.contrast__swatch{display:grid;flex:none;place-items:center;width:2.75rem;height:2.75rem;border:1px solid var(--edge);border-radius:3px;background:var(--bg, #ffffff)}.contrast__fg{width:1.2rem;height:1.2rem;background:var(--fg, #000000)}.contrast__ratio{margin:0;font:500 1.0625rem/1.3 var(--mono)}.contrast__verdict{margin:0;font-size:.8125rem}.contrast[data-level=good] .contrast__verdict{color:var(--pass)}.contrast[data-level=fair] .contrast__verdict{color:var(--warn)}.contrast[data-level=poor] .contrast__verdict{color:var(--fail)}.logo__upload{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .9rem;margin-top:1rem}.logo__upload .field__hint{flex:1 1 14rem}.logo__settings{display:grid}.logo__level{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;margin-top:1rem}.frame__text{display:grid}.check__head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.6rem 1rem;margin-top:.4rem}.check__status{margin:0;font-weight:600}.check[data-status=unavailable] .check__status{color:var(--dim)}.check[data-verdict=pass] .check__status{color:var(--pass)}.check[data-verdict=warn] .check__status{color:var(--warn)}.check[data-verdict=fail] .check__status{color:var(--fail)}.check[data-depth=quick] .check__status{font-weight:500}.check:not([data-status=running]) .check__progress,.bulk:not([data-status=running]) .check__progress{display:none}.check__progress{position:relative;display:block;height:3px;margin-top:.75rem;overflow:hidden;background:var(--edge)}.check__progress-fill{position:absolute;inset:0;background:var(--accent);transform:scaleX(var(--fill, 0));transform-origin:left center;transition:transform .16s linear}.check__detail{display:grid}.check__limit{margin:.8rem 0 0;font:400 .875rem/1.45 var(--mono)}.checks{display:grid;gap:.55rem;margin:.9rem 0 0;padding:0;list-style:none}.checks__row{display:grid;grid-template-columns:1rem minmax(0,1fr) auto;align-items:baseline;gap:.15rem .55rem;font-size:.875rem}.checks__row .icon{align-self:center}.checks__name{font-weight:600}.checks__word{font:500 .75rem/1.2 var(--mono)}.checks__sentence,.checks__numbers{grid-column:2 / -1;color:var(--dim);font-size:.8125rem}.checks__numbers{font-family:var(--mono);font-size:.75rem}.checks--captures .checks__row{grid-template-columns:1rem minmax(0,1fr) auto}[data-result=pass]>.icon,.checks__row[data-result=pass] .checks__word{color:var(--pass)}[data-result=warn]>.icon,.checks__row[data-result=warn] .checks__word{color:var(--warn)}[data-result=fail]>.icon,.checks__row[data-result=fail] .checks__word{color:var(--fail)}.fixes{margin-top:.25rem}.fixes__list{display:flex;flex-wrap:wrap;gap:.45rem}.export__options{display:grid}.export>.btn--primary{justify-self:start;margin-top:1.1rem}@media (max-width: 699px){.export>.btn--primary{display:none}}.library__save{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.library__save .field{flex:1 1 100%;margin-bottom:.25rem}.library__list{display:grid;gap:.45rem;margin:.9rem 0 0;padding:0;list-style:none}.library__item{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem;padding:.6rem .75rem;border:1px solid var(--edge);border-radius:4px;background:var(--panel-raised)}.library__about{min-width:0}.library__name{display:block;font-weight:600;overflow-wrap:anywhere}.library__when{display:block;color:var(--dim);font:400 .75rem/1.4 var(--mono)}.library__palette{display:flex;flex-wrap:wrap;gap:3px;margin-top:.35rem}.library__ink{width:1rem;height:1rem;border:1px solid var(--edge-strong);border-radius:2px;background:var(--ink-swatch, transparent);forced-color-adjust:none}.library__actions,.library__files{display:flex;flex-wrap:wrap;gap:.4rem}.library__files{margin-top:.9rem}.library>.note{margin-top:.75rem}.mode{display:block}.create{display:grid;gap:1.5rem;align-items:start}.create__controls{min-width:0}.proof-sentinel{display:block;height:0}.proof-spacer{display:none}@media (min-width: 700px){.create{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:1.25rem}.create__controls{grid-column:1;grid-row:1}.create__proof{position:sticky;top:1rem;grid-column:2;grid-row:1}}@media (min-width: 1100px){.create{grid-template-columns:minmax(27rem,36rem) minmax(0,1fr);gap:2.25rem}}.proof{display:grid;gap:.8rem}.proof__bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:.4rem}.proof__bar .segments{margin:0 auto 0 0}.proof__bar .segments .choice__box{min-height:2rem;padding:.25rem .65rem;font-size:.8125rem}.proof__desk{display:flex;justify-content:center}.proof__sheet{position:relative;width:fit-content;max-width:100%;padding:1.9rem 1.9rem 1rem 1.1rem;border-radius:2px;background:var(--paper);box-shadow:var(--paper-shadow);color:var(--paper-ink);forced-color-adjust:none}.proof__sheet[data-surround=dark]{--paper-ink: #e9e5dc;--paper-dim: #a59f93;--paper-line: #45423c;background:#1d1c1a}.proof__sheet[data-size=true]{min-width:min(100%,20rem);overflow:auto}.proof__registration{position:absolute;top:.5rem;left:50%;width:14px;height:14px;fill:none;stroke:var(--paper-dim);stroke-width:1;transform:translate(-50%)}.proof__frame{position:relative;display:grid;grid-template-columns:18px 14px max-content;grid-template-rows:18px 14px max-content}.proof__corner{grid-column:1;grid-row:1;align-self:end;justify-self:end;width:7px;height:7px;border-right:1px solid var(--paper-dim);border-bottom:1px solid var(--paper-dim)}.ruler{display:block;overflow:visible;color:var(--paper-dim)}.ruler path{fill:none;stroke:currentColor;stroke-width:1}.ruler text{fill:currentColor;font:8px var(--mono)}.ruler--top{grid-column:3;grid-row:1}.ruler--left{grid-column:1;grid-row:3}.proof__stage{position:relative;grid-column:3;grid-row:3;width:min(calc(100vw - 6rem),calc(100vh - 25rem),34rem);min-width:9rem;aspect-ratio:1 / var(--ratio, 1)}.proof__sheet[data-size=true] .proof__stage{width:var(--true-width, 10rem);min-width:0}@media (min-width: 700px){.proof__stage{width:min(calc(50vw - 7rem),calc(100vh - 25rem),34rem)}}@media (min-width: 1100px){.proof__stage{width:min(calc(100vw - 48rem),calc(100vh - 25.5rem),38rem);min-width:14rem}}.proof__stage[data-ground=transparent]{background:repeating-conic-gradient(#dcd8cf 0% 25%,#fff 0% 50%) 0 0 / 12px 12px}.proof__img{display:block;width:100%;height:100%}.proof__stage[data-state=sample] .proof__img{opacity:.3;filter:grayscale(1)}.proof__quiet{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}.proof__quiet rect{fill:none;stroke:var(--accent);stroke-width:1;stroke-dasharray:4 3;opacity:.75}.proof__sheet[data-surround=dark] .proof__quiet rect{stroke:#ff8f6b}.crop{position:absolute;width:0;height:0;grid-column:3;grid-row:3;color:var(--paper-ink)}.crop:before,.crop:after{content:"";position:absolute;background:currentColor}.crop:before{width:1px;height:10px}.crop:after{width:10px;height:1px}.crop--tl{top:0;left:0}.crop--tr{top:0;right:0}.crop--bl{bottom:0;left:0}.crop--br{right:0;bottom:0}.crop--tl:before,.crop--tr:before{bottom:3px;left:-.5px}.crop--bl:before,.crop--br:before{top:3px;left:-.5px}.crop--tl:after,.crop--bl:after{top:-.5px;right:3px}.crop--tr:after,.crop--br:after{top:-.5px;left:3px}.proof__badge{position:absolute;top:.5rem;left:50%;z-index:2;padding:.3rem .55rem;border-radius:2px;background:var(--accent);color:var(--on-accent);font:700 .6875rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;transform:translate(-50%);white-space:nowrap}.proof__stage[data-state=sample] .proof__badge{top:50%;background:var(--paper-ink);color:var(--paper);transform:translate(-50%,-50%)}.proof__slug{contain:inline-size;display:flex;flex-wrap:wrap;gap:.15rem .9rem;margin:.9rem 0 0 32px;color:var(--paper-dim);font:400 .6875rem/1.4 var(--mono);letter-spacing:.02em}.proof__slug-label{color:var(--paper-ink);font-weight:700;letter-spacing:.12em;text-transform:uppercase}.proof__note{margin:0;color:var(--dim);font-size:.8125rem;text-align:center}.proof__actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem}.card__body>.proof__actions{justify-content:flex-start;margin-top:1rem}@keyframes proof-print{0%{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}@keyframes proof-roller{0%{top:0;opacity:1}88%{opacity:1}to{top:100%;opacity:0}}.proof__stage--printing .proof__img{animation:proof-print .82s cubic-bezier(.3,.6,.2,1) both}.proof__stage--printing:after{content:"";position:absolute;left:-8px;right:-8px;z-index:3;height:2px;background:var(--accent);box-shadow:0 0 0 1px #fff9;animation:proof-roller .82s cubic-bezier(.3,.6,.2,1) both}.strip{display:grid;gap:.4rem}.strip__title{margin:0;color:var(--dim);font:500 .6875rem/1.2 var(--mono);letter-spacing:.08em;text-transform:uppercase}.strip__row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:.35rem;margin:0;padding:0;list-style:none}.strip__caption{margin:0;color:var(--dim);font-size:.75rem}.strip[data-stale=true] .strip__row{opacity:.6}.capture{display:grid;gap:.2rem;min-width:0;font-size:.6875rem;line-height:1.25}.capture__view{position:relative;display:grid;place-items:center;overflow:hidden;aspect-ratio:1;border-bottom:4px solid var(--edge);border-radius:2px 2px 0 0;background:var(--paper);forced-color-adjust:none}.capture[data-result=pass] .capture__view{border-bottom-color:var(--pass)}.capture[data-result=partial] .capture__view{border-bottom-color:var(--warn)}.capture[data-result=fail] .capture__view{border-bottom-color:var(--fail)}.capture__img{display:block;width:86%;height:86%;object-fit:contain}.capture--far .capture__img{width:34%;height:34%}.capture--soft .capture__img{filter:blur(1.4px)}.capture--angle .capture__img{transform:perspective(110px) rotateY(40deg) rotateX(12deg) scale(.8)}.capture--dim .capture__view{background:#6d6a63}.capture--dim .capture__img{filter:brightness(.4) contrast(.85)}.capture--glare .capture__view:after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 46% 36% at 64% 36%,#fffffff5,#ffffff80 45%,#fff0 75%)}.capture--ink .capture__img{filter:blur(.7px) brightness(.78) contrast(2.6)}.capture__name{font-weight:600;overflow-wrap:anywhere}.capture__result{display:flex;align-items:center;gap:.2rem;color:var(--dim);font:400 .625rem/1.2 var(--mono)}.capture__result .icon{width:.85rem;height:.85rem}.capture[data-result=pass] .capture__result{color:var(--pass)}.capture[data-result=partial] .capture__result{color:var(--warn)}.capture[data-result=fail] .capture__result{color:var(--fail)}@media (max-width: 699px){.strip__row{grid-template-columns:repeat(auto-fill,minmax(4.25rem,1fr))}.create{display:flex;flex-direction:column;align-items:stretch;gap:0}.create__proof{order:-2}.proof-spacer{order:-1;flex:none}.create__proof{position:sticky;top:0;z-index:20;margin:0 -1rem .75rem;padding:.25rem 1rem .5rem;border-bottom:1px solid transparent}.proof__note{display:none}.card__body>.proof__bar{justify-content:flex-start;margin-top:.75rem}.proof-spacer{display:block;height:0}.proof__stage{width:min(calc(100vw - 7rem),8.5rem);min-width:0}.proof__sheet{padding:1.25rem 1.25rem .6rem .7rem}.proof__slug{margin-top:.5rem;font-size:.625rem;gap:0 .6rem}.create__proof[data-compact=true]{background:var(--desk);border-bottom-color:var(--edge);box-shadow:0 8px 18px -12px #00000059}.create__proof[data-compact=true] .proof__bar,.create__proof[data-compact=true] .proof__note,.create__proof[data-compact=true] .proof__registration,.create__proof[data-compact=true] .ruler,.create__proof[data-compact=true] .proof__corner,.create__proof[data-compact=true] .crop{display:none}.create__proof[data-compact=true] .proof__desk{justify-content:flex-start}.create__proof[data-compact=true] .proof__sheet{display:flex;align-items:center;gap:.9rem;width:100%;padding:.5rem .75rem}.create__proof[data-compact=true] .proof__frame{display:block}.create__proof[data-compact=true] .proof__stage{width:4.75rem}.create__proof[data-compact=true] .proof__slug{contain:none;flex:1 1 auto;margin:0;font-size:.6875rem}.create__proof[data-compact=true] .proof__badge{top:auto;bottom:-.2rem;font-size:.5625rem;padding:.2rem .3rem}}.dock{display:none}@media (max-width: 699px){body[data-mode=create] .dock{position:fixed;right:0;bottom:0;left:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem 1rem calc(.6rem + env(safe-area-inset-bottom,0px));border-top:1px solid var(--edge);background:var(--panel)}body[data-mode=create]{padding-bottom:4.5rem}}.dock__note{min-width:0;overflow:hidden;color:var(--dim);font-size:.75rem;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.dock .btn{flex:none}.toast{position:fixed;bottom:1.25rem;left:50%;z-index:40;max-width:min(34rem,calc(100vw - 2rem));margin:0;padding:.65rem .95rem;border-radius:4px;background:var(--ink);color:var(--on-ink);font-size:.875rem;opacity:0;pointer-events:none;transform:translate(-50%,.75rem);transition:opacity .18s ease,transform .18s ease}.toast[data-shown=true]{opacity:1;transform:translate(-50%)}@media (max-width: 699px){body[data-mode=create] .toast{bottom:5.25rem}}.veil{position:fixed;inset:0;z-index:50;display:none;place-items:center;padding:1rem;background:#14120e73;pointer-events:none}.veil[data-shown=true]{display:grid}.veil__card{max-width:28rem;padding:1.5rem 2rem;border:2px dashed var(--accent);border-radius:8px;background:var(--paper);color:var(--paper-ink);text-align:center}.veil__title{margin:0;font:600 1.5rem/1.2 var(--serif)}.veil__text{margin:.4rem 0 0;color:var(--paper-dim)}.calibrate{width:min(38rem,calc(100vw - 2rem));max-height:calc(100vh - 2rem);padding:1.25rem 1.4rem;border:1px solid var(--edge-strong);border-radius:8px;background:var(--panel);color:var(--ink)}.calibrate::backdrop{background:#14120e80}.calibrate__title{margin:0;font:600 1.35rem/1.2 var(--serif)}.calibrate__help{margin:.5rem 0 0;color:var(--dim);font-size:.875rem}.calibrate__bench{margin-top:1rem;padding:1rem 0;overflow-x:auto}.calibrate__card{border:2px solid var(--accent);border-radius:12px;background:repeating-linear-gradient(-45deg,transparent 0 6px,rgb(173 52 22 / .08) 6px 12px)}.calibrate__actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.5rem;margin-top:1.1rem}.scan,.scan__inputs,.results{min-width:0}.scan__intro{margin-bottom:1.25rem}.mode__title{margin:0;font:600 clamp(1.4rem,1.1rem + 1vw,1.85rem) / 1.15 var(--serif)}.mode__lede{max-width:60ch;margin:.4rem 0 0;color:var(--dim)}.scan__grid{display:grid;gap:1.25rem;align-items:start}@media (min-width: 900px){.scan__grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}}.viewfinder{position:relative;display:grid;place-items:center;overflow:hidden;aspect-ratio:4 / 3;border-radius:4px;background:#0f0f0e;forced-color-adjust:none}.viewfinder__video{width:100%;height:100%;object-fit:contain}.viewfinder[data-live=false] .viewfinder__video,.viewfinder[data-live=refused] .viewfinder__video{opacity:0}.viewfinder__frame{position:absolute;inset:16% 26%;border:2px solid rgb(255 255 255 / .6);border-radius:8px}.viewfinder[data-live=refused] .viewfinder__frame{border-style:dashed;opacity:.45}.viewfinder__outline{position:absolute;inset:0;width:100%;height:100%}.viewfinder__outline polygon{fill:#ff8f6b2e;stroke:#ff8f6b;stroke-width:6;stroke-linejoin:round}.viewfinder__controls{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1rem;margin-top:.85rem}.viewfinder__status{flex:1 1 14rem;margin:0;color:var(--dim);font-size:.875rem}.dropzone{display:grid;justify-items:center;gap:.6rem;margin-top:1rem;padding:1.25rem 1rem;border:1.5px dashed var(--edge-strong);border-radius:var(--radius);text-align:center}.dropzone[data-over=true]{border-color:var(--accent);background:var(--panel-raised)}.dropzone--compact{margin-top:0}.dropzone__icon{width:2rem;height:2rem;color:var(--dim)}.dropzone__text{margin:0;font-weight:600}.results__head{display:flex;align-items:center;justify-content:space-between;gap:1rem}.results__title{margin:0;font:600 1.35rem/1.2 var(--serif)}.results__status{margin:.3rem 0 .75rem;color:var(--dim)}.results__list{display:grid;gap:.75rem;margin:0;padding:0;list-style:none}.results__card+.results__card{margin-top:0}.results__symbol{margin:0;color:var(--dim);font:400 .75rem/1.3 var(--mono)}.results__type{margin:0;font-weight:600}.results__value{overflow-wrap:anywhere}.results__value--secret{font-family:var(--mono);letter-spacing:.1em}.results__secret{display:inline-flex;flex-wrap:wrap;align-items:center;gap:.5rem}.results__host{margin:0;font:500 1rem/1.4 var(--mono);overflow-wrap:anywhere}.results__text{max-height:14rem;margin:0;padding:.75rem .85rem;overflow:auto;border-radius:3px;background:var(--paper);color:var(--paper-ink);font:400 .875rem/1.5 var(--mono);white-space:pre-wrap;overflow-wrap:anywhere}.results__actions{display:flex;flex-wrap:wrap;gap:.45rem;margin-top:.9rem}.steps{display:grid;gap:.75rem;margin:0;padding:0;list-style:none}@media (min-width: 1100px){.steps{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start}}.step+.step{margin-top:0}.bulk__summary{margin:.65rem 0 0;color:var(--dim);font:400 .8125rem/1.4 var(--mono)}.mapping{display:grid;grid-template-columns:minmax(0,1fr);gap:.15rem}.mapping__row{display:grid;grid-template-columns:minmax(0,1fr);gap:.3rem;margin-top:.7rem}.preview{display:grid;gap:.4rem;margin:.75rem 0 0;padding:0;list-style:none}.preview__row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:.2rem .75rem;padding:.45rem .65rem;border:1px solid var(--edge);border-radius:4px;background:var(--panel-raised);font-size:.8125rem}.preview__number{color:var(--dim);font-family:var(--mono)}.preview__name{font-family:var(--mono);overflow-wrap:anywhere}.preview__state{display:inline-flex;align-items:center;gap:.25rem}.preview__row[data-result=pass] .preview__state{color:var(--pass)}.preview__row[data-result=fail] .preview__state{color:var(--fail)}.preview__issues{grid-column:1 / -1;margin:0;padding-left:1.1rem;color:var(--dim)}.preview__more{color:var(--dim);font-size:.8125rem}.bulk__output{display:grid;grid-template-columns:minmax(0,1fr)}.bulk__run{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.1rem}.bulk[data-status=running] .check__progress-fill{background:var(--ink)}.about__body{display:grid;gap:.5rem 2rem}@media (min-width: 900px){.about__body{grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr)}.about__part:last-child{grid-column:1 / -1}}.about__line{margin:.6rem 0 0;font-size:.875rem}.about__line .mono{margin-left:.4rem}.licence{max-height:16rem;margin:.6rem 0 0;padding:.75rem .9rem;overflow:auto;border:1px solid var(--edge);border-radius:4px;background:var(--panel-raised);font:400 .6875rem/1.5 var(--mono);white-space:pre-wrap}.strip-host,.actions-host,.proof__bar-host{display:grid}.strip-host:empty,.actions-host:empty,.proof__bar-host:empty{display:none}@media (forced-colors: active){.choice__input:checked+.choice__box,.tab[aria-selected=true],.btn[aria-pressed=true]{outline:3px solid Highlight;outline-offset:-3px}.meter__fill,.check__progress-fill{background:Highlight}.capture__view,.proof__sheet,.viewfinder{border:1px solid CanvasText}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}.print-sheet{display:none}@media print{@page{margin:12mm}body{background:#fff}body>:not(.print-sheet){display:none!important}.print-sheet{display:block}.print-sheet__img{display:block;height:auto;print-color-adjust:exact;-webkit-print-color-adjust:exact}}
10
10
  </style>
11
11
  </head>
12
12
  <body>
@@ -184,7 +184,7 @@ ${r.join(`
184
184
  `:r)}static tag(t,n,r){let o=`<${t}`;for(let[s,i]of n)o+=` ${s}="${_x(i)}"`;return o+(r?"/>":">")}};function gf(e,t){let n=mh({r:e.r,g:e.g,b:e.b,a:1}),r=[[t==="fill"?"fill":"stop-color",n]];return e.a!==1&&r.push([t==="fill"?"fill-opacity":"stop-opacity",Ge(e.a)]),r}function Gx(e,t,n){for(let r of t)e.line(e.defs,n,At.tag("stop",[["offset",Ge(r.offset)],...gf(r.colour,"stop")],!0))}function rN(e,t){if(t.kind==="solid")return gf(t.colour,"fill");if(t.kind==="linear"){let n=e.nextId();return e.line(e.defs,2,At.tag("linearGradient",[["id",n],["gradientUnits","userSpaceOnUse"],["x1",Ge(t.x1)],["y1",Ge(t.y1)],["x2",Ge(t.x2)],["y2",Ge(t.y2)]],!1)),Gx(e,t.stops,3),e.line(e.defs,2,"</linearGradient>"),[["fill",`url(#${n})`]]}{let n=e.nextId();return e.line(e.defs,2,At.tag("radialGradient",[["id",n],["gradientUnits","userSpaceOnUse"],["cx",Ge(t.cx)],["cy",Ge(t.cy)],["r",Ge(t.r)]],!1)),Gx(e,t.stops,3),e.line(e.defs,2,"</radialGradient>"),[["fill",`url(#${n})`]]}}function yf(e,t){let n=e.nextId();return e.line(e.defs,2,At.tag("clipPath",[["id",n]],!1)),e.line(e.defs,3,At.tag("path",[["d",Qx(t)]],!0)),e.line(e.defs,2,"</clipPath>"),["clip-path",`url(#${n})`]}function oN(e,t){let n=Math.max(e.x,t.x),r=Math.max(e.y,t.y),o=Math.min(e.x+e.width,t.x+t.width),s=Math.min(e.y+e.height,t.y+t.height);return{x:n,y:r,width:Math.max(0,o-n),height:Math.max(0,s-r)}}function Wx(e,t,n,r,o,s){if(n.kind!=="conic"){e.line(e.body,t,s(rN(e,n)));return}let{opacity:i,fans:a}=ys(n,o),l=[yf(e,r)];i!==1&&l.push(["opacity",Ge(i)]),e.line(e.body,t,At.tag("g",l,!1));for(let c of a){let{points:u}=c,d=`M${Ge(u[0])} ${Ge(u[1])}`;for(let m=2;m<u.length;m+=2)d+=`L${Ge(u[m])} ${Ge(u[m+1])}`;e.line(e.body,t+1,At.tag("path",[["d",`${d}Z`],...gf(c,"fill")],!0))}e.line(e.body,t,"</g>")}function Xx(e,t,n){if(t.kind==="path"){let o=Qx(t.path),s=oN(hs(t.path),e.scene);Wx(e,n,t.paint,t.path,s,i=>At.tag("path",[["d",o],...i],!0));return}if(t.kind==="group"){let o=[];t.opacity!==1&&o.push(["opacity",Ge(t.opacity)]),t.clip!==null&&o.push(yf(e,t.clip)),e.line(e.body,n,At.tag("g",o,!1));for(let s of t.children)Xx(e,s,n+1);e.line(e.body,n,"</g>");return}e.xlink=!0;let r=[["x",Ge(t.x)],["y",Ge(t.y)],["width",Ge(t.width)],["height",Ge(t.height)],["preserveAspectRatio","none"]];t.clip!==null&&r.push(yf(e,t.clip)),r.push(["xlink:href",`data:image/png;base64,${fc(Gn(t.image))}`]),e.line(e.body,n,At.tag("image",r,!0))}function yn(e,t={}){let n=t.idPrefix??"qrs-";if(typeof n!="string"||!eN.test(n))throw new TypeError("sceneToSvg: idPrefix starts with a letter or underscore and holds only letters, digits, underscores and hyphens.");let r=Bo(e,"sceneToSvg"),o=new At(n,t.pretty===!0,{x:0,y:0,width:r.width,height:r.height});if(r.background.kind!=="none"){let a=o.scene,l=new ee().rect(0,0,r.width,r.height).build(),c=[["width",Ge(r.width)],["height",Ge(r.height)]];Wx(o,1,r.background,l,a,u=>At.tag("rect",[...c,...u],!0))}for(let a of r.layers)Xx(o,a,1);let s=[["xmlns","http://www.w3.org/2000/svg"],...o.xlink?[["xmlns:xlink","http://www.w3.org/1999/xlink"]]:[],["viewBox",`0 0 ${Ge(r.width)} ${Ge(r.height)}`]];r.unitsPerMm!==null&&(s.push(["width",`${Ge(r.width/r.unitsPerMm)}mm`]),s.push(["height",`${Ge(r.height/r.unitsPerMm)}mm`])),s.push(["role","img"],["fill-rule","nonzero"],["clip-rule","nonzero"]);let i=[];return o.line(i,0,At.tag("svg",s,!1)),r.title!==null&&o.line(i,1,`<title>${_x(nN(r.title))}</title>`),o.defs.length>0&&(o.line(i,1,"<defs>"),i.push(...o.defs),o.line(i,1,"</defs>")),i.push(...o.body),o.line(i,0,"</svg>"),i.join("")}var sN=Object.freeze({"unterminated-quote":"This file has a quoted cell that never ends, so it cannot be read. Check the row it starts on.","stray-quote":"This file has a quote mark in the middle of a cell. Save it again from your spreadsheet, or put the cell in quotes.","text-after-quote":"This file has text straight after the end of a quoted cell. Save it again from your spreadsheet.",empty:"This file has no rows in it."}),po=class extends K{reason;constructor(t,n){super("batch/malformed-csv",sN[t],{reason:t,row:n.row,column:n.column,line:n.line}),this.reason=t}},Hi=class extends K{constructor(t){super("platform/unavailable","This browser cannot read text in the encoding chosen for this file. Choose another, or save the file from your spreadsheet as CSV UTF-8.",{feature:"text-encoding",encoding:t})}},pc=class extends K{constructor(t){super("batch/too-many-rows","This file has more rows than this tool makes codes for in one go. Split it into smaller files.",{max:t})}},vs=class extends K{constructor(t){super("batch/unknown-column","This refers to a column the file does not have. Choose one of its columns.",t.part==="field"?{part:"field",field:t.field}:{part:"filename"})}};var ot={shortRow:"batch.csv.short-row",longRow:"batch.csv.long-row",duplicateHeader:"batch.csv.duplicate-header",fallbackEncoding:"batch.csv.fallback-encoding",utf16:"batch.csv.utf-16",oddLength:"batch.csv.odd-length",emptyRow:"batch.issue.empty-row",numberFormat:"batch.issue.number-format",filenameFallback:"batch.issue.filename-fallback",filenameCleaned:"batch.issue.filename-cleaned",filenameNumbered:"batch.issue.filename-numbered",epsFallback:"batch.issue.eps-fallback",failed:"batch.issue.failed",checkFailed:"batch.issue.check-failed",checkWarned:"batch.issue.check-warned",checkUnavailable:"batch.issue.check-unavailable"};var hc=Object.freeze(["windows-1252","shift_jis","gb18030","big5","euc-kr","windows-1251","windows-1256"]),bf="windows-1252";function iN(e){return hc.includes(e)}function yc(e,t){if(e===void 0)return bf;if(iN(e))return e;throw new TypeError(`${t} one of ${hc.join(", ")}.`)}var aN=[8364,129,8218,402,8222,8230,8224,8225,710,8240,352,8249,338,141,381,143,144,8216,8217,8220,8221,8226,8211,8212,732,8482,353,8250,339,157,382,376],Yx=8192;function Zx(e){let t="";for(let n=0;n<e.length;n+=Yx)t+=String.fromCharCode(...e.slice(n,n+Yx));return t}function lN(e){let t=new Uint16Array(e.length);for(let n=0;n<e.length;n+=1){let r=e[n];t[n]=r>=128&&r<=159?aN[r-128]:r}return Zx(t)}function cN(e,t){let n=new Uint16Array(e.length>>1);for(let r=0;r<n.length;r+=1){let o=e[2*r],s=e[2*r+1];n[r]=t?o|s<<8:o<<8|s}return Zx(n)}function uN(e){try{return new TextDecoder("utf-8",{fatal:!0}).decode(e)}catch{return null}}function dN(e,t){let n;try{n=new TextDecoder(t)}catch{throw new Hi(t)}if(n.encoding!==t)throw new Hi(t);return n.decode(e)}function gc(e,t={}){if(!(e instanceof Uint8Array))throw new TypeError("decodeCsvBytes: bytes is a Uint8Array.");if(typeof t!="object"||t===null)throw new TypeError("decodeCsvBytes: options is an object.");let n=yc(t.fallback,"decodeCsvBytes: fallback is"),r=[],o=e[0],s=e[1];if(o===255&&s===254||o===254&&s===255){let u=o===255;return r.push(P(ot.utf16,[],"info")),e.length%2===1&&r.push(P(ot.oddLength,[],"warning")),{text:cN(e.subarray(2),u),encoding:u?"utf-16le":"utf-16be",issues:r}}let i=uN(e);if(i!==null)return{text:i,encoding:"utf-8",issues:r};let a=o===239&&s===187&&e[2]===191?3:0,l=e.subarray(a),c=n==="windows-1252"?lN(l):dN(l,n);return r.push(P(ot.fallbackEncoding,[],"warning",{encoding:n})),{text:c,encoding:n,issues:r}}var mN=1e4,$x=65e3,bc=34,Or=13,jn=10,fN=65279,xf=[",",";"," "],pN=20,hN=65536;function yN(e,t){let n=Math.min(e.length,t+hN),r=[],o=[0,0,0],s=!1,i=!0;for(let d=t;d<n;d+=1){let m=e.charCodeAt(d);if(m===bc){s=!s,i=!1;continue}if(s)continue;if(m===Or||m===jn){if(m===Or&&e.charCodeAt(d+1)===jn&&(d+=1),i||r.push(o),o=[0,0,0],i=!0,r.length===pN)break;continue}i=!1;let f=m===44?0:m===59?1:m===9?2:-1;f>=0&&(o[f]=o[f]+1)}if(i||(n===e.length&&!s||r.length===0)&&r.push(o),r.length===0)return",";let a=null,l=0;for(let d of[2,1,0]){let m=r[0][d];m===0||!r.every(f=>f[d]===m)||m>l&&(a=xf[d],l=m)}if(a!==null)return a;let c=r[0],u=0;for(let d of[2,1,0])c[d]>c[u]&&(u=d);return xf[u]}function gN(e,t){if(e.slice(t,t+4).toLowerCase()!=="sep=")return null;let n=e[t+4];if(n!==","&&n!==";"&&n!==" ")return null;let r=t+5;if(r===e.length)return{delimiter:n,next:r};let o=e.charCodeAt(r);return o===jn?{delimiter:n,next:r+1}:o===Or?{delimiter:n,next:e.charCodeAt(r+1)===jn?r+2:r+1}:null}function bN(e){if(typeof e!="object"||e===null)throw new TypeError("parseCsv: options is an object.");let t=e.delimiter??"auto";if(t!=="auto"&&!xf.includes(t))throw new TypeError("parseCsv: delimiter is ',', ';', a tab or 'auto'.");let n=e.maxRows??mN;if(!Number.isInteger(n)||n<1||n>$x)throw new TypeError(`parseCsv: maxRows is a whole number from 1 to ${$x}.`);return{delimiter:t,max:n}}function xc(e){return e.trim().toLowerCase()}function wc(e,t={}){if(typeof e!="string")throw new TypeError("parseCsv: text is a string.");let n=bN(t),r=e.charCodeAt(0)===fN?1:0,o=1,s=gN(e,r);s!==null&&(r=s.next,o=2);let i=n.delimiter!=="auto"?n.delimiter:s?.delimiter??yN(e,r),a=i.charCodeAt(0),l=e.length,c=null,u=[],d=[],m=[],f=[],p=0,h=(g,y,b)=>{let x=c.length,w=u.length;if(b)g=new Array(x).fill("");else if(g.length<x)for(m.push(P(ot.shortRow,["rows",w],"warning",{row:y,cells:g.length,expected:x}));g.length<x;)g.push("");else g.length>x&&(g.slice(x).some(k=>k!=="")&&m.push(P(ot.longRow,["rows",w],"warning",{row:y,cells:g.length,expected:x})),g.length=x);if(u.push(Object.freeze(g)),d.push(y),u.length>n.max)throw new pc(n.max)};for(;r<l;){let g=e.charCodeAt(r);if(g===jn||g===Or){p+=1,o+=1,r+=g===Or&&e.charCodeAt(r+1)===jn?2:1;continue}p+=1;let y=[];for(;;){let b=y.length+1;if(r<l&&e.charCodeAt(r)===bc){let w={row:p,column:b,line:o};r+=1;let k="";for(;;){let S=e.indexOf('"',r);if(S===-1)throw new po("unterminated-quote",w);let E=e.slice(r,S);if(E.includes("\r")||E.includes(`
185
185
  `)){let R=E.replace(/\r\n?/g,`
186
186
  `);for(let C=0;C<R.length;C+=1)R.charCodeAt(C)===jn&&(o+=1);k+=R}else k+=E;if(e.charCodeAt(S+1)===bc){k+='"',r=S+2;continue}r=S+1;break}if(r<l){let S=e.charCodeAt(r);if(S!==a&&S!==Or&&S!==jn)throw new po("text-after-quote",{row:p,column:b,line:o})}y.push(k)}else{let w=r;for(;w<l;){let k=e.charCodeAt(w);if(k===a||k===Or||k===jn)break;if(k===bc)throw new po("stray-quote",{row:p,column:b,line:o});w+=1}y.push(e.slice(r,w)),r=w}if(r>=l)break;let x=e.charCodeAt(r);if(x===a){r+=1;continue}r+=x===Or&&e.charCodeAt(r+1)===jn?2:1,o+=1;break}if(c===null){for(;y.length>1&&y[y.length-1]==="";)y.pop();c=y;let b=new Map;c.forEach((x,w)=>{if(x==="")return;let k=xc(x);b.has(k)?m.push(P(ot.duplicateHeader,["headers",w],"warning",{column:w+1,first:b.get(k)+1})):b.set(k,w)});continue}if(y.every(b=>b==="")){f.push(p);continue}for(let b of f)h([],b,!0);f.length=0,h(y,p,!1)}if(c===null)throw new po("empty",{row:1,column:1,line:o});return Object.freeze({headers:Object.freeze(c),rows:Object.freeze(u),delimiter:i,rowNumbers:Object.freeze(d),issues:Object.freeze(m)})}var xN=/\.(?:svg|png|pdf|eps)$/i;function wN(e){return e<=8||e>=14&&e<=31?!0:e>=127&&e<=159?e!==133:e===173||e===1564||e===8203||e===8206||e===8207||e>=8234&&e<=8238||e===8288||e>=8294&&e<=8297||e===65279}function kN(e){let t="";for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);if(r>=55296&&r<=56319){let o=e.charCodeAt(n+1);o>=56320&&o<=57343&&(t+=e.slice(n,n+2),n+=1);continue}r>=56320&&r<=57343||wN(r)||(t+=e[n])}return t}var vN=/[\s\u0085]+/g,SN=/[<>:"/\\|?*]/g,MN=/^(?:con|prn|aux|nul|conin\$|conout\$|com[0-9\u00b9\u00b2\u00b3]|lpt[0-9\u00b9\u00b2\u00b3])$/i;function EN(e){let t=0;for(let n of e){let r=n.codePointAt(0);t+=r<128?1:r<2048?2:r<65536?3:4}return t}function Jx(e,t){if(EN(e)<=t)return e;let n="",r=0;for(let o of e){let s=o.codePointAt(0),i=s<128?1:s<2048?2:s<65536?3:4;if(r+i>t)break;n+=o,r+=i}return n}function wf(e){let t=e;for(;;){let n=t.replace(xN,"").replace(/^[ .-]+/,"").replace(/[ .-]+$/,"");if(n===t)return t;t=n}}function TN(e){let t=e.indexOf(".");return MN.test((t===-1?e:e.slice(0,t)).trim())}function RN(e,t){let n=kN(e.normalize("NFC")).replace(vN," ").replace(SN,"-").replace(/-{2,}/g,"-").replace(/\.{2,}/g,".");return n=wf(n),TN(n)&&(n=`_${n}`),wf(Jx(n,t))}function Ki(e,t=120){if(typeof e!="string")throw new TypeError("sanitiseFilename: text is a string.");if(!Number.isInteger(t)||t<8||t>200)throw new TypeError("sanitiseFilename: max is a whole number of bytes from 8 to 200.");let n=e;for(;;){let r=RN(n,t);if(r===n)return n;n=r}}function kc(e){return e.toLowerCase()}function vc(e,t=120){let n=e.map(i=>i.name===""?i.fallback:i.name),r=new Set,o=new Map;n.forEach((i,a)=>{let l=kc(i);o.has(l)||o.set(l,a),r.add(l)});let s=new Map;return n.map((i,a)=>{let l=kc(i);if(o.get(l)===a)return{name:i,number:null};let c=m=>{let f=`-${m}`;return Ki(`${wf(Jx(i,t-f.length))}${f}`,t)},u=s.get(l)??2,d=c(u);for(;r.has(kc(d));)u+=1,d=c(u);return r.add(kc(d)),s.set(l,u+1),{name:d,number:u}})}function AN(e){let t=[],n="",r=0;for(;r<e.length;){let o=e[r];if((o==="{"||o==="}")&&e[r+1]===o){n+=o,r+=2;continue}if(o==="{"){let s=e.indexOf("}",r+1),i=s===-1?"":e.slice(r+1,s);if(i!==""&&!i.includes("{")){n!==""&&t.push({literal:n}),n="",t.push({column:i}),r=s+1;continue}}n+=o,r+=1}return n!==""&&t.push({literal:n}),t}function Ss(e,t){let n=e.indexOf(t);if(n!==-1)return n;let r=xc(t);return r===""?-1:e.findIndex(o=>xc(o)===r)}function kf(e,t){let n=[],r=[];for(let o of AN(e)){if("literal"in o){n.push(o);continue}let s=Ss(t,o.column);if(s===-1)return{missing:o.column};n.push({index:s}),r.push(s)}return{parts:n,columns:r}}var IN=/^[A-Za-z][A-Za-z0-9+.-]*:\/\//;function PN(e){for(let t=0;t<e.length;t+=1){let n=e.charCodeAt(t);if(n>=55296&&n<=56319){let r=e.charCodeAt(t+1);if(!(r>=56320&&r<=57343))return!0;t+=1}else if(n>=56320&&n<=57343)return!0}return!1}function vf(e,t,n){let r="";for(let o of e.parts){if("literal"in o){r+=o.literal;continue}let s=t[o.index]??"";r+=n&&IN.test(r)&&!PN(s)?encodeURIComponent(s):s}return r}var CN=/^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+)?$/,NN=/^[+-]?\d[\d.,'\s\u00a0\u202f]*$/,LN=new Set(["true","yes","y","1","on"]),ON=new Set(["false","no","n","0","off"]),DN=new Set(["text","multiline","secret"]),jN=new Set(["currency","country","bic"]),ew=new Set(["number","integer","amount","latitude","longitude"]);function Sc(e){return e.default!==void 0?e.default:e.multiple?[]:ew.has(e.kind)||e.kind==="boolean"?null:""}function BN(e,t){let n=e.kind==="email"||e.kind==="tel"?/[;,\r\n]+/:e.kind==="url"?/\s+/:/\r?\n/;return t.split(n).map(r=>r.trim()).filter(r=>r!=="")}function FN(e,t){if(e.multiple){let r=BN(e,t);return{value:r.length===0?Sc(e):r}}if(DN.has(e.kind))return{value:t===""?Sc(e):t};let n=t.trim();if(n==="")return{value:Sc(e)};if(ew.has(e.kind))return CN.test(n)?{value:Number(n)}:NN.test(n)?{value:Number.NaN,issue:P(ot.numberFormat,["fields",e.key])}:{value:Number.NaN};if(e.kind==="boolean"){let r=n.toLowerCase();return LN.has(r)?{value:!0}:ON.has(r)?{value:!1}:{value:n}}if(e.kind==="select"){let r=n.toLowerCase();return{value:e.options?.find(s=>s.value.toLowerCase()===r)?.value??n}}return jN.has(e.kind)?{value:n.toUpperCase()}:{value:n}}function UN(e){if(typeof e!="object"||e===null||!Array.isArray(e.headers)||!Array.isArray(e.rows)||!e.headers.every(t=>typeof t=="string"))throw new TypeError("planBatch: table is what parseCsv returns.");if(e.rows.forEach((t,n)=>{if(!Array.isArray(t)||!t.every(r=>typeof r=="string"))throw new TypeError(`planBatch: row ${n} is a list of strings.`)}),e.rowNumbers!==void 0&&(!Array.isArray(e.rowNumbers)||e.rowNumbers.length!==e.rows.length||!e.rowNumbers.every(t=>Number.isInteger(t)&&t>=2)))throw new TypeError("planBatch: table.rowNumbers gives a row number from 2 for every row.")}function zN(e){if(typeof e!="object"||e===null)return!1;let t=Object.keys(e);if(t.length!==1)return!1;let n=e;return t[0]==="column"&&typeof n.column=="string"||t[0]==="template"&&typeof n.template=="string"}function VN(e,t,n){if(typeof t.fields!="object"||t.fields===null)throw new TypeError("planBatch: mapping.fields is an object of field sources.");let r=[];for(let o of Object.keys(t.fields)){let s=e.fields.find(l=>l.key===o);if(s===void 0)throw new TypeError(`planBatch: this content type has no field called ${JSON.stringify(o)}.`);let i=t.fields[o];if(!zN(i))throw new TypeError(`planBatch: the source of field ${JSON.stringify(o)} is { column } or { template }.`);let a;if("column"in i){let l=Ss(n,i.column);if(l===-1)throw new vs({part:"field",field:o});a={parts:[{index:l}],columns:[l]}}else{let l=kf(i.template,n);if("missing"in l)throw new vs({part:"field",field:o});a=l}r.push({field:s,template:a})}return r.sort((o,s)=>e.fields.indexOf(o.field)-e.fields.indexOf(s.field))}function Mc(e,t,n){if(UN(e),typeof t!="object"||t===null||typeof t.typeId!="string")throw new TypeError("planBatch: mapping gives at least the content type.");if(typeof t.filename!="string")throw new TypeError("planBatch: mapping.filename is a template string.");if(typeof n!="object"||n===null||!n.payloads)throw new TypeError("planBatch: registries gives at least the content types.");let r=n.payloads.require(t.typeId);if(r.generate===!1)throw new TypeError("planBatch: this content type can be read but not made.");let o=VN(r,t,e.headers),s=kf(t.filename,e.headers);if("missing"in s)throw new vs({part:"filename"});let i=new Set(o.flatMap(u=>u.template.columns)),a=new Map;for(let u of e.issues??[]){if(u.path[0]!=="rows"||typeof u.path[1]!="number")continue;let d=a.get(u.path[1])??[];d.push(u),a.set(u.path[1],d)}let l=e.rows.map((u,d)=>{let m=e.rowNumbers?.[d]??d+2,f=[...a.get(d)??[]],p=null;if(i.size===0||[...i].every(y=>(u[y]??"")===""))f.push(P(ot.emptyRow,[],"warning"));else{let y={},b=new Set,x=[];for(let S of r.fields)y[S.key]=Sc(S);for(let{field:S,template:E}of o){let R=vf(E,u,S.kind==="url"&&!S.multiple),C=FN(S,R);y[S.key]=C.value,C.issue!==void 0&&(x.push(C.issue),b.add(S.key))}let w=r.validate(y).filter(S=>!b.has(S.path[1])),k=[...x,...w];f.push(...k),qn(k)||(p=r.build(y).text)}let h=vf(s,u,!1),g=Ki(h);return g===""?f.push(P(ot.filenameFallback,["filename"],"info")):g!==h.trim()&&f.push(P(ot.filenameCleaned,["filename"],"info")),{index:d,rowNumber:m,issues:f,content:p,name:g}}),c=vc(l.map(u=>({name:u.name,fallback:`qr-${u.rowNumber}`})));return Object.freeze(l.map((u,d)=>{let m=c[d];return m.number!==null&&u.issues.push(P(ot.filenameNumbered,["filename"],"info",{number:m.number})),Object.freeze({index:u.index,rowNumber:u.rowNumber,typeId:r.id,filename:m.name,content:u.content,issues:Object.freeze(u.issues)})}))}function qN(e,t){switch(e){case"numeric":return 10*Math.floor(t/3)+[0,4,7][t%3];case"alphanumeric":return 11*Math.floor(t/2)+6*(t%2);case"byte":return 8*t;case"kanji":return 13*t;default:throw new TypeError("that is not a mode")}}function Gi(e,t){let n=e.modeIndicator(t);if(n===void 0)throw new TypeError(`this bitstream profile has no ${t} indicator`);return n}function nw(e){let t;return e.map(n=>{if(!(n.eci===void 0||n.eci===t))return t=n.eci,n.eci})}function Bn(e,t){let n=0,r=nw(e);return e.forEach((o,s)=>{let i=r[s];i!==void 0&&(n+=t.modeIndicatorBits+ki(i)),n+=t.modeIndicatorBits+t.charCountBits(o.mode)+qN(o.mode,o.chars)}),n}function _i(e,t){let n=0;return e?.structuredAppend!==void 0&&(n+=t.modeIndicatorBits+16),e?.fnc1!==void 0&&(n+=t.modeIndicatorBits+(e.fnc1==="gs1"?0:8)),n}function Sf(e){return Number.isInteger(e)&&(e>=0&&e<=99||e>=165&&e<=190||e>=197&&e<=222)}function HN(e,t){let n=e.structuredAppend;if(n!==void 0){if(!t.structuredAppend)throw new TypeError("this bitstream profile has no structured append");let{index:o,total:s,parity:i}=n;if(!Number.isInteger(s)||s<1||s>16)throw new RangeError("a structured append set has 1 to 16 symbols");if(!Number.isInteger(o)||o<0||o>=s)throw new RangeError("a structured append index is 0 to one less than the total");if(!Number.isInteger(i)||i<0||i>255)throw new RangeError("a structured append parity is one byte")}let{fnc1:r}=e;if(r!==void 0){if(!t.fnc1)throw new TypeError("this bitstream profile has no FNC1");if(r!=="gs1"&&!Sf(r.applicationIndicator))throw new RangeError("an FNC1 application indicator is 00 to 99, or a letter plus 100")}}function KN(e,t){let{mode:n,chars:r,data:o}=e;if(!t.modes.includes(n))throw new TypeError(`this bitstream profile has no ${n} mode`);if(!Number.isInteger(r)||r<0||r>=1<<t.charCountBits(n))throw new RangeError(`a ${n} segment here holds 0 to ${(1<<t.charCountBits(n))-1} characters`);let s=n==="kanji"?r*2:r;if(o.length!==s)throw new RangeError(`a ${n} segment of ${r} characters has ${s} data bytes`);let i=n==="kanji"?2:1;for(let a=0;a<o.length;a+=i){let l=o[a];if(!(n==="numeric"?l>=48&&l<=57:n==="alphanumeric"?no(l)>=0:n==="kanji"?Ld(l<<8|o[a+1]):!0))throw new RangeError(`a ${n} segment holds a byte that mode cannot carry`)}}function GN(e,t){let{data:n}=e;switch(e.mode){case"numeric":{let r=0;for(;r+3<=n.length;r+=3)t.append((n[r]-48)*100+(n[r+1]-48)*10+(n[r+2]-48),10);n.length-r===2?t.append((n[r]-48)*10+(n[r+1]-48),7):n.length-r===1&&t.append(n[r]-48,4);return}case"alphanumeric":{let r=0;for(;r+2<=n.length;r+=2)t.append(no(n[r])*45+no(n[r+1]),11);r<n.length&&t.append(no(n[r]),6);return}case"byte":for(let r=0;r<n.length;r+=1)t.append(n[r],8);return;case"kanji":for(let r=0;r<n.length;r+=2){let o=n[r]<<8|n[r+1];t.append(lg(o),13)}return}}function tw(e,t,n){if(!t.eci)throw new TypeError("this bitstream profile has no ECI");n.append(Gi(t,"eci"),t.modeIndicatorBits),n.append(rg(e),ki(e))}function rw(e,t,n,r={}){HN(r,t);for(let c of e)KN(c,t);let o=nw(e),s=t.modeIndicatorBits,i=r.structuredAppend;i!==void 0&&(n.append(Gi(t,"structured-append"),s),n.append(i.index,4),n.append(i.total-1,4),n.append(i.parity,8));let a=o[0];a!==void 0&&tw(a,t,n);let{fnc1:l}=r;l==="gs1"?n.append(Gi(t,"fnc1-first"),s):l!==void 0&&(n.append(Gi(t,"fnc1-second"),s),n.append(l.applicationIndicator,8)),e.forEach((c,u)=>{let d=o[u];u>0&&d!==void 0&&tw(d,t,n),n.append(Gi(t,c.mode),s),n.append(c.chars,t.charCountBits(c.mode)),GN(c,n)})}var Wi=Object.freeze({kanji:"when-smaller",eci:"auto"}),Ec=["numeric","alphanumeric","byte","kanji"],Ef=0,ho=1,Qi=2,Ms=3;function ow(e,t){return new K("encode/unsupported-content",e==="mode"?"This code size cannot hold some of these characters. Choose a larger kind of code.":"This text has a broken character in it and cannot be put into a code as it is.",{reason:e,position:t})}function _N(e){return e<128?1:e<2048?2:e<65536?3:4}function QN(e,t=1/0){let n=[],r=e.length;for(let d=0;d<e.length;d+=1){if(n.length>=t){r=d;break}let m=e.charCodeAt(d);if(m>=55296&&m<=57343){let f=m<=56319?e.charCodeAt(d+1):NaN;if(!(f>=56320&&f<=57343))throw ow("lone-surrogate",n.length);n.push(65536+(m-55296<<10)+(f-56320)),d+=1}else n.push(m)}let o=n.length,s=new Int16Array(o),i=new Uint8Array(o),a=new Int32Array(o+1),l=new Int32Array(o).fill(-1),c=!1,u=!0;for(let d=0;d<o;d+=1){let m=n[d],f=_N(m);if(s[d]=m<128?m:-1,i[d]=f,a[d+1]=a[d]+f,m>=128){c=!0;let p=ag(m);p===void 0?u=!1:l[d]=p}}return{count:o,ascii:s,byteLength:i,byteStart:a,bytes:new TextEncoder().encode(r===e.length?e:e.slice(0,r)),kanji:l,wide:c,kanjiCovers:u}}function WN(e,t=1/0){let n=e.length>t?e.subarray(0,t):e,r=n.length,o=new Int16Array(r),s=new Int32Array(r+1);for(let i=0;i<r;i+=1){let a=n[i];o[i]=a<128?a:-1,s[i+1]=i+1}return{count:r,ascii:o,byteLength:new Uint8Array(r).fill(1),byteStart:s,bytes:Uint8Array.from(n),kanji:new Int32Array(r).fill(-1),wide:!1,kanjiCovers:!1}}function sw(e,t){return t&&e===29?1:e<0||no(e)<0?0:t&&e===37?2:1}var Mf=4,Dr=5,Tf=[Ef,ho,Qi,Ms,ho],Rf=8,Af=-1;function XN(e){return Math.min(...e.map(t=>Math.ceil(t/6)))}function YN(e,t,n,r,o=1/0){let s=e.count,i=Ec.map(u=>t.modes.includes(u));i[Ms]=i[Ms]===!0&&r;let a=Ec.map((u,d)=>i[d]?(t.modeIndicatorBits+t.charCountBits(u))*6:0),l=new Int8Array(s*Dr),c=new Array(Dr).fill(1/0);for(let u=0;u<s;u+=1){let d=e.ascii[u],m=[1/0,1/0,1/0,1/0];i[Ef]&&d>=48&&d<=57&&(m[Ef]=20);let f=i[ho]?sw(d,n):0;if(f>0&&(m[ho]=33*f),i[Qi]&&!(r&&d<0)&&(m[Qi]=48*e.byteLength[u]),i[Ms]&&e.kanji[u]>=0&&(m[Ms]=78),m.every(y=>y===1/0))throw ow("mode",u);let p=n&&d===29,h=n&&(d===29||d===37),g=new Array(Dr).fill(1/0);for(let y=0;y<4;y+=1){let b=m[y];if(b===1/0)continue;let x=y===ho&&p?Mf:y,w=1/0,k=Af;if(u===0)w=a[y]+b;else{for(let S=0;S<Dr;S+=1){if(Tf[S]!==y||S===Mf&&h)continue;let E=c[S]+b;E<w&&(w=E,k=S)}for(let S=0;S<Dr;S+=1){let E=c[S];if(E===1/0||Tf[S]===y&&S!==Mf)continue;let R=Math.ceil(E/6)*6+a[y]+b;R<w&&(w=R,k=S+Rf)}}g[x]=w,l[u*Dr+x]=k}if(XN(g)>o)return{from:l,cost:c,count:u};c=g}return{from:l,cost:c,count:s}}function If(e,t,n,r){let{from:o,cost:s,count:i}=YN(e,t,n,r),a=new Uint8Array(i),l=new Uint8Array(i);if(i===0)return{modes:a,starts:l};let c=0;for(let u=1;u<Dr;u+=1)Math.ceil(s[u]/6)<Math.ceil(s[c]/6)&&(c=u);for(let u=i-1;u>=0;u-=1){a[u]=Tf[c];let d=o[u*Dr+c];(d===Af||d>=Rf)&&(l[u]=1),d!==Af&&(c=d%Rf)}return{modes:a,starts:l}}function Pf(e,{modes:t,starts:n},r,o,s){let i=[],a=(c,u,d)=>{let m={mode:Ec[c],chars:d,data:Uint8Array.from(u),...s===void 0?{}:{eci:s}};i.push(Object.freeze(m))},l=0;for(;l<e.count;){let c=t[l],u=(1<<r.charCountBits(Ec[c]))-1,d=[],m=0,f=l;for(;f<e.count&&(f===l||n[f]===0);f+=1){let p=e.ascii[f],h=c===Qi?e.byteLength[f]:c===ho?sw(p,o):1;if(m>0&&m+h>u&&(a(c,d,m),d=[],m=0),m+=h,c===Qi){let g=e.byteStart[f+1];for(let y=e.byteStart[f];y<g;y+=1)d.push(e.bytes[y])}else if(c===Ms){let g=e.kanji[f];d.push(g>>>8,g&255)}else o&&p===29?d.push(37):o&&p===37&&c===ho?d.push(37,37):d.push(p)}a(c,d,m),l=f}return i}function ZN(e,t){if(e.eci==="utf-8"){if(!t.eci)throw new K("encode/unsupported-feature","This kind of code cannot say which character set it uses. Choose a QR code, or turn that option off.",{feature:"eci"});return eg}}function $N(e){if(!["never","when-smaller","always"].includes(e.kanji))throw new TypeError("the kanji policy is 'never', 'when-smaller' or 'always'");if(!["auto","never","utf-8"].includes(e.eci))throw new TypeError("the ECI policy is 'auto', 'never' or 'utf-8'")}function Tc(e,t,n=Wi,r={}){if(typeof e!="string")throw new TypeError("segmentText takes a string");$N(n);let o=r.fnc1===!0,s=ZN(n,t),i=QN(e),a=Pf(i,If(i,t,o,!1),t,o,s);if(!(n.kanji!=="never"&&i.wide&&i.kanjiCovers&&t.modes.includes("kanji")&&ig()))return a;let c=Pf(i,If(i,t,o,!0),t,o,s);return n.kanji==="always"||Bn(c,t)<Bn(a,t)?c:a}function iw(e,t,n={}){if(!(e instanceof Uint8Array))throw new TypeError("segmentBytes takes a Uint8Array");let r=n.fnc1===!0,o=WN(e);return Pf(o,If(o,t,r,!1),t,r,void 0)}var JN=[236,17];function aw(e,t,n,r){let o=new ul;rw(e,n,o,t);let s=r.dataBits;if(o.length>s)throw new RangeError(`${o.length} bits do not fit a symbol that holds ${s}`);for(o.append(0,Math.min(n.terminatorBits,s-o.length));o.length%8!==0&&o.length<s;)o.append(0,1);for(let i=0;s-o.length>=8;i+=1)o.append(JN[i%2],8);return o.length<s&&o.append(0,s-o.length),o.toBytes()}var eL=["L","M","Q","H"];function lw(e){return new K("encode/unsupported-feature",e==="fnc1"?"This kind of code cannot carry GS1 data. Choose a QR code.":"This kind of code cannot be split across several codes. Choose a QR code.",{feature:e})}function cw(e,t,n){if(typeof e!="object"||e===null)throw new TypeError("encode options are an object");let o=(t??ns()).require(e.symbology??"qr"),s=e.ecLevel??"M";if(!eL.includes(s))throw new TypeError("ecLevel is 'L', 'M', 'Q' or 'H'");if(e.boostEc!==void 0&&typeof e.boostEc!="boolean")throw new TypeError("boostEc is true or false");let i=e.rmqrPreference??"area";if(!["area","height","width"].includes(i))throw new TypeError("rmqrPreference is 'area', 'height' or 'width'");let{versions:a}=o,l=e.minVersion===void 0?0:a.indexOf(e.minVersion),c=e.maxVersion===void 0?a.length-1:a.indexOf(e.maxVersion);if(l<0||c<0)throw new TypeError(`that is not a version of ${o.id}`);if(l>c)throw new TypeError("minVersion is larger than maxVersion");let u=a.slice(l,c+1).filter(y=>o.ecLevels(y).includes(s));if(u.length===0)throw new TypeError("no allowed version offers that error correction level");let d=e.mask??"auto";if(d!=="auto"&&!u.every(y=>o.masks(y).includes(d)))throw new TypeError(`that mask is not one ${o.id} has at every allowed version`);let m={...Wi,...e.segmentation};if(!["never","when-smaller","always"].includes(m.kanji))throw new TypeError("segmentation.kanji is 'never', 'when-smaller' or 'always'");if(!["auto","never","utf-8"].includes(m.eci))throw new TypeError("segmentation.eci is 'auto', 'never' or 'utf-8'");let{fnc1:f}=e;if(f!==void 0&&f!=="gs1"&&(typeof f!="object"||f===null||!Sf(f.applicationIndicator)))throw new TypeError("fnc1 is 'gs1' or { applicationIndicator } with 00 to 99 or a letter plus 100");let p=u;if(f!==void 0&&(p=p.filter(y=>o.profile(y).fnc1),p.length===0))throw lw("fnc1");if(n.structuredAppend&&(p=p.filter(y=>o.profile(y).structuredAppend),p.length===0))throw lw("structured-append");let h=y=>{let{width:b,height:x}=o.size(y);return i==="height"?[x,b]:i==="width"?[b,x]:[b*x]},g=[...p].sort((y,b)=>{let x=h(y),w=h(b);for(let k=0;k<x.length;k+=1)if(x[k]!==w[k])return x[k]-w[k];return 0});return Object.freeze({entry:o,ecLevel:s,versions:Object.freeze(g),largest:p[p.length-1],policy:m,fnc1:f,mask:d,boostEc:e.boostEc===!0})}function tL(e){return e instanceof K&&e.code==="encode/unsupported-content"&&e.params.reason==="mode"}function uw(e,t){let n=new Map,r=t.fnc1!==void 0;return(o,s)=>{let i=n.get(o);i===void 0&&(i=new Map,n.set(o,i));let a=i.get(s);if(a===void 0){try{a=typeof e=="string"?Tc(e,o,{kanji:s,eci:t.policy.eci},{fnc1:r}):iw(e,o,{fnc1:r})}catch(l){if(!tL(l))throw l;a=l}i.set(s,a)}return a}}function nL(e,t,n){if(!e.boostEc)return e.ecLevel;let r=e.entry.ecLevels(t),o=e.ecLevel;for(let s=r.indexOf(o)+1;s<r.length;s+=1){let i=r[s];if(n>e.entry.blocks(t,i).dataBits)break;o=i}return o}function dw(e,t,n,r){let o=e.entry.profile(t),s=_i(r,o)+Bn(n,o),i=nL(e,t,s),a=aw(n,r,o,e.entry.blocks(t,i));return e.entry.build(a,t,i,e.mask)}function mw(e){if(typeof e!="string"&&!(e instanceof Uint8Array))throw new TypeError("encode takes a string or a Uint8Array")}function fw(e,t,n,r){let o;for(let l=0;l<e.versions.length;l+=1){let c=e.versions[l],u=e.entry.profile(c),d=t(u,n);if(!Array.isArray(d)){o??=d;continue}if(_i(r,u)+Bn(d,u)<=e.entry.blocks(c,e.ecLevel).dataBits)return{version:c,rank:l,segments:d}}let s=e.entry.profile(e.largest),i=t(s,n);return{bits:Array.isArray(i)?_i(r,s)+Bn(i,s):void 0,error:o}}function Fn(e,t={},n){mw(e);let r=cw(t,n,{structuredAppend:!1}),o=uw(e,r),s=r.fnc1===void 0?{}:{fnc1:r.fnc1},i=typeof e=="string"?r.policy.kanji:"never",a=i==="always"?void 0:fw(r,o,"never",s),l=i==="never"?void 0:fw(r,o,"always",s),c=[l,a].filter(f=>f!==void 0&&"rank"in f);c.sort((f,p)=>f.rank-p.rank);let u=c.length===2&&c[0]?.rank===c[1]?.rank?c[1]:c[0];if(u!==void 0)return dw(r,u.version,u.segments,s);let d=[a,l].filter(f=>f!==void 0),m=d.map(f=>f.bits).filter(f=>f!==void 0);throw m.length===0?d[0]?.error:new Gs(Math.min(...m),r.entry.blocks(r.largest,r.ecLevel).dataBits)}var rL=67108864;function Je(e){return new K("image/unreadable","This image is damaged, or is not a PNG this tool can read.",{reason:e})}var oL={0:[1,2,4,8,16],2:[8,16],3:[1,2,4,8],4:[8,16],6:[8,16]},sL={0:1,2:3,3:1,4:2,6:4},iL=[[0,0,8,8],[4,0,8,8],[0,4,4,8],[2,0,4,4],[0,2,2,4],[1,0,2,2],[0,1,1,2]];function Rc(e,t){return e[t]*16777216+(e[t+1]<<16|e[t+2]<<8|e[t+3])}function aL(e){let{width:t,height:n}=e;return e.interlaced?iL.map(([r,o,s,i])=>({x0:r,y0:o,dx:s,dy:i,width:Math.ceil((t-r)/s),height:Math.ceil((n-o)/i)})):[{x0:0,y0:0,dx:1,dy:1,width:t,height:n}]}function lL(e,t,n){let r=e+t-n,o=Math.abs(r-e),s=Math.abs(r-t),i=Math.abs(r-n);return o<=s&&o<=i?e:s<=i?t:n}function cL(e,t,n,r){let o=t.length;if(e!==0){if(e===1){for(let s=r;s<o;s+=1)t[s]=t[s]+t[s-r]&255;return}if(e===2){for(let s=0;s<o;s+=1)t[s]=t[s]+n[s]&255;return}if(e===3){for(let s=0;s<o;s+=1){let i=s>=r?t[s-r]:0;t[s]=t[s]+(i+n[s]>>1)&255}return}if(e===4){for(let s=0;s<o;s+=1){let i=s>=r?t[s-r]:0,a=s>=r?n[s-r]:0;t[s]=t[s]+lL(i,n[s],a)&255}return}throw Je("data")}}function yo(e,t,n){if(n===8)return e[t];if(n===16)return e[t*2]<<8|e[t*2+1];let r=8/n,o=e[Math.floor(t/r)],s=8-n*(t%r+1);return o>>s&(1<<n)-1}function Es(e,t){return t===8?e:Math.floor(e*255/((1<<t)-1)+.5)}function Ac(e,t={}){if(!(e instanceof Uint8Array))throw new TypeError("decodePng: bytes is a Uint8Array.");if(typeof t!="object"||t===null)throw new TypeError("decodePng: options is an object.");let n=t.maxPixels??rL;if(!Number.isInteger(n)||n<1)throw new TypeError("decodePng: maxPixels is a whole number, 1 or more.");return uL(e,n)}function pw(e,t){if(t+12>e.length)throw Je("truncated");let n=Rc(e,t);if(n>2147483647)throw Je("chunk");if(t+12+n>e.length)throw Je("truncated");let r=String.fromCharCode(e[t+4],e[t+5],e[t+6],e[t+7]);if(!/^[A-Za-z]{4}$/.test(r))throw Je("chunk");if(Io(e.subarray(t+4,t+8+n))!==Rc(e,t+8+n))throw Je("crc");return{type:r,body:e.subarray(t+8,t+8+n),next:t+12+n}}function uL(e,t){if(e.length<8)throw Je("signature");for(let b=0;b<8;b+=1)if(e[b]!==di[b])throw Je("signature");let n=pw(e,8);if(n.type!=="IHDR")throw Je("header");let r=dL(n.body);if(r.width*r.height>t)throw new K("image/too-large","This image has more pixels than this tool will open.",{width:r.width,height:r.height,maxPixels:t});let o=null,s=null,i=[],a=0,l=!1,c=n.next;for(;;){let{type:b,body:x,next:w}=pw(e,c);if(c=w,b==="IEND")break;switch(b!=="IDAT"&&i.length>0&&(l=!0),b){case"IHDR":throw Je("header");case"PLTE":if(o!==null||i.length>0||x.length===0||x.length%3!==0||x.length>768)throw Je("palette");o=x;break;case"tRNS":i.length===0&&(s=x);break;case"IDAT":if(l)throw Je("data");i.push(x),a+=x.length;break;default:if(!(b.charCodeAt(0)&32))throw Je("chunk")}}if(i.length===0)throw Je("data");if(r.colourType===3&&(o===null||o.length/3>1<<r.depth))throw Je("palette");let u=new Uint8Array(a),d=0;for(let b of i)u.set(b,d),d+=b.length;let f=sL[r.colourType]*r.depth,p=Math.max(1,f>>3),h=aL(r),g=0;for(let b of h)b.width>0&&b.height>0&&(g+=b.height*(1+Math.ceil(b.width*f/8)));let y;try{y=th(u,{maxOutput:g})}catch{throw Je("data")}if(y.length!==g)throw Je("data");return mL(r,y,h,f,p,o,s)}function dL(e){if(e.length!==13)throw Je("header");let t=Rc(e,0),n=Rc(e,4),r=e[8],o=e[9],s=oL[o];if(t<1||n<1||t>2147483647||n>2147483647||s===void 0||!s.includes(r)||e[10]!==0||e[11]!==0||e[12]!==0&&e[12]!==1)throw Je("header");return{width:t,height:n,depth:r,colourType:o,interlaced:e[12]===1}}function mL(e,t,n,r,o,s,i){let{width:a,height:l,depth:c,colourType:u}=e,d=new Uint8ClampedArray(a*l*4),m=s===null?0:s.length/3,f=i!==null&&u===0&&i.length===2?[i[0]<<8|i[1]]:i!==null&&u===2&&i.length===6?[0,2,4].map(g=>(i[g]<<8|i[g+1])>>>0):null,p=g=>u===3&&i!==null&&g<i.length&&i.length<=m?i[g]:255,h=0;for(let g of n){if(g.width===0||g.height===0)continue;let y=Math.ceil(g.width*r/8),b=new Uint8Array(y);for(let x=0;x<g.height;x+=1){let w=t[h],k=t.subarray(h+1,h+1+y);cL(w,k,b,o),b=k,h+=1+y;let S=g.y0+x*g.dy;for(let E=0;E<g.width;E+=1){let R=(S*a+g.x0+E*g.dx)*4;if(u===3){let C=yo(k,E,c);if(C>=m)throw Je("palette");let A=s;d[R]=A[C*3],d[R+1]=A[C*3+1],d[R+2]=A[C*3+2],d[R+3]=p(C)}else if(u===0||u===4){let C=yo(k,E*(u===4?2:1),c);if(u===0&&f!==null&&f[0]===C)continue;let A=Es(C,c);d[R]=A,d[R+1]=A,d[R+2]=A,d[R+3]=u===4?Es(yo(k,E*2+1,c),c):255}else{let C=u===6?4:3,A=yo(k,E*C,c),O=yo(k,E*C+1,c),D=yo(k,E*C+2,c);if(u===2&&f!==null&&f[0]===A&&f[1]===O&&f[2]===D)continue;d[R]=Es(A,c),d[R+1]=Es(O,c),d[R+2]=Es(D,c),d[R+3]=u===6?Es(yo(k,E*4+3,c),c):255}}}}return{width:a,height:l,data:d}}var Pe=25.4;function Qt(e,t,n,r,o,s,i,a){return Object.freeze({id:e,labelKey:`sheet.template.${e}`,page:Cx[t],columns:n,rows:r,cell:Object.freeze({widthMm:o[0],heightMm:o[1]}),origin:Object.freeze({xMm:s[0],yMm:s[1]}),gap:Object.freeze({xMm:i[0],yMm:i[1]}),...a===void 0?{}:{cornerRadiusMm:a}})}function Xi(){return Object.freeze([Qt("a4-21-63x38","a4",3,7,[63.5,38.1],[7.21,15.15],[2.54,0]),Qt("a4-24-63x34","a4",3,8,[63.5,33.9],[7.21,12.9],[2.54,0]),Qt("a4-14-99x38","a4",2,7,[99.1,38.1],[4.65,15.15],[2.5,0]),Qt("a4-8-99x68","a4",2,4,[99.1,67.7],[4.65,13.1],[2.5,0]),Qt("a4-65-38x21","a4",5,13,[38.1,21.2],[4.67,10.7],[2.54,0]),Qt("a4-12-round-64","a4",3,4,[63.5,63.5],[7.21,17.69],[2.54,2.54],31.75),Qt("a4-10-cards-85x54","a4",2,5,[85,54],[15,13.5],[10,0]),Qt("letter-30-67x25","letter",3,10,[2.625*Pe,Pe],[.1875*Pe,.5*Pe],[.125*Pe,0]),Qt("letter-10-102x51","letter",2,5,[4*Pe,2*Pe],[.15625*Pe,.5*Pe],[.1875*Pe,0]),Qt("letter-80-44x13","letter",4,20,[1.75*Pe,.5*Pe],[.3*Pe,.5*Pe],[.3*Pe,0]),Qt("letter-12-round-51","letter",3,4,[2*Pe,2*Pe],[.75*Pe,.75*Pe],[.5*Pe,.5*Pe],Pe),Qt("letter-12-square-51","letter",3,4,[2*Pe,2*Pe],[.75*Pe,.75*Pe],[.5*Pe,.5*Pe]),Qt("letter-10-cards-89x51","letter",2,5,[3.5*Pe,2*Pe],[.75*Pe,.5*Pe],[0,0])])}var hw="manifest.csv",fL=/^[=+\-@\t\r]/;function pL(e){return fL.test(e)?`'${e}`:e}function hL(e){return/[",\r\n]/.test(e)?`"${e.replace(/"/g,'""')}"`:e}function yL(e){let t="";for(let n of e)t+=`${n.map(r=>hL(pL(r))).join(",")}\r
187
- `;return t}function gL(e){let t=[];for(let n of e)n.severity==="info"||t.includes(n.code)||t.push(n.code);return t.join(" ")}function yw(e,t={}){let n=e.some(i=>i.sheet!==null),r=t.content,o=["row","file","type","status","check","issues"];n&&o.push("page","label"),r!==void 0&&o.push("content");let s=[o];for(let i of e){let a=[String(i.rowNumber),i.filename??"",i.typeId,i.status,i.check??"",gL(i.issues)];n&&a.push(i.sheet===null?"":String(i.sheet.page),i.sheet===null?"":String(i.sheet.label)),r!==void 0&&a.push(r(i.index)??""),s.push(a)}return new TextEncoder().encode(`\uFEFF${yL(s)}`)}var gw=30,bw=46,xw=22,ww=2048,kw=65535,vw=4294967295;function bL(e,t){let n=`entry ${t}`;if(e.length===0)throw new TypeError(`${n} has no name`);if(e.includes("\\"))throw new TypeError(`${n} has a backslash in its name`);if(e.startsWith("/")||/^[A-Za-z]:/.test(e))throw new TypeError(`${n} has an absolute path for a name`);for(let r=0;r<e.length;r+=1){let o=e.charCodeAt(r);if(o<32||o===127)throw new TypeError(`${n} has a control character in its name`);if(o>=55296&&o<=57343){let s=e.charCodeAt(r+1);if(o>56319||!(s>=56320&&s<=57343))throw new TypeError(`${n} name is not valid Unicode`);r+=1}}for(let r of e.split("/"))if(r===""||r==="."||r==="..")throw new TypeError(`${n} has an empty, '.' or '..' folder in its name`)}function xL(e){let{year:t,month:n,day:r}=e??{year:1980,month:1,day:1};if(!Number.isInteger(t)||t<1980||t>2107)throw new RangeError("a ZIP date is in the years 1980 to 2107");if(!Number.isInteger(n)||n<1||n>12)throw new RangeError("a ZIP date has a month from 1 to 12");let s=[31,t%4===0&&t%100!==0||t%400===0?29:28,31,30,31,30,31,31,30,31,30,31][n-1];if(!Number.isInteger(r)||r<1||r>s)throw new RangeError(`that month has days 1 to ${s}`);return t-1980<<9|n<<5|r}var Ic=class{entries=[];names=new Set;folders=new Set;date;encoder=new TextEncoder;offset=0;largest=xw;constructor(t){this.date=xL(t)}get count(){return this.entries.length}add(t,n,r=!1){let o=this.entries.length;if(o>=kw)throw new lr(kw,"entries");bL(t,o);let s=t.toLowerCase(),i=s.split("/");if(this.names.has(s)||this.folders.has(s))throw new TypeError(`entry ${o} has the same name as an earlier entry or its folder`);for(let u=1;u<i.length;u+=1){let d=i.slice(0,u).join("/");if(this.names.has(d))throw new TypeError(`entry ${o} is inside a folder that is an earlier entry's name`);this.folders.add(d)}this.names.add(s);let a=this.encoder.encode(t);if(a.length>65535)throw new TypeError(`entry ${o} has too long a name`);if(this.largest+=gw+bw+2*a.length+n.length,this.largest>vw)throw new lr(vw);let l=n,c=!1;if(r){let u=Ys(n,{level:6});u.length<n.length&&(l=u,c=!0)}this.entries.push({name:a,data:l,deflated:c,crc:Io(n),size:n.length,offset:this.offset}),this.offset+=gw+a.length+l.length}finish(){let t=this.offset,n=0;for(let l of this.entries)n+=bw+l.name.length;let r=new Uint8Array(t+n+xw),o=new DataView(r.buffer),s=0,i=l=>{o.setUint16(s,l,!0),s+=2},a=l=>{o.setUint32(s,l,!0),s+=4};for(let l of this.entries)a(67324752),i(l.deflated?20:10),i(ww),i(l.deflated?8:0),i(0),i(this.date),a(l.crc),a(l.data.length),a(l.size),i(l.name.length),i(0),r.set(l.name,s),s+=l.name.length,r.set(l.data,s),s+=l.data.length;for(let l of this.entries)a(33639248),i(20),i(l.deflated?20:10),i(ww),i(l.deflated?8:0),i(0),i(this.date),a(l.crc),a(l.data.length),a(l.size),i(l.name.length),i(0),i(0),i(0),i(0),a(0),a(l.offset),r.set(l.name,s),s+=l.name.length;return a(101010256),i(0),i(0),i(this.entries.length),i(this.entries.length),a(n),a(t),i(0),this.entries.length=0,r}};var wL=1024,Ew=8192,Tw=16,kL=30,vL=20,SL=10,ML=5,EL=2,TL=8,RL=25.4;function jr(e){return typeof e=="object"&&e!==null}function Ts(e,t,n,r,o){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<n||e>r||o&&!Number.isInteger(e))throw new TypeError(`runBatch: output.${t} is ${o?"a whole number":"a number"} from ${n} to ${r}.`);return e}}function AL(e){if(!Array.isArray(e))throw new TypeError("runBatch: rows is what planBatch returns.");e.forEach((t,n)=>{if(!jr(t)||!Number.isInteger(t.index)||!Number.isInteger(t.rowNumber)||typeof t.typeId!="string"||typeof t.filename!="string"||t.content!==null&&typeof t.content!="string"||!Array.isArray(t.issues))throw new TypeError(`runBatch: row ${n} is not a row planBatch returns.`)})}function IL(e){if(!jr(e))throw new TypeError("runBatch: output is an object.");if(e.kind==="zip"){if(!["svg","png","pdf","eps"].includes(e.format))throw new TypeError("runBatch: output.format is 'svg', 'png', 'pdf' or 'eps'.");if(Ts(e.widthPx,"widthPx",Tw,Ew,!0),Ts(e.dpi,"dpi",he.dpi.min,he.dpi.max,!1),e.colourSpace!==void 0&&!["srgb","cmyk"].includes(e.colourSpace))throw new TypeError("runBatch: output.colourSpace is 'srgb' or 'cmyk'.");if(e.includeContent!==void 0&&typeof e.includeContent!="boolean")throw new TypeError("runBatch: output.includeContent is true or false.")}else if(e.kind==="sheet"){if(!["srgb","cmyk"].includes(e.colourSpace))throw new TypeError("runBatch: output.colourSpace is 'srgb' or 'cmyk'.");Ts(e.skip,"skip",0,Number.MAX_SAFE_INTEGER,!0)}else throw new TypeError("runBatch: output.kind is 'zip' or 'sheet'.");if(Ts(e.sizeMm,"sizeMm",he.sizeMm.min,he.sizeMm.max,!1),e.verify!==void 0&&!["off","sampled","all"].includes(e.verify))throw new TypeError("runBatch: output.verify is 'off', 'sampled' or 'all'.");Ts(e.verifyEvery,"verifyEvery",1,Number.MAX_SAFE_INTEGER,!0),Ts(e.verifySeeds,"verifySeeds",1,8,!0)}function PL(e){if(e.kind!=="sheet")return null;let t=e.template,n=typeof t=="string"?Xi().find(o=>o.id===t):t;if(n===void 0)throw new qr("sheet-template",String(t));if(Ui(n),(e.skip??0)>=n.columns*n.rows)throw new TypeError("runBatch: output.skip is fewer labels than a sheet holds.");return n}function CL(e){let t={};for(let[n,r]of Object.entries(e.assets??{})){let o=tl(()=>Ac(Lo(r.png)));o.ok&&(t[n]=o.value)}return t}function NL(e,t,n){let r=[];e.forEach((l,c)=>{l.content!==null&&!qn(l.issues)&&r.push(c)});let o=t.verify??(n!==void 0&&r.length<=ML?"all":"off");if(o!=="off"&&n===void 0)throw new TypeError("runBatch: checking rows needs options.verifyRow, such as scanCheckVerifier(registries).");if(o==="off"||r.length===0)return{mode:o,checked:new Set};if(o==="all")return{mode:o,checked:new Set(r)};let s=t.verifyEvery??Math.max(vL,Math.ceil(r.length/SL)),i=new Set(r.filter((l,c)=>c%s===0)),a=r[0];for(let l of r)e[l].content.length>e[a].content.length&&(a=l);return i.add(a),{mode:o,checked:i}}function LL(e,t,n,r,o){if(AL(e),IL(n),!jr(r)||!jr(r.symbologies)||!jr(r.payloads)||!jr(r.design))throw new TypeError("runBatch: registries gives the symbologies, content types and design registries.");if(typeof o!="object"||o===null)throw new TypeError("runBatch: options is an object.");if(o.verifyRow!==void 0&&typeof o.verifyRow!="function")throw new TypeError("runBatch: options.verifyRow is a function.");let s=o.seed??0;if(!Number.isInteger(s)||s<0||s>4294967295)throw new TypeError("runBatch: options.seed is an integer from 0 to 2^32 - 1.");let i=En(t,r.design);if(i.design===null)throw new K("design/invalid","This design has problems to fix before it can be used.",{issues:i.issues.length});let a=i.design;r.symbologies.require(a.symbol.symbology);let l=PL(n),c=n.kind==="zip"&&(n.format==="pdf"||n.format==="eps"),u=n.sizeMm??a.output.sizeMm??(c?kL:void 0)??null,d=(n.kind==="zip"?n.dpi:void 0)??a.output.dpi??null,m=n.kind==="sheet"?n.colourSpace:n.colourSpace??a.output.colourSpace,f={...a,output:{...a.output,colourSpace:m,...u===null?{}:{sizeMm:u},...d===null?{}:{dpi:d}}},p=vc(e.map(x=>({name:Ki(x.filename),fallback:`qr-${x.rowNumber}`}))).map(x=>x.name),h=a.frame?.text?.content,{mode:g,checked:y}=NL(e,n,o.verifyRow),b=CL(a);return{rows:e,names:p,design:f,output:n,registries:r,dpi:d,colourSpace:m,template:l,checked:y,verifyRow:o.verifyRow,captureSeeds:n.verifySeeds??(g==="all"?EL:TL),assets:b,fonts:o.fonts??(h!==void 0&&h!==""?Mn():void 0),seed:s,zip:n.kind==="zip"?new Ic(o.date):null}}function OL(e){let{symbol:t}=e;return{symbology:t.symbology,...t.ecLevel===void 0?{}:{ecLevel:t.ecLevel},...t.boostEc===void 0?{}:{boostEc:t.boostEc},...t.minVersion===void 0?{}:{minVersion:t.minVersion},...t.maxVersion===void 0?{}:{maxVersion:t.maxVersion},...t.mask===void 0?{}:{mask:t.mask},...t.segmentation===void 0?{}:{segmentation:t.segmentation}}}function Sw(e){let{code:t,params:n}=e;return t==="encode/too-much-data"?P("encode.too-much-data",[],"error",n):t==="encode/unsupported-feature"?P(`encode.unsupported-feature.${String(n.feature)}`,[],"error"):t==="encode/unsupported-content"?P(`encode.unsupported-content.${String(n.reason)}`,[],"error"):t==="render/surface-too-large"&&n.maxMm!==void 0?P("render.print.too-large",[],"error",{maxMm:n.maxMm}):P(ot.failed,[],"error",{code:t})}function DL(e){return jr(e)&&typeof e.next=="function"}function Mw(e){if(!jr(e)||!["pass","warn","fail"].includes(e.verdict)||e.issues!==void 0&&!Array.isArray(e.issues))throw new TypeError("runBatch: verifyRow returns { verdict, issues? }.");return e}function Rw(e,t,n){if(n==="svg")return{bytes:new TextEncoder().encode(yn(e)),extension:"svg",compress:!0,issues:[]};let r=e.unitsPerMm===void 0?null:e.width/e.unitsPerMm;if(n==="png"){let i=t.output.widthPx??(r!==null&&t.dpi!==null?Math.min(Ew,Math.max(Tw,Math.round(r*t.dpi/RL))):wL),a=Tt(e,{width:i});return{bytes:Gn(a,t.dpi===null?{}:{dpi:t.dpi}),extension:"png",compress:!1,issues:[]}}let o=r;return n==="eps"?qi(e).length===0?{bytes:new TextEncoder().encode(mc(e,{colour:t.colourSpace,widthMm:o})),extension:"eps",compress:!0,issues:[]}:{...Rw(e,t,"pdf"),issues:[P(ot.epsFallback,[],"warning")]}:{bytes:dc(e,{colour:t.colourSpace,widthMm:o}),extension:"pdf",compress:!1,issues:[]}}function Aw(e){return e.filter(t=>t.severity!=="info")}function*jL(e,t,n,r,o,s){let i;try{let l=e.verifyRow({index:t.index,rowNumber:t.rowNumber,content:t.content,design:n,overlay:r,sizeMm:o,dpi:e.dpi,seed:e.seed,captureSeeds:e.captureSeeds,assets:e.assets});if(DL(l))for(;;){let c=l.next();if(c.done===!0){i=Mw(c.value);break}yield s}else i=Mw(l)}catch(l){if(!(l instanceof K))throw l;return{check:null,issues:[P(ot.checkUnavailable,[],"warning",{code:l.code})]}}let a=[];return i.verdict==="fail"&&a.push(P(ot.checkFailed,[],"warning")),i.verdict==="warn"&&a.push(P(ot.checkWarned,[],"info")),a.push(...i.issues??[]),{check:i.verdict,issues:a}}function BL(e,t,n){let r=t.constrained.get(n);if(r===void 0){let o=e.registries.payloads.require(n),s=Nr(e.design,o.constraints);r={design:s.design,issues:Aw(s.issues),overlay:s.overlay},t.constrained.set(n,r)}return r}function*FL(e,t,n){let r=e.rows[n],o={index:r.index,rowNumber:r.rowNumber,typeId:r.typeId},s=h=>Object.freeze({...o,filename:null,status:"skipped",check:null,sheet:null,issues:Object.freeze([...h])});if(r.content===null||qn(r.issues))return s(r.issues);let i=r.content,a=BL(e,t,r.typeId),l=[...r.issues,...a.issues],c=tl(()=>{let h=Fn(i,OL(a.design),e.registries.symbologies);return{symbol:h,built:tn(h,a.design,{registries:e.registries.design,assets:g=>e.assets[g],...e.fonts===void 0?{}:{fonts:e.fonts},seed:e.seed,overlay:a.overlay})}});if(!c.ok)return s([...l,Sw(c.error)]);l.push(...Aw(c.value.built.issues));let u=c.value.built.scene,d=null,m=null,{template:f}=e;if(t.zip!==null){let h=t.zip,g=e.output.format,y=tl(()=>{let b=Rw(u,e,g),x=`${e.names[n]}.${b.extension}`;return h.add(x,b.bytes,b.compress),{name:x,issues:b.issues}});if(!y.ok)return s([...l,Sw(y.error)]);d=y.value.name,l.push(...y.value.issues)}else{let h=f;if(u.unitsPerMm===void 0){let b=Math.max(u.width/h.cell.widthMm,u.height/h.cell.heightMm);u={...u,unitsPerMm:b}}let g=h.columns*h.rows,y=t.scenes.length+(e.output.skip??0);m={page:Math.floor(y/g)+1,label:y%g+1},l.push(...pf([u],h).issues.map(b=>({...b,path:[]}))),t.scenes.push(u)}let p=null;if(e.checked.has(n)){let h=u.unitsPerMm,g=h===void 0?null:(c.value.symbol.matrix.width+2*a.design.quietZone)/h,y=yield*jL(e,r,a.design,a.overlay,g,{done:n,total:t.total});p=y.check,l.push(...y.issues)}return Object.freeze({...o,filename:d,status:"written",check:p,sheet:m,issues:Object.freeze(l)})}function*UL(e){let{rows:t,output:n}=e,r={zip:e.zip,scenes:[],constrained:new Map,total:t.length+1},o=[];for(let a=0;a<t.length;a+=1){let l=yield*FL(e,r,a);o.push(l),yield{done:a+1,total:r.total,row:l}}if(r.zip!==null){let a=n.includeContent===!0,l=new Map(t.map(c=>[c.index,c.content]));return r.zip.add(hw,yw(o,a?{content:c=>l.get(c)}:{}),!0),r.zip.finish()}let s=pf(r.scenes,e.template,{skip:n.skip??0}),i=e.design.name;return Fx(s,{colour:e.colourSpace,...i===void 0?{}:{title:i}})}function Iw(e,t,n,r,o={}){return UL(LL(e,t,n,r,o))}var ht=Object.freeze({fieldOfViewDegrees:65,frameWidthPx:1920,minPxPerModule:4,minFocusMm:100,comfortMm:150}),Cf;function Nf(){if(Cf===void 0){let e=ht.fieldOfViewDegrees/2*(Me/180);Cf=je(e)/Be(e)}return Cf}function Pc(e,t){return e*ht.frameWidthPx/(2*t*Nf())}function Lf(e,t){return e*ht.frameWidthPx/(t*2*Nf())}function Cc(e=ht.minPxPerModule){return Math.max(e,ht.minPxPerModule)*2*ht.minFocusMm*Nf()/ht.frameWidthPx}function Pw(e){let[t,n,r,o]=e,s=t.x-n.x+r.x-o.x,i=t.y-n.y+r.y-o.y;if(s===0&&i===0)return[n.x-t.x,r.x-n.x,t.x,n.y-t.y,r.y-n.y,t.y,0,0,1];let a=n.x-r.x,l=o.x-r.x,c=n.y-r.y,u=o.y-r.y,d=a*u-l*c,m=(s*u-l*i)/d,f=(a*i-s*c)/d;return[n.x-t.x+m*n.x,o.x-t.x+f*o.x,t.x,n.y-t.y+m*n.y,o.y-t.y+f*o.y,t.y,m,f,1]}function zL(e){let[t,n,r,o,s,i,a,l,c]=e;return[s*c-i*l,r*l-n*c,n*i-r*s,i*a-o*c,t*c-r*a,r*o-t*i,o*l-s*a,n*a-t*l,t*s-n*o]}function VL(e,t){let[n,r,o,s,i,a,l,c,u]=e,[d,m,f,p,h,g,y,b,x]=t;return[d*n+m*s+f*l,d*r+m*i+f*c,d*o+m*a+f*u,p*n+h*s+g*l,p*r+h*i+g*c,p*o+h*a+g*u,y*n+b*s+x*l,y*r+b*i+x*c,y*o+b*a+x*u]}function Cw(e,t){return VL(zL(Pw(e)),Pw(t))}var Rs=255;function Of(e){let{width:t,height:n,data:r}=e,o=new Float32Array(t*n);for(let s=0,i=0;s<o.length;s+=1,i+=4){let a=.299*r[i]+.587*r[i+1]+.114*r[i+2],l=r[i+3]/255;o[s]=a*l+Rs*(1-l)}return{width:t,height:n,data:o}}function Ow(e){let t=new Uint8ClampedArray(e.width*e.height*4);for(let n=0,r=0;n<e.data.length;n+=1,r+=4){let o=Math.min(255,Math.max(0,Math.round(e.data[n])));t[r]=o,t[r+1]=o,t[r+2]=o,t[r+3]=255}return{width:e.width,height:e.height,data:t}}function Br(e,t){return e<0?0:e>=t?t-1:e}function Nc(e,t,n){let r=t-.5,o=n-.5,s=Math.floor(r),i=Math.floor(o),a=r-s,l=o-i,{width:c,height:u,data:d}=e,m=Br(s,c),f=Br(s+1,c),p=Br(i,u)*c,h=Br(i+1,u)*c,g=d[p+m]*(1-a)+d[p+f]*a,y=d[h+m]*(1-a)+d[h+f]*a;return g*(1-l)+y*l}function qL(e,t,n,r,o,s=Rs){let i=new Float32Array(n*r),a=Math.max(1,Math.floor(o)),l=1/(a*a),[c,u,d,m,f,p,h,g,y]=t;for(let b=0;b<r;b+=1)for(let x=0;x<n;x+=1){let w=0;for(let k=0;k<a;k+=1){let S=b+(k+.5)/a;for(let E=0;E<a;E+=1){let R=x+(E+.5)/a,C=h*R+g*S+y,A=(c*R+u*S+d)/C,O=(m*R+f*S+p)/C;w+=A<0||O<0||A>e.width||O>e.height?s:Nc(e,A,O)}}i[b*n+x]=w*l}return{width:n,height:r,data:i}}function Dw(e,t,n,r,o=2,s=Rs){let i=Cw(t,[{x:0,y:0},{x:e.width,y:0},{x:e.width,y:e.height},{x:0,y:e.height}]);return qL(e,i,n,r,o,s)}function Nw(e,t,n){let{width:r,height:o,data:s}=e,i=new Float32Array(r*o),a=(t.length-1)/2;if(n){for(let l=0;l<o;l+=1){let c=l*r;for(let u=0;u<r;u+=1){let d=0;if(u>=a&&u<r-a){let m=c+u-a;for(let f=0;f<t.length;f+=1)d+=s[m+f]*t[f]}else for(let m=-a;m<=a;m+=1)d+=s[c+Br(u+m,r)]*t[m+a];i[c+u]=d}}return{width:r,height:o,data:i}}for(let l=0;l<o;l+=1){let c=l*r;for(let u=-a;u<=a;u+=1){let d=Br(l+u,o)*r,m=t[u+a];for(let f=0;f<r;f+=1)i[c+f]=i[c+f]+s[d+f]*m}}return{width:r,height:o,data:i}}function HL(e){let t=Math.max(1,Math.ceil(3*e)),n=new Float64Array(2*t+1),r=0;for(let o=-t;o<=t;o+=1){let s=Mh(-(o*o)/(2*e*e));n[o+t]=s,r+=s}for(let o=0;o<n.length;o+=1)n[o]=n[o]/r;return n}function jw(e,t){if(!(t>.05))return Lc(e);let n=HL(t);return Nw(Nw(e,n,!0),n,!1)}function Bw(e,t,n){if(!(t>.25))return Lc(e);let r=Math.max(2,Math.ceil(t)+1),o=Be(n)*t,s=je(n)*t,{width:i,height:a}=e,l=new Float32Array(i*a);for(let c=0;c<a;c+=1)for(let u=0;u<i;u+=1){let d=0;for(let m=0;m<r;m+=1){let f=m/(r-1)-.5;d+=Nc(e,u+.5+f*o,c+.5+f*s)}l[c*i+u]=d/r}return{width:i,height:a,data:l}}function Df(e,t,n){let r=new Float32Array(e.data);if(!(t>0))return{width:e.width,height:e.height,data:r};for(let o=0;o<r.length;o+=1){let s=(n.next()+n.next()+n.next()-1.5)*2;r[o]=r[o]+s*t}return{width:e.width,height:e.height,data:r}}function Fw(e,t,n=0){let r=new Float32Array(e.data.length);for(let o=0;o<r.length;o+=1)r[o]=e.data[o]*t+n;return{width:e.width,height:e.height,data:r}}function Uw(e,t,n,r){let{width:o,height:s}=e,i=Be(r),a=je(r),l=[0,i*o,a*s,i*o+a*s],c=Math.min(...l),u=Math.max(...l)-c||1,d=new Float32Array(o*s);for(let m=0;m<s;m+=1)for(let f=0;f<o;f+=1){let p=(i*(f+.5)+a*(m+.5)-c)/u;d[m*o+f]=e.data[m*o+f]*(t+(n-t)*p)}return{width:o,height:s,data:d}}function zw(e,t,n){let{width:r,height:o}=e,s=new Float32Array(e.data),i=Math.max(0,Math.floor(n.cx-n.rx)),a=Math.min(r,Math.ceil(n.cx+n.rx)),l=Math.max(0,Math.floor(n.cy-n.ry)),c=Math.min(o,Math.ceil(n.cy+n.ry));for(let u=l;u<c;u+=1)for(let d=i;d<a;d+=1){let m=(d+.5-n.cx)/n.rx,f=(u+.5-n.cy)/n.ry,p=m*m+f*f;if(p>=1)continue;let h=Math.min(1,t*(1-p)),g=u*r+d,y=s[g];s[g]=y+(Rs-y)*h}return{width:r,height:o,data:s}}function Vw(e){let t=new Float32Array(e.data.length);for(let n=0;n<t.length;n+=1)t[n]=Math.min(255,Math.max(0,Math.round(e.data[n])));return{width:e.width,height:e.height,data:t}}function Lw(e,t,n,r){let{width:o,height:s,data:i}=e,a=new Float32Array(o*s);for(let l=0;l<s;l+=1)for(let c=0;c<o;c+=1){let u=i[l*o+c];for(let d=-t;d<=t;d+=1){let m=n?l*o+Br(c+d,o):Br(l+d,s)*o+c,f=i[m];(r?f<u:f>u)&&(u=f)}a[l*o+c]=u}return{width:o,height:s,data:a}}function qw(e,t,n){let r=Math.floor(t),o=t-r,s=c=>c===0?e:Lw(Lw(e,c,!0,n),c,!1,n),i=s(r);if(o===0)return i;let a=s(r+1),l=new Float32Array(e.data.length);for(let c=0;c<l.length;c+=1)l[c]=i.data[c]*(1-o)+a.data[c]*o;return{width:e.width,height:e.height,data:l}}function Hw(e,t){return t>0?qw(e,t,!0):Lc(e)}function Kw(e,t){return t>0?qw(e,t,!1):Lc(e)}function Gw(e,t){let n=new Float32Array(e.data.length);for(let r=0;r<n.length;r+=1){let o=e.data[r];n[r]=Rs-(Rs-o)*(1-t)}return{width:e.width,height:e.height,data:n}}function Lc(e){return{width:e.width,height:e.height,data:new Float32Array(e.data)}}function _w(e,t,n,r=0,o=0){let s=Be(n),i=je(n),a=e/2,l=t/2,c=(u,d)=>({x:a+(u-a)*s-(d-l)*i+r,y:l+(u-a)*i+(d-l)*s+o});return[c(0,0),c(e,0),c(e,t),c(0,t)]}function Qw(e,t,n,r,o){let s=Math.max(e,t)/2,i=Be(r),a=je(r),l=Be(n),c=je(n),u=[[-e/2,-t/2],[e/2,-t/2],[e/2,t/2],[-e/2,t/2]],d=([m,f])=>{let p=m*i+f*a,h=-m*a+f*i,g=h*l,y=h*c,b=o*s+y,x=o*s/b,w=p*x,k=g*x;return{x:w*i-k*a,y:w*a+k*i}};return u.map(d)}var KL=540,GL=10;function Ww(e,t){let n=KL/e;return t!==null&&(n=Math.min(n,Pc(t,ht.minFocusMm))),Math.min(GL,Math.max(ht.minPxPerModule,n))}var jf=.5,Bf=2,Xw=4,Yw=2,Zw=5,$w=.3,_L=Object.freeze([8,6,5,4.5,4,3.5,3,2.5]),Oc=Object.freeze([{axis:"distance",label:1,levels:_L,typical:4,unit:"px-per-module"},{axis:"focus",label:2,levels:Object.freeze([.1,.15,.2,.3,.4,.5,.6]),typical:.2,unit:"modules"},{axis:"motion",label:3,levels:Object.freeze([.15,.3,.5,.75,1,1.5,2]),typical:.3,unit:"modules"},{axis:"noise",label:4,levels:Object.freeze([2,3,4,6,8,12,16,24]),typical:4,unit:"levels"},{axis:"angle",label:5,levels:Object.freeze([10,15,20,25,30,40,50,60]),typical:20,unit:"degrees"},{axis:"light",label:6,levels:Object.freeze([.5,.7,.8,.9,.95,.98]),typical:.7,unit:"fraction"},{axis:"glare",label:7,levels:Object.freeze([.25,.5,.75,1,1.25,1.5,2]),typical:.5,unit:"fraction"},{axis:"ink",label:8,levels:Object.freeze([.025,.05,.1,.15,.2,.25,.3]),typical:.05,unit:"modules"},{axis:"contrast",label:9,levels:Object.freeze([.15,.3,.45,.6,.7,.8,.9]),typical:.3,unit:"fraction"}]),Jw=0;var ek=Me/180;function QL(e){return e==="baseline"?Jw:Oc.find(t=>t.axis===e).label}function WL(e,t){let n=Wn(e).fork(QL(t.axis)).fork(t.seed),r=n.fork(1);return{roll:(r.next()*2-1)*Xw*ek,phaseX:r.next(),phaseY:r.next(),direction:r.next()*Me,spotX:r.next(),spotY:r.next(),noise:n.fork(2)}}function XL(e,t){if(t.axis==="ink"){let n=t.level*e.scaleX;return t.seed%2===0?Hw(e.plane,n):Kw(e.plane,n)}return t.axis==="contrast"?Gw(e.plane,t.level):e.plane}function tk(e,t,n,r,o){let s=WL(r,o),i=o.pxPerModule,a=t*i,l=n*i,c=Yw*i,u;if(o.axis==="angle"){let S=Qw(a,l,o.level*ek,s.direction,Zw);u=YL(S,s.roll)}else u=[..._w(a,l,s.roll)];let d=Math.min(...u.map(S=>S.x)),m=Math.min(...u.map(S=>S.y)),f=Math.max(...u.map(S=>S.x)),p=Math.max(...u.map(S=>S.y)),h=Math.ceil(f-d+2*c+1),g=Math.ceil(p-m+2*c+1),y=u.map(S=>({x:S.x-d+c+s.phaseX,y:S.y-m+c+s.phaseY})),b=XL(e,o),x=Math.min(6,Math.max(2,Math.ceil(e.scaleX/i))),w=Dw(b,y,h,g,x),k=o.axis==="focus"?o.level*i:0;if(w=jw(w,Math.sqrt(jf*jf+k*k)),o.axis==="motion"&&(w=Bw(w,o.level*i,s.direction)),o.axis==="light"){let S=1-.5*o.level,E=1-o.level;w=Uw(w,S,E,s.direction*2),w=Vw(Df(w,Bf,s.noise.fork(1))),w=Fw(w,2/(S+E))}if(o.axis==="glare"){let S=(y[0].x+y[1].x+y[2].x+y[3].x)/4,E=(y[0].y+y[1].y+y[2].y+y[3].y)/4,R=$w*Math.min(a,l);w=zw(w,o.level,{cx:S+(s.spotX-.5)*.5*a,cy:E+(s.spotY-.5)*.5*l,rx:R,ry:R*.75})}return w=Df(w,o.axis==="noise"?o.level:Bf,s.noise),{image:Ow(w),quad:y}}function YL(e,t){let n=Be(t),r=je(t);return e.map(o=>({x:o.x*n-o.y*r,y:o.x*r+o.y*n}))}function go(e,t){switch(e.kind){case"solid":return[e.ink];case"entry":{let n=t.fills.get(e.ref.id);if(n===void 0)return[];let r=[];for(let s of n.params){if(s.kind!=="colour")continue;let i=e.ref.params?.[s.key];r.push(typeof i=="string"?i:s.default)}let o=e.ref.params?.count??n.params.find(s=>s.key==="count")?.default;return typeof o=="number"?r.slice(0,o):r}default:return e.stops.map(n=>n.ink)}}var nk=Object.freeze({r:255,g:255,b:255,a:1});function rk(e,t){let n=[...go(e.modules.paint,t)];for(let o of Object.values(e.regions))o?.outerPaint!==void 0&&n.push(...go(o.outerPaint,t)),o?.innerPaint!==void 0&&n.push(...go(o.innerPaint,t));let r=e.background===null?[nk]:go(e.background,t).map(o=>Dc(zt(o),nk));if(e.modules.light!==null){let o=r[0];r.push(...go(e.modules.light.paint,t).map(s=>Dc(zt(s),o)))}return{inks:n.map(zt),grounds:r}}function Dc(e,t){let n=e.a;return{r:e.r*n+t.r*(1-n),g:e.g*n+t.g*(1-n),b:e.b*n+t.b*(1-n),a:1}}function As(e){return .299*e.r+.587*e.g+.114*e.b}function Is(e){let t=e.r/255;return t<=.04045?t/12.92:Oa((t+.055)/1.055,2.4)}function ok(e){return Ff(e)>=0?"dark-on-light":"light-on-dark"}function Ff(e){let t=(o,s)=>o.reduce((i,a)=>i+As(Dc(a,s)),0)/Math.max(1,o.length),n=e.grounds[0];return(e.grounds.reduce((o,s)=>o+As(s),0)/e.grounds.length-t(e.inks,n))/255}function Uf(e,t,n,r){let o=t==="dark-on-light"?1:-1,s=Number.POSITIVE_INFINITY;for(let i of e.grounds)for(let a of e.inks){let l=o*(n(i)-n(Dc(a,i)))/r;l<s&&(s=l)}return s===Number.POSITIVE_INFINITY?0:s}var ZL=Object.freeze(["symbology","module-shape","region-shape","fill","frame","icon","asset"]);function er(e,t){e!=null&&e.kind==="entry"&&t("fill",e.ref.id)}function Yi(e){let t=new Set,n=(r,o)=>{typeof o=="string"&&t.add(`${r}:${o}`)};n("symbology",e.symbol.symbology),n("module-shape",e.modules.shape.id),er(e.modules.paint,n),er(e.background,n),e.modules.light!==null&&e.modules.light!==void 0&&(n("module-shape",e.modules.light.shape.id),er(e.modules.light.paint,n));for(let r of["finder","sub-finder","corner-finder"]){let o=e.regions?.[r];o!==void 0&&(n("region-shape",o.outer.id),n("region-shape",o.inner.id),er(o.outerPaint,n),er(o.innerPaint,n))}if(e.logo!==null&&e.logo!==void 0){let{source:r}=e.logo;n(r.kind==="icon"?"icon":"asset",r.id),er(e.logo.paint,n),er(e.logo.plate?.paint,n)}return e.frame!==null&&e.frame!==void 0&&(n("frame",e.frame.ref.id),er(e.frame.paint,n),er(e.frame.text?.paint,n)),Object.freeze([...t].sort())}var $L=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function jc(e,t){let n=ZL.includes(e)?e:"entry";return new K("verify/missing-entry","This check needs a style or picture this copy of the studio does not have, so it was not run.",t!==null&&t.length<=64&&$L.test(t)?{kind:n,id:t}:{kind:n})}function JL(e,t,n,r){let{design:o,symbologies:s}=t,i={symbology:a=>s.has(a),"module-shape":a=>o.moduleShapes.has(a),"region-shape":a=>o.regionShapes.has(a),fill:a=>o.fills.has(a),frame:a=>o.frames.has(a),icon:a=>o.icons.has(a)};for(let a of e){let l=a.indexOf(":"),c=l<0?"":a.slice(0,l),u=l<0?a:a.slice(l+1);if(c==="asset"){let m=typeof r=="object"&&r!==null&&Object.prototype.hasOwnProperty.call(r,u),f=n!==void 0&&Object.prototype.hasOwnProperty.call(n,u)?n[u]:void 0;if(!m||f===void 0)throw jc("asset",null);continue}if(c===""){if(!Object.values(i).some(m=>m(u)))throw jc("entry",u);continue}let d=i[c];if(d===void 0||!d(u))throw jc(c,u)}}function zf(e,t){if(e==null)return null;if(typeof e!="number"||!Number.isFinite(e)||e<=0)throw new TypeError(`verify: conditions.${t} is a positive number or null.`);return e}function e4(e){if(typeof e!="object"||e===null)throw new TypeError("verify: the job is an object.");if(typeof e.content!="string")throw new TypeError("verify: job.content is a string.");if(!Number.isInteger(e.seed)||e.seed<0||e.seed>4294967295)throw new TypeError("verify: job.seed is an integer from 0 to 2^32 - 1.");if(!Array.isArray(e.requires)||e.requires.some(t=>typeof t!="string"))throw new TypeError("verify: job.requires is a list of registry ids.");if(typeof e.conditions!="object"||e.conditions===null)throw new TypeError("verify: job.conditions is an object.");if(e.overlay!==void 0&&e.overlay!==null&&e.overlay!=="swiss-cross")throw new TypeError("verify: job.overlay is swiss-cross, or null for none.");if(e.captureSeeds!==void 0&&(!Number.isInteger(e.captureSeeds)||e.captureSeeds<1||e.captureSeeds>8))throw new TypeError("verify: job.captureSeeds is a whole number from 1 to 8.")}function t4(e,t,n){let r=t.quietZone,o=e.layout.regions.some(a=>a.kind==="concentric-5");if(t.frame===null||o&&t.frame.ref.id!=="none")return{x:r,y:r,quiet:r};let s=n.design.frames.require(t.frame.ref.id),i=s.layout({symbolSize:{width:e.matrix.width,height:e.matrix.height},quietZone:r,params:mt(s.params,t.frame.ref.params),paint:{kind:"solid",colour:{r:0,g:0,b:0,a:1}}});return{x:i.symbol.x+r,y:i.symbol.y+r,quiet:r}}function ik(e,t){if(e4(e),typeof t!="object"||t===null||typeof t.symbologies!="object"||typeof t.design!="object")throw new TypeError("verify: registries gives the symbologies and the design registries.");let n=[];try{n=Yi(e.design)}catch{}JL([...e.requires,...n],t,e.assets,e.design?.assets);let r=En(e.design,t.design);if(r.design===null)throw new K("design/invalid","This design cannot be checked until it is fixed.",{issues:r.issues.length});let o=r.design,s=zf(e.conditions.sizeMm,"sizeMm"),i=zf(e.conditions.dpi,"dpi")??o.output.dpi??null,a=zf(e.conditions.distanceMm,"distanceMm"),l=t.symbologies.require(o.symbol.symbology),c=Fn(e.content,{symbology:o.symbol.symbology,...o.symbol.ecLevel===void 0?{}:{ecLevel:o.symbol.ecLevel},...o.symbol.boostEc===void 0?{}:{boostEc:o.symbol.boostEc},...o.symbol.minVersion===void 0?{}:{minVersion:o.symbol.minVersion},...o.symbol.maxVersion===void 0?{}:{maxVersion:o.symbol.maxVersion},...o.symbol.mask===void 0?{}:{mask:o.symbol.mask},...o.symbol.segmentation===void 0?{}:{segmentation:o.symbol.segmentation}},t.symbologies),u=e.assets,d=tn(c,o,{registries:t.design,...u===void 0?{}:{assets:x=>u[x]},seed:e.seed,overlay:e.overlay??null}),m=t4(c,o,t),f=rk(o,t.design),p=c.matrix.width+2*m.quiet,h=o.output.sizeBasis==="symbol"?c.matrix.width:d.scene.width,g=d.scene.unitsPerMm===void 0?null:o.output.sizeMm*p/h,y=s??g,b=y===null?null:y/p;return{job:e,registries:t,design:o,entry:l,symbol:c,built:d,origin:{x:m.x,y:m.y},quietZone:m.quiet,conditions:{sizeMm:y,dpi:i,distanceMm:a},moduleMm:b,reference:l.read(c.matrix,{strict:!0}),seeds:e.captureSeeds??8,inks:f,polarity:ok(f)}}var Bc=10,ak=18,sk=Object.freeze({r:255,g:255,b:255,a:1});function Vf(e,t=Bc,n=!0){let{scene:r}=e.built,{dpi:o}=e.conditions,{moduleMm:s}=e;if(n&&s!==null&&o!==null){let c=Math.max(1,Math.round(r.width*s/25.4*o)),u=Of(Tt(r,{width:c,background:sk})),d=Math.max(1,Math.ceil(t*r.width/c)),m=u.width*d,f=u.height*d,p=new Float32Array(m*f);for(let h=0;h<f;h+=1){let g=Math.floor(h/d)*u.width;for(let y=0;y<m;y+=1)p[h*m+y]=u.data[g+Math.floor(y/d)]}return{plane:{width:m,height:f,data:p},scaleX:m/r.width,scaleY:f/r.height}}let i=Math.max(1,Math.round(r.width*t)),a=Math.max(1,Math.round(r.height*t));return{plane:Of(Tt(r,{width:i,height:a,background:sk})),scaleX:i/r.width,scaleY:a/r.height}}var n4=.25;function qf(e){return Math.ceil(n4*e)}function lk(e,t,n){let{layout:r,blocks:o}=e;if(t.length!==r.width*r.height)throw new TypeError("codewordCoverage: one obscured flag per module, row major.");let s=ll(o),i=s.block.length,a=new Uint8Array(i),l=new Uint8Array(i);for(let u=0;u<t.length;u+=1){if(t[u]===0)continue;let d=r.dataBits[u];if(d<0)continue;let m=d>>3;a[m]=1,n!==void 0&&n[u]!==0&&(l[m]=1)}let c=o.blocks.map(()=>({worst:0,expected:0}));for(let u=0;u<i;u+=1){let d=c[s.block[u]];d.worst+=a[u],d.expected+=l[u]}return{blocks:o.blocks.map((u,d)=>{let m=al(u.ecCount,o.p),f=qf(m),p=c[d];return{index:d,ec:u.ecCount,p:o.p,t:m,reserve:f,coveredWorst:p.worst,coveredExpected:p.expected,margin:m-f-p.worst}}),worst:a,expected:l}}function r4(e,t){let n=Number.POSITIVE_INFINITY;for(let r=0;r<t.length;r+=1){let o=t[r],s=o-qf(o)-e[r];s<n&&(n=s)}return n===Number.POSITIVE_INFINITY?0:n}function o4(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function ck(e,t){let n=Tr(e,{profile:"strict-v1",polarity:t.polarity,symbologies:[t.entry.id],maxSymbols:1},t.registries.symbologies),r=n.ok?n.value[0]:void 0;if(r===void 0)return{read:!1,margin:null};let{read:o}=r,s=t.reference;if(o.version!==s.version||!o4(o.bitstream.bytes,s.bitstream.bytes))return{read:!1,margin:null};let i=r4(o.errorsPerBlock,o.capacityPerBlock);return{read:i>=0,margin:i}}var Fc=Object.freeze([.7,.55,.4,.2]),Uc=Object.freeze([.5,.4,.3,.2]),Zi=.4,s4={pass:"verify.check.contrast.sc.pass",warn:"verify.check.contrast.sc.warn",fail:"verify.check.contrast.sc.fail"},i4={pass:"verify.check.contrast.mod.pass",warn:"verify.check.contrast.mod.warn",fail:"verify.check.contrast.mod.fail"},a4={pass:"verify.check.logo-budget.pass",warn:"verify.check.logo-budget.warn",fail:"verify.check.logo-budget.fail"},uk=.25;function dk(e,t){let n=["A","B","C","D"];for(let r=0;r<t.length;r+=1)if(e>=t[r])return n[r];return"F"}function at(e,t,n,r,o,s,i){return{id:e,status:t,measured:n,threshold:r,...i===void 0?{}:{grade:i},messageKey:o,...s===void 0?{}:{params:s}}}function Hf(e){return Math.round(e*100)}function l4(e,t){return e===te.finder||e===te.separator||e===te["sub-finder"]||e===te["corner-finder"]||e===te.alignment&&t==="qr"}function c4(e,t){let{symbol:n,origin:r,polarity:o}=e,{obscured:s}=e.built,{width:i,height:a,data:l}=n.matrix,c=new Float32Array(i*a),u=Number.POSITIVE_INFINITY,d=Number.NEGATIVE_INFINITY;for(let g=0;g<a;g+=1)for(let y=0;y<i;y+=1){let b=Nc(t.plane,(r.x+y+.5)*t.scaleX,(r.y+g+.5)*t.scaleY),x=g*i+y;c[x]=b,s[x]!==1&&(b<u&&(u=b),b>d&&(d=b))}u===Number.POSITIVE_INFINITY&&(u=0,d=0);let m=(u+d)/2,f=d-u,p=new Uint8Array(i*a),h=Number.POSITIVE_INFINITY;for(let g=0;g<c.length;g+=1){let y=c[g],b=o==="dark-on-light"?y<m:y>m,x=l[g]===1===b;if(x||(p[g]=1),s[g]===1||l4(n.layout.roles[g],n.symbology))continue;let w=f===0?0:2*Math.abs(y-m)/f,k=x?w:-w;k<h&&(h=k)}return{samples:c,rmin:u,rmax:d,threshold:m,wrong:p,mod:h===Number.POSITIVE_INFINITY?0:h}}function u4(e,t,n){let{plane:r,scaleX:o,scaleY:s}=t,{origin:i,polarity:a}=e,{width:l,height:c}=e.symbol.matrix,u=n.rmax-n.rmin,d=a==="dark-on-light"?n.threshold+uk*u:n.threshold-uk*u,m=g=>a==="dark-on-light"?g>=d:g<=d,f=g=>({x0:Math.ceil((i.x-g)*o),y0:Math.ceil((i.y-g)*s),x1:Math.floor((i.x+l+g)*o),y1:Math.floor((i.y+c+g)*s)}),p=g=>({x0:Math.floor((i.x-g)*o),y0:Math.floor((i.y-g)*s),x1:Math.ceil((i.x+l+g)*o),y1:Math.ceil((i.y+c+g)*s)}),h=0;for(let g=1;g<=20;g+=1){let y=f(g),b=p(g-1);if(y.x0<0||y.y0<0||y.x1>r.width||y.y1>r.height||!d4(r,y,b,m))break;h=g}return h}function d4(e,t,n,r){for(let o=t.y0;o<t.y1;o+=1){let s=o>=n.y0&&o<n.y1;for(let i=t.x0;i<t.x1;i+=1){if(s&&i>=n.x0&&i<n.x1){i=n.x1-1;continue}if(!r(e.data[o*e.width+i]))return!1}}return!0}var m4=new Set([te.finder,te.separator,te.timing,te.format,te.version,te["dark-module"],te["sub-finder"],te["corner-finder"]]);function mk(e,t){let{symbol:n,entry:r,built:o,polarity:s,inks:i,reference:a}=e,l=[],c=c4(e,t),u=u4(e,t,c);l.push(at("quiet-zone",u>=r.quietZone?"pass":"fail",u,r.quietZone,u>=r.quietZone?"verify.check.quiet-zone.pass":"verify.check.quiet-zone.fail",{modules:u,minimum:r.quietZone}));let d=Uf(i,s,As,255),m=(c.rmax-c.rmin)/255,f=Math.min(d,m),p=f<Fc[3]?"fail":f<Fc[2]?"warn":"pass";l.push(at("contrast",p,f,Fc[2],s4[p],{percent:Hf(Math.max(0,f)),grade:dk(f,Fc)},"SC"));let h=c.mod,g=h<Uc[3]?"fail":h<Uc[2]?"warn":"pass";l.push(at("contrast",g,h,Uc[2],h<0?"verify.check.contrast.mod.wrong":i4[g],{percent:Hf(Math.max(0,h)),grade:dk(h,Uc)},"MOD"));let y=Ff(i);l.push(at("polarity",s==="dark-on-light"?"pass":"warn",y,0,s==="dark-on-light"?"verify.check.polarity.pass":"verify.check.polarity.warn"));let{obscured:b}=o,x=0,w=0;for(let I=0;I<b.length;I+=1){if(b[I]===0)continue;let U=n.layout.roles[I];m4.has(U)?x+=1:U===te.alignment&&(w+=1)}let k=o.issues.filter(I=>I.code==="design.issue.region-pair").length,S=x>0||k>0?"fail":w>0?"warn":"pass";l.push(at("function-patterns",S,x+k+w,0,x>0?"verify.check.function-patterns.covered":k>0?"verify.check.function-patterns.finder":w>0?"verify.check.function-patterns.alignment":"verify.check.function-patterns.pass",{modules:x+w},"FPD"));let E=lk(n,b,c.wrong),R=Math.min(...E.blocks.map(I=>I.margin)),C=E.blocks.reduce((I,U)=>I+U.coveredWorst,0),A=E.blocks.some(I=>I.coveredExpected>I.t-2*I.reserve),O=R<0?"fail":C>0&&A?"warn":"pass";l.push(at("logo-budget",O,R,0,C===0?"verify.check.logo-budget.none":a4[O],{codewords:C,spare:Math.max(0,R)},"UEC")),l.push(at("finder-shape",k>0?"fail":"pass",k,0,k>0?"verify.check.finder-shape.fail":"verify.check.finder-shape.pass",void 0,"FPD"));let D=Uf(i,s,Is,1);l.push(at("colour-red-channel",D<Zi?"warn":"pass",D,Zi,D<Zi?"verify.check.colour-red-channel.warn":"verify.check.colour-red-channel.pass",{percent:Hf(Math.max(0,D))}));let N=[];r.phoneReadable||N.push(at("reader-support","warn",0,1,r.id==="rmqr"?"verify.check.reader-support.rmqr":"verify.check.reader-support.micro"));let T=a.bitstream.segments;return T.some(I=>I.mode==="kanji")&&N.push(at("reader-support","warn",1,0,"verify.check.reader-support.kanji")),T.some(I=>I.eci!==null)&&N.push(at("reader-support","pass",1,0,"verify.check.reader-support.eci")),N.length===0&&N.push(at("reader-support","pass",1,1,"verify.check.reader-support.pass")),l.push(...N),{checks:l,coverage:E,sampling:c}}var fk=(e,t)=>ck(e.image,t);function pk(e,t,n){let r;return{get image(){let{scene:o}=t.built;return r??=tk(e(),o.width,o.height,t.job.seed,n).image,r}}}function f4(e,t,n){let r=[];for(let o of Oc){if(n!==void 0&&!n.includes(o.axis))continue;if(o.axis!=="distance"){r.push({ladder:o,levels:o.levels,typical:o.levels.indexOf(o.typical)});continue}let{moduleMm:s}=e;if(s===null)continue;let{distanceMm:i}=e.conditions,a=i===null?ht.minPxPerModule:Math.min(t,Pc(s,i)),l=[t,...o.levels.filter(c=>c<t)];l.includes(a)||l.push(a),l.sort((c,u)=>u-c),r.push({ladder:o,levels:l,typical:l.indexOf(a)})}return r}function*p4(e,t,n,r,o,s,i){let a=o.reader??fk,{axis:l}=n.ladder,c=-1,u=-1,d=null,m=0,f=o.onlyTypical===!0,p=o.stopAtTypical===!0||f?n.typical:n.levels.length-1;for(let h=f?n.typical:0;h<=p&&u<0;h+=1){let g=n.levels[h];for(let y=0;y<e.seeds;y+=1){let b={axis:l,level:g,seed:y,pxPerModule:l==="distance"?g:r},x=a(pk(t,e,b),e,b);if(m+=1,s.done+=1,x.read?d=d===null?x.margin:Math.min(d,x.margin):u=h,yield{done:s.done,total:s.total,axis:l},u>=0)break}u<0&&(c=h)}s.done+=n.levels.length*e.seeds-m,i.set(l,{passed:c,failed:u,minMargin:d,seeds:e.seeds})}function h4(e){return Math.min(ak,Math.max(Bc,Math.ceil(1.5*e)))}function*y4(e,t={}){let n=t.reader??fk,r=e.symbol.matrix.width+2*e.quietZone,o=Ww(r,e.moduleMm),s=f4(e,o,t.axes),i=1+e.seeds+s.reduce((h,g)=>h+g.levels.length*e.seeds,0),a={done:0,total:i},l=mk(e,Vf(e,Bc,!1));a.done+=1,yield{done:a.done,total:i,axis:"static"};let c,u=()=>(c??=Vf(e,h4(o)),c),d=!0,m=null,f=0;for(let h=0;h<e.seeds;h+=1){let g={axis:"baseline",level:0,seed:h,pxPerModule:o},y=n(pk(u,e,g),e,g);if(f+=1,a.done+=1,y.read?m=m===null?y.margin:Math.min(m,y.margin):d=!1,yield{done:a.done,total:i,axis:"static"},!d)break}a.done+=e.seeds-f;let p=new Map;for(let h of s)yield*p4(e,u,h,o,t,a,p);return g4(e,l,s,p,{passed:d,minMargin:m,seeds:f})}function Gf(e,t){let n=t===1?10:100;return Math.round(e*n)/n}function Kf(e,t,n){if(t<0)return null;let r=e.levels[t];return e.ladder.axis!=="distance"?r:Math.round(Lf(n,r))}function g4(e,t,n,r,o){let{moduleMm:s,conditions:i,symbol:a}=e,l=n.map(g=>{let y=r.get(g.ladder.axis);return{axis:g.ladder.axis,worstPassed:Kf(g,y.passed,s),firstFailed:Kf(g,y.failed,s),minMargin:y.minMargin,seeds:y.seeds,typical:Kf(g,g.typical,s)}}),c=n.find(g=>g.ladder.axis==="distance"),u=null;if(c!==void 0){let g=r.get("distance");u=g.passed<0?Number.POSITIVE_INFINITY:Math.max(ht.minPxPerModule,c.levels[g.passed])}else s!==null&&(u=ht.minPxPerModule);let d=u===null||!Number.isFinite(u)?null:Cc(u),m=s===null||u===null?null:Number.isFinite(u)?Lf(s,u):0,f=[];for(let g of t.checks)f.push(g),g.id==="logo-budget"&&f.push(b4(e,m,u));let p=t.coverage.blocks.map(g=>({index:g.index,ec:g.ec,p:g.p,t:g.t,coveredWorst:g.coveredWorst,coveredExpected:g.coveredExpected,margin:g.margin})),h="pass";f.some(g=>g.status==="warn")&&(h="warn");for(let g of n){let y=r.get(g.ladder.axis);y.failed>=0&&y.failed<=g.typical&&(h="warn")}return(!o.passed||f.some(g=>g.status==="fail"))&&(h="fail"),{schema:1,profile:"strict-v1",seed:e.job.seed,verdict:h,symbol:{symbology:a.symbology,version:a.version,ecLevel:a.ecLevel,mask:a.mask,modules:[a.matrix.width,a.matrix.height]},conditions:i,checks:f,blocks:p,captures:l,limits:{maxDistanceMm:m===null?null:Math.round(m),minModuleMm:d===null?null:Gf(d,2),inkFraction:e.built.inkFraction},baseline:o}}function b4(e,t,n){let{moduleMm:r,conditions:o}=e;if(r===null||t===null||n===null)return at("module-size","warn",0,Cc(),"verify.check.module-size.unknown");let s=Number.isFinite(n)?Cc(n):Number.POSITIVE_INFINITY,i=o.sizeMm,a={sizeMm:Gf(i,1),moduleMm:Gf(r,2),distanceCm:Math.round(t/10)};if(!Number.isFinite(s))return at("module-size","fail",r,0,"verify.check.module-size.unread",a);let l=Math.ceil(i*s/r);if(r<s)return at("module-size","fail",r,s,"verify.check.module-size.fail",{...a,minimumMm:l});let c=o.distanceMm;return c!==null&&t<c?at("module-size","warn",r,s,"verify.check.module-size.short",{...a,expectedCm:Math.round(c/10),minimumMm:Math.ceil(i*c/t)}):t<ht.comfortMm?at("module-size","warn",r,s,"verify.check.module-size.close",a):at("module-size","pass",r,s,"verify.check.module-size.pass",a)}function zc(e,t){return y4(ik(e,t))}function x4(e){let{assets:t}=e;return{content:e.content,design:e.design,conditions:{sizeMm:e.sizeMm,dpi:e.dpi,distanceMm:null},seed:e.seed,requires:Yi(e.design),...Object.keys(t).length===0?{}:{assets:t},captureSeeds:e.captureSeeds,overlay:e.overlay}}function w4(e){let t=[];e.baseline.passed||t.push(P(nl.baselineFailed,["check","baseline"],"warning"));for(let n of e.checks)n.status!=="pass"&&t.push(P(n.messageKey,["check",n.id],n.status==="fail"?"warning":"info",n.params));return{verdict:e.verdict,issues:t}}function hk(e,t=zc){return function*(r){let o=yield*t(x4(r),e);return w4(o)}}var k4=8,Vc=class{decoded=new Map;image(t){if(this.decoded.has(t)){let o=this.decoded.get(t);return this.decoded.delete(t),this.decoded.set(t,o),o}let n=null,r=Lo(t);if(r!==null)try{n=Ac(r,{maxPixels:he.assetSide*he.assetSide})}catch{n=null}for(this.decoded.set(t,n);this.decoded.size>k4;){let o=this.decoded.keys().next().value;this.decoded.delete(o)}return n}lookup(t){return n=>{let r=t.assets?.[n];return r===void 0?void 0:this.image(r.png)??void 0}}all(t){let n=t.assets;if(n===void 0)return;let r={};for(let[o,s]of Object.entries(n)){let i=this.image(s.png);i!==null&&(r[o]=i)}return r}};function yk(e,t){return t===void 0?e.minSizeMm:e.sizesMm?.[t]??e.minSizeMm}var qc="https://example.com/",v4=["link","contact","message","network","event","place","payment","commerce","text"],S4=["classic","rounded","dots","hex","fluid","bold","minimal","colour","print"],M4=["L","M","Q","H"],Qf={kind:"solid",colour:{r:0,g:0,b:0,a:1}},Wf={kind:"solid",colour:{r:255,g:255,b:255,a:1}},gk=["11011","10101","01110","10101","11011"];function Ps(e){let{design:t}=e;return[e.symbologies.version,e.payloads.version,t.moduleShapes.version,t.regionShapes.version,t.fills.version,t.frames.version,t.icons.version,t.presets.version].join(".")}function E4(){return yn({width:1,height:1,background:null,layers:[]})}function bo(e){let t;return()=>{if(t===void 0)try{t=e()}catch{t=E4()}return t}}function $i(e,t,n){return yn(e,{idPrefix:`t-${t}-${n}-`})}function T4(e,t){let n=e.moduleShapes.require(t),r=gk.length,o=new Uint8Array(r*r);gk.forEach((c,u)=>{for(let d=0;d<r;d+=1)o[u*r+d]=c[d]==="1"?1:0});let s=li(r,r,o),i=mt(n.params,void 0),a=Wn(1),l=new ee;for(let c=0;c<o.length;c+=1)o[c]===1&&(l.transform(ja(c%r+1,Math.floor(c/r)+1)),n.path({neighbours:s[c],params:i,prng:a.fork(c)},l));return $i({width:r+2,height:r+2,background:Wf,layers:[{kind:"path",path:l.build(),paint:Qf}]},"module",t)}function R4(e,t){let n=t==="outer"?"square-centre":"square",r=e.regionShapes.get(n);return r!==void 0&&r.part!==t?r:void 0}function A4(e,t){let n=e.regionShapes.require(t),r=n.kinds.includes("concentric-7")?"concentric-7":n.kinds[0]??"concentric-7",o=new ee;pi(n,r,mt(n.params,void 0),1,1,o);let s=R4(e,n.part);return s!==void 0&&s.kinds.includes(r)&&pi(s,r,mt(s.params,void 0),1,1,o),$i({width:9,height:9,background:Wf,layers:[{kind:"path",path:o.build(),paint:Qf}]},"region",t)}function I4(e,t){let n=e.fills.require(t),r={kind:"entry",ref:{id:t}},o=Wn(1),s=[],i=4;if(n.space==="module")for(let a=0;a<i*i;a+=1){let l=a%i+.5,c=Math.floor(a/i)+.5,u={x:l,y:c,width:1,height:1};s.push({kind:"path",path:new ee().rect(l,c,1,1).build(),paint:Et(r,u,e.fills,o.fork(a))})}else{let a={x:.5,y:.5,width:i,height:i};s.push({kind:"path",path:new ee().rect(a.x,a.y,a.width,a.height).build(),paint:Et(r,a,e.fills,o)})}return $i({width:i+1,height:i+1,background:Wf,layers:s},"fill",t)}function P4(e,t){let n=e.icons.require(t);return $i({width:1,height:1,background:null,layers:[{kind:"path",path:n.path,paint:Qf}]},"icon",t)}function _f(e,t,n,r,o,s,i){let a=Nr(n,i);return $i(tn(t,a.design,{registries:e,seed:1,overlay:a.overlay,...s===void 0?{}:{fonts:s}}).scene,r,o)}function C4(e){return Fn(qc,{ecLevel:"M"},e.symbologies)}function N4(e,t){let n=new Set;for(let r of e)for(let o of t(r))n.add(o);return M4.filter(r=>n.has(r))}var L4=Object.freeze(["square","dot","hex"]);function O4(e,t,n){let r="concentric-7";if(!t.kinds.includes(r))return Object.freeze([]);let o=mt(t.params,void 0),s=[];for(let i of e.regionShapes.list()){if(i.part===t.part||!i.kinds.includes(r))continue;let a=mt(i.params,void 0),[l,c,u,d]=t.part==="outer"?[t,o,i,a]:[i,a,t,o];try{yr(l,c,u,d,r,n)&&s.push(i.id)}catch{}}return Object.freeze(s)}function bk(e,t){let{design:n}=e,r,o=()=>r??=C4(e),s=v4.map(p=>({category:p,labelKey:hd(p),types:Object.freeze(e.payloads.list().filter(h=>h.category===p).map(h=>Object.freeze({id:h.id,labelKey:h.labelKey,descriptionKey:h.descriptionKey,actionKey:h.actionKey,category:h.category,generate:h.generate!==!1,designLocked:h.constraints?.designLocked===!0})))})).filter(p=>p.types.length>0),i=e.symbologies.list().map(p=>Object.freeze({id:p.id,labelKey:p.labelKey,phoneReadable:p.phoneReadable,noteKey:p.phoneReadable?null:`symbology.${p.id}.not-phone-readable`,ecLevels:Object.freeze(N4(p.versions,h=>p.ecLevels(h))),quietZone:p.quietZone})),a=n.moduleShapes.list().map(p=>Object.freeze({id:p.id,labelKey:p.labelKey,params:p.params,family:hr(p),thumbnail:bo(()=>T4(n,p.id))})),l=p=>{let h,g=()=>h??=Object.freeze(Object.fromEntries(L4.map(y=>[y,O4(n,p,y)])));return Object.freeze({id:p.id,labelKey:p.labelKey,params:p.params,part:p.part,kinds:p.kinds,get pairs(){return g().square},get pairsByFamily(){return g()},thumbnail:bo(()=>A4(n,p.id))})},c=n.regionShapes.list(),u=n.fills.list().map(p=>Object.freeze({id:p.id,labelKey:p.labelKey,params:p.params,thumbnail:bo(()=>I4(n,p.id))})),d=n.frames.list().map(p=>Object.freeze({id:p.id,labelKey:p.labelKey,params:p.params,text:p.text,thumbnail:bo(()=>_f(n,o(),{...cr(),frame:{ref:{id:p.id}}},"frame",p.id,t))})),m=n.icons.list().map(p=>Object.freeze({id:p.id,labelKey:p.labelKey,params:Object.freeze([]),thumbnail:bo(()=>P4(n,p.id))})),f=S4.map(p=>({category:p,labelKey:yd(p),presets:Object.freeze(n.presets.list().filter(h=>h.category===p).map(h=>Object.freeze({id:h.id,labelKey:h.labelKey,params:Object.freeze([]),category:h.category,minSizeMm:h.minSizeMm,ecLevels:h.ecLevels,sizesMm:Object.freeze(Object.fromEntries(h.ecLevels.map(g=>[g,yk(h,g)]))),thumbnail:bo(()=>_f(n,o(),h.design,"preset",h.id,t))})))})).filter(p=>p.presets.length>0);return Object.freeze({payloadTypes:Object.freeze(s.map(p=>Object.freeze(p))),symbologies:Object.freeze(i),moduleShapes:Object.freeze(a),rings:Object.freeze(c.filter(p=>p.part==="outer").map(l)),centres:Object.freeze(c.filter(p=>p.part==="inner").map(l)),fills:Object.freeze(u),frames:Object.freeze(d),icons:Object.freeze(m),presets:Object.freeze(f.map(p=>Object.freeze(p)))})}function xk(e,t,n,r,o){let s=new Map;return Object.freeze({get(i){let a=e.design.presets.get(i);if(a===void 0)return null;if(n===null){for(let c of t.presets)for(let u of c.presets)if(u.id===i)return u.thumbnail();return null}let l=s.get(i);return l===void 0&&(l=bo(()=>_f(e.design,n,a.design,"preset",i,o,r))(),s.set(i,l)),l}})}var Kc=16384,Xf=64*1024*1024,D4=1024,j4=300,_c=25,wk=Object.freeze({svg:"image/svg+xml",png:"image/png",jpeg:"image/jpeg",webp:"image/webp",pdf:"application/pdf",eps:"application/postscript"}),B4=Object.freeze({svg:"svg",png:"png",jpeg:"jpg",webp:"webp",pdf:"pdf",eps:"eps"}),F4={r:255,g:255,b:255,a:1};function U4(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Hc(e,t,n){return typeof e=="number"&&Number.isFinite(e)&&e>=t&&e<=n}function z4(e,t){let n=[],r=l=>{n.push(P(Le.exportOption,["options",l],"warning"))},o=typeof t=="object"&&t!==null?t:{},s=e.design,i={};if(o.quietZone!==void 0){let l=o.quietZone;if(typeof l=="number"&&Number.isInteger(l)&&l>=0&&l<=he.quietZone){s={...s,quietZone:l};let c=Oo[e.symbol.symbology]??4;l<c&&n.push(P(Le.quietZoneBelowMinimum,["options","quietZone"],"warning",{min:c}))}else r("quietZone")}let a=s.output.sizeMm;if(o.sizeMm!==void 0&&(Hc(o.sizeMm,he.sizeMm.min,he.sizeMm.max)?e.fixedSizeMm!==void 0&&o.sizeMm!==e.fixedSizeMm?n.push(P(Le.exportSizeConstrained,["options","sizeMm"],"warning",{size:e.fixedSizeMm})):a=o.sizeMm:r("sizeMm")),a!==s.output.sizeMm&&(s={...s,output:{...s.output,sizeMm:a}}),o.widthPx!==void 0){let l=o.widthPx;typeof l=="number"&&Number.isInteger(l)&&l>=1&&l<=Kc?i.widthPx=l:r("widthPx")}return o.dpi!==void 0?Hc(o.dpi,he.dpi.min,he.dpi.max)?i.dpi=o.dpi:r("dpi"):s.output.dpi!==void 0&&(i.dpi=s.output.dpi),o.colourSpace!==void 0&&(o.colourSpace==="srgb"||o.colourSpace==="cmyk"?i.colourSpace=o.colourSpace:r("colourSpace")),o.bleedMm!==void 0&&(Hc(o.bleedMm,0,50)?i.bleedMm=o.bleedMm:r("bleedMm")),o.cropMarks!==void 0&&(typeof o.cropMarks=="boolean"?i.cropMarks=o.cropMarks:r("cropMarks")),o.quality!==void 0&&(Hc(o.quality,0,1)?i.quality=o.quality:r("quality")),{design:s,issues:n,options:i}}function Gc(e){let t=e.unitsPerMm;return U4(t)?{width:e.width/t,height:e.height/t}:null}function V4(e,t,n){if(t!==void 0)return t;let r=Gc(e);if(r!==null)return Math.max(1,Math.round(r.width/25.4*(n??j4)));let o=Math.max(1,Math.ceil(D4/e.width));return Math.max(1,Math.round(e.width*o))}function q4(e,t){return new K("render/surface-too-large","That picture is too large to draw here. Choose a smaller size.",{width:e,height:t,maxPixels:Xf})}function kk(e){return new K("render/format-unavailable","This browser cannot save in that format. Choose PNG or SVG.",{format:e})}async function H4(e,t,n,r){if(t!=="png"&&r===null)return Y(kk(t));let o=V4(e,n.options.widthPx,n.options.dpi),s=Math.max(1,Math.round(o*e.height/e.width));if(o>Kc||s>Kc||o*s>Xf)return Y(q4(o,s));let i=Tt(e,{width:o,height:s,...t==="jpeg"&&e.background===null?{background:F4}:{}});if(t==="png"){let l=Gc(e),c=l===null?n.options.dpi:o/l.width*25.4;return ae({bytes:Gn(i,c===void 0?{}:{dpi:c}),width:o,height:s})}let a=await r.encode(i,t,n.options.quality===void 0?{}:{quality:n.options.quality});return a.ok?ae({bytes:a.value,width:o,height:s}):a}async function vk(e,t,n){if(!Object.prototype.hasOwnProperty.call(wk,t))throw new TypeError("export: format is svg, png, jpeg, webp, pdf or eps.");if((t==="pdf"||t==="eps")&&e.printer===null)return Y(kk(t));let r=z4(e,n),o;try{o=tn(e.symbol,r.design,{registries:e.registries,assets:e.assets,fonts:e.fonts,seed:e.seed,overlay:e.overlay})}catch(c){return Y($e(c,"render/format-unavailable"))}let{scene:s}=o;if((t==="pdf"||t==="eps")&&Gc(s)===null){let c=e.conditions.sizeMm??_c;s={...s,unitsPerMm:(e.symbol.matrix.width+2*r.design.quietZone)/c}}let i=[...o.issues,...r.issues],a=Vy(r.design.name,B4[t]),l=(c,u,d)=>ae(Object.freeze({filename:a,mime:wk[t],bytes:c,width:u,height:d,issues:i}));try{switch(t){case"svg":return l(new TextEncoder().encode(yn(s)),s.width,s.height);case"png":case"jpeg":case"webp":{let c=await H4(s,t,r,e.rasterEncoder);return c.ok?l(c.value.bytes,c.value.width,c.value.height):c}case"pdf":case"eps":{let c=e.printer,u=Gc(s),d=r.options.colourSpace??r.design.output.colourSpace;if(t==="pdf"){let f=c.pdf(s,{colour:d,widthMm:u.width,heightMm:u.height,...r.options.bleedMm===void 0?{}:{bleedMm:r.options.bleedMm},...r.options.cropMarks===void 0?{}:{cropMarks:r.options.cropMarks}});return l(f,u.width,u.height)}let m=c.eps(s,{colour:d,widthMm:u.width});return l(new TextEncoder().encode(m),u.width,u.height)}}}catch(c){return Y($e(c,"render/format-unavailable"))}}function K4(e,t){return e.path[0]==="fields"&&e.path[1]===t}function G4(e,t){if(e.safety===void 0)return[];try{return e.safety(t)}catch{return[]}}function Sk(e,t,n){let r=e.fields.map(c=>{let u=Object.prototype.hasOwnProperty.call(t,c.key)?t[c.key]:vd(c);return Object.freeze({key:c.key,kind:c.kind,labelKey:c.labelKey,hintKey:c.hintKey??null,required:c.required===!0,multiple:c.multiple===!0,maxItems:c.maxItems??null,maxLength:c.maxLength??null,min:c.min??null,max:c.max??null,options:c.options??[],group:c.group??null,advanced:c.advanced===!0,secret:c.kind==="secret",value:u,issues:Object.freeze(n.filter(d=>K4(d,c.key)))})}),o=[],s=null,i=()=>{s!==null&&(o.push(Object.freeze({id:s.id,labelKey:s.id===null?null:gd(s.id),advanced:s.fields.every(c=>c.advanced),fields:Object.freeze(s.fields.map(c=>c.key))})),s=null)};for(let c of r)(s===null||s.id!==c.group)&&(i(),s={id:c.group,fields:[]}),s.fields.push(c);i();let a=new Set(e.fields.map(c=>c.key)),l=n.some(c=>c.severity==="error");return Object.freeze({typeId:e.id,labelKey:e.labelKey,descriptionKey:e.descriptionKey,actionKey:e.actionKey,category:e.category,fields:Object.freeze(r),groups:Object.freeze(o),hasAdvanced:r.some(c=>c.advanced),issues:Object.freeze(n.filter(c=>!(c.path[0]==="fields"&&a.has(c.path[1])))),compatibility:e.compatibility??[],safety:l?[]:G4(e,t),designLocked:e.constraints?.designLocked===!0})}var Mk=Object.freeze({past:Object.freeze([]),future:Object.freeze([]),group:null,coalescing:null});function Yf(e,t){return e.length>t?e.slice(e.length-t):e}function Zf(e,t,n,r){return e.group!==null?e:n!==null&&n===e.coalescing&&e.past.length>0?e.future.length===0?e:{...e,future:[]}:{past:Yf([...e.past,t],r),future:[],group:null,coalescing:n}}function Ek(e){return e.coalescing===null?e:{...e,coalescing:null}}function Tk(e,t,n,r){return e.group?.key===t?e:{...e.group===null?e:Qc(e,e.group.key,n,r),group:{key:t,base:n},coalescing:null}}function Qc(e,t,n,r){let o=e.group;return o===null||o.key!==t?e:$f(o.base,n)?{...e,group:null}:{past:Yf([...e.past,o.base],r),future:[],group:null,coalescing:null}}function Rk(e){return e.group===null?null:{history:{...e,group:null},restore:e.group.base}}function Ak(e,t){let n=e.past[e.past.length-1];return n===void 0?null:{history:{past:e.past.slice(0,-1),future:[...e.future,t],group:null,coalescing:null},restore:n}}function Ik(e,t,n){let r=e.future[e.future.length-1];return r===void 0?null:{history:{past:Yf([...e.past,t],n),future:e.future.slice(0,-1),group:null,coalescing:null},restore:r}}function $f(e,t){return e.typeId===t.typeId&&e.fields===t.fields&&e.design===t.design}var ep=7;function Jf(e){let t=e/255;return t<=.04045?t/12.92:Oa((t+.055)/1.055,2.4)}function nn(e){let{r:t,g:n,b:r}=zt(e);return .2126*Jf(t)+.7152*Jf(n)+.0722*Jf(r)}function xo(e,t){let n=nn(e),r=nn(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}var Cs="logo",Ji=he.assetSide,Xc=he.assetBytes,Wc=Object.freeze({size:.2,clear:"box",padding:1,plate:null});function tp(e,t){let n=e.logo,r={size:n?.size??Wc.size,clear:n?.clear??Wc.clear,padding:n?.padding??Wc.padding,plate:n?.plate??Wc.plate,source:{kind:"asset",id:Cs}};return Object.freeze([{path:["assets",Cs],value:t},{path:["logo"],value:r}])}function np(e){let t=[{path:["logo"],value:null}];return e.assets!==void 0&&t.push({path:["assets"],value:void 0}),Object.freeze(t)}var Pk=.8,Ck=4.5,Nk=32,_4="#ffffff";function rp(e){return{kind:"solid",ink:e}}function Q4(e){return e!==null&&e.kind==="solid"?e.ink:_4}function op(e,t){let n=[...t.palette].sort((c,u)=>nn(c)-nn(u)),r=e,o=n[n.length-1];o!==void 0&&nn(o)>=Pk&&(r={...r,background:rp(o)});let s=Q4(r.background),i=n.filter(c=>nn(c)<nn(s)&&xo(c,s)>=Ck),[a,l]=i;if(a!==void 0&&(r={...r,modules:{...r.modules,paint:rp(a)}}),l!==void 0){let c=r.regions.finder??{outer:{id:"square"},inner:{id:"square-centre"}};r={...r,regions:{...r.regions,finder:{...c,outerPaint:rp(l)}}}}if(t.logo!==null){let c=r.logo;r={...r,logo:{size:c?.size??.2,clear:c?.clear??"box",padding:c?.padding??1,plate:c?.plate??null,source:{kind:"asset",id:Cs}},assets:{[Cs]:t.logo}}}return r}function Yc(e){return e==null||e.kind==="entry"?[]:e.kind==="solid"?[e.ink]:e.stops.map(t=>t.ink)}function W4(e,t){return JSON.stringify(e)===JSON.stringify(t)}function sp(e){let t=[...Yc(e.modules.paint),...Yc(e.regions.finder?.outerPaint),...Yc(e.regions.finder?.innerPaint),...Yc(e.background)],n=[];for(let s of t)n.length<Nk&&!n.some(i=>W4(i,s))&&n.push(s);let r=e.logo?.source,o=r?.kind==="asset"?e.assets?.[r.id]??null:null;return Object.freeze({palette:Object.freeze(n),logo:o,presets:Object.freeze([])})}var X4=new Set(["__proto__","constructor","prototype"]),Y4=16;function Lk(e){if(!Array.isArray(e)||e.length>Y4)return"shape";for(let t of e)if(typeof t=="number"){if(!Number.isInteger(t)||t<0||t>1024)return"shape"}else{if(typeof t!="string"||t.length===0||t.length>64)return"shape";if(X4.has(t))return"key"}return null}function Ok(e,t,n,r){let o=t[n],s=Array.isArray(e)?[...e]:typeof e=="object"&&e!==null?{...e}:typeof o=="number"?[]:{},i=s;return n===t.length-1?(r===void 0?Array.isArray(s)?s.splice(o,1):delete i[o]:i[o]=r,s):(i[o]=Ok(i[o],t,n+1,r),s)}function Dk(e,t,n){return t.length===0?n:Ok(e,t,0,n)}function Zc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function tr(e,t){if(e===t)return!0;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!tr(e[n],t[n]))return!1;return!0}if(Zc(e)){if(!Zc(t))return!1;let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!tr(e[r],t[r]))return!1;return!0}return!1}function ea(e,t){if(tr(e,t))return e;if(Array.isArray(t)&&Array.isArray(e))return t.map((n,r)=>ea(e[r],n));if(Zc(t)&&Zc(e)){let n={};for(let r of Object.keys(t))n[r]=ea(e[r],t[r]);return n}return t}function $c(e,t){let{scheduler:n,clock:r,signal:o,progress:s,failure:i}=t;return new Promise((a,l)=>{let c=null,u=!1,d=()=>{u=!0,o.removeEventListener("abort",p),c?.(),c=null},m=y=>{d(),a(y)},f=y=>{d(),y instanceof TypeError?l(y):a(Y($e(y,i)))},p=()=>m(Y(new bn));if(o.aborted){m(Y(new bn));return}o.addEventListener("abort",p);let h;try{h=e()}catch(y){f(y);return}let g=()=>{c=null;let y=r();try{for(;;){let b=h.next();if(b.done===!0){m(ae(b.value));return}if(s(b.value),u)return;if(r()-y>=n.sliceMs)break}}catch(b){f(b);return}c=n.later(g,0)};c=n.later(g,0)})}function jk(e){let t=new Set;return{sliceMs:e.sliceMs,get pending(){return t.size},later(n,r){let o=()=>{t.delete(o)&&s()},s=e.later(()=>{t.delete(o)&&n()},r);return t.add(o),o},cancelAll(){for(let n of[...t])n()}}}var Z4=.25,$4=48;function ip(e){return Math.round(Math.min(255,Math.max(0,e))).toString(16).padStart(2,"0")}function Bk(e,t,n){let r=t*Math.min(n,1-n),o=s=>{let i=(s+e*12)%12;return(n-r*Math.max(-1,Math.min(i-3,9-i,1)))*255};return`#${ip(o(0))}${ip(o(8))}${ip(o(4))}`}function Jc(e,t,n){return t+e.next()*(n-t)}function eu(e,t){return t[e.int(t.length)]}function J4(e){return e.next()<.4?"#ffffff":Bk(e.next(),Jc(e,.2,.6),Jc(e,.94,.985))}function Ns(e,t){for(let n=0;n<$4;n+=1){let r=Bk(e.next(),Jc(e,.3,.9),Jc(e,.06,.3));if(xo(r,t)>=ep)return r}return"#000000"}function e8(e,t,n){let r=e.next(),o=Ns(e,t);if(r<.5)return{kind:"solid",ink:o};let s=Ns(e,t);if(r<.75)return{kind:"linear",angle:e.int(8)*45,space:"symbol",stops:[{offset:0,ink:o},{offset:1,ink:s}]};if(r<.9)return{kind:"radial",cx:.5,cy:.5,radius:.7,space:"symbol",stops:[{offset:0,ink:o},{offset:1,ink:s}]};let i=n.fills.list();if(i.length===0)return{kind:"solid",ink:o};let a=eu(e,i),l={};for(let c of a.params)c.kind==="colour"&&(l[c.key]=Ns(e,t));return{kind:"entry",ref:{id:a.id,params:l}}}function ap(e){let t=e.regionShapes.list(),n=t.filter(s=>s.part==="outer"&&s.kinds.includes("concentric-7")&&Vo(s)==="cornered"),r=t.filter(s=>s.part==="inner"&&s.kinds.includes("concentric-7")),o=[];for(let s of n)for(let i of r)yr(s,mt(s.params,void 0),i,mt(i.params,void 0),"concentric-7")&&o.push([s,i]);return o}function t8(e,t,n,r,o){let s=t.symbol.symbology!=="qr",i=n.filter(([d,m])=>d.unpaired?.[o]?.includes(m.id)!==!0),a=s?i.filter(([d])=>d.id==="square"):i;if(a.length===0)return null;let[l,c]=eu(e,a),u={outer:{id:l.id},inner:{id:c.id}};return e.next()<.3&&(u.outerPaint={kind:"solid",ink:Ns(e,r)}),e.next()<.3&&(u.innerPaint={kind:"solid",ink:Ns(e,r)}),u}function Fk(e,t,n,r=ap(n)){let o=Wn(t),s=J4(o.fork(1)),i=o.fork(2),a=n.moduleShapes.list(),l=a.length===0?e.modules.shape:{id:eu(o.fork(3),a).id},c=hr(n.moduleShapes.get(l.id)),u=t8(o.fork(4),e,r,s,c),d=n.frames.list().filter(h=>h.id!=="none"),m=o.fork(5),f=e.symbol.symbology!=="rmqr"&&d.length>0&&m.next()<Z4;return{schema:"qr-design",version:1,symbol:e.symbol,quietZone:e.quietZone,background:{kind:"solid",ink:s},modules:{shape:l,paint:e8(i,s,n),light:null},regions:u===null?{}:{finder:u},logo:e.logo,frame:f?{ref:{id:eu(m,d).id},paint:{kind:"solid",ink:Ns(m,s)}}:null,output:e.output,...e.assets===void 0?{}:{assets:e.assets},...e.name===void 0?{}:{name:e.name}}}function n8(e){return e==null||e===""||e===!1||Array.isArray(e)&&e.every(t=>t==="")}function Uk(e,t){let n;try{n=e.validate(t)}catch(r){let o=Jr($e(r,"payload/invalid"),["fields"]);return{ok:!1,issues:[o],reason:o}}if(qn(n)){let r=e.fields.every(i=>n8(t[i.key])),o=n.filter(i=>i.severity==="error").length,s=r?P(Le.contentEmpty,["fields"],"info"):P(Le.contentInvalid,["fields"],"error",{count:o});return{ok:!1,issues:n,reason:s}}try{return{ok:!0,text:e.build(t).text,issues:n}}catch(r){let o=Jr($e(r,"payload/invalid"),["fields"]);return{ok:!1,issues:[...n,o],reason:o}}}function zk(e){let{symbology:t,ecLevel:n,boostEc:r,minVersion:o,maxVersion:s,mask:i,segmentation:a}=e.symbol;return{symbology:t,...n===void 0?{}:{ecLevel:n},...r===void 0?{}:{boostEc:r},...o===void 0?{}:{minVersion:o},...s===void 0?{}:{maxVersion:s},...i===void 0?{}:{mask:i},...a===void 0?{}:{segmentation:a}}}function Vk(e){return JSON.stringify(zk(e))}function qk(e,t,n){try{return{ok:!0,symbol:Fn(e,zk(t),n)}}catch(r){let o=$e(r,"encode/unsupported-content");return{ok:!1,issue:Jr(o,["symbol"]),error:o}}}function r8(e,t,n){try{return t.read(e.matrix,{strict:!1}).bitstream.segments.map(o=>({mode:o.mode,chars:o.length,data:new Uint8Array(0),...o.eci===null?{}:{eci:o.eci}}))}catch{try{return Tc(n,t.profile(e.version),{...Wi,kanji:"never"})}catch{return[]}}}function o8(e,t){let n=e.versions,r=t.symbol.maxVersion;return r!==void 0&&n.includes(r)?r:n[n.length-1]}function Hk(e,t,n,r){let o=r.require(e.symbology),s=r8(e,o,t),i=0;try{i=s.length===0?0:Bn(s,o.profile(e.version))}catch{}let a=e.blocks.dataBits,l=o8(o,n),c=a;try{c=Math.max(a,o.blocks(l,e.ecLevel).dataBits)}catch{}let u=s.map(d=>Object.freeze({mode:d.mode,chars:d.chars,eci:d.eci??null}));return Object.freeze({symbology:o.id,symbologyLabelKey:o.labelKey,phoneReadable:o.phoneReadable,noteKey:o.phoneReadable?null:`symbology.${o.id}.not-phone-readable`,version:e.version,ecLevel:e.ecLevel,mask:e.mask,modules:Object.freeze([e.matrix.width,e.matrix.height]),quietZone:n.quietZone,capacity:Object.freeze({usedBits:i,totalBits:a,fraction:i/a,ofLargest:i/c}),segments:Object.freeze(u)})}var ta=8,Kk=2;function Gk(e){let{content:t,design:n,conditions:r,seed:o,assets:s,overlay:i,captureSeeds:a}=e;return Object.freeze({content:t,design:n,conditions:r,seed:o,requires:Yi(n),...s===void 0?{}:{assets:s},overlay:i,captureSeeds:a})}var _k=Object.freeze({run:async()=>Y(new K("platform/unavailable","The scan check is not part of this copy.",{feature:"verify"}))});function Qk(e,t){let{registries:n,scheduler:r,clock:o}=t;return Object.freeze({run(s,i,a){return $c(()=>e(s,n),{scheduler:r,clock:o,signal:i,progress:a,failure:"verify/missing-entry"})}})}function s8(e){return/^[\u0000-\u0020]*https?:/i.test(e)}function i8(e){try{return Gl(new URL(e).protocol.slice(0,-1))}catch{return!1}}function tu(e){try{return{ok:!0,value:e()}}catch{return{ok:!1}}}function Wk(e){return`${e.code}|${e.severity}|${JSON.stringify(e.params??{})}`}function lp(e,t){let n=[],r=nc(e,t).type,o=tu(()=>r.parse(e));o.ok||(n.push(P("inspect.issue.unreadable-as-type",[],"warning",{typeId:r.id})),r=t.get("text")??fs,o=tu(()=>r.parse(e)));let s=o.ok?o.value:{text:e},i=tu(()=>r.validate(s));i.ok&&n.push(...i.value);let a=[],l=null,c=null,u=new Set;if(s8(e)||i8(e)){let f=en(e);a.push(...f.findings);for(let p of f.findings)u.add(p.code);l=f.displayHost,c=f.unicodeHost}let d=new Set(a.map(Wk)),m=r.safety===void 0?void 0:tu(()=>r.safety(s));if(m!==void 0&&m.ok)for(let f of m.value){let p=Wk(f);u.has(f.code)||d.has(p)||(d.add(p),a.push(f))}return{payload:Object.freeze({typeId:r.id,value:s,issues:Object.freeze(n)}),safety:Object.freeze({findings:Object.freeze(a),displayHost:l,unicodeHost:c})}}var nu="",a8=Object.freeze({"00":{length:2,fixed:18},"01":{length:2,fixed:14},"02":{length:2,fixed:14},10:{length:2,max:20},11:{length:2,fixed:6},12:{length:2,fixed:6},13:{length:2,fixed:6},15:{length:2,fixed:6},16:{length:2,fixed:6},17:{length:2,fixed:6},20:{length:2,fixed:2},21:{length:2,max:20},22:{length:2,max:20},240:{length:3,max:30},241:{length:3,max:30},250:{length:3,max:30},251:{length:3,max:30},253:{length:3,max:30},254:{length:3,max:20},30:{length:2,max:8},37:{length:2,max:8},400:{length:3,max:30},401:{length:3,max:30},402:{length:3,fixed:17},403:{length:3,max:30},410:{length:3,fixed:13},411:{length:3,fixed:13},412:{length:3,fixed:13},413:{length:3,fixed:13},414:{length:3,fixed:13},415:{length:3,fixed:13},416:{length:3,fixed:13},420:{length:3,max:20},421:{length:3,max:12},422:{length:3,fixed:3},7003:{length:4,fixed:10},8003:{length:4,max:30},8004:{length:4,max:30},8020:{length:4,max:25},90:{length:2,max:30}});function l8(e){return/^3[1-6]\d\d$/.test(e)?{length:4,fixed:6}:void 0}function c8(e){return/^39[0-3]\d$/.test(e)?{length:4,max:18}:void 0}function u8(e){let t=Number(e);return t<=22||t===30||t===37||t>=90?2:t>=23&&t<=25||t>=40&&t<=42?3:4}function d8(e){for(let r of[2,3,4]){let o=e.slice(0,r),s=a8[o]??(r===4?l8(o)??c8(o):void 0);if(s!==void 0&&s.length===r)return{ai:o,spec:s}}if(!/^\d\d/.test(e))return null;let t=u8(e.slice(0,2)),n=e.slice(0,t);return!/^\d+$/.test(n)||n.length<t?null:{ai:n,spec:{length:t,max:Number(n.slice(0,2))>=91?90:70}}}function Xk(e){let t=[],n=e.startsWith(nu)?1:0;for(;n<e.length;){let r=d8(e.slice(n));if(r===null)break;let o=n+r.ai.length,s;if(r.spec.fixed!==void 0){if(s=o+r.spec.fixed,s>e.length||e.slice(o,s).includes(nu))break}else{let i=e.indexOf(nu,o);if(s=i<0?e.length:i,s-o>r.spec.max)break}t.push({ai:r.ai,value:e.slice(o,s)}),n=s,e[n]===nu&&(n+=1)}return t}function m8(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function Yk(e){let t=new Map;for(let r of e){let o=`${r.parity}/${r.total}`,s=t.get(o);s===void 0&&(s={parity:r.parity,total:r.total,byIndex:new Map,clash:!1},t.set(o,s));let i=s.byIndex.get(r.index);i===void 0?s.byIndex.set(r.index,r):m8(i.bytes,r.bytes)||(s.clash=!0)}let n=[];for(let r of t.values()){let o=[];for(let a=0;a<r.total;a+=1)r.byIndex.has(a)||o.push(a);let s=null,i=null;if(o.length===0){let a=0;for(let l=0;l<r.total;l+=1)for(let c of r.byIndex.get(l).bytes)a^=c;if(s=a===r.parity&&!r.clash,s){i="";for(let l=0;l<r.total;l+=1)i+=r.byIndex.get(l).text}}n.push(Object.freeze({parity:r.parity,total:r.total,complete:s===!0,text:i,missing:Object.freeze(o),parityMatches:s}))}return n}function Zk(e){if(typeof e!="object"||e===null||typeof e.symbologies!="object"||typeof e.payloads!="object")throw new TypeError("inspect: registries gives the symbologies and the content types.")}function f8(e){let{read:t}=e,{bitstream:n}=t;return Object.freeze({symbology:e.symbology,version:t.version,ecLevel:t.ecLevel,mask:t.mask,corners:e.corners,segments:n.segments,text:n.text,textSource:n.textSource,structuredAppend:n.structuredAppend,gs1:n.fnc1==="gs1"?Object.freeze(Xk(n.text)):null,quality:Object.freeze({errorsPerBlock:t.errorsPerBlock,capacityPerBlock:t.capacityPerBlock,erasuresUsed:t.erasuresUsed,formatErrors:t.formatErrors,mirrored:t.mirrored,inverted:e.inverted,minConfidence:e.minConfidence})})}function $k(e,t){if(typeof e!="string")throw new TypeError("inspectText: text is a string.");Zk(t);let{payload:n,safety:r}=lp(e,t.payloads);return Object.freeze({symbols:Object.freeze([]),sets:Object.freeze([]),payload:n,safety:r})}function Jk(e,t,n={}){Zk(t);let r=Tr(e,{...n,profile:n.profile??"lenient"},t.symbologies);if(!r.ok)return Y(r.error);let o=r.value;if(o.length===0)return Y(new K("decode/not-found","No code was found in this picture."));let s=o.map(f8),i=Yk(o.flatMap(f=>{let p=f.read.bitstream.structuredAppend;return p===null?[]:[{...p,text:f.read.bitstream.text,bytes:f.read.bitstream.bytes}]})),a=s[0],l=a.structuredAppend,u=(l===null?void 0:i.find(f=>f.parity===l.parity&&f.total===l.total))?.text??a.text,{payload:d,safety:m}=lp(u,t.payloads);return ae(Object.freeze({symbols:Object.freeze(s),sets:Object.freeze(i),payload:d,safety:m}))}var e2=["L","M","Q","H"],p8=["distance","focus","motion","noise","angle","light","glare","ink","contrast"],h8=.6;function r2(e,t){if(!Array.isArray(t.path))throw new TypeError("applyDesignPatch: patch.path is a list.");if(t.path.length===0)return t.value;let n=(r,o)=>{let s=t.path[o];if(o===t.path.length-1){if(Array.isArray(r)){let a=[...r];return a[s]=t.value,a}return{...r,[s]:t.value}}let i=r?.[s];if(typeof i!="object"||i===null)throw new TypeError("applyDesignPatch: the path goes through something that is not an object.");if(Array.isArray(r)){let a=[...r];return a[s]=n(i,o+1),a}return{...r,[s]:n(i,o+1)}};return n(e,0)}function t2(e){return{kind:"solid",ink:e}}function cp(e,t){let n={};for(let r of["finder","sub-finder","corner-finder"]){let o=e.regions[r];o!==void 0&&(n[r]={outer:o.outer,inner:o.inner})}return{...e,modules:{...e.modules,paint:t},regions:n}}function na(e,t){return e.checks.some(n=>n.id===t&&n.status!=="pass")}function Ls(e,t){let n=e.captures.find(r=>r.axis===t);return n===void 0||n.firstFailed===null?!1:n.firstFailed<=n.typical}function n2(e,t){let n=[],r=o=>{if(o!==void 0){if(o.kind==="entry"){t!==void 0&&n.push(...go(o,t));return}n.push(...o.kind==="solid"?[o.ink]:o.stops.map(s=>s.ink))}};r(e.modules.paint);for(let o of Object.values(e.regions))r(o.outerPaint),r(o.innerPaint);return n}function ra(e){return As(zt(e))}function o2(e,t,n){let r=[],o=x=>{r.some(w=>w.id===x.id)||r.push(x)},s=e.checks.some(x=>x.id==="polarity"&&x.status!=="pass"),i=na(e,"logo-budget"),a=t.logo!==null&&e.checks.some(x=>x.id==="function-patterns"&&x.status!=="pass"&&x.messageKey!=="verify.check.function-patterns.finder"),l=e.symbol.ecLevel,c=e2[e2.indexOf(l)+1],u=Ls(e,"glare");if(c!==void 0&&e.symbol.symbology==="qr"&&(i||u)&&o({id:"raise-ec",labelKey:"verify.fix.raise-ec",patch:{path:["symbol","ecLevel"],value:c},params:{level:c},targets:i?"logo-budget":"glare"}),t.logo!==null&&(i||a)){let x=Math.max(he.logoSize.min,Math.round(t.logo.size*75)/100);x<t.logo.size&&o({id:"shrink-logo",labelKey:"verify.fix.shrink-logo",patch:{path:["logo","size"],value:x},params:{percent:Math.round(x*100)},targets:i?"logo-budget":"function-patterns"}),i&&t.logo.clear==="box"&&t.logo.plate===null&&o({id:"logo-clear-shape",labelKey:"verify.fix.logo-clear-shape",patch:{path:["logo","clear"],value:"shape"},targets:"logo-budget"})}if(s&&t.background!==null&&o({id:"dark-on-light",labelKey:"verify.fix.dark-on-light",patch:{path:[],value:{...cp(t,t.background),background:t.modules.paint}},targets:"polarity"}),(na(e,"contrast")||Ls(e,"contrast")||Ls(e,"light"))&&!s){let x=n2(t,n),w=x.reduce((E,R)=>E===null||ra(R)<ra(E)?R:E,null),k=x.reduce((E,R)=>Math.max(E,ra(R)),0),S=w!==null&&ra(w)<k?w:"#000000";(x.length===0||ra(S)<k)&&o({id:"darken-modules",labelKey:S==="#000000"?"verify.fix.black-modules":"verify.fix.darken-modules",patch:{path:[],value:cp(t,t2(S))},targets:na(e,"contrast")||Ls(e,"contrast")?"contrast":"light"})}if(na(e,"colour-red-channel")&&!s){let w=n2(t,n).reduce((S,E)=>S===null||Is(zt(E))<Is(zt(S))?E:S,null),k=w!==null&&Is(zt(w))<1-Zi?w:"#000000";o({id:"low-red-ink",labelKey:k==="#000000"?"verify.fix.black-modules":"verify.fix.low-red-ink",patch:{path:[],value:cp(t,t2(k))},targets:"colour-red-channel"})}let m=e.checks.find(x=>x.id==="quiet-zone"&&x.status==="fail");m!==void 0&&t.quietZone<m.threshold&&o({id:"widen-quiet-zone",labelKey:"verify.fix.widen-quiet-zone",patch:{path:["quietZone"],value:m.threshold},params:{modules:m.threshold},targets:"quiet-zone"});let f=na(e,"finder-shape"),p=Object.values(t.regions).some(x=>x.outer.id!=="square"||x.inner.id!=="square-centre"),h=p8.find(x=>Ls(e,x));p&&(f||h!==void 0||!e.baseline.passed)&&o({id:"square-finders",labelKey:"verify.fix.square-finders",patch:{path:["regions"],value:{}},targets:f?"finder-shape":h??"finder-shape"});let g=t.modules.shape.id!=="square"&&e.limits.inkFraction<h8,y=["focus","distance","motion"].find(x=>Ls(e,x));g&&y!==void 0&&o({id:"solid-modules",labelKey:"verify.fix.solid-modules",patch:{path:["modules","shape"],value:{id:"square"}},targets:y});let b=e.checks.find(x=>x.id==="module-size"&&x.status!=="pass");if(b?.params!==void 0&&e.conditions.sizeMm!==null){let x=e.conditions.sizeMm,w=e.limits.maxDistanceMm,k=typeof b.params.minimumMm=="number"?b.params.minimumMm:w!==null&&w>0?Math.ceil(x*ht.comfortMm/w):null;k!==null&&k>x&&o({id:"print-larger",labelKey:"verify.fix.print-larger",patch:null,conditions:{sizeMm:k},params:{sizeMm:k},targets:"module-size"})}return Object.freeze(r)}var y8=200,g8=250,up=16384,dp=4*1024*1024,b8=["create","scan","bulk"],x8=Object.freeze({image:Jk,text:$k}),w8=Object.freeze({pdf:dc,eps:mc}),s2=Object.freeze({later(e,t){let n=setTimeout(e,t);return()=>clearTimeout(n)},sliceMs:8});function k8(){return typeof performance<"u"?performance.now():Date.now()}function Un(e,t=4){let n=[];return(...r)=>{for(let s of n)if(s.args.length===r.length&&s.args.every((i,a)=>i===r[a]))return s.value;let o=e(...r);return n.unshift({args:r,value:o}),n.length>t&&n.pop(),o}}function we(e){return Object.freeze(e)}function mp(e={}){if(typeof e!="object"||e===null)throw new TypeError("createStudio: options is an object.");let t=e.registries??Jl(),n=e.historyLimit??y8;if(!Number.isInteger(n)||n<0)throw new TypeError("createStudio: historyLimit is a whole number, 0 or more.");let r=e.verifyDebounceMs??g8;if(typeof r!="number"||!Number.isFinite(r)||r<0)throw new TypeError("createStudio: verifyDebounceMs is a number of milliseconds, 0 or more.");let o=e.liveCaptureSeeds??Kk;if(!Number.isInteger(o)||o<1||o>ta)throw new TypeError("createStudio: liveCaptureSeeds is a whole number from 1 to 8.");let s=e.seed??1;if(!Number.isInteger(s)||s<0||s>4294967295)throw new TypeError("createStudio: seed is an integer from 0 to 2^32 - 1.");let i=yc(e.csvFallbackEncoding,"createStudio: csvFallbackEncoding is"),a=e.clock??k8,l=e.suggestFixes??((L,B)=>o2(L,B,t.design)),c=e.inspector===void 0?x8:e.inspector,u=e.library??null,d=new Vc,m=e.fonts??Mn(),f=jk(e.scheduler??s2),p=(L,B)=>f.later(L,B),h=e.verifyGenerator===void 0?zc:e.verifyGenerator,g=e.verifyRunner??(h===null?_k:Qk(h,{registries:t,scheduler:f,clock:a})),y=[],b;if(typeof e.initial=="string"){let L=Uy(e.initial,t);b=L.document,y=L.issues}else if(e.initial!==void 0){let L=Fy(e.initial,t,m);b=L.document,y=L.issues}else b=Go(t);let x=0,w=Mk,k=y.length===0?null:we({action:"initial",issues:we(y)}),S=we({status:"idle"}),E=null,R=we({status:"idle"}),C=we({status:"idle"}),A=null,O=we(u===null?{status:"unavailable"}:{status:"checking"}),D=!1,N=new Set,T=L=>t.payloads.require(L),I=Un((L,B)=>{let F=Nr(L,B.constraints),G=En(L,t.design,{fonts:m}).issues;return we({effective:ea(L,F.design),issues:we([...G,...F.issues]),locked:B.constraints?.designLocked===!0,overlay:F.overlay})}),U=Un((L,B)=>Uk(L,B)),q=new Map,H=(L,B)=>{let F=`${t.symbologies.version}\0${Vk(B)}\0${L}`,G=q.get(F);if(G===void 0)for(G=qk(L,B,t.symbologies),q.set(F,G);q.size>8;)q.delete(q.keys().next().value);return G},W=null,$=Un((L,B,F)=>Hk(L,B,F,t.symbologies)),be=Un(L=>we({status:"ok",view:L})),X=Un((L,B,F)=>{let G;if(L.ok){let Xe=H(L.text,B);if(Xe.ok){F?.symbol!==Xe.symbol&&(W={text:L.text,symbol:Xe.symbol});let dt=$(Xe.symbol,L.text,B);return{state:be(dt),symbol:Xe.symbol,design:B}}G=Xe.issue}else G=L.reason;if(F===null)return{state:we({status:"empty",issue:G}),symbol:null,design:B};let pe=H(F.text,B),Ne=pe.ok?pe.symbol:F.symbol,Te=$(Ne,F.text,B);return{state:we({status:"stale",view:Te,issue:G}),symbol:Ne,design:B}},2),ne=Un((L,B,F)=>Sk(L,B,F)),me=Un((L,B,F)=>{if(L===null)return null;try{let G=tn(L,B,{registries:t.design,assets:d.lookup(B),fonts:m,seed:s,overlay:F});return we({svg:yn(G.scene),scene:G.scene,issues:G.issues,epsIssues:we([...qi(G.scene)])})}catch{return null}},2),fe=null,ke=()=>{let L=Ps(t);return fe?.key!==L&&(fe={key:L,value:bk(t,m)}),fe.value},Oe=Un((L,B,F)=>xk(t,L,B,F.constraints,m),2),gt=null,ie=()=>{let L=t.design.regionShapes.version;return gt?.version!==L&&(gt={version:L,pairs:ap(t.design)}),gt.pairs},Ce=Un((L,B)=>we({canUndo:L,canRedo:B}));function qe(){let L=b,B=x,F=T(L.typeId),G=()=>U(F,L.fields),pe=()=>I(L.design,F),Ne=X(G(),pe().effective,W),Te=()=>Ne,Xe={revision:B,document:L,get form(){return ne(F,L.fields,G().issues)},get payloadIssues(){return G().issues},get symbol(){return Te().state},get preview(){let dt=Te();return me(dt.symbol,dt.design,pe().overlay)},get design(){return pe()},verify:S,history:Ce(w.past.length>0||w.group!==null&&!$f(w.group.base,sr()),w.future.length>0),get catalogue(){return ke()},get presetThumbnails(){let dt=Te();return Oe(ke(),dt.state.status==="ok"?dt.symbol:null,F)},inspect:R,batch:C,library:O,refusal:k};return Object.freeze(Xe)}let Wt=qe(),ce=Ps(t);function re(){Wt=qe(),ce=Ps(t);let L,B=!1;for(let F of[...N])try{F()}catch(G){B||(L=G),B=!0}if(B)throw L}let oe=!1,se=null,Se=null,st=0,_e=null;function gn(){Se!==null&&(Se.controller.abort(),Se=null)}let mu=we({status:"idle"}),Bv=Un(L=>we({...L,stale:!0}),1);function Vs(){return E===null?mu:Bv(E)}let Hp=ta;function Kp(L){Hp=L,se?.(),se=p(Fv,r)}function Fv(){se=null;let L=T(b.typeId),B=U(L,b.fields),F=I(b.design,L).effective;_e={content:B,design:F,conditions:b.conditions},gn();let G=B.ok?H(B.text,F):null;if(!B.ok||G===null||!G.ok){S=Vs(),re();return}let pe=st+=1,Ne=new AbortController;Se={id:pe,controller:Ne};let Te=x,{overlay:Xe}=I(b.design,L),dt=Hp,ir=dt===ta,To=Gk({content:B.text,design:F,conditions:Uv(G.symbol,F,Xe),seed:s,assets:d.all(F),overlay:Xe,captureSeeds:dt});S=we({status:"running",progress:0,revision:Te,axis:null,captureSeeds:dt,full:ir}),re();let Ks=()=>!D&&Se?.id===pe,gu=bt=>{if(!Ks())return;let Vr=bt.total>0?Math.min(1,Math.max(0,bt.done/bt.total)):0;S=we({status:"running",progress:Vr,revision:Te,axis:bt.axis,captureSeeds:dt,full:ir}),re()},ar=bt=>{if(Ks()){if(Se=null,bt.ok){let Vr=bt.value,Ro=[];try{Ro=l(Vr,F)}catch{Ro=[]}E=we({status:"done",report:Vr,fixes:we([...Ro]),stale:!1,revision:Te,captureSeeds:dt,full:ir}),S=E}else bt.error.code==="cancelled"?S=Vs():S=we({status:"failed",error:Fe(bt.error),revision:Te});re()}},et;try{et=g.run(To,Ne.signal,gu)}catch(bt){et=Promise.resolve(Y($e(bt,"platform/unavailable")))}et.then(ar,bt=>ar(Y($e(bt,"platform/unavailable"))))}function Uv(L,B,F){let G=me(L,B,F)?.scene.unitsPerMm;if(G===void 0)return b.conditions;let pe=(L.matrix.width+2*B.quietZone)/G;return we({...b.conditions,sizeMm:pe})}function zv(){if(!oe||_e===null)return;let L=T(b.typeId),B=U(L,b.fields),F=I(b.design,L).effective;B===_e.content&&F===_e.design&&b.conditions===_e.conditions||(_e={content:B,design:F,conditions:b.conditions},Se!==null?(gn(),S=Vs()):S.status==="done"&&!S.stale&&(S=Vs()),Kp(o))}let sr=()=>({typeId:b.typeId,fields:b.fields,design:b.design});function St(L,B){k=we({action:L,issues:we([...B])}),re()}function qs(L){b=Object.freeze(L),x+=1,k=null,zv(),re()}function pa(L,B){w=Zf(w,sr(),B,n),qs({...b,...L})}function fu(L){qs({...b,typeId:L.typeId,fields:L.fields,design:L.design})}function Gp(L,B){let F=Ko(L,t,m);if(F.design===null)return{kind:"refuse",issues:F.issues};let G=b.design,pe=ea(G,F.design);if(pe===G){let Xe=F.issues.filter(dt=>dt.severity!=="info");return Xe.length>0&&!tr(L,G)?{kind:"refuse",issues:Xe}:{kind:"same"}}let Ne=T(b.typeId),{constraints:Te}=Ne;if(Te!==void 0&&tr(Nr(G,Te).design,Nr(pe,Te).design)){let Xe=Te.designLocked===!0;return{kind:"refuse",issues:[P(Xe?Le.designLocked:Le.constrained,B,"warning",{type:Ne.id})]}}return{kind:"change",next:pe}}function ha(L,B,F,G){let pe=Gp(B,G);pe.kind==="refuse"?St(L,pe.issues):pe.kind==="change"&&pa({design:pe.next},F)}function Vv(L,B){let F=L.design,G=B.logo!==null&&B.logo.source.kind==="asset",pe=F.logo===null&&G,Ne=B.symbol.ecLevel,Te=Ne!==void 0&&L.ecLevels.includes(Ne)?Ne:F.symbol.ecLevel??Ne;return{...F,symbol:{...B.symbol,...Te===void 0?{}:{ecLevel:Te}},logo:pe?B.logo:F.logo,output:{...B.output,colourSpace:F.output.colourSpace},...pe&&B.assets!==void 0?{assets:B.assets}:{},...B.name===void 0?{}:{name:B.name}}}function qv(L,B){try{let F=L.parse(B),G={};for(let[pe,Ne]of Object.entries(F))rl(Ne)&&(G[pe]=Ne);return bi(L,G)}catch{return null}}function Hv(L){if(L.length>up){St("payload/raw",[P(Le.rawTooLong,["text"],"error",{length:L.length,max:up})]);return}let F=[nc(L,t.payloads).type,t.payloads.get("text")].filter(G=>G!==void 0&&G.generate!==!1&&t.payloads.get(G.id)===G);for(let G of F){let pe=qv(G,L);if(pe!==null){pa({typeId:G.id,fields:pe},null);return}}St("payload/raw",[P(Le.unknownType,["text"],"error")])}function Kv(L,B,F){let G=Array.isArray(B)?B:[B];if(G.length===0)return;let pe=b.design;for(let Te of G){let Xe=typeof Te=="object"&&Te!==null?Lk(Te.path):"shape";if(Xe!==null){St(L,[P(Le.patchPath,[],"error",{problem:Xe})]);return}pe=Dk(pe,Te.path,Te.value)}let Ne=G[0];ha(L,pe,F,Ne.path)}function Gv(L){if(typeof L!="object"||L===null||typeof L.type!="string")throw new TypeError("dispatch: an action is an object with a type.");if(!D)switch(L.type){case"mode":{if(!b8.includes(L.mode))throw new TypeError("dispatch: mode is 'create', 'scan' or 'bulk'.");L.mode!==b.mode&&qs({...b,mode:L.mode});return}case"payload/type":{let B=typeof L.typeId=="string"?t.payloads.get(L.typeId):void 0;if(B===void 0){St(L.type,[P(Le.unknownType,["typeId"],"error")]);return}if(B.generate===!1){St(L.type,[P(Le.readOnlyType,["typeId"],"error",{type:B.id})]);return}if(B.id===b.typeId)return;pa({typeId:B.id,fields:bi(B,b.fields)},null);return}case"payload/field":{let F=T(b.typeId).fields.find(pe=>pe.key===L.key);if(F===void 0){St(L.type,[P(Le.unknownField,["fields"],"error")]);return}if(!rl(L.value)){St(L.type,[P(Le.fieldValue,["fields",F.key],"error")]);return}if(tr(b.fields[F.key],L.value))return;let G=Array.isArray(L.value)?we([...L.value]):L.value;pa({fields:we({...b.fields,[F.key]:G})},`field:${F.key}`);return}case"payload/raw":{if(typeof L.text!="string")throw new TypeError("dispatch: payload/raw takes text.");Hv(L.text);return}case"design/patch":Kv(L.type,L.patch,typeof L.coalesce=="string"?`patch:${L.coalesce}`:null);return;case"design/preset":{let B=typeof L.id=="string"?t.design.presets.get(L.id):void 0;if(B===void 0){St(L.type,[P(Le.unknownPreset,["id"],"error")]);return}ha(L.type,Vv(B,b.design),null,[]);return}case"design/replace":{let B=L.design;if(typeof B=="string"){if(B.length>dp){St(L.type,[P(Le.designFile,[],"error",{length:B.length,max:dp})]);return}try{B=JSON.parse(B)}catch{St(L.type,[P(Le.designFile,[],"error")]);return}}ha(L.type,B,null,[]);return}case"design/shuffle":{let B=Number(L.seed),F=Number.isFinite(B)?Math.floor(Math.abs(B))%4294967296:0;ha(L.type,Fk(b.design,F,t.design,ie()),null,[]);return}case"conditions":{let{conditions:B,bad:F}=br(L.conditions,b.conditions);if(F.length>0){St(L.type,F.map(G=>P(Le.conditions,G,"error")));return}if(tr(B,b.conditions))return;qs({...b,conditions:we(B)});return}case"history/undo":{w.group!==null&&(w=Qc(w,w.group.key,sr(),n));let B=Ak(w,sr());if(B===null)return;w=B.history,fu(B.restore);return}case"history/redo":{let B=Ik(w,sr(),n);if(B===null)return;w=B.history,fu(B.restore);return}case"history/begin":{if(typeof L.key!="string")throw new TypeError("dispatch: history/begin takes a key.");let B=w;w=Tk(w,L.key,sr(),n),w!==B&&re();return}case"history/commit":{if(typeof L.key!="string")throw new TypeError("dispatch: history/commit takes a key.");let B=w;w=Qc(w,L.key,sr(),n),w!==B&&re();return}case"history/cancel":{let B=Rk(w);if(B===null)return;w=B.history;let F=B.restore;F.typeId===b.typeId&&F.fields===b.fields&&F.design===b.design?re():fu(F);return}case"verify/request":{oe=!0;let B=T(b.typeId);_e={content:U(B,b.fields),design:I(b.design,B).effective,conditions:b.conditions},Kp(ta);return}case"verify/cancel":{oe=!1,se?.(),se=null;let B=Se!==null;gn(),B&&(S=Vs(),re());return}case"fix/apply":{let F=(S.status==="done"?S.fixes:[]).find(Ne=>Ne.id===L.fixId);if(F===void 0){St(L.type,[P(Le.unknownFix,["fixId"],"error")]);return}let G;if(F.patch!==null)try{G=r2(b.design,F.patch)}catch{St(L.type,[P(Le.patchPath,[],"error",{problem:"shape"})]);return}let pe=F.conditions===void 0?null:we(br(F.conditions,b.conditions).conditions);yu(L.type,G,pe);return}default:throw new TypeError("dispatch: that is not an action the studio knows.")}}function ya(L){C=we(L),re()}async function _v(L){let B=L.encoding??"auto",F=B==="auto"?i:yc(B,"batch: encoding is 'auto' or");A?.abort();let G=new AbortController;A=G;let pe=()=>!D&&A===G,Ne=et=>(pe()&&(A=null,ya({status:"failed",error:Fe(et)})),Y(et)),Te,Xe;try{let et,bt=[];if(typeof L.csv=="string")et=L.csv;else{let Ro=gc(L.csv,{fallback:F});et=Ro.text,bt=Ro.issues}let Vr=wc(et);Te=we([...bt,...Vr.issues]),Xe=Mc(Vr,L.mapping,t)}catch(et){if(et instanceof TypeError)throw et;return Ne($e(et,"batch/malformed-csv"))}let dt=L.output.verify;if(h===null&&dt!==void 0&&dt!=="off")return Ne(new K("platform/unavailable","The scan check is not part of this build yet.",{feature:"verify"}));let ir=0,To=0,Ks=[];ya({status:"running",done:0,total:Xe.length+1,written:ir,skipped:To,issues:Te});let gu=b.design,ar=await $c(()=>Iw(Xe,gu,L.output,t,{fonts:m,seed:s,...h===null?{}:{verifyRow:hk(t,h)}}),{scheduler:f,clock:a,signal:G.signal,failure:"platform/unavailable",progress:et=>{et.row!==void 0&&(Ks.push(et.row),et.row.status==="written"?ir+=1:To+=1),pe()&&ya({status:"running",done:et.done,total:et.total,written:ir,skipped:To,issues:Te})}});return ar.ok?(pe()&&(A=null,ya({status:"done",outcomes:we(Ks),written:ir,skipped:To,issues:Te})),ar):ar.error.code==="cancelled"?Y(ar.error):Ne(ar.error)}function ga(L){R=we(L),re()}function Hs(L){O=we(L),re()}async function Qv(L,B){try{return await L()}catch(F){if(F instanceof TypeError)throw F;return Y($e(F,B))}}let pu="on",Eo=null,hu=[];async function sn(){let L=u,B=await L.contents();if(D)return Y(new bn);if(!B.ok)return Hs({status:"failed",error:Fe(B.error)}),B;let F={items:we([...B.value.designs]),kits:we([...B.value.kits]),skipped:we([...B.value.skipped,...hu]),kit:Eo};return Hs(pu==="file"?{status:"file",unsaved:L.hasUnsavedChanges?.()===!0,...F}:{status:"on",...F}),B}function Wv(L){return L.state!==void 0?L.state:L.available?L.enabled?"on":"off":"unavailable"}function Xv(){return new K("library/not-enabled","The library is switched off. Switch it on to save designs and brand kits in this browser.")}async function Yv(L){let B=T(b.typeId),F=U(B,b.fields),{effective:G,overlay:pe}=I(b.design,B);if(!F.ok)return Y(new K("payload/invalid","Fix the content before saving the code.",{count:F.issues.filter(Te=>Te.severity==="error").length}));let Ne=H(F.text,G);return Ne.ok?vk({symbol:Ne.symbol,design:G,fixedSizeMm:B.constraints?.sizeMm,conditions:b.conditions,registries:t.design,assets:d.lookup(G),fonts:m,overlay:pe,seed:s,rasterEncoder:e.rasterEncoder??null,printer:e.printer===void 0?w8:e.printer},L.format,L.options??{}):Y(Ne.error)}function yu(L,B,F){let G=B===void 0?{kind:"same"}:Gp(B,[]),pe={};G.kind==="change"&&(pe.design=G.next),F!==null&&!tr(F,b.conditions)&&(pe.conditions=F),pe.design!==void 0&&(w=Zf(Ek(w),sr(),null,n)),Object.keys(pe).length>0&&qs({...b,...pe}),G.kind==="refuse"&&St(L,G.issues)}async function Zv(L){if(u===null)return Y(new K("library/unavailable","This copy of the studio has no library."));let B=()=>Y(new bn);switch(L.type){case"library/enable":{let F=await u.enable();if(D)return B();if(!F.ok)return Hs({status:"failed",error:Fe(F.error)}),F;let G=await sn();return G.ok?ae(G.value.designs):G}case"library/disable":{let F=await u.disable();return D?B():F.ok?(Eo=null,hu=[],pu==="file"?await sn():Hs({status:"off"}),ae(null)):F}default:break}if(O.status!=="on"&&O.status!=="file")return Y(Xv());switch(L.type){case"library/save":{let F=typeof L.name=="string"?L.name:"",G=await u.save({name:F,document:b});return D?B():(G.ok&&await sn(),G)}case"library/remove":{let F=await u.remove(L.id);if(D)return B();if(!F.ok)return F;let G=await sn();return G.ok?ae(G.value.designs):G}case"library/load":{let F=await u.load(L.id);if(D)return B();if(!F.ok)return F;let G=F.value.document,{conditions:pe}=br(G.conditions,b.conditions);yu(L.type,G.design,we(pe));let{document:Ne,...Te}=F.value;return ae(we(Te))}case"library/list-kits":{let F=await sn();return F.ok?ae(F.value.kits):F}case"library/save-kit":{let F=typeof L.name=="string"?L.name:"",G=await u.saveKit({name:F,kit:L.kit});return D?B():(G.ok&&await sn(),G)}case"library/load-kit":{let F=await u.loadKit(L.id);return D?B():(F.ok&&(Eo=F.value,yu(L.type,op(b.design,F.value.kit),null),await sn()),F)}case"library/remove-kit":{let F=await u.removeKit(L.id);if(D)return B();if(!F.ok)return F;Eo?.id===L.id&&(Eo=null);let G=await sn();return G.ok?ae(G.value.kits):G}case"library/save-file":{if(u.saveFile===void 0)return Y(_p());let F=u.saveFile(L.name);return F.ok&&await sn(),F}case"library/open-file":{if(u.openFile===void 0)return Y(_p());let F=await u.openFile(L.file);return D?B():(F.opened&&(Eo=null,hu=we(F.issues.filter(G=>G.severity!=="error")),await sn()),ae(F))}}}function _p(){return new K("library/unavailable","This library is kept in the browser, not in a file.",{reason:"not-a-file"})}async function $v(L){switch(L.type){case"export":return Yv(L);case"design-link":try{return ae(we(Dy(b.design)))}catch(B){return Y($e(B,"design/invalid"))}case"inspect/image":case"inspect/text":{let B=L.type==="inspect/image"?"image":"text";if(c===null){let G=new K("platform/unavailable","Reading codes is not part of this copy.",{feature:"inspect"});return ga({status:"failed",source:B,error:Fe(G)}),Y(G)}ga({status:"running",source:B});let F;try{F=L.type==="inspect/image"?c.image(L.image,t):ae(c.text(L.text,t))}catch(G){F=Y($e(G,"decode/unreadable"))}return D||(F.ok?ga({status:"done",source:B,report:F.value}):ga({status:"failed",source:B,error:Fe(F.error)})),F}case"batch":return _v(L);case"library/enable":case"library/disable":case"library/save":case"library/load":case"library/remove":case"library/list-kits":case"library/save-kit":case"library/load-kit":case"library/remove-kit":case"library/save-file":case"library/open-file":return Zv(L);default:throw new TypeError("run: that is not a command the studio knows.")}}if(u!==null){let L=B=>{D||Hs(B)};u.probe().then(async B=>{if(!B.ok)return L({status:"failed",error:Fe(B.error)});let F=Wv(B.value);if(F==="unavailable"||F==="off"||F==="unknown")return L({status:F});pu=F,D||await sn()},B=>L({status:"failed",error:Fe($e(B,"library/unavailable"))}))}return Object.freeze({getSnapshot(){return!D&&Ps(t)!==ce&&(Wt=qe(),ce=Ps(t)),Wt},subscribe(L){if(typeof L!="function")throw new TypeError("subscribe: listener is a function.");return D?()=>{}:(N.add(L),()=>{N.delete(L)})},dispatch:Gv,run(L){return typeof L!="object"||L===null||typeof L.type!="string"?Promise.reject(new TypeError("run: a command is an object with a type.")):D?Promise.resolve(Y(new bn)):Qv(()=>$v(L),"platform/unavailable")},dispose(){D||(D=!0,oe=!1,A?.abort(),gn(),f.cancelAll(),N.clear())}})}var v8="http://www.w3.org/2000/svg";function fp(e,t){for(let n of t)n==null||n===!1||e.appendChild(typeof n=="string"?document.createTextNode(n):n)}function S8(e,t){if(t!==void 0)for(let[n,r]of Object.entries(t))r==null||r===!1||e.setAttribute(n,r===!0?"":String(r))}function M(e,t={},n=[]){let r=document.createElement(e);if(t.className!==void 0&&(r.className=t.className),t.id!==void 0&&(r.id=t.id),t.text!==void 0&&(r.textContent=t.text),S8(r,t.attrs),t.on!==void 0)for(let[o,s]of Object.entries(t.on))r.addEventListener(o,s);return fp(r,n),r}function It(e,t={},n=[]){let r=document.createElementNS(v8,e);for(let[o,s]of Object.entries(t))r.setAttribute(o,String(s));return fp(r,n),r}function rn(e){let t=document.getElementById(e);if(t===null)throw new Error(`missing element #${e}`);return t}function le(e,t){for(;e.firstChild!==null;)e.removeChild(e.firstChild);fp(e,t)}function Z(e,t){e.textContent!==t&&(e.textContent=t)}var i2=0;function kt(e){return i2+=1,`${e}-${i2}`}var M8={undo:"M9 14 4 9l5-5M4 9h10.5a5.5 5.5 0 0 1 0 11H11",redo:"m15 14 5-5-5-5M20 9H9.5a5.5 5.5 0 0 0 0 11H13",link:"M10 14a4.5 4.5 0 0 0 6.4 0l3-3a4.5 4.5 0 0 0-6.4-6.4l-1.1 1.1M14 10a4.5 4.5 0 0 0-6.4 0l-3 3a4.5 4.5 0 0 0 6.4 6.4l1.1-1.1",download:"M12 4v11m0 0-4.5-4.5M12 15l4.5-4.5M5 19h14",copy:"M9 9h10v11H9zM5 15V4h10",print:"M7 9V4h10v5M7 17H5a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-2M7 14h10v6H7z",camera:"M4 8h3l2-3h6l2 3h3v11H4zM12 16.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Z",image:"M4 5h16v14H4zM4 16l5-5 4 4 2-2 5 5M15.5 9.5h.01",file:"M14 3H6v18h12V7zM14 3v4h4",pass:"m5 12.5 4.5 4.5L19 7.5",fail:"M6 6l12 12M18 6 6 18",warn:"M12 4 2.8 20h18.4zM12 10v4.5M12 17.5h.01",pending:"M12 4a8 8 0 1 0 8 8M12 8v4l3 2",shuffle:"M4 7h3.5c3 0 4.5 10 8 10H20m0 0-3-3m3 3-3 3M4 17h3.5c1.2 0 2.1-1.4 2.8-3M20 7h-4.5c-1.2 0-2.1 1.4-2.8 3M20 7l-3-3m3 3-3 3",plus:"M12 5v14M5 12h14",chevron:"m6 9 6 6 6-6",minus:"M5 12h14",eye:"M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12ZM12 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z",ruler:"M3 16 16 3l5 5L8 21zM7 12l2 2M10 9l2 2M13 6l2 2",open:"M4 6h6l2 2h8v11H4zM4 10h16",save:"M5 4h11l3 3v13H5zM8 4v5h7V4M8 20v-6h8v6",stop:"M7 7h10v10H7z",close:"M6 6l12 12M18 6 6 18"};function lt(e,t){let n=It("svg",{viewBox:"0 0 24 24",class:t===void 0?"icon":`icon ${t}`,"aria-hidden":"true"});return n.setAttribute("focusable","false"),n.appendChild(It("path",{d:M8[e]})),n}async function a2(e){return e.text()}async function l2(e){return new Uint8Array(await e.arrayBuffer())}var E8=Object.freeze({kind:"pound"}),pp=/\{\s*(\w+)\s*(?:(\})|,\s*(plural|select)\s*,)/y,hp=/\s*(=\d+(?:\.\d+)?|[\w-]+)\s*\{/y,yp=/\s*\}/y;function c2(e,t,n){let r=[],o="",s=()=>{o!==""&&r.push(o),o=""};for(;e.pos<e.source.length;){let i=e.source[e.pos];if(i==="{"){let a=T8(e,n);if(a!==null){s(),r.push(a);continue}}else{if(i==="}"&&t)return s(),{nodes:r,closed:!0};if(i==="#"&&n){s(),r.push(E8),e.pos+=1;continue}}o+=i,e.pos+=1}return s(),{nodes:r,closed:!1}}function T8(e,t){let n=e.pos;pp.lastIndex=n;let r=pp.exec(e.source);if(r===null)return null;let o=r[1];if(e.pos=pp.lastIndex,r[2]!==void 0)return{kind:"argument",name:o,source:e.source.slice(n,e.pos)};let s=r[3],i=new Map;for(;;){if(yp.lastIndex=e.pos,i.size>0&&yp.test(e.source))return e.pos=yp.lastIndex,{kind:s,name:o,source:e.source.slice(n,e.pos),branches:i};hp.lastIndex=e.pos;let a=hp.exec(e.source);if(a===null)break;e.pos=hp.lastIndex;let l=c2(e,!0,t||s==="plural");if(!l.closed)break;e.pos+=1,i.has(a[1])||i.set(a[1],l.nodes)}return e.pos=n,null}function R8(e){return c2({source:e,pos:0},!1,!1).nodes}function gp(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function A8(e,t){return e.get(`=${t}`)??(t===1?e.get("one"):void 0)??e.get("other")}function bp(e,t,n){let r="";for(let o of e){if(typeof o=="string"){r+=o;continue}switch(o.kind){case"pound":r+=n;break;case"argument":r+=gp(t,o.name)?String(t[o.name]):o.source;break;case"select":{let s=gp(t,o.name)?o.branches.get(String(t[o.name]))??o.branches.get("other"):void 0;r+=s===void 0?o.source:bp(s,t,n);break}case"plural":{let s=gp(t,o.name)?t[o.name]:void 0,i=typeof s=="number"||typeof s=="string"&&s.trim()!==""?Number(s):Number.NaN,a=Number.isFinite(i)?A8(o.branches,i):void 0;r+=a===void 0?o.source:bp(a,t,String(s));break}}}return r}function u2(e,t={}){return e.includes("{")?bp(R8(e),t,void 0):e}var d2=Object.freeze({"app.masthead.eyebrow":"Offline QR code studio","app.masthead.title":"Make a QR code that keeps working.","app.masthead.lede":"Everything happens in this page. Nothing is sent anywhere, and you can check that by turning your network off and using it anyway.","app.mode.label":"Mode","app.mode.create":"Create","app.mode.create-hint":"One code","app.mode.scan":"Scan","app.mode.scan-hint":"Read a code","app.mode.bulk":"Bulk","app.mode.bulk-hint":"From a spreadsheet","app.tools.label":"Changes","app.history.undo":"Undo","app.history.redo":"Redo","app.history.undone":"Undone.","app.history.redone":"Redone.","app.link.copy":"Copy design link","app.link.copied":"Design link copied. Put it at the end of this file's address to open the same look, without the content.","app.link.copy-failed":"This browser would not copy from here. Save the design as a file instead.","app.section.content":"Content","app.section.style":"Style","app.section.modules":"Modules","app.section.eyes":"Corner squares","app.section.colour":"Colour","app.section.logo":"Logo","app.section.frame":"Frame","app.section.print":"Printed size","app.section.check":"Scan check","app.section.export":"Save","app.section.library":"Library","app.content.types":"Kind of code","app.content.more":"More kinds","app.content.choose":"Choose","app.content.when-scanned":"When scanned","app.content.advanced":"More options","app.content.required":"Required","app.content.show-secret":"Show","app.content.add-item":"Add another","app.content.remove-item":"Remove","app.content.remove-numbered":"Remove {label} {n}","app.content.add-scheme":"Add https://","app.content.safety":"What a phone may warn about","app.content.compatibility":"Phone support","app.capacity.label":"Space used","app.capacity.empty":"No code yet","app.capacity.value":"Uses {used} of {total} bits, {percent}%","app.capacity.largest":"The largest code these settings allow would be about {percent}% full.","app.encoding.symbology":"Kind of symbol","app.encoding.version":"Version","app.encoding.modules":"Modules","app.encoding.modules-value":"Grid of {width} by {height}","app.encoding.ec":"Error correction","app.encoding.ec-l":"L, about 7%","app.encoding.ec-m":"M, about 15%","app.encoding.ec-q":"Q, about 25%","app.encoding.ec-h":"H, about 30%","app.encoding.mask":"Mask","app.encoding.segments":"Segments","app.encoding.segment":"Mode {mode}, {chars, plural, one {# character} other {# characters}}","app.encoding.mode-numeric":"Numeric","app.encoding.mode-alphanumeric":"Alphanumeric","app.encoding.mode-byte":"Bytes","app.encoding.mode-kanji":"Kanji","app.proof.label":"Proof","app.proof.sample":"Sample","app.proof.sample-note":"This is a sample. Your code appears here as you type.","app.proof.not-updated":"Not updated","app.proof.surround":"Surround","app.proof.surround-light":"Light","app.proof.surround-dark":"Dark","app.proof.true-size":"True size","app.proof.calibrate":"Calibrate","app.proof.calibrate-title":"Match a card","app.proof.calibrate-help":"Hold a bank card against the screen and move the slider until the outline is the same width. The setting lasts until you close the page.","app.proof.calibrate-scale":"Outline width","app.proof.calibrate-reset":"Reset","app.proof.calibrate-done":"Done","app.proof.alt-sample":"A sample code in the current design. It is not your code.","app.proof.alt-summary":"It holds {summary}.","app.proof.alt-stale":"This is the last code that worked, not the content as it stands.","app.proof.alt-check":"Scan check: {verdict}.","app.proof.slug-version":"Version {version}","app.proof.slug-level":"Level {level}","app.proof.slug-modules":"Modules {width} \xD7 {height}","app.proof.slug-mask":"Mask {mask}","app.proof.slug-width":"Width {size} mm","app.strip.label":"Simulated captures","app.strip.caption":"Each picture stands for a condition. The words beside it are the check's result.","app.strip.sharp":"Sharp","app.strip.far":"Far","app.strip.soft":"Soft focus","app.strip.angle":"Angle","app.strip.dim":"Dim","app.strip.glare":"Glare","app.strip.ink":"Ink spread","app.strip.pass":"Reads","app.strip.partial":"Reads in part","app.strip.fail":"Fails","app.strip.unknown":"Not checked","app.strip.running":"Checking","app.check.run":"Check it scans","app.check.cancel":"Stop","app.check.running":"Checking, {percent}%.","app.check.idle":"Not checked yet","app.check.idle-detail":"The check prints the code in simulated captures (far, out of focus, at an angle, in poor light) and reads each one the way a strict phone would.","app.check.stale":"The design has changed since this check.","app.check.quick":"This was a quick check after your change. Check it scans again for the full result before you print.","app.check.unavailable":"The scan check cannot run in this copy of the studio.","app.check.unavailable-detail":"The code is still made to the standard. Before you print many, scan a test print with the phones you expect people to use.","app.check.meta-unavailable":"Not available","app.check.verdict-pass":"Scans well","app.check.verdict-warn":"Scans, with cautions","app.check.verdict-fail":"Will not scan reliably","app.check.status-pass":"Passes","app.check.status-warn":"Caution","app.check.status-fail":"Fails","app.check.measured":"Measured {measured}, needs {threshold}","app.check.limits":"Scans from about {distance} cm when printed {size} mm wide.","app.check.limits-module":"Keep each module at least {size} mm across.","app.check.captures":"Every capture","app.check.fixes":"Suggested changes","app.check.fixed":"Change made. Undo puts it back.","app.axis.distance":"Distance","app.axis.focus":"Focus","app.axis.motion":"Movement","app.axis.noise":"Grain","app.axis.angle":"Angle","app.axis.light":"Light","app.axis.glare":"Glare","app.axis.ink":"Ink spread","app.axis.contrast":"Contrast","app.style.presets":"Presets","app.style.custom":"Your own","app.style.standard":"Standard","app.style.from-kit":"From your brand kit","app.style.shuffle":"Shuffle","app.style.shuffle-hint":"A new combination that still scans. Undo goes back.","app.modules.shape":"Module shape","app.eyes.ring":"Outer ring","app.eyes.centre":"Centre","app.eyes.pairs-note":"Only centres that phones still find inside this ring are offered.","app.colour.modules":"Modules","app.colour.eyes":"Corner squares","app.colour.background":"Background","app.colour.same":"As the modules","app.colour.transparent":"Transparent","app.colour.kind-solid":"Solid","app.colour.kind-linear":"Linear","app.colour.kind-radial":"Radial","app.colour.kind-pattern":"Pattern","app.colour.kind-short-gradient":"Gradient","app.colour.ink":"Colour","app.colour.hex":"Hex value","app.colour.hex-invalid":"Write a colour as six hex digits, such as #1a2b3c.","app.colour.pattern":"Pattern","app.colour.angle":"Angle","app.colour.radius":"Spread","app.colour.stop":"Stop {n}","app.colour.stop-position":"Stop {n} position","app.colour.add-stop":"Add a stop","app.colour.remove-stop":"Remove","app.colour.remove-stop-numbered":"Remove stop {n}","app.colour.space":"Spread over","app.colour.space-symbol":"The whole code","app.colour.space-module":"Each module","app.colour.contrast":"Contrast","app.colour.contrast-value":"Ratio {ratio} to 1","app.colour.contrast-good":"Strong. Phones find this easily.","app.colour.contrast-fair":"Enough for most phones. More is safer in print.","app.colour.contrast-poor":"Too low. Many phones will not find the code.","app.colour.contrast-inverted":"The modules are lighter than the background. Many phones cannot read a code that way round.","app.colour.contrast-transparent":"Measured against white, because the background is transparent. Check it against what it is printed on.","app.colour.meta":"Modules {fg} on {bg}","app.logo.choose":"Logo","app.logo.none":"No logo","app.logo.picture":"Your picture","app.logo.upload":"Choose a picture","app.logo.upload-hint":"PNG, JPEG or WebP. It is made into a PNG of at most 1024 pixels, kept inside the design.","app.logo.added":"Logo added.","app.logo.size":"Size","app.logo.padding":"Clear space","app.logo.padding-value":"Modules: {value}","app.logo.clear":"Modules under the logo","app.logo.clear-none":"Keep them","app.logo.clear-box":"Clear a box","app.logo.clear-shape":"Clear to its shape","app.logo.plate":"Plate behind it","app.logo.plate-none":"None","app.logo.plate-square":"Square","app.logo.plate-rounded":"Rounded","app.logo.plate-circle":"Circle","app.logo.level-hint":"A logo covers part of the code. Error correction level H leaves the most room for it.","app.logo.use-h":"Use level H","app.frame.choose":"Frame","app.frame.caption":"Caption","app.frame.caption-hint":"Up to {chars} characters.","app.frame.default-caption":"Scan me","app.frame.font":"Typeface","app.print.size":"Printed width, mm","app.print.size-hint":"Leave it empty to save at any size. A PDF then prints at the scan check's size.","app.print.basis":"Measured across","app.print.basis-artwork":"The whole artwork","app.print.basis-symbol":"The code alone","app.print.dpi":"Resolution, dpi","app.print.dpi-hint":"For a PNG drawn from the printed width. 300 suits most printers.","app.print.distance":"Furthest scanning distance, cm","app.print.distance-hint":"How far away people will be. The scan check holds the code to it.","app.print.not-set":"Any size","app.print.meta":"Width {size} mm","app.export.format":"Format","app.export.format-svg":"SVG","app.export.format-png":"PNG","app.export.format-pdf":"PDF","app.export.format-eps":"EPS","app.export.format-jpeg":"JPEG","app.export.format-webp":"WebP","app.export.hint-svg":"Sharp at any size. For the web and most design tools.","app.export.hint-png":"A picture with exact pixels. For documents, slides and messages.","app.export.hint-pdf":"For printing and for a print shop, at its printed width.","app.export.hint-eps":"For older print and design software.","app.export.hint-jpeg":"A smaller picture with no transparency.","app.export.hint-webp":"A smaller picture for the web. Not every browser can save it.","app.export.size":"Size","app.export.size-pixels":"Pixels","app.export.size-print":"Printed width","app.export.width-px":"Width in pixels","app.export.width-px-hint":"Leave it empty and every module lands on whole pixels, about 1000 across.","app.export.width-mm":"Width in millimetres","app.export.width-mm-hint":"Leave it empty to use the printed size.","app.export.dpi":"Resolution, dpi","app.export.automatic":"Automatic","app.export.quality":"Quality","app.export.colour-space":"Colour","app.export.colour-srgb":"RGB, for screens and most printers","app.export.colour-cmyk":"CMYK, for a print shop","app.export.bleed":"Bleed, mm","app.export.crop-marks":"Crop marks","app.export.download":"Download","app.export.download-format":"Download {format}","app.export.copy-image":"Copy image","app.export.copy-svg":"Copy SVG","app.export.print":"Print","app.export.print-alt":"The QR code at its printed width of {size} mm.","app.export.saved":"Saved {filename}.","app.export.copied-image":"Image copied.","app.export.copied-svg":"SVG copied.","app.dock.label":"Save the code","app.library.intro":"Saved designs and brand kits are kept in a file you save. Nothing is kept in this browser, and a saved design never holds what a code says, so the file is safe to share.","app.library.name":"Name","app.library.name-hint":"For the design or the brand kit you save next.","app.library.untitled":"Untitled","app.library.save-design":"Save this design","app.library.save-kit":"Save as brand kit","app.library.saved":"Design saved to the library. Save the library file to keep it.","app.library.kit-saved":"Brand kit saved, with this design's colours and logo. Save the library file to keep it.","app.library.designs":"Designs","app.library.kits":"Brand kits","app.library.empty":"Nothing saved yet.","app.library.unsaved":"The library has changes that are not in a file yet.","app.library.saved-at":"Saved {date}","app.library.use":"Use","app.library.use-named":"Use {name}","app.library.used":"Used the look of {name}. What the code says is unchanged, and Undo goes back.","app.library.kit-used":"Used the brand kit {name}: its colours where they still read, and its logo. Undo goes back.","app.library.in-use":"In use","app.library.remove":"Remove","app.library.remove-named":"Remove {name}","app.library.removed":"Removed {name}.","app.library.save-file":"Save library file","app.library.open-file":"Open library file","app.library.opened":"Library opened: designs {designs}, brand kits {kits}.","app.library.count":"Designs {designs}, kits {kits}","app.design.title":"This design on its own","app.design.intro":"A design file holds the look and none of the content, so it is safe to share.","app.design.save-file":"Save design file","app.design.open-file":"Open design file","app.design.applied":"Design opened.","app.scan.title":"Read a code","app.scan.intro":"Point a camera at a code, or open a picture of one. The picture is read in this page and goes nowhere.","app.scan.camera-start":"Start the camera","app.scan.camera-stop":"Stop the camera","app.scan.camera-requesting":"Asking for the camera.","app.scan.camera-live":"Camera on. Hold a code inside the frame.","app.scan.camera-read":"Read. The camera is off again.","app.scan.camera-unavailable":"This browser does not offer the camera to a file opened from this computer. Open a picture of the code instead, or drop one here.","app.scan.camera-fallback":"You can open a picture of the code instead.","app.scan.drop":"Drop a picture of a code here, paste one, or choose one","app.scan.choose":"Choose a picture","app.scan.paste-hint":"A screenshot pasted while Scan is open is read too.","app.scan.reading":"Reading the picture.","app.scan.results":"What it says","app.scan.clear":"Clear","app.scan.nothing-yet":"Nothing read yet. What a code holds appears here, exactly as it is written.","app.scan.found-one":"Found 1 code.","app.scan.found-many":"Found {count} codes.","app.scan.symbol":"Symbol: {symbology}, version {version}, level {level}","app.scan.part":"Part {index} of {total}","app.scan.type":"Kind of content","app.scan.destination":"Where it goes","app.scan.host-ascii":"Written for the browser as {host}.","app.scan.safety":"Before you open it","app.scan.safety-none":"Nothing here looks unusual.","app.scan.text":"Exactly what the code holds","app.scan.inspect-unavailable":"The full reading, with the kind of content and any warnings, cannot be shown in this copy of the studio. The text above is exactly what the code holds.","app.scan.remake":"Remake as a static code","app.scan.remade":"Made into a new code in Create. It holds the same content and never expires.","app.scan.copy-text":"Copy the text","app.scan.copied":"Text copied.","app.bulk.title":"Many codes from a spreadsheet","app.bulk.intro":"Each row of a CSV file becomes a code in the design from Create. The file is read in this page and goes nowhere.","app.bulk.source":"The spreadsheet","app.bulk.drop":"Drop a CSV file here, or choose one","app.bulk.choose":"Choose a CSV file","app.bulk.paste":"Or paste its text","app.bulk.paste-placeholder":"For example: name,url","app.bulk.encoding":"Text encoding","app.bulk.encoding-hint":"A file saved as UTF-8 is always read as UTF-8. If letters from a file look wrong, choose the encoding your spreadsheet saved it in.","app.bulk.encoding-auto":"Automatic (UTF-8, otherwise Windows-1252)","app.bulk.encoding-windows-1252":"Western European (Windows-1252)","app.bulk.encoding-shift-jis":"Japanese (Shift_JIS)","app.bulk.encoding-gb18030":"Simplified Chinese (GBK, GB18030)","app.bulk.encoding-big5":"Traditional Chinese (Big5)","app.bulk.encoding-euc-kr":"Korean (EUC-KR)","app.bulk.encoding-windows-1251":"Cyrillic (Windows-1251)","app.bulk.encoding-windows-1256":"Arabic (Windows-1256)","app.bulk.rows":"Rows {count}, columns {columns}","app.bulk.mapping":"Where each field comes from","app.bulk.type":"Kind of code","app.bulk.template-hint":"A template mixes text and columns: write a column name in curly brackets to put its value in.","app.bulk.no-column":"Leave empty","app.bulk.from-column":"A column","app.bulk.column-n":"Column {n}","app.bulk.from-template":"A template","app.bulk.template-for":"Template for {field}","app.bulk.filename":"File names","app.bulk.filename-hint":"A template, as above. Characters a file name cannot hold are replaced, and repeats are numbered.","app.bulk.preview":"Preview","app.bulk.empty":"Add a spreadsheet to see its rows here.","app.bulk.plan":"Ready {ready}, to be skipped {skipped}.","app.bulk.preview-more":"And {count, plural, one {# more row} other {# more rows}}.","app.bulk.row":"Row {row}","app.bulk.row-ok":"Ready","app.bulk.row-skipped":"Skipped","app.bulk.output":"Output","app.bulk.output-zip":"A ZIP of files","app.bulk.output-sheet":"Label sheets as a PDF","app.bulk.format":"Format of each file","app.bulk.sheet":"Label sheet","app.bulk.sheet-hint":"Print a test page on plain paper and hold it against the labels first.","app.bulk.design-note":"Every code uses the design from Create.","app.bulk.make":"Make {count, plural, one {# code} other {# codes}}","app.bulk.making":"Making codes, {done} of {total}.","app.bulk.done":"Made {written, plural, one {# code} other {# codes}}. Rows skipped: {skipped}.","app.bulk.download-again":"Download again","app.drop.title":"Drop to open","app.drop.text":"A design file, a library file, a picture of a code, or a CSV file.","app.drop.unknown":"That is not a file this studio opens. It takes design files, library files, pictures of codes and CSV files.","app.about.title":"About this file","app.about.facts":"What this file does","app.about.check":"To check, turn your network off and use it. Every part still works.","app.about.version":"Version","app.about.source":"Source code","app.about.licence":"Font licence","app.about.licence-intro":"Frame captions are drawn with IBM Plex Sans, which this file carries under the SIL Open Font License. Its terms follow."});var m2=Object.freeze({"batch.malformed-csv.unterminated-quote":"This file has a quoted cell that never ends, so it cannot be read. Check row {row}, column {column}.","batch.malformed-csv.stray-quote":"Row {row}, column {column} has a quote mark in the middle of a cell. Save the file again from your spreadsheet, or put that cell in quotes.","batch.malformed-csv.text-after-quote":"Row {row}, column {column} has text straight after the end of a quoted cell. Save the file again from your spreadsheet.","batch.malformed-csv.empty":"This file has no rows in it.","batch.encoding-unavailable":"This browser cannot read text in the encoding chosen for this file. Choose another, or save the file from your spreadsheet as CSV UTF-8.","batch.too-many-rows":"This file has more than {max, plural, one {# row} other {# rows}}. Split it into smaller files and make each batch on its own.","batch.unknown-column":"This refers to a column the file does not have. Choose one of its columns.","batch.csv.short-row":"Row {row} has {cells, plural, one {# cell} other {# cells}} where the header has {expected}. The missing ones were left empty.","batch.csv.long-row":"Row {row} has {cells} cells where the header has {expected}. The extra ones have no column and were left out.","batch.csv.duplicate-header":"Column {column} has the same name as column {first}. Anything that refers to that name uses column {first}.","batch.csv.fallback-encoding":"This file is not in UTF-8, so it was read as {encoding, select, windows-1252 {Western European (Windows-1252)} shift_jis {Japanese (Shift_JIS)} gb18030 {Simplified Chinese (GBK, GB18030)} big5 {Traditional Chinese (Big5)} euc-kr {Korean (EUC-KR)} windows-1251 {Cyrillic (Windows-1251)} windows-1256 {Arabic (Windows-1256)} other {{encoding}}}. If any letters look wrong, choose the encoding it was saved in, or save it from your spreadsheet as CSV UTF-8.","batch.csv.utf-16":"This file is in UTF-16, and was read as that.","batch.csv.odd-length":"This file ends partway through a character. The last byte was left out.","batch.issue.empty-row":"This row is empty, so no code was made for it.","batch.issue.number-format":"Write this number with a full stop for the decimal point and no thousands separators, such as 1250.50.","batch.issue.filename-fallback":"The file name for this row came out empty, so the row number was used instead.","batch.issue.filename-cleaned":"Characters a file name cannot hold were taken out of this one.","batch.issue.filename-numbered":"Another row has the same file name, so this one has {number} on the end.","batch.issue.eps-fallback":"EPS cannot carry this design's transparency, so this code was saved as a PDF instead.","batch.issue.failed":"This code could not be made.","batch.issue.check-failed":"This code did not pass the scan check. Phones may not read it reliably at this size.","batch.issue.check-warned":"This code passed the scan check, with something to look at.","batch.issue.check-unavailable":"The scan check could not be run for this code."});var f2=Object.freeze({"decode.not-found":"No code was found in this picture.","decode.not-found.geometry":"Part of a code may be here, but no whole code could be found. Make sure all of it is in the picture, with some space around it.","decode.unreadable":"A code was found here, but it could not be read.","decode.unreadable.format":"A code was found here, but the part that says how it was made could not be read.","decode.unreadable.version":"A code was found here, but its size could not be worked out. Try a sharper or straighter picture.","decode.unreadable.reed-solomon":"A code was found here, but too much of it is damaged or unclear to read, even with its error correction.","decode.unreadable.segments":"A code was found here, but it was not made correctly, so what it holds cannot be read.","decode.unreadable.margin":"This code reads here, but without enough to spare for every phone. The picture may be too coarse, taken at too steep an angle, smeared by a moving camera, or too noisy or washed out in places. The corner squares may be dotted, or too round or too cut away at the corners for some phones to follow. Or something else in the picture may look like them.","decode.unsupported":"This code uses a feature this tool cannot read.","decode.unsupported.eci":"This code uses a character set this tool cannot read.","decode.unsupported.kanji":"This code holds Japanese text, and this browser cannot read the character set it uses."});var p2=Object.freeze({"design.module.square":"Square","design.module.rounded":"Rounded","design.module.dot":"Dot","design.module.diamond":"Diamond","design.module.squircle":"Squircle","design.module.hex":"Hexagon","design.module.bars-horizontal":"Horizontal bars","design.module.bars-vertical":"Vertical bars","design.module.fluid":"Fluid","design.module.classy":"Classy","design.module.cross":"Cross","design.module.tiny-square":"Small square","design.module.mosaic":"Mosaic","design.module.star":"Star","design.region.square":"Square","design.region.rounded":"Rounded","design.region.extra-rounded":"Extra rounded","design.region.circle":"Circle","design.region.squircle":"Squircle","design.region.cushion":"Cushion","design.region.dot-ring":"Ring of dots","design.region.octagon":"Octagon","design.region.scooped":"Scooped corners","design.region.square-centre":"Square","design.region.rounded-centre":"Rounded","design.region.circle-centre":"Circle","design.region.squircle-centre":"Squircle","design.region.leaf-centre":"Leaf","design.region.octagon-centre":"Octagon","design.region.scooped-centre":"Scooped corners","design.region.flower-centre":"Flower","design.fill.palette-scatter":"Scattered colours","design.fill.two-tone-diagonal":"Two colours, split","design.frame.none":"No frame","design.frame.banner-bottom":"Banner below","design.frame.banner-top":"Banner above","design.frame.rounded-card":"Rounded card","design.frame.speech-bubble":"Speech bubble","design.frame.ticket":"Ticket","design.frame.polaroid":"Instant photo","design.frame.badge-circle":"Round badge","design.frame.phone":"Phone","design.frame.hang-tag":"Hang tag","design.frame.corner-brackets":"Corner brackets","design.frame.stamp":"Stamp","design.icon.link":"Link","design.icon.wifi":"Wi-Fi","design.icon.mail":"Email","design.icon.phone":"Phone","design.icon.chat":"Chat","design.icon.location-pin":"Location pin","design.icon.calendar":"Calendar","design.icon.contact-card":"Contact card","design.icon.cart":"Shopping cart","design.icon.food":"Knife and fork","design.icon.star":"Star","design.icon.heart":"Heart","design.icon.play":"Play","design.icon.music":"Music","design.icon.shop":"Shop","design.icon.info":"Information","design.preset.classic-black":"Classic black","design.preset.classic-navy":"Classic navy","design.preset.classic-soft-corners":"Soft corners","design.preset.classic-ink-blue":"Ink blue","design.preset.classic-octagon":"Octagon eyes","design.preset.rounded-graphite":"Rounded graphite","design.preset.rounded-ocean":"Rounded ocean","design.preset.rounded-forest":"Forest squircles","design.preset.rounded-plum":"Rounded plum","design.preset.rounded-terracotta":"Terracotta leaves","design.preset.rounded-link":"Rounded with link icon","design.preset.midnight-dots":"Midnight dots","design.preset.charcoal-dots":"Charcoal dots","design.preset.teal-dots":"Teal dots","design.preset.berry-dots":"Berry dots","design.preset.confetti-dots":"Confetti dots","design.preset.hex-pro-blue":"Hex blue","design.preset.hex-graphite":"Hex graphite","design.preset.hex-honey":"Honeycomb","design.preset.hex-night":"Hex night","design.preset.fluid-ink":"Fluid ink","design.preset.fluid-lagoon":"Fluid lagoon","design.preset.fluid-aubergine":"Fluid aubergine","design.preset.classy-slate":"Classy slate","design.preset.cobalt-bars":"Cobalt bars","design.preset.poster-yellow":"Yellow poster","design.preset.bold-tomato":"Tomato card","design.preset.bold-crosses":"Crosses","design.preset.slate-bars":"Slate bars","design.preset.red-badge":"Red badge","design.preset.chat-bubble":"Speech bubble","design.preset.minimal-tiny":"Small squares","design.preset.minimal-diamond":"Diamonds","design.preset.minimal-brackets":"Corner brackets","design.preset.minimal-stars":"Stars","design.preset.sunset-gradient":"Sunset gradient","design.preset.deep-sea-gradient":"Deep sea gradient","design.preset.two-tone":"Two tone","design.preset.violet-glow":"Violet glow","design.preset.mosaic-tiles":"Mosaic tiles","design.preset.teal-and-rust":"Teal and rust","design.preset.shop-tag":"Shop tag","design.preset.print-black":"Print black","design.preset.print-navy":"Print navy","design.preset.print-ticket":"Print ticket","design.preset.print-stamp":"Print stamp","design.param.radius":"Corner radius","design.param.size":"Size","design.param.orientation":"Orientation","design.param.thickness":"Thickness","design.param.scale":"Scale","design.param.jitter":"Variation","design.param.inner":"Inner depth","design.param.cut":"Corner cut","design.param.bite":"Corner scoop","design.param.petal":"Petal size","design.param.colour-1":"First colour","design.param.colour-2":"Second colour","design.param.colour-3":"Third colour","design.param.colour-4":"Fourth colour","design.param.count":"Colours used","design.param.angle":"Angle","design.param.split":"Split position","design.param.border":"Border","design.param.band":"Band depth","design.param.padding":"Padding","design.param.caption":"Caption space","design.param.tail":"Tail size","design.param.stub":"Stub depth","design.param.notch":"Notch size","design.param.bezel":"Bezel","design.param.gap":"Gap","design.param.arm":"Arm length","design.option.pointy":"Point at the top","design.option.flat":"Flat at the top","design.issue.not-an-object":"This should be a group of settings.","design.issue.not-a-list":"This should be a list.","design.issue.not-a-number":"Enter a number.","design.issue.not-an-integer":"Enter a whole number.","design.issue.not-a-boolean":"This should be on or off.","design.issue.not-text":"This should be text.","design.issue.out-of-range":"This is outside the range from {min} to {max}.","design.issue.invalid-option":"Choose one of the options.","design.issue.invalid-colour":"Colours are written as a # and three, four, six or eight hex digits.","design.issue.cmyk":"A print colour is four values from 0 to 1, for cyan, magenta, yellow and black.","design.issue.required":"This is required.","design.issue.unknown-key":"This setting is not part of a design, so it was left out.","design.issue.filled-default":"This was missing, so the usual setting was used.","design.issue.angle-normalised":"This angle was brought round to between 0 and 360 degrees.","design.issue.schema":"This is not a design file.","design.issue.unsupported-version":"This design was made by a different version of the studio. This one reads version {supported}.","design.issue.symbology":"Choose one of the kinds of code this studio makes.","design.issue.version-name":"This is not a size this kind of code comes in.","design.issue.version-range":"The largest size allowed is smaller than the smallest.","design.issue.mask":"Choose a mask from 0 to {max}, or let one be chosen.","design.issue.stop-count":"A gradient has from {min} to {max} colour stops.","design.issue.stop-order":"Each colour stop must come at or after the one before it.","design.issue.unknown-entry":"This refers to a style this version of the studio does not include.","design.issue.param-ignored":"This setting does not suit the style it is on, so the usual value was used.","design.issue.region-part":"This shape is for the other part of the position marks, the ring or the centre.","design.issue.region-kind":"This shape cannot draw one of this code's position marks, so that mark is drawn with squares.","design.issue.region-corners":"Readers find this kind of code by the corners of its position marks, so they are drawn square and only the centre of the main one takes the style.","design.issue.region-pair":"Strict readers may not find position marks with this ring and this centre. Choose a different centre or ring.","design.issue.ring-not-traceable":"Many phone readers cannot find position marks with a ring of dots, so it cannot be used for the corners of a QR code. Choose another ring.","design.issue.ring-round":"Some phone readers struggle to find round corners when the code is seen at an angle. A squarer ring scans more reliably.","design.issue.quiet-zone":"The margin round the code was not a usable width, so the usual width was used.","design.issue.quiet-zone-small":"The margin round the code is narrower than the {min} modules this kind of code needs, and some readers will miss it.","design.issue.asset-missing":"This logo refers to an image the design does not hold.","design.issue.asset-unavailable":"The logo image could not be loaded, so the code is shown without it.","design.issue.asset-id":"Image names use lowercase letters, digits and hyphens.","design.issue.asset-encoding":"This image is damaged.","design.issue.asset-not-png":"Images in a design are PNG files.","design.issue.asset-too-large":"This image is larger than the {max} bytes a design can hold.","design.issue.asset-mismatch":"This image is not the size the design says it is.","design.issue.too-many-assets":"A design holds at most {max} images, and this one has {count}.","design.issue.unused-asset":"Nothing in the design uses this image, so it was left out.","design.issue.logo-paint-ignored":"A picture logo keeps its own colours, so this colour was left out.","design.issue.logo-too-small":"The logo is too small to draw at this size of code.","design.issue.logo-shrunk":"The logo was made smaller to keep it off the patterns a reader uses to find and line up the code.","design.issue.frame-unsupported":"Readers lose rectangular Micro QR codes inside a frame, so this code is shown without its frame.","design.issue.caption-unsupported":"This frame has no space for a caption, so the caption was left out.","design.issue.caption-missing-glyphs":"This font cannot draw {count, plural, one {one of the characters in the caption, so it was} other {# of the characters in the caption, so they were}} left out. Choose another font, or change the text.","design.issue.caption-overflow":"The caption does not fit this frame even at its smallest size, so it is cut off. Shorten it, or choose a frame with more room.","design.issue.font-unavailable":"This font is not available here, so the caption cannot be drawn.","design.issue.too-long":"This is {length} characters and the limit is {max}.","design.issue.too-many-lines":"This has {lines} lines and the frame holds {max}.","design.issue.control-character":"This contains a control character at position {position}, which would not be shown.","design.issue.font-id":"Font names use lowercase letters, digits and hyphens.","design.issue.design-locked":"This content has a fixed design, so the design was set to it.","design.issue.colours-constrained":"This content is printed in black on white, so the colours were changed.","design.issue.symbology-constrained":"This content needs a different kind of code, so it was changed.","design.issue.ec-level-constrained":"This content needs error correction level {level}, so that level is used.","design.issue.boost-constrained":"Raising the error correction is switched off, because this content allows only certain levels.","design.issue.version-constrained":"This content allows a code no larger than version {max}.","design.issue.eci-constrained":"This content names its own character set, so no character set marker is added.","design.issue.size-constrained":"This content is printed with the code itself {size} mm wide, not counting its margin, so that size is used.","design.issue.overlay-unsupported":"The Swiss cross this content needs is printed over QR codes only, so it was left out.","design.issue.link-assets-dropped":"Images are too large to put in a link, so the logo picture was left out of it."});var h2=Object.freeze({"design.issue.svg-logo-later":"SVG logos are not supported yet. Save the logo as a PNG and choose that instead.","dom.issue.logo-downscaled":"The picture was made smaller, to {width} by {height} pixels, so the design can hold it."});var y2=Object.freeze({"encode.too-much-data":"That is too much to fit in one code at these settings. Shorten it, lower the error correction, or allow a larger code.","encode.unsupported-feature.eci":"This kind of code cannot say which character set it uses. Choose a QR code, or turn that option off.","encode.unsupported-feature.fnc1":"This kind of code cannot carry GS1 data. Choose a QR code.","encode.unsupported-feature.structured-append":"This kind of code cannot be split across several codes. Choose a QR code.","encode.unsupported-content.lone-surrogate":"This text has a broken character in it and cannot be put into a code as it is.","encode.unsupported-content.mode":"This code size cannot hold some of these characters. Choose a larger kind of code."});var g2=Object.freeze({"inspect.label.symbology":"Kind of code","inspect.label.version":"Size","inspect.label.error-correction":"Error correction","inspect.label.mask":"Mask","inspect.label.text-source":"Character set","inspect.label.segments":"Encoding","inspect.label.structured-append":"Part of a set","inspect.label.gs1":"GS1 data","inspect.label.quality":"How well it read","inspect.label.errors-corrected":"Errors repaired","inspect.label.format-errors":"Format bits repaired","inspect.label.mirrored":"Read as a mirror image","inspect.label.inverted":"Read light on dark","inspect.label.confidence":"Least certain square","inspect.label.content":"What it holds","inspect.label.destination":"Where it goes","inspect.label.unicode-host":"Address as written","inspect.text-source.utf-8":"Unicode","inspect.text-source.latin1-fallback":"Western European, guessed","inspect.text-source.shift-jis":"Japanese","inspect.text-source.eci":"Declared by the code","inspect.set.complete":"{total, plural, one {The one part of this set was found and read.} other {All # parts were found and put together.}}","inspect.set.incomplete":"This is one part of a set of {total}. Scan the other parts too to see the whole message.","inspect.set.parity-mismatch":"These parts do not belong to the same message, so they were not put together.","inspect.not-opened":"Nothing has been opened. This is where the code goes, so you can decide whether to.","inspect.issue.unreadable-as-type":"This looked like a particular kind of content but could not be read as one, so it is shown as plain text.","inspect.gs1.00":"Shipping container code","inspect.gs1.01":"Product number","inspect.gs1.02":"Product number of contents","inspect.gs1.10":"Batch or lot","inspect.gs1.11":"Production date","inspect.gs1.12":"Due date","inspect.gs1.13":"Packaging date","inspect.gs1.15":"Best before","inspect.gs1.16":"Sell by","inspect.gs1.17":"Use by or expiry","inspect.gs1.20":"Variant","inspect.gs1.21":"Serial number","inspect.gs1.22":"Consumer product variant","inspect.gs1.240":"Additional product identification","inspect.gs1.241":"Customer part number","inspect.gs1.250":"Secondary serial number","inspect.gs1.251":"Reference to source entity","inspect.gs1.253":"Document type identifier","inspect.gs1.254":"Location number extension","inspect.gs1.30":"Variable count","inspect.gs1.37":"Count of items contained","inspect.gs1.400":"Order number","inspect.gs1.401":"Consignment number","inspect.gs1.402":"Shipment number","inspect.gs1.403":"Routing code","inspect.gs1.410":"Ship to location","inspect.gs1.411":"Bill to location","inspect.gs1.412":"Purchased from","inspect.gs1.413":"Ship for location","inspect.gs1.414":"Physical location","inspect.gs1.415":"Invoicing party","inspect.gs1.416":"Production or service location","inspect.gs1.420":"Ship to postcode","inspect.gs1.421":"Ship to postcode with country","inspect.gs1.422":"Country of origin","inspect.gs1.7003":"Expiry date and time","inspect.gs1.8003":"Returnable asset identifier","inspect.gs1.8004":"Individual asset identifier","inspect.gs1.8020":"Payment slip reference","inspect.gs1.90":"Agreed between trading partners","inspect.gs1.measure":"Measurement","inspect.gs1.amount":"Amount or price","inspect.gs1.unknown":"Other GS1 data"});var b2=Object.freeze({"dom.library.issue.too-large":"This file is too large to be a library. A library file holds at most {max} bytes.","dom.library.issue.too-deep":"This file nests too deeply to be a library, so it was not opened.","dom.library.issue.not-json":"This file could not be read as a library. Choose a .qrlibrary.json file saved from the studio.","dom.library.issue.not-a-library":"This is not a library file. Choose a .qrlibrary.json file saved from the studio.","dom.library.issue.version":"This library was saved by a different version of the studio and cannot be opened here.","dom.library.issue.unknown-key":"This library file has a part the studio does not know, so it was not opened.","dom.library.issue.too-many":"This library file holds {count} entries of one kind, and a library holds at most {max}.","dom.library.issue.unreadable":"This file could not be read. Choose it again.","dom.library.issue.content":"A saved item held the content of a code, which a library never keeps, so it was left out.","dom.library.issue.corrupt":"A saved item is damaged and was left out.","dom.library.error.blocked":"The library is open in another tab. Close that tab and the library will be deleted.","dom.library.error.missing":"That saved item is no longer in the library.","dom.library.error.file-full":"This library holds as much as one file can. Remove something, or save it and start another.","dom.library.error.kit":"This brand kit has a colour, logo or preset the studio cannot use."});var x2=Object.freeze({"symbology.micro.label":"Micro QR","symbology.micro.not-phone-readable":"Most phone cameras cannot read Micro QR codes. Use one only where you know the scanner that will read it supports Micro QR, and test it with that scanner before printing.","symbology.micro.detection-only":"The smallest size, M1, can tell when it has been damaged but cannot repair any of the damage."});var w2=Object.freeze({"own-link.issue.from":"Enter the full address on your own site that the code will hold, starting with https://.","own-link.issue.from-query":"The address the code holds cannot include a query string or a fragment, because redirect rules match the path alone.","own-link.issue.from-path":"Use only letters, digits, hyphens, dots, underscores and slashes in the path, so every platform matches it the same way.","own-link.issue.to":"Enter the full destination address, starting with https://.","own-link.issue.to-userinfo":"The destination has a user name or password in it. Browsers warn about these links, so leave it out.","own-link.issue.to-insecure":"The destination does not use a secure connection. Use https:// if the site supports it.","own-link.issue.status":"Choose 302 or 307 for a destination you may change, or 301 or 308 for one you will not.","own-link.issue.permanent":"Browsers remember a permanent redirect, so if you change the destination later, people who scanned before may still go to the old one.","own-link.issue.loop":"The destination is the same address as the code, so it would redirect to itself.","own-link.issue.target":"Choose from the listed hosting setups.","own-link.issue.url":"Enter the full address, starting with https://.","own-link.issue.utm-required":"Fill in the source, medium and campaign. Analytics groups visits by all three.","own-link.issue.utm-value":"This contains a character that cannot go in a link.","own-link.note.cloudflare-bulk":"Upload this to a Bulk Redirect List in the Cloudflare dashboard, then turn the list on with a Bulk Redirect Rule.","own-link.note.cloudflare-rule":"Create a Redirect Rule with this expression and target in the Cloudflare dashboard, or send it to the Rulesets API.","own-link.note.netlify":"Put this line in the _redirects file in the folder your site is published from.","own-link.note.netlify-status":"Put this line in the _redirects file in the folder your site is published from. Netlify does not support 307 or 308, so the nearest status it does support is used.","own-link.note.vercel":"Add this to the redirects in vercel.json at the root of your project, keeping any that are already there.","own-link.note.apache":"Add this line to the .htaccess file in your site folder. The server has to allow FileInfo overrides.","own-link.note.nginx":"Add this block inside the server block for your site, then reload nginx.","own-link.note.html":"Upload this page to your site at the path the code holds. Use it only where the host has no redirect settings, because search engines treat it as a page rather than a redirect."});var k2=Object.freeze({"payload.issue.wrong-kind":"This value is the wrong kind of thing for this field.","payload.issue.required":"This is required.","payload.issue.too-long":"This is {length} characters and the limit is {max}.","payload.issue.too-many":"There are {count} of these and the limit is {max}.","payload.issue.line-break":"This has to fit on one line.","payload.issue.control-character":"This contains a control character at position {position}, which a reader would not show.","payload.issue.unpaired-surrogate":"This contains a broken character at position {position}.","payload.issue.not-a-number":"Enter a number.","payload.issue.not-an-integer":"Enter a whole number.","payload.issue.below-min":"This is below the minimum of {min}.","payload.issue.above-max":"This is above the maximum of {max}.","payload.issue.invalid-option":"Choose one of the options.","payload.issue.invalid-url":"This is not a complete web address. It should start with https://.","payload.issue.url-scheme":"Only web addresses starting with https:// or http:// work here.","payload.issue.invalid-email":"This is not an email address.","payload.issue.invalid-tel":"Enter a phone number using digits, with + and the country code if it is international.","payload.issue.invalid-date":"Enter a real date.","payload.issue.invalid-datetime":"Enter a real date and time.","payload.issue.invalid-iban":"This is not an IBAN. It starts with two letters and two digits.","payload.issue.iban-country":"This IBAN starts with a country code that has no IBANs.","payload.issue.iban-length":"This IBAN has {length} characters, and IBANs from this country have {expected}.","payload.issue.iban-checksum":"This IBAN fails its check digits. A character is probably mistyped.","payload.issue.invalid-bic":"This is not a BIC. It is 8 or 11 letters and digits.","payload.issue.amount-decimals":"Use at most {max} decimal places.","payload.issue.invalid-currency":"Use a three-letter currency code.","payload.issue.invalid-country":"Use a two-letter country code.","payload.issue.invalid-latitude":"Latitude is between -90 and 90.","payload.issue.invalid-longitude":"Longitude is between -180 and 180.","payload.issue.creditor-reference":"This creditor reference fails its check digits. It starts with RF and two digits.","payload.safety.scheme.dangerous":"This code runs a script or opens something on the device ({scheme}) instead of going to a website. Do not open it.","payload.safety.scheme.unusual":"This link opens an app rather than a web page ({scheme}). Check that is what you expected.","payload.safety.host.ip-literal":"This link goes to a numeric address, {host}, rather than to a named website.","payload.safety.host.mixed-script":"The address {host} mixes letters from different alphabets, which is how look-alike addresses are made.","payload.safety.host.punycode":"The address {host} is shown in its own letters as {unicodeHost}. Check it is the site you expect.","payload.safety.host.lookalike":"The address {host} is written in letters that look like ordinary ones but come from another alphabet.","payload.safety.url.userinfo":"This link is written to look like another address. It goes to {host}.","payload.safety.host.shortener":"This link goes through a redirect service, {host}, and whoever runs it decides where it ends up.","payload.safety.host.dynamic-qr":"This code goes through a QR code redirect service, {host}, and whoever runs it decides where it ends up.","payload.safety.url.tracking-params":"This link carries tracking parameters ({count}) that record where you came from. The page is the same without them.","payload.safety.url.insecure":"This link does not use a secure connection, so what you see or send could be read or changed on the way.","payload.safety.url.very-long":"This link is {length} characters long, so the part you can see may not be the part that matters.","payload.safety.payload.open-wifi":"This network has no password, so anyone nearby can join it and may see what you send over it.","payload.safety.payload.payment":"This code starts a payment. Check who is being paid and how much before you confirm.","payload.safety.payload.service-code":"This code dials a service code with * or #, which can change phone settings such as call forwarding. Do not call it.","payload.safety.payload.sends-message":"This code prepares a message. Nothing is sent until you choose to send it.","payload.text.label":"Text","payload.text.description":"Any text, shown as it is.","payload.text.action":"Shows some text.","payload.text.field.text":"Text","payload.url.label":"Web link","payload.url.description":"A web address that opens in the browser.","payload.url.action":"Opens a web page.","payload.url.field.url":"Web address","payload.url.hint.url":"The full address, starting with https://.","payload.url.field.utm-source":"Campaign source","payload.url.field.utm-medium":"Campaign medium","payload.url.field.utm-campaign":"Campaign name","payload.url.field.utm-term":"Campaign term","payload.url.field.utm-content":"Campaign content","payload.url.issue.utm-incomplete":"Analytics groups visits by source, medium and campaign together, so fill in all three.","payload.email.label":"Email","payload.email.description":"An email with the address, subject and message filled in.","payload.email.action":"Opens an email ready to send.","payload.email.field.to":"To","payload.email.field.cc":"Cc","payload.email.field.bcc":"Bcc","payload.email.field.subject":"Subject","payload.email.field.body":"Message","payload.email.issue.no-recipient":"Add at least one address to send to.","payload.phone.label":"Phone call","payload.phone.description":"A phone number to call.","payload.phone.action":"Offers to call a phone number.","payload.phone.field.number":"Phone number","payload.phone.hint.number":"Include + and the country code so it works from anywhere.","payload.sms.label":"Text message","payload.sms.description":"A text message with the number and message filled in.","payload.sms.action":"Opens a text message ready to send.","payload.sms.field.number":"Phone number","payload.sms.hint.number":"Include + and the country code so it works from anywhere.","payload.sms.field.message":"Message","payload.whatsapp.label":"WhatsApp chat","payload.whatsapp.description":"A WhatsApp chat with a number, with a message typed in if you like.","payload.whatsapp.action":"Opens a WhatsApp chat.","payload.whatsapp.field.number":"WhatsApp number","payload.whatsapp.hint.number":"The full international number, starting with + and the country code.","payload.whatsapp.field.message":"Message","payload.whatsapp.issue.international":"Start the number with + and the country code. WhatsApp links only work with the full number.","payload.whatsapp.compat.app":"Opens in WhatsApp if it is installed, otherwise on the WhatsApp website.","payload.telegram.label":"Telegram chat","payload.telegram.description":"A Telegram chat with a username or a phone number.","payload.telegram.action":"Opens a Telegram chat.","payload.telegram.field.target":"Chat with","payload.telegram.option.target.username":"A username","payload.telegram.option.target.phone":"A phone number","payload.telegram.field.username":"Username","payload.telegram.hint.username":"Without the @.","payload.telegram.field.phone":"Phone number","payload.telegram.hint.phone":"The full international number, starting with + and the country code.","payload.telegram.field.message":"Message","payload.telegram.issue.international":"Start the number with + and the country code.","payload.telegram.issue.username":"A Telegram username is 5 to 32 letters, digits and underscores.","payload.telegram.compat.app":"Opens in Telegram if it is installed, otherwise on the Telegram website.","payload.signal.label":"Signal chat","payload.signal.description":"A Signal chat with a phone number.","payload.signal.action":"Opens a Signal chat.","payload.signal.field.number":"Signal number","payload.signal.hint.number":"The full international number, starting with + and the country code.","payload.signal.issue.international":"Start the number with + and the country code.","payload.signal.compat.app":"Needs the Signal app to open the chat.","payload.facetime.label":"FaceTime call","payload.facetime.description":"A FaceTime call to a phone number or an email address.","payload.facetime.action":"Offers to start a FaceTime call.","payload.facetime.field.contact":"Phone number or email","payload.facetime.hint.contact":"The number or email address the person uses for FaceTime.","payload.facetime.field.audio-only":"Audio only","payload.facetime.issue.contact":"Enter a phone number or an email address.","payload.facetime.compat.apple-only":"Only iPhone, iPad and Mac open FaceTime calls.","payload.wifi.label":"Wi-Fi network","payload.wifi.description":"The name and password of a Wi-Fi network, so a phone can join without typing them.","payload.wifi.action":"Joins a Wi-Fi network.","payload.wifi.field.ssid":"Network name","payload.wifi.hint.ssid":"Exactly as it appears in the list of networks, including capitals.","payload.wifi.field.security":"Security","payload.wifi.hint.security":"Most home and office networks use WPA. Choose WPA3 only if the network accepts nothing else.","payload.wifi.option.security.wpa":"WPA2 or WPA3","payload.wifi.option.security.sae":"WPA3 only","payload.wifi.option.security.wep":"WEP (old)","payload.wifi.option.security.nopass":"No password","payload.wifi.option.security.wpa2-eap":"Enterprise (WPA2-EAP)","payload.wifi.field.password":"Password","payload.wifi.field.hidden":"Hidden network","payload.wifi.hint.hidden":"Tick this if the network does not appear in the list of networks.","payload.wifi.field.eap-method":"EAP method","payload.wifi.option.eap-method.peap":"PEAP","payload.wifi.option.eap-method.tls":"TLS","payload.wifi.option.eap-method.ttls":"TTLS","payload.wifi.option.eap-method.pwd":"PWD","payload.wifi.option.eap-method.sim":"SIM","payload.wifi.option.eap-method.aka":"AKA","payload.wifi.option.eap-method.aka-prime":"AKA'","payload.wifi.field.phase2":"Phase 2 method","payload.wifi.option.phase2.pap":"PAP","payload.wifi.option.phase2.mschap":"MSCHAP","payload.wifi.option.phase2.mschapv2":"MSCHAPv2","payload.wifi.option.phase2.gtc":"GTC","payload.wifi.option.phase2.sim":"SIM","payload.wifi.option.phase2.aka":"AKA","payload.wifi.option.phase2.aka-prime":"AKA'","payload.wifi.field.identity":"Identity","payload.wifi.field.anonymous-identity":"Anonymous identity","payload.wifi.issue.ssid-too-long":"This network name is {length} bytes and Wi-Fi allows {max}.","payload.wifi.issue.password-required":"Enter the password, or choose No password.","payload.wifi.issue.wep-key":"A WEP key is 5 or 13 characters, or 10 or 26 hexadecimal digits.","payload.wifi.issue.wpa-ascii":"A WPA password uses only the letters, digits and symbols on an English keyboard.","payload.wifi.issue.wpa-length":"This password is {length, plural, one {# character} other {# characters}}. A WPA password is {min} to {max}.","payload.wifi.issue.eap-ignored":"The enterprise settings are only used when Security is Enterprise.","payload.wifi.issue.hex-ssid":"Some Android apps read a network name made only of the digits 0 to 9 and the letters A to F as raw bytes, and will not find this network.","payload.wifi.compat.enterprise":"The camera built into Android treats an enterprise network as one with a password and may not join it. Apps based on ZXing read the enterprise settings.","payload.wifi.issue.password-ignored":"A network with no password ignores the password.","payload.vcard.label":"Contact card","payload.vcard.description":"A contact with name, numbers, email and address, saved to the address book in one step.","payload.vcard.action":"Offers to save a contact.","payload.vcard.field.prefix":"Title before the name","payload.vcard.field.given-name":"First name","payload.vcard.field.additional-names":"Middle names","payload.vcard.field.family-name":"Last name","payload.vcard.field.suffix":"Title after the name","payload.vcard.field.formatted-name":"Name as shown","payload.vcard.hint.formatted-name":"Leave this empty to use the name parts above.","payload.vcard.field.organisation":"Organisation","payload.vcard.field.department":"Department","payload.vcard.field.title":"Job title","payload.vcard.field.mobile":"Mobile","payload.vcard.field.work-phone":"Work phone","payload.vcard.field.home-phone":"Home phone","payload.vcard.field.fax":"Fax","payload.vcard.field.other-phone":"Other phone","payload.vcard.field.email":"Email","payload.vcard.field.website":"Website","payload.vcard.field.street":"Street address","payload.vcard.field.locality":"Suburb or city","payload.vcard.field.region":"State or region","payload.vcard.field.postcode":"Postcode","payload.vcard.field.country":"Country","payload.vcard.field.address-type":"Address type","payload.vcard.option.address-type.work":"Work","payload.vcard.option.address-type.home":"Home","payload.vcard.field.note":"Note","payload.vcard.field.birthday":"Birthday","payload.vcard.issue.no-name":"Add a name or an organisation.","payload.mecard.label":"Contact card (compact)","payload.mecard.description":"A shorter contact card that makes a smaller code, with fewer details than a full one.","payload.mecard.action":"Offers to save a contact.","payload.mecard.field.family-name":"Last name","payload.mecard.field.given-name":"First name","payload.mecard.field.nickname":"Nickname","payload.mecard.field.phones":"Phone","payload.mecard.field.email":"Email","payload.mecard.field.url":"Website","payload.mecard.field.address":"Address","payload.mecard.field.organisation":"Organisation","payload.mecard.hint.organisation":"Some older readers ignore this.","payload.mecard.field.note":"Note","payload.mecard.field.birthday":"Birthday","payload.mecard.issue.no-name":"Add a first or last name.","payload.mecard.compat.org":"The organisation is a later addition to this format and some older readers ignore it.","payload.event.label":"Calendar event","payload.event.description":"An event with its time and place, added to the calendar in one step.","payload.event.action":"Offers to add an event to the calendar.","payload.event.field.summary":"Event name","payload.event.field.timing":"Time","payload.event.hint.timing":"A set time is the same moment everywhere. Local time is that time wherever the reader is.","payload.event.option.timing.utc":"At a set time","payload.event.option.timing.floating":"At a local time","payload.event.option.timing.all-day":"All day","payload.event.field.start":"Starts","payload.event.field.end":"Ends","payload.event.field.start-date":"First day","payload.event.field.end-date":"Last day","payload.event.hint.end-date":"Leave this empty for a one-day event.","payload.event.field.location":"Location","payload.event.field.description":"Description","payload.event.field.url":"Web address","payload.event.issue.end-before-start":"The end is before the start.","payload.geo.label":"Map location","payload.geo.description":"A point on the map, opened in the map app.","payload.geo.action":"Shows a place on a map.","payload.geo.field.latitude":"Latitude","payload.geo.field.longitude":"Longitude","payload.geo.field.altitude":"Altitude","payload.geo.hint.altitude":"In metres above sea level. Most map apps ignore it.","payload.geo.field.uncertainty":"Accuracy","payload.geo.hint.uncertainty":"How far off the point may be, in metres.","payload.bitcoin.label":"Bitcoin payment","payload.bitcoin.description":"A request to pay a Bitcoin address, with the amount filled in if you like.","payload.bitcoin.action":"Opens a Bitcoin payment in a wallet.","payload.bitcoin.field.address":"Bitcoin address","payload.bitcoin.hint.address":"Paste it from the wallet that will receive the payment rather than typing it.","payload.bitcoin.field.amount":"Amount (BTC)","payload.bitcoin.field.label":"Paid to","payload.bitcoin.field.message":"Message","payload.bitcoin.issue.address":"This is not a Bitcoin address.","payload.bitcoin.issue.address-checksum":"This address fails its own check. A character is mistyped, and a payment to it would fail.","payload.bitcoin.issue.testnet":"This is a test network address. Real bitcoin sent to it is lost.","payload.lightning.label":"Lightning invoice","payload.lightning.description":"A Lightning invoice from a wallet, as a code that can be scanned to pay it.","payload.lightning.action":"Opens a Lightning payment in a wallet.","payload.lightning.field.invoice":"Invoice","payload.lightning.hint.invoice":"Paste the invoice from the wallet that will be paid. It starts with lnbc.","payload.lightning.issue.format":"This is not a Lightning invoice.","payload.lightning.issue.checksum":"This invoice fails its own check. It was copied incompletely or changed.","payload.lightning.issue.prefix":"This invoice does not say which network it is for in a way wallets accept.","payload.lightning.issue.amount":"The amount in this invoice is written in a way wallets refuse.","payload.lightning.issue.testnet":"This invoice is for a test network. A real wallet cannot pay it.","payload.epc.label":"SEPA transfer","payload.epc.description":"A euro bank transfer with the account, amount and reference filled in, for banking apps in Europe.","payload.epc.action":"Opens a bank transfer in a banking app.","payload.epc.field.name":"Pay to","payload.epc.field.iban":"IBAN","payload.epc.field.bic":"BIC","payload.epc.hint.bic":"Needed only for banks outside the European Economic Area.","payload.epc.field.amount":"Amount (EUR)","payload.epc.field.reference":"Creditor reference","payload.epc.hint.reference":"A structured reference, usually starting with RF. Use either this or a message.","payload.epc.field.message":"Message","payload.epc.field.purpose":"Purpose code","payload.epc.hint.purpose":"A four-letter ISO 20022 code, such as CHAR for a donation.","payload.epc.field.information":"Note for the payer","payload.epc.hint.information":"Shown to the person paying. It is not sent with the payment.","payload.epc.field.version":"Format version","payload.epc.option.version.002":"Version 2","payload.epc.option.version.001":"Version 1 (needs a BIC)","payload.epc.issue.bic-required":"Version 1 needs a BIC.","payload.epc.issue.bic-outside-eea":"This IBAN is from a SEPA country outside the European Economic Area, so the transfer needs a BIC.","payload.epc.issue.not-sepa":"This IBAN is not from a SEPA country, so a SEPA transfer may not reach it.","payload.epc.issue.purpose":"A purpose code is four capital letters or digits.","payload.epc.issue.reference-and-message":"Use either a creditor reference or a message, not both.","payload.epc.issue.reference-unchecked":"This reference does not start with RF, so its check digits cannot be checked here.","payload.epc.issue.too-long":"This transfer is {length} bytes and the format allows {max}. Shorten the name or the message.","payload.swiss-qr-bill.label":"Swiss QR-bill","payload.swiss-qr-bill.description":"The payment part of a Swiss QR-bill, in francs or euros.","payload.swiss-qr-bill.action":"Opens a bill payment in a Swiss banking app.","payload.swiss-qr-bill.field.iban":"Account (IBAN or QR-IBAN)","payload.swiss-qr-bill.hint.iban":"A Swiss or Liechtenstein IBAN. A QR-IBAN needs a QR reference.","payload.swiss-qr-bill.field.creditor-name":"Payable to","payload.swiss-qr-bill.field.creditor-street":"Street","payload.swiss-qr-bill.field.creditor-building":"Building number","payload.swiss-qr-bill.field.creditor-postcode":"Postcode","payload.swiss-qr-bill.field.creditor-town":"Town","payload.swiss-qr-bill.field.creditor-country":"Country","payload.swiss-qr-bill.field.creditor-address-type":"Address format","payload.swiss-qr-bill.hint.creditor-address-type":"Bills are made with separate address lines. Combined lines are only read from older bills.","payload.swiss-qr-bill.option.creditor-address-type.s":"Separate lines","payload.swiss-qr-bill.option.creditor-address-type.k":"Combined lines (old)","payload.swiss-qr-bill.field.amount":"Amount","payload.swiss-qr-bill.field.currency":"Currency","payload.swiss-qr-bill.option.currency.chf":"Swiss francs (CHF)","payload.swiss-qr-bill.option.currency.eur":"Euros (EUR)","payload.swiss-qr-bill.field.debtor-name":"Payable by","payload.swiss-qr-bill.field.debtor-street":"Street","payload.swiss-qr-bill.field.debtor-building":"Building number","payload.swiss-qr-bill.field.debtor-postcode":"Postcode","payload.swiss-qr-bill.field.debtor-town":"Town","payload.swiss-qr-bill.field.debtor-country":"Country","payload.swiss-qr-bill.field.debtor-address-type":"Address format","payload.swiss-qr-bill.hint.debtor-address-type":"Bills are made with separate address lines. Combined lines are only read from older bills.","payload.swiss-qr-bill.option.debtor-address-type.s":"Separate lines","payload.swiss-qr-bill.option.debtor-address-type.k":"Combined lines (old)","payload.swiss-qr-bill.field.reference-type":"Reference","payload.swiss-qr-bill.hint.reference-type":"A QR-IBAN takes a QR reference. Any other IBAN takes a creditor reference or none.","payload.swiss-qr-bill.option.reference-type.qrr":"QR reference","payload.swiss-qr-bill.option.reference-type.scor":"Creditor reference (RF)","payload.swiss-qr-bill.option.reference-type.non":"No reference","payload.swiss-qr-bill.field.reference":"Reference number","payload.swiss-qr-bill.field.message":"Additional information","payload.swiss-qr-bill.field.billing-information":"Billing information","payload.swiss-qr-bill.field.alternative1":"Alternative procedure 1","payload.swiss-qr-bill.field.alternative2":"Alternative procedure 2","payload.swiss-qr-bill.issue.iban-country":"A QR-bill account is a Swiss (CH) or Liechtenstein (LI) IBAN.","payload.swiss-qr-bill.issue.combined-address":"This bill uses combined address lines, which QR-bills stopped accepting in November 2025. Split the address into its lines before making the bill again.","payload.swiss-qr-bill.issue.qrr-needs-qr-iban":"A QR reference needs a QR-IBAN.","payload.swiss-qr-bill.issue.qr-iban-needs-qrr":"A QR-IBAN needs a QR reference.","payload.swiss-qr-bill.issue.qrr-chf-only":"From QR-bill version 2.4 a QR reference is only for bills in Swiss francs. A bill in euros made this way is accepted until November 2027.","payload.swiss-qr-bill.issue.notification":"An amount of 0.00 makes a notification, not a bill to pay. Put DO NOT USE FOR PAYMENT in the additional information.","payload.swiss-qr-bill.issue.bytes":"This bill is {length} bytes once its accented letters are encoded, and the code holds {max}. It may not fit.","payload.swiss-qr-bill.issue.qr-reference":"A QR reference is 27 digits and this one fails its check digit.","payload.swiss-qr-bill.issue.reference-not-allowed":"Choose a reference type before entering a reference.","payload.swiss-qr-bill.issue.message-too-long":"The additional and billing information together are {length} characters, and a bill allows {max}.","payload.swiss-qr-bill.issue.character":"This contains a character QR-bills do not allow, at position {position}.","payload.swiss-qr-bill.issue.too-long":"This bill is {length} characters and a QR-bill allows {max}.","payload.pix.label":"Pix payment","payload.pix.description":"A Pix payment to a Pix key, for banking apps in Brazil.","payload.pix.action":"Opens a Pix payment in a banking app.","payload.pix.field.key":"Pix key","payload.pix.hint.key":"A CPF, CNPJ, email address, phone number with +55, or random key.","payload.pix.field.name":"Receiver name","payload.pix.field.city":"City","payload.pix.field.amount":"Amount (BRL)","payload.pix.field.description":"Message","payload.pix.field.txid":"Transaction ID","payload.pix.hint.txid":"Letters and digits only. Leave it empty if you do not use one.","payload.pix.issue.key":"This is not a Pix key.","payload.pix.issue.account-too-long":"The key and the message together take {length} characters and Pix allows {max}.","payload.pix.issue.txid":"A transaction ID is up to 25 letters and digits.","payload.pix.issue.non-ascii":"Some banking apps show accented letters incorrectly. Consider writing this without them.","payload.pix.compat.banking-apps":"Opens in the banking apps of Brazilian banks that offer Pix.","payload.upi.label":"UPI payment","payload.upi.description":"A UPI payment to a payment address, for payment apps in India.","payload.upi.action":"Opens a UPI payment in a payment app.","payload.upi.field.address":"UPI ID","payload.upi.hint.address":"The payment address, such as name@bank.","payload.upi.field.name":"Payee name","payload.upi.field.amount":"Amount (INR)","payload.upi.field.note":"Note","payload.upi.issue.address":"This is not a UPI ID. It looks like name@bank.","payload.gs1-digital-link.label":"Product link (GS1)","payload.gs1-digital-link.description":"A product code that tills read as the barcode and phones open as a web page.","payload.gs1-digital-link.action":"Opens a product page.","payload.gs1-digital-link.field.domain":"Web domain","payload.gs1-digital-link.hint.domain":"Your own domain, or id.gs1.org if you do not have one.","payload.gs1-digital-link.field.gtin":"GTIN","payload.gs1-digital-link.hint.gtin":"The number under the product barcode: 8, 12, 13 or 14 digits.","payload.gs1-digital-link.field.batch":"Batch or lot","payload.gs1-digital-link.field.serial":"Serial number","payload.gs1-digital-link.field.expiry":"Expiry date","payload.gs1-digital-link.hint.expiry":"As YYMMDD. A day of 00 means the end of the month.","payload.gs1-digital-link.field.best-before":"Best before","payload.gs1-digital-link.hint.best-before":"As YYMMDD. A day of 00 means the end of the month.","payload.gs1-digital-link.issue.domain":"This is not a web domain.","payload.gs1-digital-link.issue.gtin":"A GTIN is 8, 12, 13 or 14 digits.","payload.gs1-digital-link.issue.gtin-check-digit":"This GTIN fails its check digit. A digit is probably mistyped.","payload.gs1-digital-link.issue.character":"This contains a character GS1 codes do not allow.","payload.gs1-digital-link.issue.date":"Enter the date as YYMMDD.","payload.zatca.label":"Saudi e-invoice","payload.zatca.description":"The code on a Saudi tax invoice. It can be read here but not made.","payload.zatca.action":"Shows the details of a tax invoice.","payload.zatca.field.seller-name":"Seller","payload.zatca.field.vat-number":"VAT number","payload.zatca.field.timestamp":"Issued","payload.zatca.field.total":"Total with VAT","payload.zatca.field.vat-total":"VAT","payload.zatca.field.has-invoice-hash":"Invoice hash","payload.zatca.field.has-signature":"Signature","payload.zatca.field.has-public-key":"Public key","payload.zatca.field.has-stamp-signature":"Stamp signature","payload.zatca.issue.vat-number":"A Saudi VAT number is 15 digits that start and end with 3.","payload.zatca.issue.timestamp":"The issue time is not written as a date and time.","payload.zatca.issue.amount":"This amount is not written as a number.","payload.zatca.issue.phase-one":"This code has no signature parts. Invoices have needed them since 1 January 2023, so it may be old or incomplete."});var v2=Object.freeze({"symbology.rmqr.label":"Rectangular Micro QR","symbology.rmqr.not-phone-readable":"Most phone cameras cannot read rectangular Micro QR codes. Use one only where you know the scanner that will read it supports rMQR, and test it with that scanner before printing."});var S2=Object.freeze({"studio.issue.content-invalid":"The code shown is the last one that worked. Fix what is highlighted to update it.","studio.issue.content-empty":"Fill in the details and the code appears here.","studio.issue.design-locked":"This kind of code has a fixed design that its specification sets, so the design cannot be changed.","studio.issue.constrained":"This kind of code does not allow that change. Its specification sets this part of the design.","studio.issue.unknown-type":"This version of the studio does not include that kind of content.","studio.issue.read-only-type":"This kind of code can be read and explained here, but not made: it has to come from the system that issues it.","studio.issue.unknown-field":"This kind of content has no such field.","studio.issue.field-value":"That value is the wrong kind of thing for this field.","studio.issue.unknown-preset":"This version of the studio does not include that preset.","studio.issue.patch-path":"That change does not refer to a part of a design.","studio.issue.design-file":"This file is not a design, or it is damaged. Design files are saved from this studio as JSON.","studio.issue.design-link":"The design in this link could not be opened, so the studio started with the standard design.","studio.issue.raw-too-long":"This is {length} characters, and no code holds more than {max}. Shorten it to make a code from it.","studio.issue.unknown-fix":"That suggestion no longer applies. Run the scan check again.","studio.issue.conditions":"Enter a number greater than zero, or leave this empty.","studio.issue.document-repaired":"Part of what was opened could not be used as it was, so the standard setting was used instead.","studio.issue.quiet-zone-below-minimum":"This leaves less than {min} modules of space round the code, which some phones need to find it.","studio.issue.export-size-constrained":"This kind of code is printed at {size} mm, which its specification sets, so that size was used.","studio.issue.export-option":"This setting is out of range, so it was left out.","studio.category.link":"Links","studio.category.contact":"Contact details","studio.category.message":"Messages","studio.category.network":"Networks","studio.category.event":"Events","studio.category.place":"Places","studio.category.payment":"Payments","studio.category.commerce":"Products","studio.category.text":"Text","studio.preset-category.classic":"Classic","studio.preset-category.rounded":"Rounded","studio.preset-category.dots":"Dots","studio.preset-category.hex":"Hexagons","studio.preset-category.fluid":"Fluid","studio.preset-category.bold":"Bold","studio.preset-category.minimal":"Minimal","studio.preset-category.colour":"Colour","studio.preset-category.print":"For print","studio.group.address":"Address","studio.group.creditor":"Payable to","studio.group.debtor":"Payable by","studio.group.eap":"Enterprise sign in","studio.group.name":"Name","studio.group.phones":"Phone numbers","studio.group.time":"Date and time","studio.group.utm":"Campaign tracking","studio.axis.static":"Checking the design","studio.axis.distance":"Checking from further away","studio.axis.focus":"Checking out of focus","studio.axis.motion":"Checking with a moving phone","studio.axis.noise":"Checking in a grainy picture","studio.axis.angle":"Checking at an angle","studio.axis.light":"Checking in poor light","studio.axis.glare":"Checking with glare","studio.axis.ink":"Checking with ink spread","studio.axis.contrast":"Checking at low contrast","error.encode.too-much-data":"That is too much to fit in one code at these settings. Shorten it, lower the error correction, or allow a larger code.","error.encode.unsupported-content":"This content cannot be put into this kind of code as it is.","error.encode.unsupported-feature":"This kind of code cannot do that. Choose a QR code.","error.design.invalid":"This design is damaged or incomplete.","error.design.unsupported-schema":"This design was made by a different version of the studio and cannot be opened here.","error.design.unknown-entry":"This design uses something this version of the studio does not include.","error.payload.invalid":"The content has problems to fix before the code can be made.","error.payload.unparseable":"That text could not be read as this kind of content.","error.decode.not-found":"No code was found in this picture.","error.decode.unreadable":"A code was found here, but it could not be read.","error.decode.unsupported":"This code uses a feature this tool cannot read.","error.decode.incomplete-set":"This code is one of a set, and some of the set is missing. Scan every code in the set.","error.decode.conflicting-set":"These codes say they are one set, but they do not fit together. Scan the codes of one set only.","error.image.unreadable":"This picture could not be opened. Try a PNG or JPEG, or take a screenshot of it.","error.image.too-large":"This picture is larger than this tool will open. Try a smaller one.","error.font.malformed":"This font file is damaged, or is not a font this tool can read.","error.font.missing-glyphs":"This font cannot draw some of these characters.","error.render.surface-too-large":"That picture is too large to draw here. Choose a smaller size.","error.render.format-unavailable":"This browser cannot save in that format. Choose PNG or SVG.","error.archive.too-large":"This is larger than this tool will handle in one go.","error.archive.malformed":"This file is damaged and cannot be opened.","error.batch.malformed-csv":"This spreadsheet file could not be read. Save it as CSV from your spreadsheet and try again.","error.batch.too-many-rows":"This file has more rows than can be made into codes at once.","error.batch.unknown-column":"A column this needs is not in the file.","error.library.unavailable":"The library is not available in this browser, so designs and brand kits cannot be saved here.","error.library.not-enabled":"The library is switched off. Switch it on to save designs and brand kits in this browser.","error.library.quota":"This browser has no more room for saved designs and brand kits. Remove some and try again.","error.library.corrupt":"A saved design or brand kit is damaged and cannot be opened.","error.camera.permission-denied":"The camera is not allowed for this page. Allow it in the browser settings, or choose a picture instead.","error.camera.unavailable":"No camera could be opened. Choose a picture instead.","error.camera.in-use":"The camera is in use by another app or tab. Close it there, then try again.","error.camera.insecure-context":"The camera only works on a secure page. Open this page over https, or choose a picture instead.","error.verify.missing-entry":"The scan check could not run, because this design uses something it does not include.","error.platform.unavailable":"This browser cannot do that.","error.cancelled":"That was stopped before it finished."});var M2=Object.freeze({"symbology.qr.label":"QR code","symbology.read.version":"This code is not a size its kind of code comes in, or it says it is a different version from its size.","symbology.read.format":"The part of this code that says how it was made is too damaged to read.","symbology.read.reed-solomon":"Part of this code is too damaged to read, even with its error correction.","symbology.read.segments":"This code was not made correctly, so what it holds cannot be read.","symbology.read.unsupported.eci":"This code uses a character set this tool cannot read.","symbology.read.unsupported.kanji":"This code holds Japanese text, and this browser cannot read the character set it uses."});var E2=Object.freeze({"text.font.plex-sans-regular":"Sans","text.font.plex-sans-bold":"Sans bold","text.font.registered":"Your font","text.font.malformed":"This font file is damaged, or is not a TrueType font this tool can read.","text.font.missing-glyphs":"This font cannot draw some of these characters. Choose another font, or change the text.","render.print.too-large":"That page is larger than a PDF can be. Choose a smaller size.","render.eps.transparency":"EPS cannot carry transparency. Save this design as a PDF, or make every colour in it opaque.","sheet.cell-too-small":"This code is larger than the labels on this sheet. Make it smaller, or choose a sheet with larger labels.","sheet.template.a4-21-63x38":"A4, 21 labels 63.5 x 38.1 mm","sheet.template.a4-24-63x34":"A4, 24 labels 63.5 x 33.9 mm","sheet.template.a4-14-99x38":"A4, 14 labels 99.1 x 38.1 mm","sheet.template.a4-8-99x68":"A4, 8 labels 99.1 x 67.7 mm","sheet.template.a4-65-38x21":"A4, 65 labels 38.1 x 21.2 mm","sheet.template.a4-12-round-64":"A4, 12 round labels 63.5 mm","sheet.template.a4-10-cards-85x54":"A4, 10 business cards 85 x 54 mm","sheet.template.letter-30-67x25":"US Letter, 30 labels 2 5/8 x 1 in","sheet.template.letter-10-102x51":"US Letter, 10 labels 4 x 2 in","sheet.template.letter-80-44x13":"US Letter, 80 labels 1 3/4 x 1/2 in","sheet.template.letter-12-round-51":"US Letter, 12 round labels 2 in","sheet.template.letter-12-square-51":"US Letter, 12 square labels 2 x 2 in","sheet.template.letter-10-cards-89x51":"US Letter, 10 business cards 3 1/2 x 2 in","sheet.template.print-a4":"A4, copies with crop marks","sheet.template.print-letter":"US Letter, copies with crop marks"});var T2=Object.freeze({"verify.check-name.quiet-zone":"Clear margin","verify.check-name.contrast":"Overall contrast","verify.check-name.modulation":"Clear squares","verify.check-name.polarity":"Dark on light","verify.check-name.function-patterns":"Patterns readers look for","verify.check-name.logo-budget":"Logo size","verify.check-name.module-size":"Print size","verify.check-name.finder-shape":"Corner square shape","verify.check-name.colour-red-channel":"Colours under red light","verify.check-name.reader-support":"Phone support","verify.status.pass":"Passes","verify.status.warn":"Worth checking","verify.status.fail":"Will not scan reliably","verify.verdict.pass":"This should scan on the phones people carry, in everyday conditions.","verify.verdict.warn":"This scans, but some people will have trouble with it. The checks below say when.","verify.verdict.fail":"This is likely to fail for many people. Fix the problems below before printing it.","verify.baseline.fail":"Even a clean photograph of this design did not scan.","verify.error.missing-entry":"This check needs a style or picture this copy of the studio does not have, so it was not run.","verify.check.quiet-zone.pass":"There is a clear margin {modules} squares wide all round the code.","verify.check.quiet-zone.fail":"{modules, plural, =0 {There is no clear margin round the code.} one {The clear margin round the code is only # square wide.} other {The clear margin round the code is only # squares wide.}} Readers need one at least {minimum} squares wide, with nothing printed in it.","verify.check.contrast.sc.pass":"The dark and light parts differ by {percent} percent, grade {grade}.","verify.check.contrast.sc.warn":"The dark and light parts differ by only {percent} percent, grade {grade}. Some phones will struggle, more so in poor light.","verify.check.contrast.sc.fail":"The dark and light parts differ by only {percent} percent, grade {grade}. That is too little for phones to tell them apart.","verify.check.contrast.mod.pass":"Every square reads clearly as dark or light, grade {grade}.","verify.check.contrast.mod.warn":"Some squares are close to the middle shade, so they read less clearly, grade {grade}.","verify.check.contrast.mod.fail":"Some squares are too close to the middle shade to read reliably, grade {grade}.","verify.check.contrast.mod.wrong":"Some squares read as the wrong shade even in a clean photograph. Check the colours of the squares and any gradient.","verify.check.polarity.pass":"Dark squares on a light background, which every reader expects.","verify.check.polarity.warn":"Light squares on a dark background. Some phone readers cannot read a code this way round.","verify.check.function-patterns.pass":"Nothing covers the corner squares or the other patterns readers find the code by.","verify.check.function-patterns.covered":"The logo or its background covers part of the patterns readers find the code by. Make the logo smaller.","verify.check.function-patterns.finder":"The corner squares are drawn in a shape readers may not recognise.","verify.check.function-patterns.alignment":"The logo covers one of the small alignment squares inside the code. Most readers manage without it, but not all.","verify.check.logo-budget.none":"Nothing covers the code, so all of its error correction is kept for wear and poor light.","verify.check.logo-budget.pass":"The logo covers {codewords, plural, one {# piece} other {# pieces}} of the code, and enough error correction is left for wear and poor light.","verify.check.logo-budget.warn":"The logo covers {codewords, plural, one {# piece} other {# pieces}} of the code. It reads, but little error correction is left for wear and poor light.","verify.check.logo-budget.fail":"The logo covers too much of the code: repairing it would use up the error correction kept for wear and poor light.","verify.check.module-size.unknown":"Give the printed size to check how far away this scans from.","verify.check.module-size.unread":"Printed {sizeMm} mm wide, this did not scan from any distance in the check.","verify.check.module-size.fail":"Printed {sizeMm} mm wide, the squares are too small for a phone to focus on. Print it at least {minimumMm} mm wide.","verify.check.module-size.short":"Scans from about {distanceCm} cm away when printed {sizeMm} mm wide, but people are expected to scan it from {expectedCm} cm. Print it at least {minimumMm} mm wide.","verify.check.module-size.close":"Scans from about {distanceCm} cm away when printed {sizeMm} mm wide, so people will have to hold their phone close to it.","verify.check.module-size.pass":"Scans from about {distanceCm} cm away when printed {sizeMm} mm wide.","verify.check.finder-shape.pass":"The corner squares are a shape readers recognise.","verify.check.finder-shape.fail":"The corner squares are drawn in a shape readers may not recognise. Choose another corner style.","verify.check.colour-red-channel.pass":"Also reads under the red light of shop and warehouse scanners.","verify.check.colour-red-channel.warn":"Under the red light many shop and warehouse scanners use, these colours keep only {percent} percent of their contrast. Phones see colour and are not affected; those scanners may be.","verify.check.reader-support.pass":"Phone cameras read this kind of code.","verify.check.reader-support.micro":"Most phone cameras cannot read Micro QR codes. Use one only with a scanner you know reads them.","verify.check.reader-support.rmqr":"Most phone cameras cannot read rectangular Micro QR codes. Use one only with a scanner you know reads them.","verify.check.reader-support.kanji":"This code stores Japanese text in a compact form that some readers show wrongly.","verify.check.reader-support.eci":"This code says which character set it uses. A few older readers ignore that and may show some characters wrongly.","verify.axis.distance":"Distance","verify.axis.distance.ok":"Scans from as far away as people will hold their phone.","verify.axis.distance.short":"Does not scan from as far away as people will hold their phone.","verify.axis.focus":"Focus","verify.axis.focus.ok":"Scans while the camera is still finding its focus.","verify.axis.focus.short":"Needs the camera perfectly in focus.","verify.axis.motion":"Movement","verify.axis.motion.ok":"Scans with a slightly unsteady hand.","verify.axis.motion.short":"Needs a very steady hand.","verify.axis.noise":"Grain","verify.axis.noise.ok":"Scans through the grain a phone camera adds indoors.","verify.axis.noise.short":"Struggles with the grain a phone camera adds indoors.","verify.axis.angle":"Angle","verify.axis.angle.ok":"Scans with the phone held at an angle.","verify.axis.angle.short":"Needs the phone held almost straight on.","verify.axis.light":"Dim light","verify.axis.light.ok":"Scans in dim, uneven light.","verify.axis.light.short":"Needs good, even light.","verify.axis.glare":"Glare","verify.axis.glare.ok":"Scans with a reflection across it.","verify.axis.glare.short":"A reflection on glossy paper or a screen stops it scanning.","verify.axis.ink":"Ink spread","verify.axis.ink.ok":"Scans when the ink spreads a little or prints thin.","verify.axis.ink.short":"Needs crisp printing: ink that spreads or prints thin stops it scanning.","verify.axis.contrast":"Fading","verify.axis.contrast.ok":"Scans after the print has faded.","verify.axis.contrast.short":"Stops scanning as the print fades.","verify.fix.raise-ec":"Use error correction level {level}","verify.fix.shrink-logo":"Make the logo smaller, {percent} percent of the width","verify.fix.logo-clear-shape":"Clear only the space the logo itself takes","verify.fix.dark-on-light":"Swap to dark squares on a light background","verify.fix.darken-modules":"Use the darkest colour in the design for every square","verify.fix.black-modules":"Print the squares in black","verify.fix.low-red-ink":"Use the colour red light scanners see best","verify.fix.widen-quiet-zone":"Widen the clear margin to {modules} squares","verify.fix.square-finders":"Use plain square corners","verify.fix.solid-modules":"Draw the code with plain squares","verify.fix.print-larger":"Print it at least {sizeMm} mm wide"});var A2=Object.freeze({app:d2,batch:m2,decode:f2,design:p2,dom:h2,encode:y2,inspect:g2,library:b2,micro:x2,"own-link":w2,payload:k2,rmqr:v2,studio:S2,symbology:M2,text:E2,verify:T2}),_Q=Object.freeze(Object.keys(A2).filter(e=>e!=="app")),R2=Object.freeze(Object.assign({},...Object.values(A2)));function ru(e,t={}){let n=Object.prototype.hasOwnProperty.call(R2,e)?R2[e]:void 0;return n===void 0?e:u2(n,t)}function v(e,t={}){return ru(e,t)}function Ft(e){return ru(e.code,e.params??{})}function yt(e){return ru(e.messageKey,e.params)}var I8=new Intl.NumberFormat("en-AU",{maximumFractionDigits:1}),P8=new Intl.NumberFormat("en-AU",{maximumFractionDigits:0}),C8=new Intl.NumberFormat("en-AU",{maximumFractionDigits:2});function zn(e){return I8.format(e)}function nr(e){return P8.format(e)}function Vn(e){return C8.format(e)}var N8=new Intl.NumberFormat("en-AU",{style:"percent",maximumFractionDigits:0}),L8=new Intl.NumberFormat("en-AU",{style:"unit",unit:"degree",unitDisplay:"long",maximumFractionDigits:0});function oa(e){return N8.format(e)}function ou(e){return L8.format(e)}var O8=new Intl.DateTimeFormat("en-AU",{dateStyle:"medium",timeStyle:"short"});function xp(e){return O8.format(new Date(e))}function de(e,t){let n=["btn"];return t.primary===!0&&n.push("btn--primary"),t.small===!0&&n.push("btn--small"),t.compact===!0&&n.push("btn--compact"),M("button",{className:n.join(" "),attrs:{type:"button",...t.attrs},on:{click:t.onClick}},[t.icon===void 0?null:lt(t.icon),M("span",{className:"btn__label",text:e})])}function rr(e,t){let n=e.querySelector(".btn__label");n!==null&&Z(n,t)}function on(e,t,n,r){let o=M("span",{className:"card__meta"}),s=M("div",{className:"card__body"}),i=M("details",{className:"card",...r===void 0?{}:{id:r}},[M("summary",{className:"card__head"},[M("span",{className:"card__num",text:String(e).padStart(2,"0")}),M("h2",{className:"card__title",text:t}),o,lt("chevron","card__chevron")]),s]);return i.open=n,{root:i,body:s,meta:o}}function vt(e,t){if(t.length===0){le(e,[]),e.hidden=!0;return}e.hidden=!1,le(e,t.map(n=>M("li",{className:`note note--${n.severity}`},[lt(n.severity==="error"?"fail":n.severity==="warning"?"warn":"pending"),M("span",{text:Ft(n)})])))}function Ve(e,t,n,r="segments",o={}){let s=o.name??kt("choice"),i=M("div",{className:`${r}__grid`}),a=M("fieldset",{className:r},[M("legend",{className:o.legendHidden===!0?"sr-only":"legend",text:e}),i]),l=null,c=d=>{le(i,d.map(m=>{let f=M("input",{className:"choice__input",attrs:{type:"radio",name:s,value:m.value,disabled:m.disabled===!0},on:{change:()=>{f.checked&&n(m.value)}}});f.checked=m.value===l;let p=[f],h=M("span",{className:"choice__box"},[m.picture===void 0?null:M("img",{className:"choice__img",attrs:{src:m.picture,alt:"",width:48,height:48,decoding:"async"}}),M("span",{className:"choice__label",text:m.label}),m.hint===void 0?null:M("span",{className:"choice__hint",text:m.hint})]);return p.push(h),M("label",{className:"choice"},p)}))};c(t);let u=()=>[...i.querySelectorAll("input")];return{root:a,inputs:u,set(d){l=d;for(let m of u()){let f=m.value===d;m.checked!==f&&(m.checked=f)}},setChoices(d){let m=document.activeElement,f=m instanceof HTMLInputElement&&i.contains(m);c(d),f&&(u().find(h=>h.checked)??u()[0])?.focus()}}}function ct(e,t,n){let r=t.id===""?kt("field"):t.id;t.id=r;let o=`${r}-hint`,s=`${r}-issues`,i=M("label",{className:"field__label",text:e,attrs:{for:r}}),a=M("p",{className:"field__hint",id:o,text:n??""});a.hidden=n===void 0;let l=M("ul",{className:"field__issues",id:s});l.hidden=!0;let c=`${o} ${s}`;return t.setAttribute("aria-describedby",c),{root:M("div",{className:"field"},[i,t,a,l]),label:i,hint:a,issues:l,describedBy:c}}function or(e,t,n,r){let o=kt("slider"),s=M("output",{className:"slider__value",attrs:{for:o}}),i=M("input",{className:"slider__input",id:o,attrs:{type:"range",min:t.min,max:t.max,step:t.step},on:{input:()=>{let l=Number(i.value);Z(s,n(l)),r(l,"move")},change:()=>r(Number(i.value),"end")}});return{root:M("div",{className:"slider"},[M("label",{className:"slider__label",text:e,attrs:{for:o}}),s,i]),input:i,set(l){Number(i.value)!==l&&(i.value=String(l)),Z(s,n(l))}}}function I2(e,t,n,r){let o=!1;return(s,i)=>{o||(t(e),o=!0),n(s),i==="end"&&(r(e),o=!1)}}function P2(e,t){let n=v(e.labelKey);switch(e.kind){case"boolean":{let r=M("input",{attrs:{type:"checkbox"},on:{change:()=>t(r.checked,"end")}});return{root:M("label",{className:"tick"},[r,M("span",{text:n})]),set(s){r.checked=s===!0}}}case"select":{let r=M("select",{on:{change:()=>t(r.value,"end")}},(e.options??[]).map(s=>M("option",{text:v(s.labelKey),attrs:{value:s.value}})));return{root:ct(n,r).root,set(s){r.value=String(s)}}}case"colour":{let r=M("input",{className:"colour-well",attrs:{type:"color"},on:{input:()=>t(r.value,"move"),change:()=>t(r.value,"end")}});return{root:ct(n,r).root,set(s){typeof s=="string"&&/^#[0-9a-f]{6}$/i.test(s)&&(r.value=s)}}}default:{let r=e.kind==="angle",o=e.min??0,s=e.max??(r?360:1),i=e.step??(e.kind==="integer"||r?1:(s-o)/100),a=r?ou:e.kind==="integer"?c=>String(c):Vn,l=or(n,{min:o,max:s,step:i},a,(c,u)=>t(c,u));return{root:l.root,set(c){typeof c=="number"&&l.set(c)}}}}}var C2=new WeakSet;function Os(e){C2.add(e)}function N2(e){return e instanceof Element&&C2.has(e)}var wp=12,D8={"windows-1252":"app.bulk.encoding-windows-1252",shift_jis:"app.bulk.encoding-shift-jis",gb18030:"app.bulk.encoding-gb18030",big5:"app.bulk.encoding-big5","euc-kr":"app.bulk.encoding-euc-kr","windows-1251":"app.bulk.encoding-windows-1251","windows-1256":"app.bulk.encoding-windows-1256"};function L2(e){let t=null,n=null,r="auto",o="url",s={},i="",a="zip",l="png",c=Xi()[0]?.id??"",u="srgb",d=null,m=M("ul",{className:"field__issues"});m.hidden=!0;let f=M("p",{className:"bulk__summary"}),p=M("input",{attrs:{type:"file",accept:".csv,.tsv,.txt,text/csv,text/plain"}});p.hidden=!0,p.addEventListener("change",()=>{let ce=p.files?.[0];p.value="",ce!==void 0&&w(ce)});let h=kt("paste"),g=M("textarea",{className:"input input--area input--mono",id:h,attrs:{rows:5,spellcheck:"false",autocomplete:"off",placeholder:v("app.bulk.paste-placeholder")}});Os(g);let y=null;g.addEventListener("input",()=>{y!==null&&clearTimeout(y),y=setTimeout(()=>{y=null,n=null,g.value.trim()===""?(t=null,Ce()):x(g.value)},250)});let b=M("div",{className:"dropzone dropzone--compact",attrs:{role:"group","aria-label":v("app.bulk.drop")}},[lt("file","dropzone__icon"),M("p",{className:"dropzone__text",text:v("app.bulk.drop")}),de(v("app.bulk.choose"),{icon:"open",onClick:()=>p.click()}),p]);b.addEventListener("dragover",ce=>{ce.preventDefault(),b.dataset.over="true"}),b.addEventListener("dragleave",()=>{b.dataset.over="false"}),b.addEventListener("drop",ce=>{ce.preventDefault(),ce.stopPropagation(),b.dataset.over="false";let re=ce.dataTransfer?.files[0];re!==void 0&&w(re)});function x(ce,re=!1){try{let oe=typeof ce=="string"?null:gc(ce,{fallback:r==="auto"?bf:r}),se=wc(oe===null?ce:oe.text),Se=t?.table.headers;t={csv:ce,table:se},re&&Se!==void 0&&Se.length===se.headers.length&&Se.every((_e,gn)=>_e===se.headers[gn])||E(),vt(m,[...oe?.issues??[],...se.issues].slice(0,6))}catch(oe){t=null;let se=oe instanceof K?oe:new K("batch/malformed-csv","This spreadsheet file could not be read.");vt(m,[]),m.hidden=!1,le(m,[M("li",{className:"note note--error",text:yt(Fe(se))})])}Ce()}async function w(ce){g.value="",n=await l2(ce),x(n)}let k=M("select",{className:"input input--select",on:{change:()=>{r=k.value,n!==null&&x(n,!0)}}},[M("option",{text:v("app.bulk.encoding-auto"),attrs:{value:"auto"}}),...hc.map(ce=>M("option",{text:v(D8[ce]),attrs:{value:ce}}))]);k.value=r;let S=ct(v("app.bulk.encoding"),k,v("app.bulk.encoding-hint"));function E(){if(t===null)return;let ce=e.registries.payloads.get(o),re=t.table.headers,oe={};for(let st of ce?.fields??[]){let _e=Ss(re,st.key);_e===-1&&(_e=Ss(re,v(st.labelKey))),oe[st.key]=_e===-1?null:{column:re[_e]}}let se=(ce?.fields??[]).filter(st=>st.required===!0);re.length===1&&se.length===1&&Object.values(oe).every(st=>st===null)&&(oe[se[0].key]={column:re[0]}),s=oe;let Se=re[0];i=Se===void 0?"":`qr-{${Se}}`,O.value=i}let R=kt("bulk-type"),C=M("select",{className:"input input--select",id:R,on:{change:()=>{o=C.value,E(),Ce()}}}),A=M("div",{className:"mapping"}),O=M("input",{className:"input input--mono",attrs:{type:"text",autocomplete:"off",spellcheck:"false"},on:{input:()=>{i=O.value,H()}}});Os(O);let D=ct(v("app.bulk.filename"),O,v("app.bulk.filename-hint"));function N(){let ce=e.registries.payloads.get(o);if(ce===void 0||t===null){le(A,[]);return}let re=t.table.headers;le(A,ce.fields.map(oe=>{let se=kt("map"),Se=s[oe.key]??null,st=M("select",{className:"input input--select",id:se});le(st,[M("option",{text:v("app.bulk.no-column"),attrs:{value:""}}),M("optgroup",{attrs:{label:v("app.bulk.from-column")}},re.map((gn,mu)=>M("option",{text:gn===""?v("app.bulk.column-n",{n:mu+1}):gn,attrs:{value:`c:${gn}`}}))),M("option",{text:v("app.bulk.from-template"),attrs:{value:"template"}})]),st.value=Se===null?"":"column"in Se?`c:${Se.column}`:"template";let _e=M("input",{className:"input input--mono",attrs:{type:"text",autocomplete:"off",spellcheck:"false","aria-label":v("app.bulk.template-for",{field:v(oe.labelKey)})}});return Os(_e),_e.value=Se!==null&&"template"in Se?Se.template:"",_e.hidden=!(Se!==null&&"template"in Se),st.addEventListener("change",()=>{st.value===""?s[oe.key]=null:st.value==="template"?(s[oe.key]={template:_e.value},_e.hidden=!1,_e.focus()):s[oe.key]={column:st.value.slice(2)},st.value!=="template"&&(_e.hidden=!0),H()}),_e.addEventListener("input",()=>{s[oe.key]={template:_e.value},H()}),M("div",{className:"mapping__row"},[M("label",{className:"field__label",text:v(oe.labelKey),attrs:{for:se}},oe.required===!0?[M("span",{className:"tag",text:v("app.content.required")})]:[]),st,_e])}))}let T=M("p",{className:"bulk__summary"}),I=M("ol",{className:"preview"}),U=[];function q(){let ce={};for(let[re,oe]of Object.entries(s))oe!==null&&(ce[re]=oe);return{typeId:o,fields:ce,filename:i}}function H(){if(t===null){U=[],le(I,[]),Z(T,v("app.bulk.empty")),me.disabled=!0;return}try{U=Mc(t.table,q(),e.registries)}catch(oe){U=[],le(I,[]);let se=oe instanceof K?oe:new K("batch/unknown-column","A column this needs is not in the file.");Z(T,yt(Fe(se))),me.disabled=!0;return}let ce=U.filter(oe=>oe.content!==null).length;Z(T,v("app.bulk.plan",{ready:ce,skipped:U.length-ce})),rr(me,v("app.bulk.make",{count:ce})),me.disabled=ce===0||e.snapshot().batch.status==="running";let re=U.slice(0,wp);le(I,[...re.map(oe=>{let se=M("li",{className:"preview__row"},[M("span",{className:"preview__number",text:v("app.bulk.row",{row:oe.rowNumber})}),M("span",{className:"preview__name",text:oe.filename}),M("span",{className:"preview__state"},[lt(oe.content===null?"fail":"pass"),M("span",{text:oe.content===null?v("app.bulk.row-skipped"):v("app.bulk.row-ok")})]),oe.issues.length===0?null:M("ul",{className:"preview__issues"},oe.issues.slice(0,3).map(Se=>M("li",{text:Ft(Se)})))]);return se.dataset.result=oe.content===null?"fail":"pass",se}),U.length>wp?M("li",{className:"preview__more",text:v("app.bulk.preview-more",{count:U.length-wp})}):null])}let W=Ve(v("app.bulk.output"),[{value:"zip",label:v("app.bulk.output-zip")},{value:"sheet",label:v("app.bulk.output-sheet")}],ce=>{a=ce,be()});W.set(a);let $=M("div",{className:"bulk__output"});function be(){if(a==="zip"){let se=Ve(v("app.bulk.format"),["png","svg","pdf","eps"].map(Se=>({value:Se,label:v(Se==="png"?"app.export.format-png":Se==="svg"?"app.export.format-svg":Se==="pdf"?"app.export.format-pdf":"app.export.format-eps")})),Se=>{l=Se});se.set(l),le($,[se.root]);return}let ce=kt("sheet"),re=M("select",{className:"input input--select",id:ce,on:{change:()=>{c=re.value}}},Xi().map(se=>M("option",{text:v(se.labelKey),attrs:{value:se.id}})));re.value=c;let oe=Ve(v("app.export.colour-space"),[{value:"srgb",label:v("app.export.colour-srgb")},{value:"cmyk",label:v("app.export.colour-cmyk")}],se=>{u=se});oe.set(u),le($,[ct(v("app.bulk.sheet"),re,v("app.bulk.sheet-hint")).root,oe.root])}be();let X=M("span",{className:"check__progress",attrs:{"aria-hidden":"true"}},[M("span",{className:"check__progress-fill"})]),ne=M("p",{className:"bulk__summary"}),me=de(v("app.bulk.make",{count:0}),{icon:"download",primary:!0,onClick:()=>void Oe()});me.disabled=!0;let fe=de(v("app.bulk.download-again"),{icon:"download",small:!0,onClick:()=>{d!==null&&_n(d.bytes,d.filename,d.mime)}});fe.hidden=!0;let ke=M("ul",{className:"field__issues"});ke.hidden=!0;async function Oe(){if(t===null)return;let ce=a==="zip"?{kind:"zip",format:l}:{kind:"sheet",template:c,colourSpace:u},re=await e.studio.run({type:"batch",csv:t.csv,encoding:r,mapping:q(),output:ce});if(!re.ok){re.error.code!=="cancelled"&&e.announce(yt(Fe(re.error)));return}let oe=a==="zip"?"qr-codes.zip":"qr-labels.pdf",se=a==="zip"?"application/zip":"application/pdf";d={bytes:re.value,filename:oe,mime:se},_n(re.value,oe,se).ok&&e.announce(v("app.export.saved",{filename:oe})),fe.hidden=!1}let gt=M("div",{className:"bulk"},[M("div",{className:"scan__intro"},[M("h2",{className:"mode__title",text:v("app.bulk.title")}),M("p",{className:"mode__lede",text:v("app.bulk.intro")})]),M("ol",{className:"steps"},[ie(1,v("app.bulk.source"),[b,M("div",{className:"field"},[M("label",{className:"field__label",text:v("app.bulk.paste"),attrs:{for:h}}),g]),S.root,f,m]),ie(2,v("app.bulk.mapping"),[ct(v("app.bulk.type"),C).root,M("p",{className:"field__hint",text:v("app.bulk.template-hint")}),A,D.root]),ie(3,v("app.bulk.preview"),[T,I]),ie(4,v("app.bulk.output"),[W.root,$,M("p",{className:"field__hint",text:v("app.bulk.design-note")}),M("div",{className:"bulk__run"},[me,fe]),X,ne,ke])])]);function ie(ce,re,oe){return M("li",{className:"card card--static step"},[M("div",{className:"card__head card__head--static"},[M("span",{className:"card__num",text:String(ce).padStart(2,"0")}),M("h3",{className:"card__title",text:re})]),M("div",{className:"card__body"},oe)])}function Ce(){t===null?Z(f,""):Z(f,v("app.bulk.rows",{count:nr(t.table.rows.length),columns:t.table.headers.length})),N(),H()}let qe=null,Wt=null;return Ce(),{root:gt,readFile:w,update(ce){qe!==ce.catalogue&&(qe=ce.catalogue,le(C,ce.catalogue.payloadTypes.map(oe=>M("optgroup",{attrs:{label:v(oe.labelKey)}},oe.types.filter(se=>se.generate).map(se=>M("option",{text:v(se.labelKey),attrs:{value:se.id}}))))),C.value=o);let re=ce.batch;if(re!==Wt)switch(Wt=re,gt.dataset.status=re.status,re.status){case"idle":Z(ne,"");break;case"running":X.style.setProperty("--fill",String(re.total===0?0:re.done/re.total)),Z(ne,v("app.bulk.making",{done:re.done,total:re.total})),me.disabled=!0;break;case"done":{X.style.setProperty("--fill","1"),Z(ne,v("app.bulk.done",{written:re.written,skipped:re.skipped}));let oe=re.outcomes.filter(se=>se.status==="skipped"||se.check==="fail"||se.check==="warn").slice(0,8);ke.hidden=oe.length===0,le(ke,oe.map(se=>M("li",{className:se.status==="skipped"||se.check==="fail"?"note note--warning":"note note--info",text:`${v("app.bulk.row",{row:se.rowNumber})}: ${se.issues.map(Ft).join(" ")}`}))),H();break}case"failed":Z(ne,yt(re.error)),H();break}}}}var su=new WeakMap,O2=new Map;function Fr(e,t){let n=su.get(e);if(n!==void 0&&n.svg===t)return;let r=URL.createObjectURL(new Blob([t],{type:"image/svg+xml"}));su.set(e,{url:r,svg:t}),e.src=r,n!==void 0&&URL.revokeObjectURL(n.url)}function D2(e){let t=su.get(e);t!==void 0&&URL.revokeObjectURL(t.url),su.delete(e),e.removeAttribute("src")}function j2(e,t){let n=O2.get(e);return n===void 0&&(n=URL.createObjectURL(new Blob([t()],{type:"image/svg+xml"})),O2.set(e,n)),n}var B2={pass:"pass",partial:"warn",fail:"fail",unknown:"pending",running:"pending",unavailable:"pending"},F2={pass:"app.strip.pass",partial:"app.strip.partial",fail:"app.strip.fail",unknown:"app.strip.unknown",running:"app.strip.running",unavailable:"app.strip.unknown"},j8=[{id:"sharp",labelKey:"app.strip.sharp",axis:"static"},{id:"far",labelKey:"app.strip.far",axis:"distance"},{id:"soft",labelKey:"app.strip.soft",axis:"focus"},{id:"angle",labelKey:"app.strip.angle",axis:"angle"},{id:"dim",labelKey:"app.strip.dim",axis:"light"},{id:"glare",labelKey:"app.strip.glare",axis:"glare"},{id:"ink",labelKey:"app.strip.ink",axis:"ink"}],B8={distance:"app.axis.distance",focus:"app.axis.focus",motion:"app.axis.motion",noise:"app.axis.noise",angle:"app.axis.angle",light:"app.axis.light",glare:"app.axis.glare",ink:"app.axis.ink",contrast:"app.axis.contrast"};function U2(e){return e===void 0?"unknown":e.firstFailed===null||e.firstFailed>e.typical?"pass":e.worstPassed===null?"fail":"partial"}function F8(e){return!e.baseline.passed||e.checks.some(t=>t.status==="fail")?"fail":e.checks.some(t=>t.status==="warn")?"partial":"pass"}function Ds(e){let t=e.verify;return t.status==="failed"&&t.error.params.feature==="verify"}function U8(e,t){let n=e.verify;if(Ds(e))return"unavailable";if(n.status==="running")return"running";if(n.status!=="done")return"unknown";let r=n.report;return t==="static"?F8(r):U2(r.captures.find(o=>o.axis===t))}function z2(e,t){let n=j8.map(s=>{let i=M("img",{className:"capture__img",attrs:{alt:"",decoding:"async"}}),a=M("span",{className:"capture__result"}),l=M("li",{className:`capture capture--${s.id}`},[M("span",{className:"capture__view",attrs:{"aria-hidden":"true"}},[i]),M("span",{className:"capture__name",text:v(s.labelKey)}),a]);return{tile:s,img:i,result:a,root:l}}),r=M("p",{className:"strip__caption"}),o=M("div",{className:"strip"},[M("h3",{className:"strip__title",text:v("app.strip.label")}),M("ol",{className:"strip__row"},n.map(s=>s.root)),r]);return t.onDrawn(s=>{for(let i of n)s!==null&&Fr(i.img,s.svg)}),{root:o,update(s){let i=s.verify.status==="done"&&s.verify.stale;o.dataset.stale=String(i);for(let{tile:a,result:l,root:c}of n){let u=U8(s,a.axis);c.dataset.result=u,le(l,[lt(B2[u]),M("span",{text:v(F2[u])})])}Z(r,Ds(s)?v("app.check.unavailable"):i?v("app.check.stale"):v("app.strip.caption"))}}}function V2(e){let t=M("p",{className:"check__status",attrs:{"aria-live":"off"}}),n=M("span",{className:"check__progress",attrs:{"aria-hidden":"true"}},[M("span",{className:"check__progress-fill"})]),r=de(v("app.check.run"),{icon:"pass",onClick:()=>e.dispatch({type:"verify/request"})}),o=de(v("app.check.cancel"),{icon:"stop",small:!0,onClick:()=>e.dispatch({type:"verify/cancel"})}),s=M("div",{className:"check__detail"}),i=M("div",{className:"panel check"},[M("div",{className:"check__head"},[t,r,o]),n,s]),a=null;function l(u){return u.verdict==="pass"?v("app.check.verdict-pass"):u.verdict==="warn"?v("app.check.verdict-warn"):v("app.check.verdict-fail")}function c(u,d){let m=M("ul",{className:"checks"},u.checks.map(y=>{let b=y.status==="pass"?v("app.check.status-pass"):y.status==="warn"?v("app.check.status-warn"):v("app.check.status-fail"),x=M("li",{className:"checks__row"},[lt(y.status==="pass"?"pass":y.status==="warn"?"warn":"fail"),M("span",{className:"checks__name",text:v(bd(y.id,y.grade))}),M("span",{className:"checks__word",text:b}),M("span",{className:"checks__sentence",text:v(y.messageKey,{measured:Vn(y.measured),threshold:Vn(y.threshold)})}),M("span",{className:"checks__numbers",text:v("app.check.measured",{measured:Vn(y.measured),threshold:Vn(y.threshold)})})]);return x.dataset.result=y.status,x})),f=M("ul",{className:"checks checks--captures"},u.captures.map(y=>{let b=U2(y),x=M("li",{className:"checks__row"},[lt(B2[b]),M("span",{className:"checks__name",text:v(B8[y.axis])}),M("span",{className:"checks__word",text:v(F2[b])})]);return x.dataset.result=b==="partial"?"warn":b,x})),p=[],h=u.conditions.sizeMm;u.limits.maxDistanceMm!==null&&h!==null&&p.push(M("p",{className:"check__limit",text:v("app.check.limits",{distance:nr(u.limits.maxDistanceMm/10),size:zn(h)})})),u.limits.minModuleMm!==null&&p.push(M("p",{className:"check__limit",text:v("app.check.limits-module",{size:Vn(u.limits.minModuleMm)})}));let g=d.length===0?null:M("div",{className:"fixes"},[M("h3",{className:"notes__title",text:v("app.check.fixes")}),M("div",{className:"fixes__list"},d.map(y=>de(v(y.labelKey),{small:!0,onClick:()=>{e.dispatch({type:"fix/apply",fixId:y.id}),e.announce(v("app.check.fixed"))}})))]);le(s,[...p,m,M("details",{className:"advanced"},[M("summary",{className:"advanced__head",text:v("app.check.captures")}),M("div",{className:"advanced__body"},[f])]),g])}return{root:i,update(u){let d=u.verify;if(o.hidden=d.status!=="running",r.hidden=d.status==="running"||Ds(u),i.dataset.status=Ds(u)?"unavailable":d.status,d.status==="running"&&(n.style.setProperty("--fill",String(d.progress)),Z(t,`${v("app.check.running",{percent:Math.round(d.progress*100)})} ${d.axis===null?"":v(xd(d.axis))}`.trim())),a!==d){if(a=d,Ds(u)){Z(t,v("app.check.unavailable")),le(s,[M("p",{className:"field__hint",text:v("app.check.unavailable-detail")})]);return}switch(d.status){case"idle":Z(t,v("app.check.idle")),le(s,[M("p",{className:"field__hint",text:v("app.check.idle-detail")})]);return;case"running":return;case"failed":Z(t,yt(d.error)),le(s,[]);return;case"done":Z(t,d.stale?`${l(d.report)}. ${v("app.check.stale")}`:d.full?l(d.report):`${l(d.report)}. ${v("app.check.quick")}`),i.dataset.depth=d.full?"full":"quick",i.dataset.verdict=d.report.verdict,c(d.report,d.fixes);return}}},meta(u){if(Ds(u))return v("app.check.meta-unavailable");let d=u.verify;return d.status==="done"?d.report.verdict==="pass"?v("app.check.verdict-pass"):d.report.verdict==="warn"?v("app.check.verdict-warn"):v("app.check.verdict-fail"):d.status==="running"?v("app.strip.running"):v("app.check.idle")}}}var wW=Object.freeze(["scheme/dangerous","scheme/unusual","host/ip-literal","host/mixed-script","host/punycode","host/lookalike","url/userinfo","host/shortener","host/dynamic-qr","url/tracking-params","url/insecure","url/very-long","payload/open-wifi","payload/payment","payload/sends-message","payload/service-code"]);function iu(e){return`payload.safety.${e.replace("/",".")}`}var sa=["url","text","wifi","vcard","email","phone","sms","whatsapp","geo","event"],z8=new Set(["number","integer","amount","latitude","longitude"]);function V8(e){switch(e){case"url":return"url";case"email":return"email";case"tel":return"tel";case"date":return"date";case"datetime":return"datetime-local";case"secret":return"password";default:return"text"}}function q8(e){switch(e){case"integer":return"numeric";case"number":case"amount":case"latitude":case"longitude":return"decimal";case"url":return"url";case"email":return"email";case"tel":return"tel";default:return null}}function H8(e){return["url","email","tel","iban","bic","currency","country","secret"].includes(e)}function q2(e){let t=e.trim();return t===""?null:Number(t.replace(",","."))}function K8(e,t){return e===null?t===null:typeof t!="number"?!1:e===t||Number.isNaN(e)&&Number.isNaN(t)}function au(e,t){return t?e.issues:[]}function K2(e,t,n){let r=z8.has(e.kind),o=e.kind==="multiline"?M("textarea",{className:"input input--area",attrs:{rows:3}}):M("input",{className:"input",attrs:{type:V8(e.kind)}});o.setAttribute("autocomplete","off"),e.maxLength!==null&&o.setAttribute("maxlength",String(e.maxLength));let s=q8(e.kind);return s!==null&&o.setAttribute("inputmode",s),H8(e.kind)&&(o.setAttribute("spellcheck","false"),o.setAttribute("autocapitalize","off"),o.setAttribute("autocorrect","off")),(e.kind==="iban"||e.kind==="bic"||e.kind==="currency"||e.kind==="country")&&o.setAttribute("autocapitalize","characters"),o.addEventListener("input",()=>{t(r?q2(o.value):o.value)}),o.addEventListener("blur",n),{control:o,sync(i){if(r){K8(q2(o.value),i)||(o.value=i===null?"":String(i));return}let a=typeof i=="string"?i:i===null?"":String(i);o.value!==a&&(o.value=a)}}}function G8(e,t,n){let r=t.key,o=p=>{e.dispatch({type:"payload/field",key:r,value:p})},s=()=>n(r),i=v(t.labelKey),a=t.hintKey===null?void 0:v(t.hintKey);if(t.kind==="boolean"){let p=M("input",{attrs:{type:"checkbox"},on:{change:()=>{s(),o(p.checked)}}}),h=M("ul",{className:"field__issues",id:kt("issues")});return h.hidden=!0,p.setAttribute("aria-describedby",h.id),{root:M("div",{className:"field field--check"},[M("label",{className:"tick"},[p,M("span",{text:i})]),a===void 0?null:M("p",{className:"field__hint",text:a}),h]),update(y,b){p.checked=y.value===!0,vt(h,au(y,b))}}}if(t.kind==="select"){let p=M("select",{className:"input input--select",on:{change:()=>{s(),o(p.value)}}}),h=t.options.map(y=>M("option",{text:v(y.labelKey),attrs:{value:y.value}}));t.options.some(y=>y.value==="")||h.unshift(M("option",{text:v("app.content.choose"),attrs:{value:""}})),le(p,h);let g=ct(i,p,a);return t.required&&g.label.appendChild(H2()),{root:g.root,update(y,b){let x=typeof y.value=="string"?y.value:"";p.value!==x&&(p.value=x);let w=au(y,b);vt(g.issues,w),p.setAttribute("aria-invalid",String(w.some(k=>k.severity==="error")))}}}if(t.multiple)return _8(t,o,s,i,a);let{control:l,sync:c}=K2(t,o,s),u=ct(i,l,a);t.required&&(u.label.appendChild(H2()),l.setAttribute("aria-required","true"));let d=M("div",{className:"field__extras"});u.root.insertBefore(d,u.hint);let m=null;t.secret&&(m=de(v("app.content.show-secret"),{small:!0,icon:"eye",attrs:{"aria-pressed":"false","aria-controls":l.id},onClick:()=>{let p=l.getAttribute("type")==="password";l.setAttribute("type",p?"text":"password"),m?.setAttribute("aria-pressed",String(p))}}),d.appendChild(m));let f=t.kind==="url"?de(v("app.content.add-scheme"),{small:!0,onClick:()=>{o(`https://${l.value.trim()}`),l.focus()}}):null;return f!==null&&(f.hidden=!0,d.appendChild(f)),{root:u.root,update(p,h){c(p.value);let g=au(p,h);if(vt(u.issues,g),l.setAttribute("aria-invalid",String(g.some(y=>y.severity==="error"))),f!==null){let y=typeof p.value=="string"?p.value.trim():"";f.hidden=!(y!==""&&!y.includes(":")&&/^[^\s/]+\.[^\s]+/.test(y)&&p.issues.some(b=>b.code==="payload.issue.invalid-url"))}d.hidden=d.querySelectorAll("button:not([hidden])").length===0}}}function H2(){return M("span",{className:"tag",text:v("app.content.required")})}function _8(e,t,n,r,o){let s=kt("list"),i=M("div",{className:"list"}),a=M("ul",{className:"field__issues",id:kt("issues")});a.hidden=!0;let l=[],c=de(v("app.content.add-item"),{small:!0,icon:"plus",onClick:()=>{t([...l,""]),queueMicrotask(()=>i.querySelector(".list__row:last-child input")?.focus())}}),u=M("fieldset",{className:"field field--list"},[M("legend",{className:"field__label",id:s,text:r}),i,o===void 0?null:M("p",{className:"field__hint",text:o}),a,M("div",{className:"field__extras"},[c])]),d=f=>{le(i,Array.from({length:Math.max(1,f)},(p,h)=>{let g={...e},{control:y}=K2(g,x=>{let w=[...l];for(;w.length<=h;)w.push("");w[h]=typeof x=="string"?x:x===null?"":String(x),t(w)},n);y.setAttribute("aria-label",`${r} ${h+1}`),y.setAttribute("aria-describedby",a.id);let b=f>1?de(v("app.content.remove-item"),{small:!0,icon:"minus",attrs:{"aria-label":v("app.content.remove-numbered",{label:r,n:h+1})},onClick:()=>t(l.filter((x,w)=>w!==h))}):null;return M("div",{className:"list__row"},[y,b])}))},m=-1;return{root:u,update(f,p){l=Array.isArray(f.value)?[...f.value]:[];let h=Math.max(1,l.length);h!==m&&(d(h),m=h),i.querySelectorAll("input").forEach((g,y)=>{let b=l[y]??"";g.value!==b&&(g.value=b)}),c.hidden=f.maxItems!==null&&l.length>=f.maxItems,vt(a,au(f,p))}}}function Q8(e){let t=M("span",{className:"meter__fill"}),n=M("span",{className:"meter",attrs:{role:"meter","aria-valuemin":0,"aria-valuemax":100,"aria-label":v("app.capacity.label")}},[t]),r=M("span",{className:"encoding__reading"}),o=M("summary",{className:"encoding__head"},[M("span",{className:"encoding__title",text:v("app.capacity.label")}),n,r]),s=Ve(v("app.encoding.symbology"),[],h=>{let g=e.snapshot().catalogue.symbologies.find(x=>x.id===h);if(g===void 0)return;let y=e.snapshot().document.design.symbol.ecLevel,b=y!==void 0&&g.ecLevels.includes(y)?y:g.ecLevels[0];e.dispatch({type:"design/patch",patch:{path:["symbol"],value:{symbology:h,...b===void 0?{}:{ecLevel:b}}}})},"segments"),i=M("p",{className:"note note--warning"});i.hidden=!0;let a=Ve(v("app.encoding.ec"),[],h=>e.dispatch({type:"design/patch",patch:{path:["symbol","ecLevel"],value:h}})),l=M("dl",{className:"facts facts--mono"}),c=M("p",{className:"field__hint"}),u=M("details",{className:"encoding"},[o,M("div",{className:"encoding__body"},[c,l,s.root,i,a.root])]),d={L:"app.encoding.ec-l",M:"app.encoding.ec-m",Q:"app.encoding.ec-q",H:"app.encoding.ec-h"},m={numeric:"app.encoding.mode-numeric",alphanumeric:"app.encoding.mode-alphanumeric",byte:"app.encoding.mode-byte",kanji:"app.encoding.mode-kanji"},f=null,p="";return{root:u,update(h){let g=h.catalogue,y=h.design.effective;f!==g&&(f=g,s.setChoices(g.symbologies.map(C=>({value:C.id,label:v(C.labelKey)})))),s.set(y.symbol.symbology);let b=g.symbologies.find(C=>C.id===y.symbol.symbology),x=b?.noteKey??null;i.hidden=x===null,x!==null&&Z(i,v(x));let w=(b?.ecLevels??[]).join("");w!==p&&(p=w,a.setChoices((b?.ecLevels??[]).map(C=>({value:C,label:v(d[C]??C)}))));let k=h.symbol,S=k.status==="empty"?null:k.view;if(a.set(S?.ecLevel??y.symbol.ecLevel??null),S===null){t.style.setProperty("--fill","0"),n.setAttribute("aria-valuenow","0"),Z(r,v("app.capacity.empty")),le(l,[]),c.hidden=!0;return}let E=Math.round(S.capacity.fraction*100);t.style.setProperty("--fill",String(Math.min(1,S.capacity.fraction))),n.setAttribute("aria-valuenow",String(E)),n.setAttribute("aria-valuetext",v("app.capacity.value",{used:nr(S.capacity.usedBits),total:nr(S.capacity.totalBits),percent:E})),n.dataset.level=S.capacity.ofLargest>.85?"high":"normal",Z(r,v("app.capacity.value",{used:nr(S.capacity.usedBits),total:nr(S.capacity.totalBits),percent:E})),c.hidden=!1,Z(c,v("app.capacity.largest",{percent:Math.max(1,Math.round(S.capacity.ofLargest*100))}));let R=[[v("app.encoding.version"),S.version],[v("app.encoding.modules"),v("app.encoding.modules-value",{width:S.modules[0],height:S.modules[1]})],[v("app.encoding.ec"),S.ecLevel],[v("app.encoding.mask"),String(S.mask)],[v("app.encoding.segments"),S.segments.map(C=>v("app.encoding.segment",{mode:v(m[C.mode]??C.mode),chars:C.chars})).join("; ")]];le(l,R.flatMap(([C,A])=>[M("dt",{text:C}),M("dd",{text:A})]))}}}function G2(e){let t=Ve(v("app.content.types"),[],k=>e.dispatch({type:"payload/type",typeId:k}),"chips"),n=M("select",{className:"input input--select more__select",attrs:{"aria-label":v("app.content.more")},on:{change:()=>{n.value!==""&&e.dispatch({type:"payload/type",typeId:n.value})}}}),r=M("div",{className:"more"},[n]),o=M("p",{className:"content__description"}),s=M("p",{className:"content__action"},[M("span",{className:"content__action-label",text:v("app.content.when-scanned")}),M("span",{className:"content__action-text"})]),i=M("div",{className:"form"}),a=M("ul",{className:"field__issues"});a.hidden=!0;let l=M("div",{className:"content__notes"}),c=Q8(e),u=M("p",{className:"note note--info",text:v("studio.issue.design-locked")});u.hidden=!0;let d=M("div",{className:"content"},[t.root,i,a,s,o,u,l,c.root]),m=null,f=null,p="",h=new Map,g=new Set,y=k=>{if(!g.has(k)&&(g.add(k),f!==null)){let S=f.fields.find(E=>E.key===k);S!==void 0&&h.get(k)?.update(S,!0)}};function b(k){h=new Map;let S=new Map(k.fields.map(A=>[A.key,A])),E=[],R=[];for(let A of k.groups){let O=[],D=[];for(let T of A.fields){let I=S.get(T);if(I===void 0)continue;let U=G8(e,I,y);h.set(T,U),(I.advanced?D:O).push(U.root)}let N=T=>A.labelKey===null?M("div",{className:"form__group"},T):M("fieldset",{className:"form__group form__group--named"},[M("legend",{className:"legend",text:v(A.labelKey)}),...T]);O.length>0&&E.push(N(O)),D.length>0&&R.push(N(D))}let C=[...E];R.length>0&&C.push(M("details",{className:"advanced"},[M("summary",{className:"advanced__head",text:v("app.content.advanced")}),M("div",{className:"advanced__body"},R)])),le(i,C)}function x(k){let S=[];k.safety.length>0&&S.push(M("div",{className:"notes"},[M("h3",{className:"notes__title",text:v("app.content.safety")}),M("ul",{className:"notes__list"},k.safety.map(E=>M("li",{className:`note note--${E.severity==="danger"?"error":E.severity==="caution"?"warning":"info"}`},[lt(E.severity==="danger"?"fail":"warn"),M("span",{text:v(iu(E.code),E.params??{})})])))])),k.compatibility.length>0&&S.push(M("div",{className:"notes"},[M("h3",{className:"notes__title",text:v("app.content.compatibility")}),M("ul",{className:"notes__list"},k.compatibility.map(E=>M("li",{className:"note note--info"},[lt("pending"),M("span",{text:v(E.noteKey)})])))])),le(l,S)}function w(k){let S=k.catalogue;if(m!==S){m=S;let C=S.payloadTypes.flatMap(A=>A.types).filter(A=>A.generate);t.setChoices(sa.map(A=>C.find(O=>O.id===A)).filter(A=>A!==void 0).map(A=>({value:A.id,label:v(A.labelKey)}))),t.root.querySelector(".chips__grid")?.appendChild(r),le(n,[M("option",{text:v("app.content.more"),attrs:{value:""}}),...S.payloadTypes.map(A=>({group:A,types:A.types.filter(O=>O.generate&&!sa.includes(O.id))})).filter(({types:A})=>A.length>0).map(({group:A,types:O})=>M("optgroup",{attrs:{label:v(A.labelKey)}},O.map(D=>M("option",{text:v(D.labelKey),attrs:{value:D.id}}))))])}let E=k.form,R=k.document.typeId;if(t.set(sa.includes(R)?R:null),n.value=sa.includes(R)?"":R,r.dataset.active=sa.includes(R)?"false":"true",E!==f){let C=`${E.typeId}:${E.fields.map(A=>A.key).join(",")}`;C!==p?(f?.typeId!==E.typeId&&(g=new Set),p=C,b(E),x(E)):(f===null||f.safety!==E.safety||f.compatibility!==E.compatibility)&&x(E);for(let A of E.fields)h.get(A.key)?.update(A,g.has(A.key));vt(a,E.issues),Z(o,v(E.descriptionKey)),Z(s.lastElementChild,v(E.actionKey)),u.hidden=!E.designLocked,f=E}c.update(k)}return{root:d,update:w,meta:k=>v(k.form.labelKey)}}function kp(e,t,n){let r=Math.max(e,t);if(r<=n)return[e,t];let o=n/r;return[Math.max(1,Math.round(e*o)),Math.max(1,Math.round(t*o))]}function _2(e,t){let n=e/t,r=[];for(let o=0;o<t;o+=1){let s=o*n,i=(o+1)*n,a=Math.floor(s),l=Math.min(e,Math.ceil(i)),c=new Float64Array(l-a);for(let u=a;u<l;u+=1)c[u-a]=(Math.min(i,u+1)-Math.max(s,u))/n;r.push({start:a,weights:c})}return r}function vp(e,t,n){if(!Number.isInteger(t)||!Number.isInteger(n)||t<1||n<1||t>e.width||n>e.height)throw new TypeError("areaAverage: the target is a whole number of pixels, 1 to the source size.");if(t===e.width&&n===e.height)return e;let{data:r}=e,o=_2(e.width,t),s=new Float64Array(t*e.height*4);for(let l=0;l<e.height;l+=1)for(let c=0;c<t;c+=1){let{start:u,weights:d}=o[c],m=0,f=0,p=0,h=0;for(let y=0;y<d.length;y+=1){let b=(l*e.width+u+y)*4,x=d[y],w=r[b+3]*x;m+=r[b]*w,f+=r[b+1]*w,p+=r[b+2]*w,h+=w}let g=(l*t+c)*4;s[g]=m,s[g+1]=f,s[g+2]=p,s[g+3]=h}let i=_2(e.height,n),a=new Uint8ClampedArray(t*n*4);for(let l=0;l<n;l+=1){let{start:c,weights:u}=i[l];for(let d=0;d<t;d+=1){let m=0,f=0,p=0,h=0;for(let y=0;y<u.length;y+=1){let b=((c+y)*t+d)*4,x=u[y];m+=s[b]*x,f+=s[b+1]*x,p+=s[b+2]*x,h+=s[b+3]*x}let g=(l*t+d)*4;h>0&&(a[g]=Math.round(m/h),a[g+1]=Math.round(f/h),a[g+2]=Math.round(p/h)),a[g+3]=Math.round(h)}}return{width:t,height:n,data:a}}var W8="design.issue.svg-logo-later",X8="dom.issue.logo-downscaled",Y8=4*Ji*Ji,Q2=16;function Z8(e){let t=0;for(e[0]===239&&e[1]===187&&e[2]===191&&(t=3);t<e.length&&(e[t]===32||e[t]===9||e[t]===10||e[t]===13);)t+=1;return e[t]===60}async function $8(e){if(e.type==="image/svg+xml")return!0;let t=e.name;if(typeof t=="string"&&/\.svgz?$/i.test(t))return!0;try{return Z8(new Uint8Array(await e.slice(0,64).arrayBuffer()))}catch{return!1}}async function W2(e,t={}){if(await $8(e))return Y(P(W8,["logo"],"error"));let n=await io(e,{maxPixels:Y8,...t.deps===void 0?{}:{deps:t.deps}});if(!n.ok)return Y(P(gi(n.error),["logo"],"error",n.error.params));let r=n.value,[o,s]=kp(r.width,r.height,Ji),i=vp(r,o,s),a=Gn(i,{level:9});for(;a.length>Xc&&Math.max(o,s)>Q2;){let c=Math.max(o,s),u=Math.sqrt(Xc/a.length)*.95,d=Math.max(Q2,Math.min(c-1,Math.floor(c*u)));[o,s]=kp(o,s,d),i=vp(r,o,s),a=Gn(i,{level:9})}let l=[];return(o!==r.width||s!==r.height)&&l.push(P(X8,["logo"],"info",{width:o,height:s})),ae(Object.freeze({asset:Object.freeze({png:fc(a),width:o,height:s}),image:i,issues:Object.freeze(l)}))}function aa(e){return Array.isArray(e)?`[${e.map(aa).join(",")}]`:typeof e=="object"&&e!==null?`{${Object.entries(e).filter(([,n])=>n!==void 0).sort(([n],[r])=>n<r?-1:n>r?1:0).map(([n,r])=>`${JSON.stringify(n)}:${aa(r)}`).join(",")}}`:JSON.stringify(e)??"null"}function Ut(e,t,n,r){let o=r===void 0?{type:"design/patch",patch:{path:t,value:n}}:{type:"design/patch",patch:{path:t,value:n},coalesce:r};e.dispatch(o)}function ia(e,t,n){return I2(t,r=>e.dispatch({type:"history/begin",key:r}),r=>{let o=n(r);Ut(e,o.path,o.value)},r=>e.dispatch({type:"history/commit",key:r}))}function Bs(e,t){return j2(`${e}:${t.id}`,()=>t.thumbnail())}function la(e,t,n,r,o){let s=null,i=new Map;return{draw(a,l){let c=a?.id??null;if(c!==s){s=c,i=new Map;let u=[];for(let d of a?.params??[]){let m=!1,p=P2(d,(h,g)=>{let y=r();if(y===void 0)return;let b=o({id:y.id,params:{...y.params,[d.key]:h}}),x=`${n}:${d.key}`;g==="move"&&!m&&(e.dispatch({type:"history/begin",key:x}),m=!0),Ut(e,b.path,b.value),g==="end"&&m&&(e.dispatch({type:"history/commit",key:x}),m=!1)});i.set(d.key,p),u.push(p.root)}le(t,u),t.hidden=u.length===0}for(let u of a?.params??[])i.get(u.key)?.set(l?.params?.[u.key]??u.default)}}}function Z2(e,t){let n=M("div",{className:"gallery__grid"}),r=kt("preset"),o=de(v("app.style.shuffle"),{icon:"shuffle",onClick:()=>{let g=crypto.getRandomValues(new Uint32Array(1))[0]??1;e.dispatch({type:"design/shuffle",seed:g})}}),s=M("div",{className:"gallery"},[M("fieldset",{className:"gallery__set"},[M("legend",{className:"sr-only",text:v("app.style.presets")}),n]),M("div",{className:"gallery__actions"},[o,M("p",{className:"field__hint",text:v("app.style.shuffle-hint")})])]),i=[],a=[],l="",c=null,u=null,d=null,m=null;function f(g){let y=g.library;return y.status!=="on"&&y.status!=="file"?[]:y.kit?.kit.presets??[]}function p(g){i.length=0,a.length=0;let y=[],b=g.catalogue.presets.flatMap(k=>k.presets),x=f(g).map(k=>b.find(S=>S.id===k)).filter(k=>k!==void 0),w=[...x.length===0?[]:[{labelKey:"app.style.from-kit",presets:x}],...g.catalogue.presets];for(let k of w){y.push(M("p",{className:"gallery__category",text:v(k.labelKey)}));for(let S of k.presets){let E=M("img",{className:"choice__img",attrs:{alt:"",width:72,height:72,decoding:"async"}}),R=M("input",{className:"choice__input",attrs:{type:"radio",name:r,value:S.id},on:{change:()=>{R.checked&&e.dispatch({type:"design/preset",id:S.id})}}});i.push([S.id,E]),a.push([S.id,R]),y.push(M("label",{className:"choice choice--preset"},[R,M("span",{className:"choice__box"},[E,M("span",{className:"choice__label",text:v(S.labelKey)})])]))}}le(n,y)}function h(){if(m=null,!t.open||u===null||u===d)return;let g=u;d=g;let y=[...i],b=()=>{if(g!==u)return;let x=performance.now();for(;y.length>0&&performance.now()-x<12;){let[w,k]=y.shift(),S=g.get(w);S!==null&&Fr(k,S)}y.length>0&&setTimeout(b,0)};b()}return t.addEventListener("toggle",()=>{t.open&&m===null&&(m=setTimeout(h,0))}),{root:s,update(g){let y=f(g).join(",");(c!==g.catalogue||y!==l)&&(c=g.catalogue,l=y,p(g),d=null),g.presetThumbnails!==u&&(u=g.presetThumbnails,m!==null&&clearTimeout(m),m=setTimeout(h,d===null?0:350));let b=cu(e,g.document.design);for(let[x,w]of a){let k=x===b;w.checked!==k&&(w.checked=k),w.disabled=g.design.locked}o.disabled=g.design.locked},meta(g){let y=g.document.design,b=cu(e,y),x=b===null?void 0:e.registries.design.presets.get(b);return x!==void 0?v(x.labelKey):eO(y)?v("app.style.standard"):v("app.style.custom")}}}var J8=aa($2(cr()));function $2(e){return{modules:e.modules,regions:e.regions,background:e.background,frame:e.frame,logo:e.logo}}function eO(e){return aa($2(e))===J8}var X2=new WeakMap;function cu(e,t){let n=X2.get(t);if(n!==void 0)return n;let r=(s,i)=>aa({modules:s.modules,regions:s.regions,background:s.background,frame:s.frame,quietZone:s.quietZone,logo:i?s.logo:null}),o=null;for(let s of e.registries.design.presets.list()){let i=s.design.logo!==null;if(r(t,i)===r(s.design,i)){o=s.id;break}}return X2.set(t,o),o}function J2(e){let t=M("div",{className:"params"}),n=Ve(v("app.modules.shape"),[],i=>Ut(e,["modules","shape"],{id:i}),"swatches"),r=la(e,t,"modules",()=>e.snapshot().document.design.modules.shape,i=>({path:["modules","shape"],value:i})),o=M("div",{className:"panel"},[n.root,t]),s=null;return{root:o,update(i){let a=i.catalogue;s!==a&&(s=a,n.setChoices(a.moduleShapes.map(c=>({value:c.id,label:v(c.labelKey),picture:Bs("module",c)}))));let l=i.document.design.modules.shape;n.set(l.id),r.draw(a.moduleShapes.find(c=>c.id===l.id),l);for(let c of n.inputs())c.disabled=i.design.locked},meta(i){let a=i.catalogue.moduleShapes.find(l=>l.id===i.document.design.modules.shape.id);return a===void 0?"":v(a.labelKey)}}}var tO={finder:"concentric-7","sub-finder":"concentric-5","corner-finder":"corner-l"},ev=["finder","sub-finder","corner-finder"];function Sp(e,t,n){let r=n.document.design.regions,o=n.catalogue.rings.find(a=>a.id===e.id),s=n.catalogue.centres.find(a=>a.id===t.id),i={};for(let a of ev){let l=tO[a],c=r[a]??r.finder,u={outer:e,inner:t,...c?.outerPaint===void 0?{}:{outerPaint:c.outerPaint},...c?.innerPaint===void 0?{}:{innerPaint:c.innerPaint}};o!==void 0&&s!==void 0&&o.kinds.includes(l)&&s.kinds.includes(l)?i[a]=u:r[a]!==void 0&&a!=="finder"&&(i[a]=r[a])}return i}function tv(e){let t=e.document.design.modules.shape.id;return e.catalogue.moduleShapes.find(n=>n.id===t)?.family??"square"}function Y2(e,t){return e===void 0?[]:e.pairsByFamily[tv(t)]}function Ur(e){let t=e.document.design.regions.finder;return{outer:t?.outer??{id:"square"},inner:t?.inner??{id:"square-centre"}}}function nv(e){let t=M("div",{className:"params"}),n=M("div",{className:"params"}),r=(m,f)=>{Ut(e,["regions"],Sp(m,f,e.snapshot()))},o=Ve(v("app.eyes.ring"),[],m=>{let f=e.snapshot(),p=f.catalogue.rings.find(b=>b.id===m),{inner:h}=Ur(f),g=Y2(p,f),y=g.includes(h.id)?h:{id:g[0]??"square-centre"};r({id:m},y)},"swatches"),s=Ve(v("app.eyes.centre"),[],m=>r(Ur(e.snapshot()).outer,{id:m}),"swatches"),i=la(e,t,"ring",()=>Ur(e.snapshot()).outer,m=>({path:["regions"],value:Sp(m,Ur(e.snapshot()).inner,e.snapshot())})),a=la(e,n,"centre",()=>Ur(e.snapshot()).inner,m=>({path:["regions"],value:Sp(Ur(e.snapshot()).outer,m,e.snapshot())})),l=M("div",{className:"panel"},[o.root,t,s.root,M("p",{className:"field__hint",text:v("app.eyes.pairs-note")}),n]),c=null,u=null,d="";return{root:l,update(m){let f=m.catalogue,{outer:p,inner:h}=Ur(m),g=tv(m);(c!==f||u!==g)&&(c=f,u=g,o.setChoices(f.rings.filter(w=>w.pairsByFamily[g].length>0||w.id===p.id).map(w=>({value:w.id,label:v(w.labelKey),picture:Bs("ring",w)}))),d="");let y=f.rings.find(w=>w.id===p.id),b=y===void 0?f.centres.map(w=>w.id):Y2(y,m),x=`${p.id}:${b.join(",")}`;if(x!==d){d=x;let w=f.centres.filter(k=>b.includes(k.id)||k.id===h.id).map(k=>({value:k.id,label:v(k.labelKey),picture:Bs("centre",k)}));s.setChoices(w)}o.set(p.id),s.set(h.id),i.draw(y,p),a.draw(f.centres.find(w=>w.id===h.id),h);for(let w of[...o.inputs(),...s.inputs()])w.disabled=m.design.locked},meta(m){let{outer:f}=Ur(m),p=m.catalogue.rings.find(h=>h.id===f.id);return p===void 0?"":v(p.labelKey)}}}function js(e){let t=typeof e=="string"?e:e.srgb;if(/^#[0-9a-f]{6}$/i.test(t))return t.toLowerCase();let n=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(t);return n!==null?`#${n[1]}${n[1]}${n[2]}${n[2]}${n[3]}${n[3]}`.toLowerCase():/^#[0-9a-f]{8}$/i.test(t)?t.slice(0,7).toLowerCase():"#000000"}function lu(e,t){if(t==null)return[];switch(t.kind){case"solid":return[t.ink];case"entry":{let n=e.registries.design.fills.get(t.ref.id),r=[];for(let o of n?.params??[]){if(o.kind!=="colour")continue;let s=t.ref.params?.[o.key]??o.default;typeof s=="string"&&r.push(s)}return r}default:return t.stops.map(n=>n.ink)}}function Mp(e,t){let n=M("div",{className:"paint__body"}),r=(f,p)=>{let h=t.write(f),g=p===void 0?{type:"design/patch",patch:h}:{type:"design/patch",patch:h,coalesce:p};e.dispatch(g)},o=[];t.extra.includes("same")&&o.push({value:"same",label:v("app.colour.same")}),t.extra.includes("none")&&o.push({value:"none",label:v("app.colour.transparent")}),o.push({value:"solid",label:v("app.colour.kind-solid")},{value:"linear",label:v("app.colour.kind-linear")},{value:"radial",label:v("app.colour.kind-radial")}),t.extra.includes("entry")&&o.push({value:"entry",label:v("app.colour.kind-pattern")});let s=f=>f===void 0?"same":f===null?"none":f.kind==="conic"?"radial":f.kind,i=f=>lu(e,f)[0]??"#000000",a=Ve(t.label,o,f=>{let p=t.read(e.snapshot()),h=js(i(p??t.read(e.snapshot()))),g="#1d4ed8",y=p!=null&&"stops"in p&&p.stops.length>=2?[...p.stops]:[{offset:0,ink:h},{offset:1,ink:h===g?"#000000":g}];switch(f){case"same":r(void 0);return;case"none":r(null);return;case"solid":r({kind:"solid",ink:h});return;case"linear":r({kind:"linear",angle:45,stops:y,space:"symbol"});return;case"radial":r({kind:"radial",cx:.5,cy:.5,radius:.75,stops:y,space:"symbol"});return;case"entry":{let b=e.snapshot().catalogue.fills[0];b!==void 0&&r({kind:"entry",ref:{id:b.id}});return}}}),l="",c=[],u=(f,p,h,g)=>{let y=M("input",{className:"colour-well",attrs:{type:"color","aria-label":f}}),b=kt("hex"),x=M("input",{className:"input input--hex",id:b,attrs:{type:"text",spellcheck:"false",autocomplete:"off",maxlength:7,"aria-label":`${f}, ${v("app.colour.hex")}`}}),w=M("p",{className:"field__hint field__hint--error",text:v("app.colour.hex-invalid")});w.hidden=!0;let k=!1,S=(E,R)=>{let C=t.read(e.snapshot());C!=null&&(R==="move"&&!k&&(e.dispatch({type:"history/begin",key:g}),k=!0),r(h(C,E)),R==="end"&&k&&(e.dispatch({type:"history/commit",key:g}),k=!1))};return y.addEventListener("input",()=>S(y.value,"move")),y.addEventListener("change",()=>S(y.value,"end")),x.addEventListener("change",()=>{let E=x.value.trim(),R=E.startsWith("#")?E:`#${E}`,C=/^#[0-9a-f]{6}$/i.test(R);w.hidden=C,x.setAttribute("aria-invalid",String(!C)),C&&S(R.toLowerCase(),"end")}),c.push(E=>{if(E==null)return;let R=p(E);if(R===void 0)return;let C=js(R);y.value!==C&&(y.value=C),document.activeElement!==x&&x.value!==C&&(x.value=C)}),M("div",{className:"ink"},[M("span",{className:"ink__label",text:f}),y,x,w])};function d(f){c=[];let p=[];if(f==null){le(n,p);return}if(f.kind==="solid")p.push(u(v("app.colour.ink"),h=>h.kind==="solid"?h.ink:void 0,(h,g)=>({kind:"solid",ink:g}),`${t.key}:solid`));else if(f.kind==="entry"){let h=Ve(v("app.colour.pattern"),e.snapshot().catalogue.fills.map(b=>({value:b.id,label:v(b.labelKey),picture:Bs("fill",b)})),b=>r({kind:"entry",ref:{id:b}}),"swatches");h.set(f.ref.id);let g=M("div",{className:"params"}),y=la(e,g,`${t.key}:fill`,()=>{let b=t.read(e.snapshot());return b?.kind==="entry"?b.ref:void 0},b=>{let[x]=t.write({kind:"entry",ref:b});return x??{path:[],value:void 0}});c.push(b=>{b?.kind==="entry"&&(h.set(b.ref.id),y.draw(e.snapshot().catalogue.fills.find(x=>x.id===b.ref.id),b.ref))}),p.push(h.root,g)}else{let h=f;if(h.kind==="linear"){let x=or(v("app.colour.angle"),{min:0,max:360,step:1},w=>ou(w),ia(e,`${t.key}:angle`,w=>{let k=t.read(e.snapshot()),S=k?.kind==="linear"?{...k,angle:w}:k,[E]=t.write(S);return E??{path:[],value:void 0}}));c.push(w=>{w?.kind==="linear"&&x.set(w.angle)}),p.push(x.root)}else{let x=or(v("app.colour.radius"),{min:.1,max:2,step:.01},Vn,ia(e,`${t.key}:radius`,w=>{let k=t.read(e.snapshot()),S=k?.kind==="radial"?{...k,radius:w}:k,[E]=t.write(S);return E??{path:[],value:void 0}}));c.push(w=>{w?.kind==="radial"&&x.set(w.radius)}),p.push(x.root)}let g=M("ol",{className:"stops"});h.stops.forEach((x,w)=>{let k=or(v("app.colour.stop-position",{n:w+1}),{min:0,max:100,step:1},R=>oa(R/100),ia(e,`${t.key}:stop-${w}`,R=>{let C=t.read(e.snapshot());if(C==null||!("stops"in C))return{path:[],value:void 0};let A={...C,stops:C.stops.map((D,N)=>N===w?{...D,offset:R/100}:D)},[O]=t.write(A);return O??{path:[],value:void 0}}));c.push(R=>{if(R!=null&&"stops"in R){let C=R.stops[w];C!==void 0&&k.set(Math.round(C.offset*100))}});let S=u(v("app.colour.stop",{n:w+1}),R=>"stops"in R?R.stops[w]?.ink:void 0,(R,C)=>"stops"in R?{...R,stops:R.stops.map((A,O)=>O===w?{...A,ink:C}:A)}:R,`${t.key}:stop-ink-${w}`),E=h.stops.length>2?de(v("app.colour.remove-stop"),{small:!0,icon:"minus",attrs:{"aria-label":v("app.colour.remove-stop-numbered",{n:w+1})},onClick:()=>{let R=t.read(e.snapshot());R!=null&&"stops"in R&&r({...R,stops:R.stops.filter((C,A)=>A!==w)})}}):null;g.appendChild(M("li",{className:"stops__row"},[S,k.root,E]))});let y=h.stops.length<16?de(v("app.colour.add-stop"),{small:!0,icon:"plus",onClick:()=>{let x=t.read(e.snapshot());if(x==null||!("stops"in x))return;let w=x.stops[x.stops.length-1],k={offset:1,ink:w===void 0?"#000000":w.ink},S=[...x.stops,k].map((E,R,C)=>({...E,offset:C.length===1?0:R/(C.length-1)}));r({...x,stops:S})}}):null,b=Ve(v("app.colour.space"),[{value:"symbol",label:v("app.colour.space-symbol")},{value:"module",label:v("app.colour.space-module")}],x=>{let w=t.read(e.snapshot());w!=null&&"space"in w&&r({...w,space:x})});c.push(x=>{x!=null&&"space"in x&&b.set(x.space)}),p.push(g,...y===null?[]:[y],b.root)}le(n,p)}return{root:M("div",{className:"paint"},[a.root,n]),update(f){let p=t.read(f),h=s(p);a.set(h);let g=p==null?h:p.kind==="entry"?"entry":p.kind==="solid"?"solid":`${p.kind}:${p.stops.length}`;g!==l&&(l=g,d(p));for(let y of c)y(p);for(let y of a.inputs())y.disabled=f.design.locked}}}function rv(e){let t=Mp(e,{label:v("app.colour.modules"),read:u=>u.document.design.modules.paint,write:u=>[{path:["modules","paint"],value:u??{kind:"solid",ink:"#000000"}}],extra:["entry"],key:"colour:modules"}),n=Mp(e,{label:v("app.colour.eyes"),read:u=>u.document.design.regions.finder?.outerPaint,write:u=>{let m=e.snapshot().document.design.regions,f=m.finder??{outer:{id:"square"},inner:{id:"square-centre"}},p={};for(let h of ev){let g=h==="finder"?f:m[h];if(g===void 0)continue;let{outerPaint:y,innerPaint:b,...x}=g;p[h]=u==null?x:{...x,outerPaint:u,innerPaint:u}}return[{path:["regions"],value:p}]},extra:["same"],key:"colour:eyes"}),r=Mp(e,{label:v("app.colour.background"),read:u=>u.document.design.background,write:u=>[{path:["background"],value:u===void 0?null:u}],extra:["none"],key:"colour:background"}),o=M("p",{className:"contrast__ratio"}),s=M("p",{className:"contrast__verdict"}),i=M("ul",{className:"field__issues"}),a=M("span",{className:"contrast__swatch",attrs:{"aria-hidden":"true"}},[M("span",{className:"contrast__fg"})]),l=M("div",{className:"contrast",attrs:{role:"group","aria-label":v("app.colour.contrast")}},[M("p",{className:"legend",text:v("app.colour.contrast")}),M("div",{className:"contrast__row"},[a,M("div",{},[o,s])]),i]);return{root:M("div",{className:"panel"},[M("section",{className:"panel__part"},[t.root]),M("section",{className:"panel__part"},[n.root]),M("section",{className:"panel__part"},[r.root]),l]),update(u){t.update(u),n.update(u),r.update(u);let d=u.design.effective,m=[...lu(e,d.modules.paint),...lu(e,d.regions.finder?.outerPaint)],f=d.background===null?["#ffffff"]:lu(e,d.background),p=21,h=!1;for(let b of m)for(let x of f)try{let w=xo(b,x);w<p&&(p=w,h=nn(b)>nn(x))}catch{}a.style.setProperty("--fg",js(m[0]??"#000000")),a.style.setProperty("--bg",js(f[0]??"#ffffff")),Z(o,v("app.colour.contrast-value",{ratio:zn(p)}));let g=p>=7?"good":p>=4.5?"fair":"poor";l.dataset.level=h?"poor":g,Z(s,h?v("app.colour.contrast-inverted"):g==="good"?v("app.colour.contrast-good"):g==="fair"?v("app.colour.contrast-fair"):v("app.colour.contrast-poor"));let y=[];d.background===null&&y.push(v("app.colour.contrast-transparent")),u.form.designLocked&&y.push(v("studio.issue.design-locked")),le(i,y.map(b=>M("li",{className:"note note--info",text:b}))),i.hidden=y.length===0},meta(u){let d=u.document.design.modules.paint,m=u.document.design.background,f=d.kind==="solid"?js(d.ink):v("app.colour.kind-short-gradient"),p=m===null?v("app.colour.transparent"):m.kind==="solid"?js(m.ink):v("app.colour.kind-short-gradient");return v("app.colour.meta",{fg:f,bg:p})}}}function ov(e){let t=M("input",{attrs:{type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/svg+xml"}});t.hidden=!0;let n=M("ul",{className:"field__issues"});n.hidden=!0;let r=Ve(v("app.logo.choose"),[],p=>{let h=e.snapshot().document.design;if(p==="none"){e.dispatch({type:"design/patch",patch:np(h)});return}if(p==="asset")return;let g=h.logo;e.dispatch({type:"design/patch",patch:[{path:["logo"],value:{source:{kind:"icon",id:p},size:g?.size??.2,clear:g?.clear??"box",padding:g?.padding??1,plate:g?.plate??null}},...g?.source.kind==="asset"?[{path:["assets"],value:void 0}]:[]]})},"swatches"),o=de(v("app.logo.upload"),{icon:"image",onClick:()=>t.click()}),s=async p=>{let h=await W2(p);if(!h.ok){vt(n,[h.error]),e.announce(v(h.error.code,h.error.params??{}));return}vt(n,h.value.issues),e.dispatch({type:"design/patch",patch:tp(e.snapshot().document.design,h.value.asset)}),e.announce(v("app.logo.added"))};t.addEventListener("change",()=>{let p=t.files?.[0];t.value="",p!==void 0&&s(p)});let i=or(v("app.logo.size"),{min:.05,max:.4,step:.01},p=>oa(p),ia(e,"logo:size",p=>({path:["logo","size"],value:p}))),a=or(v("app.logo.padding"),{min:0,max:4,step:.5},p=>v("app.logo.padding-value",{value:zn(p)}),ia(e,"logo:padding",p=>({path:["logo","padding"],value:p}))),l=Ve(v("app.logo.clear"),[{value:"none",label:v("app.logo.clear-none")},{value:"box",label:v("app.logo.clear-box")},{value:"shape",label:v("app.logo.clear-shape")}],p=>Ut(e,["logo","clear"],p)),c=Ve(v("app.logo.plate"),[{value:"none",label:v("app.logo.plate-none")},{value:"square",label:v("app.logo.plate-square")},{value:"rounded",label:v("app.logo.plate-rounded")},{value:"circle",label:v("app.logo.plate-circle")}],p=>{let h=e.snapshot().document.design.background,g=h?.kind==="solid"?h:{kind:"solid",ink:"#ffffff"};Ut(e,["logo","plate"],p==="none"?null:{paint:g,shape:p})}),u=M("div",{className:"note note--warning logo__level"},[M("span",{text:v("app.logo.level-hint")}),de(v("app.logo.use-h"),{small:!0,onClick:()=>Ut(e,["symbol","ecLevel"],"H")})]),d=M("div",{className:"logo__settings"},[i.root,l.root,a.root,c.root,u]),m=M("div",{className:"panel"},[r.root,M("div",{className:"logo__upload"},[o,M("p",{className:"field__hint",text:v("app.logo.upload-hint")}),t]),n,d]),f="";return{root:m,update(p){let h=p.document.design,g=h.logo,y=g?.source.kind==="asset",b=`${p.catalogue.icons.length}:${y}`;if(b!==f){f=b;let k=[{value:"none",label:v("app.logo.none")}];y&&k.push({value:"asset",label:v("app.logo.picture")});for(let S of p.catalogue.icons)k.push({value:S.id,label:v(S.labelKey),picture:Bs("icon",S)});r.setChoices(k)}r.set(g===null?"none":g.source.kind==="asset"?"asset":g.source.id),d.hidden=g===null,g!==null&&(i.set(g.size),a.set(g.padding),l.set(g.clear),c.set(g.plate?.shape??"none"));let x=p.symbol.status==="empty"?h.symbol.ecLevel:p.symbol.view.ecLevel;u.hidden=g===null||x==="H";let w=p.design.locked;for(let k of[...r.inputs(),...l.inputs(),...c.inputs()])k.disabled=w;o.disabled=w},meta(p){let h=p.document.design.logo;if(h===null)return v("app.logo.none");if(h.source.kind==="asset")return v("app.logo.picture");let g=h.source,y=p.catalogue.icons.find(b=>b.id===g.id);return y===void 0?"":v(y.labelKey)}}}function sv(e){let t=M("div",{className:"params"}),n=Ve(v("app.frame.choose"),[],u=>{if(u==="none"){Ut(e,["frame"],null);return}let d=e.snapshot().catalogue.frames.find(p=>p.id===u),m=e.snapshot().document.design.frame,f=m?.text?.content??v("app.frame.default-caption");Ut(e,["frame"],{ref:{id:u},...d?.text===null||d===void 0?{}:{text:{content:f.slice(0,d.text.maxChars),fontId:m?.text?.fontId??Uo[1]}}})},"swatches"),r=M("input",{className:"input",attrs:{type:"text",autocomplete:"off"},on:{input:()=>{let u=e.snapshot().document.design.frame;u!==null&&Ut(e,["frame","text"],{content:r.value,fontId:u.text?.fontId??Uo[1]},"caption")}}}),o=ct(v("app.frame.caption"),r),s=Ve(v("app.frame.font"),[{value:Uo[0],label:v("text.font.plex-sans-regular")},{value:Uo[1],label:v("text.font.plex-sans-bold")}],u=>{let d=e.snapshot().document.design.frame;d!==null&&Ut(e,["frame","text"],{content:d.text?.content??"",fontId:u})}),i=M("div",{className:"frame__text"},[o.root,s.root]),a=la(e,t,"frame",()=>e.snapshot().document.design.frame?.ref,u=>({path:["frame","ref"],value:u})),l=M("div",{className:"panel"},[n.root,i,t]),c=null;return{root:l,update(u){let d=u.catalogue;c!==d&&(c=d,n.setChoices(d.frames.map(y=>({value:y.id,label:v(y.labelKey),picture:Bs("frame",y)}))));let m=u.document.design.frame,f=m?.ref.id??"none";n.set(f);let p=d.frames.find(y=>y.id===f),h=p?.text??null;if(i.hidden=m===null||h===null,h!==null&&m!==null){r.maxLength=h.maxChars;let y=m.text?.content??"";r.value!==y&&(r.value=y),Z(o.hint,v("app.frame.caption-hint",{chars:h.maxChars})),o.hint.hidden=!1,s.set(m.text?.fontId??Uo[1])}a.draw(f==="none"?void 0:p,m?.ref);let g=u.design.locked;for(let y of[...n.inputs(),...s.inputs()])y.disabled=g;r.disabled=g},meta(u){let d=u.document.design.frame?.ref.id??"none",m=u.catalogue.frames.find(f=>f.id===d);return m===void 0?"":v(m.labelKey)}}}function Ep(e,t){let n=M("input",{className:"input input--number",attrs:{type:"number",inputmode:"decimal",...t}});return n.addEventListener("change",()=>{let r=n.value.trim();e(r===""?null:Number(r))}),n}function iv(e){let t=Ep(u=>Ut(e,["output","sizeMm"],u===null?void 0:u),{min:5,max:2e3,step:.5}),n=ct(v("app.print.size"),t,v("app.print.size-hint")),r=Ve(v("app.print.basis"),[{value:"artwork",label:v("app.print.basis-artwork")},{value:"symbol",label:v("app.print.basis-symbol")}],u=>Ut(e,["output","sizeBasis"],u)),o=Ep(u=>Ut(e,["output","dpi"],u===null?void 0:u),{min:72,max:2400,step:1}),s=ct(v("app.print.dpi"),o,v("app.print.dpi-hint")),i=Ep(u=>e.dispatch({type:"conditions",conditions:{distanceMm:u===null?null:u*10}}),{min:1,max:1e4,step:1}),a=ct(v("app.print.distance"),i,v("app.print.distance-hint")),l=M("ul",{className:"field__issues"});return{root:M("div",{className:"panel"},[n.root,r.root,s.root,a.root,l]),update(u){let d=u.document.design.output,m=(g,y)=>{let b=y==null?"":String(y);document.activeElement!==g&&g.value!==b&&(g.value=b)};m(t,d.sizeMm),m(o,d.dpi);let f=u.document.conditions.distanceMm;m(i,f===null?null:f/10),r.set(d.sizeBasis??"artwork");let p=u.refusal;vt(l,p!==null&&p.issues.some(g=>g.path[0]==="output"||g.path[0]==="conditions")?p.issues:[]);let h=u.design.locked;t.disabled=h,o.disabled=h;for(let g of r.inputs())g.disabled=h},meta(u){let d=u.document.design.output.sizeMm;return d===void 0?v("app.print.not-set"):v("app.print.meta",{size:zn(d)})}}}function Tp(e){let t=e.library;return t.status==="on"||t.status==="file"?t:null}function av(e,t){let n=N=>e.announce(yt(Fe(N))),r=M("input",{className:"input",attrs:{type:"text",autocomplete:"off",maxlength:80,placeholder:v("app.library.untitled")}});Os(r);let o=ct(v("app.library.name"),r,v("app.library.name-hint")),s=()=>r.value.trim()===""?v("app.library.untitled"):r.value.trim(),i=de(v("app.library.save-design"),{icon:"save",primary:!0,onClick:async()=>{let N=await e.studio.run({type:"library/save",name:s()});if(!N.ok)return n(N.error);r.value="",e.announce(v("app.library.saved"))}}),a=de(v("app.library.save-kit"),{icon:"save",onClick:async()=>{let N=e.snapshot().document.design,T=t(N),I={...sp(N),presets:T===null?[]:[T]},U=await e.studio.run({type:"library/save-kit",name:s(),kit:I});if(!U.ok)return n(U.error);r.value="",e.announce(v("app.library.kit-saved"))}}),l=M("ul",{className:"library__list"}),c=M("ul",{className:"library__list"}),u=M("p",{className:"field__hint",text:v("app.library.empty")}),d=M("p",{className:"note note--warning",text:v("app.library.unsaved")});d.hidden=!0;let m=M("ul",{className:"field__issues"});m.hidden=!0;let f=M("h3",{className:"notes__title",text:v("app.library.designs")}),p=M("h3",{className:"notes__title",text:v("app.library.kits")}),h=M("input",{attrs:{type:"file",accept:`${wi},application/json`}});h.hidden=!0;let g=M("input",{attrs:{type:"file",accept:".json,application/json"}});g.hidden=!0;async function y(N){let T=await e.studio.run({type:"library/open-file",file:N});if(!T.ok)return n(T.error);if(!T.value.opened){vt(m,T.value.issues),e.announce(T.value.issues.map(Ft).join(" "));return}let I=Tp(e.snapshot());e.announce(v("app.library.opened",{designs:I?.items.length??0,kits:I?.kits.length??0}))}async function b(N){let T=await a2(N),I=e.snapshot().document.design;e.dispatch({type:"design/replace",design:T});let U=e.snapshot();U.document.design!==I?e.announce(v("app.design.applied")):U.refusal!==null&&e.announce(U.refusal.issues.map(Ft).join(" "))}h.addEventListener("change",()=>{let N=h.files?.[0];h.value="",N!==void 0&&y(N)}),g.addEventListener("change",()=>{let N=g.files?.[0];g.value="",N!==void 0&&b(N)});let x=de(v("app.library.save-file"),{icon:"download",onClick:async()=>{let N=await e.studio.run({type:"library/save-file"});if(!N.ok)return n(N.error);e.announce(v("app.export.saved",{filename:N.value.filename}))}}),w=de(v("app.library.open-file"),{icon:"open",onClick:()=>h.click()}),k=de(v("app.design.save-file"),{icon:"save",onClick:()=>{let N=e.snapshot().document.design,T=new TextEncoder().encode(JSON.stringify(N,null," ")),I=_n(T,"qr-design.json","application/json");I.ok?e.announce(v("app.export.saved",{filename:"qr-design.json"})):n(I.error)}}),S=de(v("app.design.open-file"),{icon:"open",onClick:()=>g.click()}),E=M("div",{className:"panel library"},[M("p",{className:"field__hint",text:v("app.library.intro")}),M("div",{className:"library__save"},[o.root,i,a]),d,m,u,f,l,p,c,M("div",{className:"library__files"},[x,w,h]),M("h3",{className:"notes__title",text:v("app.design.title")}),M("p",{className:"field__hint",text:v("app.design.intro")}),M("div",{className:"library__files"},[k,S,g])]);function R(N,T,I,U,q){return M("li",{className:"library__item"},[M("div",{className:"library__about"},[M("span",{className:"library__name",text:N}),M("span",{className:"library__when",text:T}),q?M("span",{className:"tag",text:v("app.library.in-use")}):null]),M("div",{className:"library__actions"},[de(v("app.library.use"),{small:!0,attrs:{"aria-label":v("app.library.use-named",{name:N})},onClick:()=>void I()}),de(v("app.library.remove"),{small:!0,icon:"minus",attrs:{"aria-label":v("app.library.remove-named",{name:N})},onClick:()=>void U()})])])}function C(N,T){let I=T.catalogue.payloadTypes.flatMap(q=>q.types).find(q=>q.id===N.typeId),U=v("app.library.saved-at",{date:xp(N.savedAt)});return R(N.name,I===void 0?U:`${v(I.labelKey)}. ${U}`,async()=>{let q=await e.studio.run({type:"library/load",id:N.id});if(!q.ok)return n(q.error);e.announce(v("app.library.used",{name:N.name}))},async()=>{let q=await e.studio.run({type:"library/remove",id:N.id});if(!q.ok)return n(q.error);e.announce(v("app.library.removed",{name:N.name}))},!1)}function A(N,T){return R(N.name,v("app.library.saved-at",{date:xp(N.savedAt)}),async()=>{let I=await e.studio.run({type:"library/load-kit",id:N.id});if(!I.ok)return n(I.error);e.announce(v("app.library.kit-used",{name:N.name}))},async()=>{let I=await e.studio.run({type:"library/remove-kit",id:N.id});if(!I.ok)return n(I.error);e.announce(v("app.library.removed",{name:N.name}))},N.id===T)}let O=null;function D(N){let T=N.library;if(T===O)return;O=T;let I=Tp(N),U=I?.items??[],q=I?.kits??[];i.disabled=I===null,a.disabled=I===null,d.hidden=!(T.status==="file"&&T.unsaved),vt(m,I?.skipped??[]),f.hidden=U.length===0,p.hidden=q.length===0,T.status==="failed"?(Z(u,yt(T.error)),u.hidden=!1):(Z(u,v("app.library.empty")),u.hidden=U.length>0||q.length>0),le(l,U.map(H=>C(H,N))),le(c,q.map(H=>A(H,I?.kit?.id??null)))}return window.addEventListener("beforeunload",N=>{let T=e.snapshot().library;T.status==="file"&&T.unsaved&&(N.preventDefault(),N.returnValue="")}),{root:E,update:D,meta:N=>{let T=Tp(N);return v("app.library.count",{designs:T?.items.length??0,kits:T?.kits.length??0})},openFile:y,openDesign:b}}var Rp=96/25.4;function Ap(e,t,n){if(e.unitsPerMm!==void 0&&e.unitsPerMm>0)return e.width/e.unitsPerMm;let r=t===null?e.width:t.modules[0]+2*t.quietZone,o=n.document.conditions.sizeMm??_c;return e.width*o/r}function lv(e,t){let n=t.logo!==null&&t.logo.source.kind==="asset"?{...t,logo:null}:t,r=[n,{...n,symbol:{symbology:"qr",ecLevel:n.symbol.ecLevel??"M"}}];for(let o of r)try{let s=Fn(qc,{symbology:o.symbol.symbology,...o.symbol.ecLevel===void 0?{}:{ecLevel:o.symbol.ecLevel}},e.symbologies),i=tn(s,o,{registries:e.design,seed:1}).scene;return{svg:yn(i,{idPrefix:"sample-"}),scene:i}}catch{}return null}var cv=85.6,nO=53.98/85.6,wo=Rp;function rO(e){let t=e.verify;return t.status!=="done"||t.stale?null:t.report.verdict==="pass"?v("app.check.verdict-pass"):t.report.verdict==="warn"?v("app.check.verdict-warn"):v("app.check.verdict-fail")}function oO(e){for(let t of e.form.fields){if(t.secret||t.advanced)continue;let n=Array.isArray(t.value)?t.value.find(o=>o!==""):t.value;if(typeof n!="string"||n.trim()==="")continue;let r=n.trim().replace(/\s+/g," ");return r.length>60?`${r.slice(0,57)}...`:r}return null}function sO(e,t,n){let r=[`${v(t.symbologyLabelKey)}. ${v(e.form.labelKey)}.`];if(n)r.push(v("app.proof.alt-stale"));else{let s=oO(e);s!==null&&r.push(v("app.proof.alt-summary",{summary:s}))}r.push(v(e.form.actionKey));let o=rO(e);return o!==null&&r.push(v("app.proof.alt-check",{verdict:o})),r.join(" ")}function uv(e,t,n,r){e.setAttribute("viewBox",r?`0 0 ${t} 18`:`0 0 18 ${t}`),e.setAttribute("width",String(r?t:18)),e.setAttribute("height",String(r?18:t));let s=[];if(t>0&&n>0){let i=t/n,a=[1,2,5,10,20,50,100,200,500].find(u=>u*i>=5)??1e3,l=a*(a===2?5:10),c="";for(let u=0;u<=n+1e-9;u+=a){let d=Math.round(u*i)+.5,m=Math.abs(u%l)<1e-9,f=!m&&Math.abs(u%(l/2))<1e-9,p=m?9:f?6:3.5;if(c+=r?`M${d} 18v-${p}`:`M18 ${d}h-${p}`,m&&u>0&&u<n-a*.5){let h=It("text",r?{x:d+2,y:8}:{x:7,y:d-2},[String(Math.round(u))]);r||h.setAttribute("transform",`rotate(-90 7 ${d-2})`),s.push(h)}}s.unshift(It("path",{d:c}))}le(e,s)}function dv(e,t,n){let r=[],o=null,s="none",i=!1,a=M("img",{className:"proof__img",attrs:{alt:"",decoding:"sync"}}),l=It("svg",{class:"proof__quiet","aria-hidden":"true",preserveAspectRatio:"none"}),c=M("span",{className:"proof__badge"}),u=M("div",{className:"proof__stage"},[a,l,c]),d=It("svg",{class:"ruler ruler--top","aria-hidden":"true"}),m=It("svg",{class:"ruler ruler--left","aria-hidden":"true"}),f=["tl","tr","bl","br"].map(X=>M("span",{className:`crop crop--${X}`,attrs:{"aria-hidden":"true"}})),p=M("div",{className:"proof__frame"},[M("span",{className:"proof__corner",attrs:{"aria-hidden":"true"}}),d,m,u,...f]),h=It("svg",{class:"proof__registration",viewBox:"0 0 24 24","aria-hidden":"true"},[It("circle",{cx:12,cy:12,r:6.5}),It("path",{d:"M12 1v22M1 12h22"})]),g=M("p",{className:"proof__slug"}),y=M("div",{className:"proof__sheet"},[h,p,g]);y.dataset.surround="light";let b=M("p",{className:"proof__note",attrs:{role:"note"}});b.hidden=!0;let x=Ve(v("app.proof.surround"),[{value:"light",label:v("app.proof.surround-light")},{value:"dark",label:v("app.proof.surround-dark")}],X=>{y.dataset.surround=X},"segments",{legendHidden:!0});x.set("light");let w=de(v("app.proof.true-size"),{icon:"ruler",small:!0,attrs:{"aria-pressed":"false"},onClick:()=>{i=!i,w.setAttribute("aria-pressed",String(i)),T()}}),k=M("div",{className:"calibrate__card",attrs:{"aria-hidden":"true"}}),S=M("input",{className:"slider__input",id:"calibrate-scale",attrs:{type:"range",min:2,max:8,step:.01},on:{input:()=>{wo=Number(S.value),E(),T()}}}),E=()=>{k.style.setProperty("width",`${cv*wo}px`),k.style.setProperty("height",`${cv*nO*wo}px`)},R=M("dialog",{className:"calibrate",attrs:{"aria-labelledby":"calibrate-title"}},[M("h2",{id:"calibrate-title",className:"calibrate__title",text:v("app.proof.calibrate-title")}),M("p",{className:"calibrate__help",text:v("app.proof.calibrate-help")}),M("div",{className:"calibrate__bench"},[k]),M("div",{className:"slider"},[M("label",{className:"slider__label",text:v("app.proof.calibrate-scale"),attrs:{for:"calibrate-scale"}}),S]),M("div",{className:"calibrate__actions"},[de(v("app.proof.calibrate-reset"),{small:!0,onClick:()=>{wo=Rp,S.value=String(wo),E(),T()}}),de(v("app.proof.calibrate-done"),{primary:!0,small:!0,onClick:()=>R.close()})])]),C=de(v("app.proof.calibrate"),{small:!0,onClick:()=>{S.value=String(wo),E(),R.showModal()}}),A=M("div",{className:"proof__bar"},[x.root,w,C]),O=M("h2",{className:"sr-only",id:"proof-title",text:v("app.proof.label")}),D=M("div",{className:"proof__bar-host"},[A]),N=M("section",{className:"proof",attrs:{"aria-labelledby":"proof-title"}},[O,D,M("div",{className:"proof__desk"},[y]),b,n,t,R]);function T(){if(o===null)return;let X=o.scene.height/o.scene.width;u.style.setProperty("--ratio",String(X)),i?(u.style.setProperty("--true-width",`${o.widthMm*wo}px`),y.dataset.size="true"):y.dataset.size="fit",I()}function I(){if(o===null)return;let X=u.clientWidth,ne=u.clientHeight,me=o.widthMm*o.scene.height/o.scene.width;uv(d,X,o.widthMm,!0),uv(m,ne,me,!1)}typeof ResizeObserver=="function"&&new ResizeObserver(()=>I()).observe(u);function U(X,ne,me){if(ne===null||me){le(l,[]);return}let fe=ne.quietZone;l.setAttribute("viewBox",`0 0 ${X.width} ${X.height}`),le(l,[It("rect",{x:fe,y:fe,width:X.width-2*fe,height:X.height-2*fe,"vector-effect":"non-scaling-stroke"})])}function q(X,ne,me){let fe=[];X!==null&&(fe.push(v("app.proof.slug-version",{version:X.version})),fe.push(v("app.proof.slug-level",{level:X.ecLevel})),fe.push(v("app.proof.slug-modules",{width:X.modules[0],height:X.modules[1]})),fe.push(v("app.proof.slug-mask",{mask:X.mask}))),fe.push(v("app.proof.slug-width",{size:zn(ne)})),le(g,[M("span",{className:"proof__slug-label",text:me?v("app.proof.sample"):v("app.proof.label")}),...fe.map(ke=>M("span",{text:ke}))])}function H(X){o=X;for(let ne of r)ne(X)}let W=null,$=null;function be(X){let ne=X.symbol,me=X.design.effective,fe=null,ke=null,Oe;if(ne.status==="empty")Oe="sample",W!==me&&(W=me,$=lv(e.registries,me)),$!==null&&(fe={svg:$.svg,scene:$.scene,widthMm:Ap($.scene,null,X),sample:!0});else{Oe=ne.status,ke=ne.view;let ie=X.preview;ie!==null&&(fe={svg:ie.svg,scene:ie.scene,widthMm:Ap(ie.scene,ke,X),sample:!1})}fe===null?D2(a):Fr(a,fe.svg),Oe==="ok"&&(s==="sample"||s==="none")&&(u.classList.remove("proof__stage--printing"),u.offsetWidth,u.classList.add("proof__stage--printing")),s=Oe,u.dataset.state=Oe,u.dataset.ground=me.background===null?"transparent":"solid",Z(c,Oe==="stale"?v("app.proof.not-updated"):Oe==="sample"?v("app.proof.sample"):""),c.hidden=Oe==="ok",Oe==="sample"?(a.alt=v("app.proof.alt-sample"),Z(b,v("app.proof.sample-note")),b.hidden=!1):ke!==null&&(a.alt=sO(X,ke,Oe==="stale"),ne.status==="stale"?(Z(b,`${v("app.proof.not-updated")}. ${v(ne.issue.code,ne.issue.params??{})}`),b.hidden=!1):b.hidden=!0),fe!==null&&(U(fe.scene,ke,me.frame!==null),q(ke,fe.widthMm,fe.sample)),(o?.svg!==fe?.svg||o?.widthMm!==fe?.widthMm||o?.sample!==fe?.sample)&&H(fe),T()}return u.addEventListener("animationend",()=>u.classList.remove("proof__stage--printing")),{root:N,toolbar:A,update:be,current:()=>o,onDrawn(X){r.push(X)}}}var iO=["svg","png","pdf","eps","jpeg","webp"],ca={svg:"app.export.format-svg",png:"app.export.format-png",pdf:"app.export.format-pdf",eps:"app.export.format-eps",jpeg:"app.export.format-jpeg",webp:"app.export.format-webp"},aO={svg:"app.export.hint-svg",png:"app.export.hint-png",pdf:"app.export.hint-pdf",eps:"app.export.hint-eps",jpeg:"app.export.hint-jpeg",webp:"app.export.hint-webp"};function mv(e,t,n){let r={format:"png",sizing:"pixels",widthPx:null,sizeMm:null,dpi:null,colourSpace:null,bleedMm:0,cropMarks:!1,quality:.92};function o(){let T={};return(r.format==="png"||r.format==="jpeg"||r.format==="webp")&&(r.sizing==="pixels"&&r.widthPx!==null&&(T.widthPx=r.widthPx),r.sizing==="print"&&(r.sizeMm!==null&&(T.sizeMm=r.sizeMm),r.dpi!==null&&(T.dpi=r.dpi)),r.format!=="png"&&(T.quality=r.quality)),(r.format==="pdf"||r.format==="eps")&&(r.sizeMm!==null&&(T.sizeMm=r.sizeMm),r.colourSpace!==null&&(T.colourSpace=r.colourSpace)),r.format==="pdf"&&(r.bleedMm>0&&(T.bleedMm=r.bleedMm),r.cropMarks&&(T.cropMarks=!0)),T}function s(T){e.announce(yt(Fe(T)))}async function i(){let T=await e.studio.run({type:"export",format:r.format,options:o()});if(!T.ok){s(T.error);return}let I=_n(T.value.bytes,T.value.filename,T.value.mime);if(!I.ok){s(I.error);return}let U=T.value.issues.map(Ft);e.announce([v("app.export.saved",{filename:T.value.filename}),...U].join(" "))}async function a(){let T=await e.studio.run({type:"export",format:"png",options:{widthPx:1024}});if(!T.ok){s(T.error);return}let I=await Hy(T.value.bytes);I.ok?e.announce(v("app.export.copied-image")):s(I.error)}async function l(){let T=await e.studio.run({type:"export",format:"svg",options:{}});if(!T.ok){s(T.error);return}let I=await _o(new TextDecoder().decode(T.value.bytes));I.ok?e.announce(v("app.export.copied-svg")):s(I.error)}function c(){let T=t()?.current()??null;T===null||T.sample||(Fr(n,T.svg),n.style.setProperty("width",`${T.widthMm}mm`),n.alt=v("app.export.print-alt",{size:zn(T.widthMm)}))}function u(){c(),window.print()}window.addEventListener("beforeprint",c);let d=de(v("app.export.download-format",{format:v(ca.png)}),{icon:"download",primary:!0,onClick:()=>void i()}),m=de(v("app.export.copy-image"),{icon:"copy",onClick:()=>void a()}),f=de(v("app.export.copy-svg"),{icon:"copy",onClick:()=>void l()}),p=de(v("app.export.print"),{icon:"print",onClick:u}),h=M("div",{className:"proof__actions"},[d,m,f,p]),g=de(v("app.export.download-format",{format:v(ca.png)}),{icon:"download",primary:!0,onClick:()=>void i()}),y=M("span",{className:"dock__note"}),b=M("div",{className:"dock",attrs:{role:"region","aria-label":v("app.dock.label")}},[y,g]),x=M("p",{className:"note note--info"});x.hidden=!0;let w=M("p",{className:"field__hint"}),k=Ve(v("app.export.format"),iO.map(T=>({value:T,label:v(ca[T])})),T=>{r.format=T,A(),D()},"segments");k.set(r.format);let S=M("div",{className:"export__options"}),E=de(v("app.export.download"),{icon:"download",primary:!0,onClick:()=>void i()}),R=M("div",{className:"panel export"},[k.root,x,w,S,E]);function C(T,I,U,q,H){let W=M("input",{className:"input input--number",attrs:{type:"number",inputmode:"decimal",...q}}),$=I();return W.value=$===null?"":String($),W.addEventListener("change",()=>{let be=W.value.trim(),X=be===""?null:Number(be);U(X!==null&&Number.isFinite(X)?X:null)}),W.setAttribute("placeholder",v("app.export.automatic")),ct(T,W,H).root}function A(){let T=r.format,I=[];if(T==="png"||T==="jpeg"||T==="webp"){let q=Ve(v("app.export.size"),[{value:"pixels",label:v("app.export.size-pixels")},{value:"print",label:v("app.export.size-print")}],H=>{r.sizing=H,A()});if(q.set(r.sizing),I.push(q.root),r.sizing==="pixels"?I.push(C(v("app.export.width-px"),()=>r.widthPx,H=>{r.widthPx=H===null?null:Math.round(H)},{min:16,max:16384,step:1},v("app.export.width-px-hint"))):I.push(C(v("app.export.width-mm"),()=>r.sizeMm,H=>{r.sizeMm=H},{min:5,max:2e3,step:.5}),C(v("app.export.dpi"),()=>r.dpi,H=>{r.dpi=H},{min:72,max:2400,step:1})),T!=="png"){let H=or(v("app.export.quality"),{min:.5,max:1,step:.01},W=>oa(W),W=>{r.quality=W});H.set(r.quality),I.push(H.root)}}else if(T==="pdf"||T==="eps"){I.push(C(v("app.export.width-mm"),()=>r.sizeMm,H=>{r.sizeMm=H},{min:5,max:2e3,step:.5},v("app.export.width-mm-hint")));let q=Ve(v("app.export.colour-space"),[{value:"srgb",label:v("app.export.colour-srgb")},{value:"cmyk",label:v("app.export.colour-cmyk")}],H=>{r.colourSpace=H});if(q.set(r.colourSpace??e.snapshot().design.effective.output.colourSpace),I.push(q.root),T==="pdf"){I.push(C(v("app.export.bleed"),()=>r.bleedMm===0?null:r.bleedMm,W=>{r.bleedMm=W??0},{min:0,max:50,step:.5}));let H=M("input",{attrs:{type:"checkbox"},on:{change:()=>{r.cropMarks=H.checked}}});H.checked=r.cropMarks,I.push(M("label",{className:"tick"},[H,M("span",{text:v("app.export.crop-marks")})]))}}le(S,I),S.hidden=I.length===0}A();let O=null;function D(){let T=v("app.export.download-format",{format:v(ca[r.format])});rr(d,T),rr(g,T),Z(w,v(aO[r.format])),O!==null&&N(O)}D();function N(T){O=T;let I=T.symbol.status==="ok";for(let H of[d,m,f,p,g,E])H.disabled=!I;let U=T.preview?.epsIssues??[],q=k.inputs().find(H=>H.value==="eps");q!==void 0&&(q.disabled=U.length>0),x.hidden=U.length===0,U.length>0&&(Z(x,U.map(Ft).join(" ")),r.format==="eps"&&(r.format="pdf",k.set("pdf"),A(),D())),Z(y,I?v(T.form.labelKey):T.symbol.status==="stale"?v("app.proof.not-updated"):v("app.proof.sample"))}return{panel:{root:R,update:N,meta:()=>v(ca[r.format])},actions:h,dock:b,download:i,print:u}}var lO=5,cO=15;function ko(e,t,n){let r={"camera/permission-denied":"The camera is not allowed for this page. Allow it in the browser settings, or choose a picture instead.","camera/unavailable":"No camera could be opened. Choose a picture instead.","camera/in-use":"The camera is in use by another app or tab. Close it there, then try again.","camera/insecure-context":"The camera only works on a secure page. Open this page over https, or choose a picture instead."};return new K(e,r[e],{reason:t},n===void 0?void 0:{cause:n})}function uO(e){switch(e?.name){case"NotAllowedError":case"SecurityError":case"PermissionDeniedError":return ko("camera/permission-denied","denied",e);case"NotFoundError":case"DevicesNotFoundError":return ko("camera/unavailable","no-device",e);case"OverconstrainedError":case"ConstraintNotSatisfiedError":return ko("camera/unavailable","constraints",e);case"NotReadableError":case"TrackStartError":case"AbortError":return ko("camera/in-use","in-use",e);default:return ko("camera/unavailable","no-api",e)}}function dO(e){let t={width:{ideal:1920},height:{ideal:1080}};return e.deviceId!==void 0?{deviceId:{exact:e.deviceId},...t}:{facingMode:e.facingMode??"environment",...t}}async function mO(e,t){try{return await e({video:dO(t),audio:!1})}catch(n){let r=n?.name;if(r!=="OverconstrainedError"&&r!=="ConstraintNotSatisfiedError")throw n;return e({video:!0,audio:!1})}}var Ip=0;function fv(e){for(let t of e.getTracks())t.stop()}function pv(){return typeof navigator<"u"&&navigator.mediaDevices?.getUserMedia!==void 0?e=>navigator.mediaDevices.getUserMedia(e):void 0}function fO(){if(!(typeof document>"u"))return e=>{let t=()=>{document.visibilityState==="hidden"&&e()};return document.addEventListener("visibilitychange",t),()=>document.removeEventListener("visibilitychange",t)}}function pO(){return typeof requestAnimationFrame=="function"?{request:requestAnimationFrame,cancel:cancelAnimationFrame}:{request:e=>setTimeout(e,16),cancel:e=>clearTimeout(e)}}async function hv(e){let t=e.deps??{};if(!(t.isSecureContext??(typeof isSecureContext=="boolean"?isSecureContext:!1)))return Y(ko("camera/insecure-context","insecure"));let r=t.getUserMedia??pv();if(r===void 0)return Y(ko("camera/unavailable","no-api"));let o=t.now??(()=>Date.now()),s=t.requestFrame===void 0||t.cancelFrame===void 0?pO():null,i=t.requestFrame??s.request,a=t.cancelFrame??s.cancel,l=e.decode??(U=>Tr(U,{...e.decodeOptions,budget:{maxAttempts:lO,...e.decodeOptions?.budget}},e.symbologies));e.onStatus?.({state:"requesting"});let c=Ip+=1,u;try{u=await mO(r,e)}catch(U){return e.onStatus?.({state:"stopped"}),Y(uO(U))}let d=()=>(fv(u),e.video.srcObject===u&&(e.video.srcObject=null),ae({stop:()=>{},stopped:!0,superseded:!0}));if(c!==Ip)return d();e.video.srcObject=u;try{await e.video.play()}catch{}if(c!==Ip)return d();let m=e.video,f=u.getVideoTracks()[0],p=D0({maxPixels:e.maxPixels??Dm,...t.createCanvas===void 0?{}:{createCanvas:t.createCanvas}}),h=1e3/(e.scansPerSecond??cO),g=typeof m.requestVideoFrameCallback=="function",y=[],b=!1,x=null,w=!1,k=Number.NEGATIVE_INFINITY,S=0,E=()=>{x!==null&&(g?m.cancelVideoFrameCallback?.(x):a(x),x=null)},R=()=>{if(!b){b=!0,E(),fv(u),m.srcObject===u&&(m.srcObject=null);for(let U of y)U();e.onStatus?.({state:"stopped"})}},C=()=>{x=g?m.requestVideoFrameCallback.call(m,O):i(O)},A=(U,q)=>{w=!1,k=o(),S=k-U,!b&&q.ok&&q.value.length>0&&e.onResult(q.value)};function O(){if(x=null,b||(C(),w||o()-k<Math.max(h,S)))return;let U=o(),q=p(m);if(!q.ok)return;w=!0;let H;try{H=l(q.value)}catch{A(U,ae([]));return}typeof H.then=="function"?H.then(W=>A(U,W),()=>A(U,ae([]))):A(U,H)}f!==void 0&&typeof f.addEventListener=="function"&&(f.addEventListener("ended",R),y.push(()=>f.removeEventListener("ended",R)));let D={stop:R,get stopped(){return b},superseded:!1},T=(t.addVisibilityListener??fO())?.(R);if(T!==void 0&&y.push(T),b)return T?.(),ae(D);let I=f!==void 0&&typeof f.getSettings=="function"?f.getSettings():null;return e.onStatus?.({state:"live",settings:I}),C(),ae(D)}function Pp(e={}){return(e.isSecureContext??(typeof isSecureContext=="boolean"?isSecureContext:!1))&&(e.getUserMedia??pv())!==void 0}function hO(e,t){let n=e.snapshot().catalogue.symbologies.find(r=>r.id===t);return n===void 0?t:v(n.labelKey)}function gv(e){let t=M("video",{className:"viewfinder__video",attrs:{playsinline:!0,muted:!0,autoplay:!0,"aria-hidden":"true"}});t.muted=!0;let n=It("svg",{class:"viewfinder__outline","aria-hidden":"true",preserveAspectRatio:"xMidYMid meet"}),r=M("p",{className:"viewfinder__status"}),o=M("div",{className:"viewfinder"},[t,n,M("span",{className:"viewfinder__frame",attrs:{"aria-hidden":"true"}})]);o.dataset.live="false";let s=null,i=de(v("app.scan.camera-start"),{icon:"camera",primary:!0,onClick:()=>{s!==null&&!s.stopped?a():l()}});function a(){s?.stop(),s=null,o.dataset.live="false",le(n,[]),rr(i,v("app.scan.camera-start"))}async function l(){if(!Pp()){Z(r,v("app.scan.camera-unavailable")),o.dataset.live="refused";return}Z(r,v("app.scan.camera-requesting"));let T=await hv({video:t,symbologies:e.registries.symbologies,onStatus:I=>{I.state==="live"?(o.dataset.live="true",Z(r,v("app.scan.camera-live")),rr(i,v("app.scan.camera-stop"))):I.state==="stopped"&&(o.dataset.live="false",rr(i,v("app.scan.camera-start")))},onResult:I=>{c(I),a(),Z(r,v("app.scan.camera-read")),A(I)}});if(!T.ok){o.dataset.live="refused",Z(r,`${yt(Fe(T.error))} ${v("app.scan.camera-fallback")}`);return}T.value.superseded||(s=T.value)}function c(T){t.videoWidth!==0&&(n.setAttribute("viewBox",`0 0 ${t.videoWidth} ${t.videoHeight}`),le(n,T.map(I=>It("polygon",{points:I.corners.map(U=>`${U.x},${U.y}`).join(" ")}))))}let u=M("input",{attrs:{type:"file",accept:"image/*"}});u.hidden=!0,u.addEventListener("change",()=>{let T=u.files?.[0];u.value="",T!==void 0&&N(T)});let d=de(v("app.scan.choose"),{icon:"image",onClick:()=>u.click()}),m=M("div",{className:"dropzone",attrs:{role:"group","aria-label":v("app.scan.drop")}},[lt("image","dropzone__icon"),M("p",{className:"dropzone__text",text:v("app.scan.drop")}),d,M("p",{className:"field__hint",text:v("app.scan.paste-hint")}),u]);m.addEventListener("dragover",T=>{T.preventDefault(),m.dataset.over="true"}),m.addEventListener("dragleave",()=>{m.dataset.over="false"}),m.addEventListener("drop",T=>{T.preventDefault(),T.stopPropagation(),m.dataset.over="false";let I=T.dataTransfer?.files[0];I!==void 0&&N(I)});let f=M("p",{className:"results__status"}),p=M("ol",{className:"results__list"}),h=de(v("app.scan.clear"),{small:!0,onClick:()=>{le(p,[]),Z(f,v("app.scan.nothing-yet")),h.hidden=!0}});h.hidden=!0;let g=M("section",{className:"results",attrs:{"aria-labelledby":"results-title"}},[M("div",{className:"results__head"},[M("h2",{className:"results__title",id:"results-title",text:v("app.scan.results")}),h]),f,p]);Z(f,v("app.scan.nothing-yet"));let y=M("div",{className:"scan"},[M("div",{className:"scan__intro"},[M("h2",{className:"mode__title",text:v("app.scan.title")}),M("p",{className:"mode__lede",text:v("app.scan.intro")})]),M("div",{className:"scan__grid"},[M("div",{className:"card card--static scan__inputs"},[M("div",{className:"card__body"},[o,M("div",{className:"viewfinder__controls"},[i,r]),m])]),g])]);Pp()||(Z(r,v("app.scan.camera-unavailable")),o.dataset.live="refused");function b(T){e.dispatch({type:"payload/raw",text:T});let I=e.snapshot();if(I.refusal?.action==="payload/raw"){e.announce(I.refusal.issues.map(U=>v(U.code,U.params??{})).join(" "));return}e.dispatch({type:"mode",mode:"create"}),e.announce(v("app.scan.remade"))}function x(T){return M("pre",{className:"results__text",attrs:{tabindex:0}},[T])}function w(T,I,U){let q=[M("p",{className:"results__symbol",text:v("app.scan.symbol",{symbology:hO(e,T.symbology),version:T.version,level:T.ecLevel})})];if(T.part!==null&&q.push(M("p",{className:"tag",text:v("app.scan.part",{index:T.part.index+1,total:T.part.total})})),I!==null&&I.payload!==null){let H=I.payload,W=e.registries.payloads.get(H.typeId);if(q.push(M("h3",{className:"notes__title",text:v("app.scan.type")})),q.push(M("p",{className:"results__type",text:W===void 0?H.typeId:v(W.labelKey)})),W!==void 0){q.push(M("p",{className:"field__hint",text:v(W.actionKey)}));let $=[];for(let be of W.fields){let X=H.value[be.key],ne=Array.isArray(X)?X.filter(me=>me!=="").join(", "):X==null||X===!1?"":String(X);ne!==""&&($.push(M("dt",{text:v(be.labelKey)})),$.push(be.kind==="secret"?M("dd",{},[k(ne)]):M("dd",{className:"results__value",text:ne})))}$.length>0&&q.push(M("dl",{className:"facts"},$))}}if(I?.safety!==null&&I?.safety!==void 0){let H=I.safety;H.displayHost!==null&&(q.push(M("h3",{className:"notes__title",text:v("app.scan.destination")})),q.push(M("p",{className:"results__host",text:H.unicodeHost??H.displayHost})),H.unicodeHost!==null&&H.unicodeHost!==H.displayHost&&q.push(M("p",{className:"field__hint",text:v("app.scan.host-ascii",{host:H.displayHost})}))),q.push(M("h3",{className:"notes__title",text:v("app.scan.safety")})),q.push(H.findings.length===0?M("p",{className:"note note--info",text:v("app.scan.safety-none")}):M("ul",{className:"notes__list"},H.findings.map(W=>M("li",{className:`note note--${W.severity==="danger"?"error":W.severity==="caution"?"warning":"info"}`},[lt(W.severity==="danger"?"fail":"warn"),M("span",{text:v(iu(W.code),W.params??{})})]))))}return q.push(M("h3",{className:"notes__title",text:v("app.scan.text")})),q.push(x(T.text)),U&&q.push(M("p",{className:"note note--info",text:v("app.scan.inspect-unavailable")})),q.push(M("div",{className:"results__actions"},[de(v("app.scan.remake"),{primary:!0,small:!0,onClick:()=>b(T.text)}),de(v("app.scan.copy-text"),{small:!0,icon:"copy",onClick:async()=>{let H=await _o(T.text);e.announce(H.ok?v("app.scan.copied"):yt(Fe(H.error)))}})])),M("li",{className:"card card--static results__card"},[M("div",{className:"card__body"},q)])}function k(T){let I=M("span",{className:"results__value results__value--secret",text:"\u25CF".repeat(Math.min(12,T.length))}),U=!1,q=de(v("app.content.show-secret"),{small:!0,icon:"eye",attrs:{"aria-pressed":"false"},onClick:()=>{U=!U,Z(I,U?T:"\u25CF".repeat(Math.min(12,T.length))),q.setAttribute("aria-pressed",String(U))}});return M("span",{className:"results__secret"},[I,q])}function S(T){h.hidden=!1,le(p,[]),Z(f,yt(T)),e.announce(yt(T))}function E(T,I,U){h.hidden=!1;let q=T.length===1?v("app.scan.found-one"):v("app.scan.found-many",{count:T.length});Z(f,q),le(p,T.map(H=>w(H,I,U))),e.announce(q),p.querySelector("h3, .results__symbol")?.scrollIntoView?.({block:"nearest"})}function R(T){return T.map(I=>({text:I.read.bitstream.text,symbology:I.symbology,version:I.read.version,ecLevel:I.read.ecLevel,part:I.read.bitstream.structuredAppend}))}function C(T){return T.symbols.map(I=>({text:I.text,symbology:I.symbology,version:I.version,ecLevel:I.ecLevel,part:I.structuredAppend}))}async function A(T){let I=T.map(q=>q.read.bitstream.text).join(""),U=await e.studio.run({type:"inspect/text",text:I});U.ok?E(R(T),U.value,!1):E(R(T),null,O(Fe(U.error)))}function O(T){return T.code==="platform/unavailable"&&T.params.feature==="inspect"}async function D(T){Z(f,v("app.scan.reading"));let I=await e.studio.run({type:"inspect/image",image:T});if(I.ok){I.value.symbols.length===0?S(Fe(yv())):E(C(I.value),I.value,!1);return}let U=Fe(I.error);if(!O(U)){S(U);return}let q=Tr(T,{},e.registries.symbologies);if(!q.ok){S(Fe(q.error));return}if(q.value.length===0){S(Fe(yv()));return}E(R(q.value),null,!0)}async function N(T){Z(f,v("app.scan.reading"));let I=await io(T);if(!I.ok){S(Fe(I.error));return}await D(I.value)}return document.addEventListener("paste",T=>{e.snapshot().document.mode==="scan"&&O0(T).then(I=>{I.ok?I.value!==null&&D(I.value):S(Fe(I.error))})}),{root:y,readBlob:N,stopCamera:a,update(T){T.document.mode!=="scan"&&s!==null&&a()}}}function yv(){return new K("decode/not-found","No code was found in this picture.")}var zr=["create","scan","bulk"];function kv(e,t){let n=e.replace(/^#/,"");try{n=decodeURIComponent(n)}catch{}let r=null,o=null,s=null;for(let i of n.split(/[/&]/)){let a=i.replace(/^(?:mode|type|design)=/,"");a.startsWith("v1.")?r=a:zr.includes(a)?o=a:a!==""&&t(a)&&(s=a)}return{design:r,mode:o,typeId:s}}var zs=Jl(),vv=Jy({registries:zs}),Sv=e=>{let t=zs.payloads.get(e);return t!==void 0&&t.generate!==!1},vo=kv(location.hash,Sv),Dp=null;function yO(){if(vo.mode===null&&vo.typeId===null)return vo.design??void 0;let e;if(vo.design!==null)try{e=yi(vo.design,zs.design)}catch{Dp=v("studio.issue.design-link")}return{mode:vo.mode??"create",typeId:vo.typeId??"url",fields:{},...e===void 0?{}:{design:e},conditions:eo}}var ut=mp({registries:zs,library:vv,rasterEncoder:j0(),initial:yO()}),Fs=M("p",{className:"toast",attrs:{role:"status","aria-live":"polite"}});Fs.dataset.shown="false";var Cp=null,We={studio:ut,registries:zs,library:vv,dispatch:e=>ut.dispatch(e),snapshot:()=>ut.getSnapshot(),announce(e){Fs.textContent="",Fs.dataset.shown="true",requestAnimationFrame(()=>{Fs.textContent=e}),Cp!==null&&clearTimeout(Cp),Cp=setTimeout(()=>{Fs.dataset.shown="false"},6e3)}};rn("version").textContent="0.1.0";rn("font-licence").textContent=cy;Z(rn("about-title"),v("app.about.title"));Z(rn("facts-title"),v("app.about.facts"));Z(rn("version-label"),v("app.about.version"));Z(rn("source-label"),v("app.about.source"));Z(rn("licence-title"),v("app.about.licence"));Z(rn("licence-intro"),v("app.about.licence-intro"));Z(rn("check-it"),v("app.about.check"));rn("about-title").parentElement?.appendChild(lt("chevron","card__chevron"));var Mv=M("img",{className:"print-sheet__img",attrs:{alt:""}});document.body.appendChild(M("div",{className:"print-sheet"},[Mv]));var Fp=M("div",{className:"strip-host"}),Up=M("div",{className:"actions-host"}),Ev=null,Us=mv(We,()=>Ev,Mv),Mo=dv(We,Up,Fp);Ev=Mo;var uu=z2(We,Mo);Fp.appendChild(uu.root);Up.appendChild(Us.actions);function Tv(){ut.getSnapshot().history.canUndo&&(ut.dispatch({type:"history/undo"}),We.announce(v("app.history.undone")))}function jp(){ut.getSnapshot().history.canRedo&&(ut.dispatch({type:"history/redo"}),We.announce(v("app.history.redone")))}var Rv=de(v("app.history.undo"),{icon:"undo",small:!0,attrs:{"aria-keyshortcuts":"Control+Z Meta+Z","aria-label":v("app.history.undo")},onClick:Tv}),Av=de(v("app.history.redo"),{icon:"redo",small:!0,attrs:{"aria-keyshortcuts":"Control+Shift+Z Meta+Shift+Z","aria-label":v("app.history.redo")},onClick:jp}),gO=de(v("app.link.copy"),{icon:"link",small:!0,attrs:{"aria-label":v("app.link.copy")},onClick:async()=>{let e=await ut.run({type:"design-link"});if(!e.ok){We.announce(v("error.design.invalid"));return}let t=`#${e.value.link}`,n=await _o(t);We.announce(n.ok?[v("app.link.copied"),...e.value.issues.map(Ft)].join(" "):v("app.link.copy-failed"))}}),bO={create:"app.mode.create",scan:"app.mode.scan",bulk:"app.mode.bulk"},xO={create:"app.mode.create-hint",scan:"app.mode.scan-hint",bulk:"app.mode.bulk-hint"},Iv=zr.map(e=>{let t=M("button",{className:"tab",id:`tab-${e}`,attrs:{type:"button",role:"tab","aria-controls":`panel-${e}`},on:{click:()=>ut.dispatch({type:"mode",mode:e}),keydown:n=>{let r=zr.indexOf(e),o=-1;if(n.key==="ArrowRight"||n.key==="ArrowDown"?o=(r+1)%zr.length:n.key==="ArrowLeft"||n.key==="ArrowUp"?o=(r+zr.length-1)%zr.length:n.key==="Home"?o=0:n.key==="End"&&(o=zr.length-1),o===-1)return;n.preventDefault();let s=zr[o];ut.dispatch({type:"mode",mode:s}),document.getElementById(`tab-${s}`)?.focus()}}},[M("span",{className:"tab__label",text:v(bO[e])}),M("span",{className:"tab__hint",text:v(xO[e])})]);return{mode:e,tab:t}}),wO=M("header",{className:"masthead"},[M("div",{className:"masthead__words"},[M("p",{className:"eyebrow",text:v("app.masthead.eyebrow")}),M("h1",{className:"masthead__title",text:v("app.masthead.title")}),M("p",{className:"masthead__lede",text:v("app.masthead.lede")})]),M("div",{className:"masthead__tools"},[M("div",{className:"tabs",attrs:{role:"tablist","aria-label":v("app.mode.label")}},Iv.map(e=>e.tab)),M("div",{className:"tools",attrs:{role:"group","aria-label":v("app.tools.label")}},[Rv,Av,gO])])]),Np=G2(We),kO={root:Np.root,update:Np.update,meta:Np.meta},bv=on(2,v("app.section.style"),!0,"card-style"),Bp=av(We,e=>cu(We,e)),ma=[{card:on(1,v("app.section.content"),!0,"card-content"),panel:kO},{card:bv,panel:Z2(We,bv.root)},{card:on(3,v("app.section.modules"),!1,"card-modules"),panel:J2(We)},{card:on(4,v("app.section.eyes"),!1,"card-eyes"),panel:nv(We)},{card:on(5,v("app.section.colour"),!1,"card-colour"),panel:rv(We)},{card:on(6,v("app.section.logo"),!1,"card-logo"),panel:ov(We)},{card:on(7,v("app.section.frame"),!1,"card-frame"),panel:sv(We)},{card:on(8,v("app.section.print"),!1,"card-print"),panel:iv(We)},{card:on(9,v("app.section.check"),!1,"card-check"),panel:V2(We)},{card:on(10,v("app.section.export"),!1,"card-export"),panel:Us.panel},{card:on(11,v("app.section.library"),!1,"card-library"),panel:Bp}];for(let e of ma)e.card.body.appendChild(e.panel.root);var ua=M("div",{className:"notice",attrs:{role:"alert"}});ua.hidden=!0;var Pv=M("span",{className:"proof-sentinel",attrs:{"aria-hidden":"true"}}),So=M("div",{className:"create__proof"},[Mo.root]);So.dataset.compact="false";var zp=M("span",{className:"proof-spacer",attrs:{"aria-hidden":"true"}}),Cv=M("section",{className:"mode",id:"panel-create",attrs:{role:"tabpanel","aria-labelledby":"tab-create"}},[Pv,M("div",{className:"create"},[M("div",{className:"create__controls"},[ua,...ma.map(e=>e.card.root)]),So,zp])]),Vp=window.matchMedia("(max-width: 699px)");typeof IntersectionObserver=="function"&&new IntersectionObserver(([e])=>{let t=Vp.matches&&e!==void 0&&!e.isIntersecting&&e.boundingClientRect.top<0;if(String(t)===So.dataset.compact)return;let n=So.offsetHeight;So.dataset.compact=String(t);let r=So.offsetHeight;zp.style.setProperty("height",t?`${Math.max(0,n-r)}px`:"0px")}).observe(Pv);var Lp=e=>ma.find(t=>t.card.root.id===e)?.card,vO=Mo.toolbar.parentElement;function Nv(){Vp.matches?(Lp("card-check")?.body.prepend(uu.root),Lp("card-export")?.body.appendChild(Us.actions),Lp("card-print")?.body.prepend(Mo.toolbar)):(Fp.appendChild(uu.root),Up.appendChild(Us.actions),vO.appendChild(Mo.toolbar),So.dataset.compact="false",zp.style.setProperty("height","0px"))}Nv();Vp.addEventListener("change",Nv);var du=gv(We),qp=L2(We),Lv=M("section",{className:"mode",id:"panel-scan",attrs:{role:"tabpanel","aria-labelledby":"tab-scan"}},[du.root]),Ov=M("section",{className:"mode",id:"panel-bulk",attrs:{role:"tabpanel","aria-labelledby":"tab-bulk"}},[qp.root]),SO={create:Cv,scan:Lv,bulk:Ov},fa=M("div",{className:"veil",attrs:{"aria-hidden":"true"}},[M("div",{className:"veil__card"},[M("p",{className:"veil__title",text:v("app.drop.title")}),M("p",{className:"veil__text",text:v("app.drop.text")})])]);fa.dataset.shown="false";le(rn("app"),[wO,Cv,Lv,Ov]);document.body.appendChild(Us.dock);document.body.appendChild(Fs);document.body.appendChild(fa);var da=0,Dv=e=>[...e.dataTransfer?.types??[]].includes("Files");window.addEventListener("dragenter",e=>{Dv(e)&&(da+=1,fa.dataset.shown="true")});window.addEventListener("dragleave",()=>{da=Math.max(0,da-1),da===0&&(fa.dataset.shown="false")});window.addEventListener("dragover",e=>{Dv(e)&&e.preventDefault()});window.addEventListener("drop",()=>{da=0,fa.dataset.shown="false"},!0);window.addEventListener("drop",e=>{e.preventDefault();let t=e.dataTransfer?.files[0];t!==void 0&&MO(t)});async function MO(e){let t=e.name.toLowerCase();if(t.endsWith(wi)){await Bp.openFile(e);return}if(t.endsWith(".json")||e.type==="application/json"){await Bp.openDesign(e);return}if(e.type.startsWith("image/")){ut.dispatch({type:"mode",mode:"scan"}),await du.readBlob(e);return}if(/\.(csv|tsv|txt)$/.test(t)||e.type==="text/csv"){ut.dispatch({type:"mode",mode:"bulk"}),await qp.readFile(e);return}We.announce(v("app.drop.unknown"))}document.addEventListener("keydown",e=>{if(!(e.metaKey||e.ctrlKey)||e.altKey||N2(e.target))return;let t=e.key.toLowerCase();t==="z"?(e.preventDefault(),e.shiftKey?jp():Tv()):t==="y"&&e.ctrlKey&&!e.metaKey&&(e.preventDefault(),jp())});window.addEventListener("hashchange",()=>{let e=kv(location.hash,Sv);if(e.mode!==null&&ut.dispatch({type:"mode",mode:e.mode}),e.typeId!==null&&ut.dispatch({type:"payload/type",typeId:e.typeId}),e.design!==null)try{let t=yi(e.design,zs.design);ut.dispatch({type:"design/replace",design:t}),We.announce(v("app.design.applied"))}catch{We.announce(v("studio.issue.design-link"))}});var xv=null,wv=null;function jv(){let e=ut.getSnapshot(),t=e.document.mode;if(t!==xv){xv=t,document.body.dataset.mode=t;for(let{mode:r,tab:o}of Iv){let s=r===t;o.setAttribute("aria-selected",String(s)),o.tabIndex=s?0:-1,SO[r].hidden=!s}}if(Rv.disabled=!e.history.canUndo,Av.disabled=!e.history.canRedo,e.refusal!==wv){wv=e.refusal;let r=e.refusal;r===null||r.issues.length===0?ua.hidden=!0:(Z(ua,r.issues.map(Ft).join(" ")),ua.hidden=!1)}if(t==="create"){Mo.update(e),uu.update(e);for(let r of ma)r.card.root.open&&r.panel.update(e),Z(r.card.meta,r.panel.meta(e))}Us.panel.update(e);let n=[du,qp];for(let r of n)r.update(e)}for(let e of ma)e.card.root.addEventListener("toggle",()=>{e.card.root.open&&e.panel.update(ut.getSnapshot())});var Op=!1;ut.subscribe(()=>{Op||(Op=!0,queueMicrotask(()=>{Op=!1,jv()}))});jv();ut.dispatch({type:"verify/request"});Dp!==null&&We.announce(Dp);window.addEventListener("pagehide",()=>{du.stopCamera()});})();
187
+ `;return t}function gL(e){let t=[];for(let n of e)n.severity==="info"||t.includes(n.code)||t.push(n.code);return t.join(" ")}function yw(e,t={}){let n=e.some(i=>i.sheet!==null),r=t.content,o=["row","file","type","status","check","issues"];n&&o.push("page","label"),r!==void 0&&o.push("content");let s=[o];for(let i of e){let a=[String(i.rowNumber),i.filename??"",i.typeId,i.status,i.check??"",gL(i.issues)];n&&a.push(i.sheet===null?"":String(i.sheet.page),i.sheet===null?"":String(i.sheet.label)),r!==void 0&&a.push(r(i.index)??""),s.push(a)}return new TextEncoder().encode(`\uFEFF${yL(s)}`)}var gw=30,bw=46,xw=22,ww=2048,kw=65535,vw=4294967295;function bL(e,t){let n=`entry ${t}`;if(e.length===0)throw new TypeError(`${n} has no name`);if(e.includes("\\"))throw new TypeError(`${n} has a backslash in its name`);if(e.startsWith("/")||/^[A-Za-z]:/.test(e))throw new TypeError(`${n} has an absolute path for a name`);for(let r=0;r<e.length;r+=1){let o=e.charCodeAt(r);if(o<32||o===127)throw new TypeError(`${n} has a control character in its name`);if(o>=55296&&o<=57343){let s=e.charCodeAt(r+1);if(o>56319||!(s>=56320&&s<=57343))throw new TypeError(`${n} name is not valid Unicode`);r+=1}}for(let r of e.split("/"))if(r===""||r==="."||r==="..")throw new TypeError(`${n} has an empty, '.' or '..' folder in its name`)}function xL(e){let{year:t,month:n,day:r}=e??{year:1980,month:1,day:1};if(!Number.isInteger(t)||t<1980||t>2107)throw new RangeError("a ZIP date is in the years 1980 to 2107");if(!Number.isInteger(n)||n<1||n>12)throw new RangeError("a ZIP date has a month from 1 to 12");let s=[31,t%4===0&&t%100!==0||t%400===0?29:28,31,30,31,30,31,31,30,31,30,31][n-1];if(!Number.isInteger(r)||r<1||r>s)throw new RangeError(`that month has days 1 to ${s}`);return t-1980<<9|n<<5|r}var Ic=class{entries=[];names=new Set;folders=new Set;date;encoder=new TextEncoder;offset=0;largest=xw;constructor(t){this.date=xL(t)}get count(){return this.entries.length}add(t,n,r=!1){let o=this.entries.length;if(o>=kw)throw new lr(kw,"entries");bL(t,o);let s=t.toLowerCase(),i=s.split("/");if(this.names.has(s)||this.folders.has(s))throw new TypeError(`entry ${o} has the same name as an earlier entry or its folder`);for(let u=1;u<i.length;u+=1){let d=i.slice(0,u).join("/");if(this.names.has(d))throw new TypeError(`entry ${o} is inside a folder that is an earlier entry's name`);this.folders.add(d)}this.names.add(s);let a=this.encoder.encode(t);if(a.length>65535)throw new TypeError(`entry ${o} has too long a name`);if(this.largest+=gw+bw+2*a.length+n.length,this.largest>vw)throw new lr(vw);let l=n,c=!1;if(r){let u=Ys(n,{level:6});u.length<n.length&&(l=u,c=!0)}this.entries.push({name:a,data:l,deflated:c,crc:Io(n),size:n.length,offset:this.offset}),this.offset+=gw+a.length+l.length}finish(){let t=this.offset,n=0;for(let l of this.entries)n+=bw+l.name.length;let r=new Uint8Array(t+n+xw),o=new DataView(r.buffer),s=0,i=l=>{o.setUint16(s,l,!0),s+=2},a=l=>{o.setUint32(s,l,!0),s+=4};for(let l of this.entries)a(67324752),i(l.deflated?20:10),i(ww),i(l.deflated?8:0),i(0),i(this.date),a(l.crc),a(l.data.length),a(l.size),i(l.name.length),i(0),r.set(l.name,s),s+=l.name.length,r.set(l.data,s),s+=l.data.length;for(let l of this.entries)a(33639248),i(20),i(l.deflated?20:10),i(ww),i(l.deflated?8:0),i(0),i(this.date),a(l.crc),a(l.data.length),a(l.size),i(l.name.length),i(0),i(0),i(0),i(0),a(0),a(l.offset),r.set(l.name,s),s+=l.name.length;return a(101010256),i(0),i(0),i(this.entries.length),i(this.entries.length),a(n),a(t),i(0),this.entries.length=0,r}};var wL=1024,Ew=8192,Tw=16,kL=30,vL=20,SL=10,ML=5,EL=2,TL=8,RL=25.4;function jr(e){return typeof e=="object"&&e!==null}function Ts(e,t,n,r,o){if(e!==void 0){if(typeof e!="number"||!Number.isFinite(e)||e<n||e>r||o&&!Number.isInteger(e))throw new TypeError(`runBatch: output.${t} is ${o?"a whole number":"a number"} from ${n} to ${r}.`);return e}}function AL(e){if(!Array.isArray(e))throw new TypeError("runBatch: rows is what planBatch returns.");e.forEach((t,n)=>{if(!jr(t)||!Number.isInteger(t.index)||!Number.isInteger(t.rowNumber)||typeof t.typeId!="string"||typeof t.filename!="string"||t.content!==null&&typeof t.content!="string"||!Array.isArray(t.issues))throw new TypeError(`runBatch: row ${n} is not a row planBatch returns.`)})}function IL(e){if(!jr(e))throw new TypeError("runBatch: output is an object.");if(e.kind==="zip"){if(!["svg","png","pdf","eps"].includes(e.format))throw new TypeError("runBatch: output.format is 'svg', 'png', 'pdf' or 'eps'.");if(Ts(e.widthPx,"widthPx",Tw,Ew,!0),Ts(e.dpi,"dpi",he.dpi.min,he.dpi.max,!1),e.colourSpace!==void 0&&!["srgb","cmyk"].includes(e.colourSpace))throw new TypeError("runBatch: output.colourSpace is 'srgb' or 'cmyk'.");if(e.includeContent!==void 0&&typeof e.includeContent!="boolean")throw new TypeError("runBatch: output.includeContent is true or false.")}else if(e.kind==="sheet"){if(!["srgb","cmyk"].includes(e.colourSpace))throw new TypeError("runBatch: output.colourSpace is 'srgb' or 'cmyk'.");Ts(e.skip,"skip",0,Number.MAX_SAFE_INTEGER,!0)}else throw new TypeError("runBatch: output.kind is 'zip' or 'sheet'.");if(Ts(e.sizeMm,"sizeMm",he.sizeMm.min,he.sizeMm.max,!1),e.verify!==void 0&&!["off","sampled","all"].includes(e.verify))throw new TypeError("runBatch: output.verify is 'off', 'sampled' or 'all'.");Ts(e.verifyEvery,"verifyEvery",1,Number.MAX_SAFE_INTEGER,!0),Ts(e.verifySeeds,"verifySeeds",1,8,!0)}function PL(e){if(e.kind!=="sheet")return null;let t=e.template,n=typeof t=="string"?Xi().find(o=>o.id===t):t;if(n===void 0)throw new qr("sheet-template",String(t));if(Ui(n),(e.skip??0)>=n.columns*n.rows)throw new TypeError("runBatch: output.skip is fewer labels than a sheet holds.");return n}function CL(e){let t={};for(let[n,r]of Object.entries(e.assets??{})){let o=tl(()=>Ac(Lo(r.png)));o.ok&&(t[n]=o.value)}return t}function NL(e,t,n){let r=[];e.forEach((l,c)=>{l.content!==null&&!qn(l.issues)&&r.push(c)});let o=t.verify??(n!==void 0&&r.length<=ML?"all":"off");if(o!=="off"&&n===void 0)throw new TypeError("runBatch: checking rows needs options.verifyRow, such as scanCheckVerifier(registries).");if(o==="off"||r.length===0)return{mode:o,checked:new Set};if(o==="all")return{mode:o,checked:new Set(r)};let s=t.verifyEvery??Math.max(vL,Math.ceil(r.length/SL)),i=new Set(r.filter((l,c)=>c%s===0)),a=r[0];for(let l of r)e[l].content.length>e[a].content.length&&(a=l);return i.add(a),{mode:o,checked:i}}function LL(e,t,n,r,o){if(AL(e),IL(n),!jr(r)||!jr(r.symbologies)||!jr(r.payloads)||!jr(r.design))throw new TypeError("runBatch: registries gives the symbologies, content types and design registries.");if(typeof o!="object"||o===null)throw new TypeError("runBatch: options is an object.");if(o.verifyRow!==void 0&&typeof o.verifyRow!="function")throw new TypeError("runBatch: options.verifyRow is a function.");let s=o.seed??0;if(!Number.isInteger(s)||s<0||s>4294967295)throw new TypeError("runBatch: options.seed is an integer from 0 to 2^32 - 1.");let i=En(t,r.design);if(i.design===null)throw new K("design/invalid","This design has problems to fix before it can be used.",{issues:i.issues.length});let a=i.design;r.symbologies.require(a.symbol.symbology);let l=PL(n),c=n.kind==="zip"&&(n.format==="pdf"||n.format==="eps"),u=n.sizeMm??a.output.sizeMm??(c?kL:void 0)??null,d=(n.kind==="zip"?n.dpi:void 0)??a.output.dpi??null,m=n.kind==="sheet"?n.colourSpace:n.colourSpace??a.output.colourSpace,f={...a,output:{...a.output,colourSpace:m,...u===null?{}:{sizeMm:u},...d===null?{}:{dpi:d}}},p=vc(e.map(x=>({name:Ki(x.filename),fallback:`qr-${x.rowNumber}`}))).map(x=>x.name),h=a.frame?.text?.content,{mode:g,checked:y}=NL(e,n,o.verifyRow),b=CL(a);return{rows:e,names:p,design:f,output:n,registries:r,dpi:d,colourSpace:m,template:l,checked:y,verifyRow:o.verifyRow,captureSeeds:n.verifySeeds??(g==="all"?EL:TL),assets:b,fonts:o.fonts??(h!==void 0&&h!==""?Mn():void 0),seed:s,zip:n.kind==="zip"?new Ic(o.date):null}}function OL(e){let{symbol:t}=e;return{symbology:t.symbology,...t.ecLevel===void 0?{}:{ecLevel:t.ecLevel},...t.boostEc===void 0?{}:{boostEc:t.boostEc},...t.minVersion===void 0?{}:{minVersion:t.minVersion},...t.maxVersion===void 0?{}:{maxVersion:t.maxVersion},...t.mask===void 0?{}:{mask:t.mask},...t.segmentation===void 0?{}:{segmentation:t.segmentation}}}function Sw(e){let{code:t,params:n}=e;return t==="encode/too-much-data"?P("encode.too-much-data",[],"error",n):t==="encode/unsupported-feature"?P(`encode.unsupported-feature.${String(n.feature)}`,[],"error"):t==="encode/unsupported-content"?P(`encode.unsupported-content.${String(n.reason)}`,[],"error"):t==="render/surface-too-large"&&n.maxMm!==void 0?P("render.print.too-large",[],"error",{maxMm:n.maxMm}):P(ot.failed,[],"error",{code:t})}function DL(e){return jr(e)&&typeof e.next=="function"}function Mw(e){if(!jr(e)||!["pass","warn","fail"].includes(e.verdict)||e.issues!==void 0&&!Array.isArray(e.issues))throw new TypeError("runBatch: verifyRow returns { verdict, issues? }.");return e}function Rw(e,t,n){if(n==="svg")return{bytes:new TextEncoder().encode(yn(e)),extension:"svg",compress:!0,issues:[]};let r=e.unitsPerMm===void 0?null:e.width/e.unitsPerMm;if(n==="png"){let i=t.output.widthPx??(r!==null&&t.dpi!==null?Math.min(Ew,Math.max(Tw,Math.round(r*t.dpi/RL))):wL),a=Tt(e,{width:i});return{bytes:Gn(a,t.dpi===null?{}:{dpi:t.dpi}),extension:"png",compress:!1,issues:[]}}let o=r;return n==="eps"?qi(e).length===0?{bytes:new TextEncoder().encode(mc(e,{colour:t.colourSpace,widthMm:o})),extension:"eps",compress:!0,issues:[]}:{...Rw(e,t,"pdf"),issues:[P(ot.epsFallback,[],"warning")]}:{bytes:dc(e,{colour:t.colourSpace,widthMm:o}),extension:"pdf",compress:!1,issues:[]}}function Aw(e){return e.filter(t=>t.severity!=="info")}function*jL(e,t,n,r,o,s){let i;try{let l=e.verifyRow({index:t.index,rowNumber:t.rowNumber,content:t.content,design:n,overlay:r,sizeMm:o,dpi:e.dpi,seed:e.seed,captureSeeds:e.captureSeeds,assets:e.assets});if(DL(l))for(;;){let c=l.next();if(c.done===!0){i=Mw(c.value);break}yield s}else i=Mw(l)}catch(l){if(!(l instanceof K))throw l;return{check:null,issues:[P(ot.checkUnavailable,[],"warning",{code:l.code})]}}let a=[];return i.verdict==="fail"&&a.push(P(ot.checkFailed,[],"warning")),i.verdict==="warn"&&a.push(P(ot.checkWarned,[],"info")),a.push(...i.issues??[]),{check:i.verdict,issues:a}}function BL(e,t,n){let r=t.constrained.get(n);if(r===void 0){let o=e.registries.payloads.require(n),s=Nr(e.design,o.constraints);r={design:s.design,issues:Aw(s.issues),overlay:s.overlay},t.constrained.set(n,r)}return r}function*FL(e,t,n){let r=e.rows[n],o={index:r.index,rowNumber:r.rowNumber,typeId:r.typeId},s=h=>Object.freeze({...o,filename:null,status:"skipped",check:null,sheet:null,issues:Object.freeze([...h])});if(r.content===null||qn(r.issues))return s(r.issues);let i=r.content,a=BL(e,t,r.typeId),l=[...r.issues,...a.issues],c=tl(()=>{let h=Fn(i,OL(a.design),e.registries.symbologies);return{symbol:h,built:tn(h,a.design,{registries:e.registries.design,assets:g=>e.assets[g],...e.fonts===void 0?{}:{fonts:e.fonts},seed:e.seed,overlay:a.overlay})}});if(!c.ok)return s([...l,Sw(c.error)]);l.push(...Aw(c.value.built.issues));let u=c.value.built.scene,d=null,m=null,{template:f}=e;if(t.zip!==null){let h=t.zip,g=e.output.format,y=tl(()=>{let b=Rw(u,e,g),x=`${e.names[n]}.${b.extension}`;return h.add(x,b.bytes,b.compress),{name:x,issues:b.issues}});if(!y.ok)return s([...l,Sw(y.error)]);d=y.value.name,l.push(...y.value.issues)}else{let h=f;if(u.unitsPerMm===void 0){let b=Math.max(u.width/h.cell.widthMm,u.height/h.cell.heightMm);u={...u,unitsPerMm:b}}let g=h.columns*h.rows,y=t.scenes.length+(e.output.skip??0);m={page:Math.floor(y/g)+1,label:y%g+1},l.push(...pf([u],h).issues.map(b=>({...b,path:[]}))),t.scenes.push(u)}let p=null;if(e.checked.has(n)){let h=u.unitsPerMm,g=h===void 0?null:(c.value.symbol.matrix.width+2*a.design.quietZone)/h,y=yield*jL(e,r,a.design,a.overlay,g,{done:n,total:t.total});p=y.check,l.push(...y.issues)}return Object.freeze({...o,filename:d,status:"written",check:p,sheet:m,issues:Object.freeze(l)})}function*UL(e){let{rows:t,output:n}=e,r={zip:e.zip,scenes:[],constrained:new Map,total:t.length+1},o=[];for(let a=0;a<t.length;a+=1){let l=yield*FL(e,r,a);o.push(l),yield{done:a+1,total:r.total,row:l}}if(r.zip!==null){let a=n.includeContent===!0,l=new Map(t.map(c=>[c.index,c.content]));return r.zip.add(hw,yw(o,a?{content:c=>l.get(c)}:{}),!0),r.zip.finish()}let s=pf(r.scenes,e.template,{skip:n.skip??0}),i=e.design.name;return Fx(s,{colour:e.colourSpace,...i===void 0?{}:{title:i}})}function Iw(e,t,n,r,o={}){return UL(LL(e,t,n,r,o))}var ht=Object.freeze({fieldOfViewDegrees:65,frameWidthPx:1920,minPxPerModule:4,minFocusMm:100,comfortMm:150}),Cf;function Nf(){if(Cf===void 0){let e=ht.fieldOfViewDegrees/2*(Me/180);Cf=je(e)/Be(e)}return Cf}function Pc(e,t){return e*ht.frameWidthPx/(2*t*Nf())}function Lf(e,t){return e*ht.frameWidthPx/(t*2*Nf())}function Cc(e=ht.minPxPerModule){return Math.max(e,ht.minPxPerModule)*2*ht.minFocusMm*Nf()/ht.frameWidthPx}function Pw(e){let[t,n,r,o]=e,s=t.x-n.x+r.x-o.x,i=t.y-n.y+r.y-o.y;if(s===0&&i===0)return[n.x-t.x,r.x-n.x,t.x,n.y-t.y,r.y-n.y,t.y,0,0,1];let a=n.x-r.x,l=o.x-r.x,c=n.y-r.y,u=o.y-r.y,d=a*u-l*c,m=(s*u-l*i)/d,f=(a*i-s*c)/d;return[n.x-t.x+m*n.x,o.x-t.x+f*o.x,t.x,n.y-t.y+m*n.y,o.y-t.y+f*o.y,t.y,m,f,1]}function zL(e){let[t,n,r,o,s,i,a,l,c]=e;return[s*c-i*l,r*l-n*c,n*i-r*s,i*a-o*c,t*c-r*a,r*o-t*i,o*l-s*a,n*a-t*l,t*s-n*o]}function VL(e,t){let[n,r,o,s,i,a,l,c,u]=e,[d,m,f,p,h,g,y,b,x]=t;return[d*n+m*s+f*l,d*r+m*i+f*c,d*o+m*a+f*u,p*n+h*s+g*l,p*r+h*i+g*c,p*o+h*a+g*u,y*n+b*s+x*l,y*r+b*i+x*c,y*o+b*a+x*u]}function Cw(e,t){return VL(zL(Pw(e)),Pw(t))}var Rs=255;function Of(e){let{width:t,height:n,data:r}=e,o=new Float32Array(t*n);for(let s=0,i=0;s<o.length;s+=1,i+=4){let a=.299*r[i]+.587*r[i+1]+.114*r[i+2],l=r[i+3]/255;o[s]=a*l+Rs*(1-l)}return{width:t,height:n,data:o}}function Ow(e){let t=new Uint8ClampedArray(e.width*e.height*4);for(let n=0,r=0;n<e.data.length;n+=1,r+=4){let o=Math.min(255,Math.max(0,Math.round(e.data[n])));t[r]=o,t[r+1]=o,t[r+2]=o,t[r+3]=255}return{width:e.width,height:e.height,data:t}}function Br(e,t){return e<0?0:e>=t?t-1:e}function Nc(e,t,n){let r=t-.5,o=n-.5,s=Math.floor(r),i=Math.floor(o),a=r-s,l=o-i,{width:c,height:u,data:d}=e,m=Br(s,c),f=Br(s+1,c),p=Br(i,u)*c,h=Br(i+1,u)*c,g=d[p+m]*(1-a)+d[p+f]*a,y=d[h+m]*(1-a)+d[h+f]*a;return g*(1-l)+y*l}function qL(e,t,n,r,o,s=Rs){let i=new Float32Array(n*r),a=Math.max(1,Math.floor(o)),l=1/(a*a),[c,u,d,m,f,p,h,g,y]=t;for(let b=0;b<r;b+=1)for(let x=0;x<n;x+=1){let w=0;for(let k=0;k<a;k+=1){let S=b+(k+.5)/a;for(let E=0;E<a;E+=1){let R=x+(E+.5)/a,C=h*R+g*S+y,A=(c*R+u*S+d)/C,O=(m*R+f*S+p)/C;w+=A<0||O<0||A>e.width||O>e.height?s:Nc(e,A,O)}}i[b*n+x]=w*l}return{width:n,height:r,data:i}}function Dw(e,t,n,r,o=2,s=Rs){let i=Cw(t,[{x:0,y:0},{x:e.width,y:0},{x:e.width,y:e.height},{x:0,y:e.height}]);return qL(e,i,n,r,o,s)}function Nw(e,t,n){let{width:r,height:o,data:s}=e,i=new Float32Array(r*o),a=(t.length-1)/2;if(n){for(let l=0;l<o;l+=1){let c=l*r;for(let u=0;u<r;u+=1){let d=0;if(u>=a&&u<r-a){let m=c+u-a;for(let f=0;f<t.length;f+=1)d+=s[m+f]*t[f]}else for(let m=-a;m<=a;m+=1)d+=s[c+Br(u+m,r)]*t[m+a];i[c+u]=d}}return{width:r,height:o,data:i}}for(let l=0;l<o;l+=1){let c=l*r;for(let u=-a;u<=a;u+=1){let d=Br(l+u,o)*r,m=t[u+a];for(let f=0;f<r;f+=1)i[c+f]=i[c+f]+s[d+f]*m}}return{width:r,height:o,data:i}}function HL(e){let t=Math.max(1,Math.ceil(3*e)),n=new Float64Array(2*t+1),r=0;for(let o=-t;o<=t;o+=1){let s=Mh(-(o*o)/(2*e*e));n[o+t]=s,r+=s}for(let o=0;o<n.length;o+=1)n[o]=n[o]/r;return n}function jw(e,t){if(!(t>.05))return Lc(e);let n=HL(t);return Nw(Nw(e,n,!0),n,!1)}function Bw(e,t,n){if(!(t>.25))return Lc(e);let r=Math.max(2,Math.ceil(t)+1),o=Be(n)*t,s=je(n)*t,{width:i,height:a}=e,l=new Float32Array(i*a);for(let c=0;c<a;c+=1)for(let u=0;u<i;u+=1){let d=0;for(let m=0;m<r;m+=1){let f=m/(r-1)-.5;d+=Nc(e,u+.5+f*o,c+.5+f*s)}l[c*i+u]=d/r}return{width:i,height:a,data:l}}function Df(e,t,n){let r=new Float32Array(e.data);if(!(t>0))return{width:e.width,height:e.height,data:r};for(let o=0;o<r.length;o+=1){let s=(n.next()+n.next()+n.next()-1.5)*2;r[o]=r[o]+s*t}return{width:e.width,height:e.height,data:r}}function Fw(e,t,n=0){let r=new Float32Array(e.data.length);for(let o=0;o<r.length;o+=1)r[o]=e.data[o]*t+n;return{width:e.width,height:e.height,data:r}}function Uw(e,t,n,r){let{width:o,height:s}=e,i=Be(r),a=je(r),l=[0,i*o,a*s,i*o+a*s],c=Math.min(...l),u=Math.max(...l)-c||1,d=new Float32Array(o*s);for(let m=0;m<s;m+=1)for(let f=0;f<o;f+=1){let p=(i*(f+.5)+a*(m+.5)-c)/u;d[m*o+f]=e.data[m*o+f]*(t+(n-t)*p)}return{width:o,height:s,data:d}}function zw(e,t,n){let{width:r,height:o}=e,s=new Float32Array(e.data),i=Math.max(0,Math.floor(n.cx-n.rx)),a=Math.min(r,Math.ceil(n.cx+n.rx)),l=Math.max(0,Math.floor(n.cy-n.ry)),c=Math.min(o,Math.ceil(n.cy+n.ry));for(let u=l;u<c;u+=1)for(let d=i;d<a;d+=1){let m=(d+.5-n.cx)/n.rx,f=(u+.5-n.cy)/n.ry,p=m*m+f*f;if(p>=1)continue;let h=Math.min(1,t*(1-p)),g=u*r+d,y=s[g];s[g]=y+(Rs-y)*h}return{width:r,height:o,data:s}}function Vw(e){let t=new Float32Array(e.data.length);for(let n=0;n<t.length;n+=1)t[n]=Math.min(255,Math.max(0,Math.round(e.data[n])));return{width:e.width,height:e.height,data:t}}function Lw(e,t,n,r){let{width:o,height:s,data:i}=e,a=new Float32Array(o*s);for(let l=0;l<s;l+=1)for(let c=0;c<o;c+=1){let u=i[l*o+c];for(let d=-t;d<=t;d+=1){let m=n?l*o+Br(c+d,o):Br(l+d,s)*o+c,f=i[m];(r?f<u:f>u)&&(u=f)}a[l*o+c]=u}return{width:o,height:s,data:a}}function qw(e,t,n){let r=Math.floor(t),o=t-r,s=c=>c===0?e:Lw(Lw(e,c,!0,n),c,!1,n),i=s(r);if(o===0)return i;let a=s(r+1),l=new Float32Array(e.data.length);for(let c=0;c<l.length;c+=1)l[c]=i.data[c]*(1-o)+a.data[c]*o;return{width:e.width,height:e.height,data:l}}function Hw(e,t){return t>0?qw(e,t,!0):Lc(e)}function Kw(e,t){return t>0?qw(e,t,!1):Lc(e)}function Gw(e,t){let n=new Float32Array(e.data.length);for(let r=0;r<n.length;r+=1){let o=e.data[r];n[r]=Rs-(Rs-o)*(1-t)}return{width:e.width,height:e.height,data:n}}function Lc(e){return{width:e.width,height:e.height,data:new Float32Array(e.data)}}function _w(e,t,n,r=0,o=0){let s=Be(n),i=je(n),a=e/2,l=t/2,c=(u,d)=>({x:a+(u-a)*s-(d-l)*i+r,y:l+(u-a)*i+(d-l)*s+o});return[c(0,0),c(e,0),c(e,t),c(0,t)]}function Qw(e,t,n,r,o){let s=Math.max(e,t)/2,i=Be(r),a=je(r),l=Be(n),c=je(n),u=[[-e/2,-t/2],[e/2,-t/2],[e/2,t/2],[-e/2,t/2]],d=([m,f])=>{let p=m*i+f*a,h=-m*a+f*i,g=h*l,y=h*c,b=o*s+y,x=o*s/b,w=p*x,k=g*x;return{x:w*i-k*a,y:w*a+k*i}};return u.map(d)}var KL=540,GL=10;function Ww(e,t){let n=KL/e;return t!==null&&(n=Math.min(n,Pc(t,ht.minFocusMm))),Math.min(GL,Math.max(ht.minPxPerModule,n))}var jf=.5,Bf=2,Xw=4,Yw=2,Zw=5,$w=.3,_L=Object.freeze([8,6,5,4.5,4,3.5,3,2.5]),Oc=Object.freeze([{axis:"distance",label:1,levels:_L,typical:4,unit:"px-per-module"},{axis:"focus",label:2,levels:Object.freeze([.1,.15,.2,.3,.4,.5,.6]),typical:.2,unit:"modules"},{axis:"motion",label:3,levels:Object.freeze([.15,.3,.5,.75,1,1.5,2]),typical:.3,unit:"modules"},{axis:"noise",label:4,levels:Object.freeze([2,3,4,6,8,12,16,24]),typical:4,unit:"levels"},{axis:"angle",label:5,levels:Object.freeze([10,15,20,25,30,40,50,60]),typical:20,unit:"degrees"},{axis:"light",label:6,levels:Object.freeze([.5,.7,.8,.9,.95,.98]),typical:.7,unit:"fraction"},{axis:"glare",label:7,levels:Object.freeze([.25,.5,.75,1,1.25,1.5,2]),typical:.5,unit:"fraction"},{axis:"ink",label:8,levels:Object.freeze([.025,.05,.1,.15,.2,.25,.3]),typical:.05,unit:"modules"},{axis:"contrast",label:9,levels:Object.freeze([.15,.3,.45,.6,.7,.8,.9]),typical:.3,unit:"fraction"}]),Jw=0;var ek=Me/180;function QL(e){return e==="baseline"?Jw:Oc.find(t=>t.axis===e).label}function WL(e,t){let n=Wn(e).fork(QL(t.axis)).fork(t.seed),r=n.fork(1);return{roll:(r.next()*2-1)*Xw*ek,phaseX:r.next(),phaseY:r.next(),direction:r.next()*Me,spotX:r.next(),spotY:r.next(),noise:n.fork(2)}}function XL(e,t){if(t.axis==="ink"){let n=t.level*e.scaleX;return t.seed%2===0?Hw(e.plane,n):Kw(e.plane,n)}return t.axis==="contrast"?Gw(e.plane,t.level):e.plane}function tk(e,t,n,r,o){let s=WL(r,o),i=o.pxPerModule,a=t*i,l=n*i,c=Yw*i,u;if(o.axis==="angle"){let S=Qw(a,l,o.level*ek,s.direction,Zw);u=YL(S,s.roll)}else u=[..._w(a,l,s.roll)];let d=Math.min(...u.map(S=>S.x)),m=Math.min(...u.map(S=>S.y)),f=Math.max(...u.map(S=>S.x)),p=Math.max(...u.map(S=>S.y)),h=Math.ceil(f-d+2*c+1),g=Math.ceil(p-m+2*c+1),y=u.map(S=>({x:S.x-d+c+s.phaseX,y:S.y-m+c+s.phaseY})),b=XL(e,o),x=Math.min(6,Math.max(2,Math.ceil(e.scaleX/i))),w=Dw(b,y,h,g,x),k=o.axis==="focus"?o.level*i:0;if(w=jw(w,Math.sqrt(jf*jf+k*k)),o.axis==="motion"&&(w=Bw(w,o.level*i,s.direction)),o.axis==="light"){let S=1-.5*o.level,E=1-o.level;w=Uw(w,S,E,s.direction*2),w=Vw(Df(w,Bf,s.noise.fork(1))),w=Fw(w,2/(S+E))}if(o.axis==="glare"){let S=(y[0].x+y[1].x+y[2].x+y[3].x)/4,E=(y[0].y+y[1].y+y[2].y+y[3].y)/4,R=$w*Math.min(a,l);w=zw(w,o.level,{cx:S+(s.spotX-.5)*.5*a,cy:E+(s.spotY-.5)*.5*l,rx:R,ry:R*.75})}return w=Df(w,o.axis==="noise"?o.level:Bf,s.noise),{image:Ow(w),quad:y}}function YL(e,t){let n=Be(t),r=je(t);return e.map(o=>({x:o.x*n-o.y*r,y:o.x*r+o.y*n}))}function go(e,t){switch(e.kind){case"solid":return[e.ink];case"entry":{let n=t.fills.get(e.ref.id);if(n===void 0)return[];let r=[];for(let s of n.params){if(s.kind!=="colour")continue;let i=e.ref.params?.[s.key];r.push(typeof i=="string"?i:s.default)}let o=e.ref.params?.count??n.params.find(s=>s.key==="count")?.default;return typeof o=="number"?r.slice(0,o):r}default:return e.stops.map(n=>n.ink)}}var nk=Object.freeze({r:255,g:255,b:255,a:1});function rk(e,t){let n=[...go(e.modules.paint,t)];for(let o of Object.values(e.regions))o?.outerPaint!==void 0&&n.push(...go(o.outerPaint,t)),o?.innerPaint!==void 0&&n.push(...go(o.innerPaint,t));let r=e.background===null?[nk]:go(e.background,t).map(o=>Dc(zt(o),nk));if(e.modules.light!==null){let o=r[0];r.push(...go(e.modules.light.paint,t).map(s=>Dc(zt(s),o)))}return{inks:n.map(zt),grounds:r}}function Dc(e,t){let n=e.a;return{r:e.r*n+t.r*(1-n),g:e.g*n+t.g*(1-n),b:e.b*n+t.b*(1-n),a:1}}function As(e){return .299*e.r+.587*e.g+.114*e.b}function Is(e){let t=e.r/255;return t<=.04045?t/12.92:Oa((t+.055)/1.055,2.4)}function ok(e){return Ff(e)>=0?"dark-on-light":"light-on-dark"}function Ff(e){let t=(o,s)=>o.reduce((i,a)=>i+As(Dc(a,s)),0)/Math.max(1,o.length),n=e.grounds[0];return(e.grounds.reduce((o,s)=>o+As(s),0)/e.grounds.length-t(e.inks,n))/255}function Uf(e,t,n,r){let o=t==="dark-on-light"?1:-1,s=Number.POSITIVE_INFINITY;for(let i of e.grounds)for(let a of e.inks){let l=o*(n(i)-n(Dc(a,i)))/r;l<s&&(s=l)}return s===Number.POSITIVE_INFINITY?0:s}var ZL=Object.freeze(["symbology","module-shape","region-shape","fill","frame","icon","asset"]);function er(e,t){e!=null&&e.kind==="entry"&&t("fill",e.ref.id)}function Yi(e){let t=new Set,n=(r,o)=>{typeof o=="string"&&t.add(`${r}:${o}`)};n("symbology",e.symbol.symbology),n("module-shape",e.modules.shape.id),er(e.modules.paint,n),er(e.background,n),e.modules.light!==null&&e.modules.light!==void 0&&(n("module-shape",e.modules.light.shape.id),er(e.modules.light.paint,n));for(let r of["finder","sub-finder","corner-finder"]){let o=e.regions?.[r];o!==void 0&&(n("region-shape",o.outer.id),n("region-shape",o.inner.id),er(o.outerPaint,n),er(o.innerPaint,n))}if(e.logo!==null&&e.logo!==void 0){let{source:r}=e.logo;n(r.kind==="icon"?"icon":"asset",r.id),er(e.logo.paint,n),er(e.logo.plate?.paint,n)}return e.frame!==null&&e.frame!==void 0&&(n("frame",e.frame.ref.id),er(e.frame.paint,n),er(e.frame.text?.paint,n)),Object.freeze([...t].sort())}var $L=/^[a-z0-9]+(?:-[a-z0-9]+)*$/;function jc(e,t){let n=ZL.includes(e)?e:"entry";return new K("verify/missing-entry","This check needs a style or picture this copy of the studio does not have, so it was not run.",t!==null&&t.length<=64&&$L.test(t)?{kind:n,id:t}:{kind:n})}function JL(e,t,n,r){let{design:o,symbologies:s}=t,i={symbology:a=>s.has(a),"module-shape":a=>o.moduleShapes.has(a),"region-shape":a=>o.regionShapes.has(a),fill:a=>o.fills.has(a),frame:a=>o.frames.has(a),icon:a=>o.icons.has(a)};for(let a of e){let l=a.indexOf(":"),c=l<0?"":a.slice(0,l),u=l<0?a:a.slice(l+1);if(c==="asset"){let m=typeof r=="object"&&r!==null&&Object.prototype.hasOwnProperty.call(r,u),f=n!==void 0&&Object.prototype.hasOwnProperty.call(n,u)?n[u]:void 0;if(!m||f===void 0)throw jc("asset",null);continue}if(c===""){if(!Object.values(i).some(m=>m(u)))throw jc("entry",u);continue}let d=i[c];if(d===void 0||!d(u))throw jc(c,u)}}function zf(e,t){if(e==null)return null;if(typeof e!="number"||!Number.isFinite(e)||e<=0)throw new TypeError(`verify: conditions.${t} is a positive number or null.`);return e}function e4(e){if(typeof e!="object"||e===null)throw new TypeError("verify: the job is an object.");if(typeof e.content!="string")throw new TypeError("verify: job.content is a string.");if(!Number.isInteger(e.seed)||e.seed<0||e.seed>4294967295)throw new TypeError("verify: job.seed is an integer from 0 to 2^32 - 1.");if(!Array.isArray(e.requires)||e.requires.some(t=>typeof t!="string"))throw new TypeError("verify: job.requires is a list of registry ids.");if(typeof e.conditions!="object"||e.conditions===null)throw new TypeError("verify: job.conditions is an object.");if(e.overlay!==void 0&&e.overlay!==null&&e.overlay!=="swiss-cross")throw new TypeError("verify: job.overlay is swiss-cross, or null for none.");if(e.captureSeeds!==void 0&&(!Number.isInteger(e.captureSeeds)||e.captureSeeds<1||e.captureSeeds>8))throw new TypeError("verify: job.captureSeeds is a whole number from 1 to 8.")}function t4(e,t,n){let r=t.quietZone,o=e.layout.regions.some(a=>a.kind==="concentric-5");if(t.frame===null||o&&t.frame.ref.id!=="none")return{x:r,y:r,quiet:r};let s=n.design.frames.require(t.frame.ref.id),i=s.layout({symbolSize:{width:e.matrix.width,height:e.matrix.height},quietZone:r,params:mt(s.params,t.frame.ref.params),paint:{kind:"solid",colour:{r:0,g:0,b:0,a:1}}});return{x:i.symbol.x+r,y:i.symbol.y+r,quiet:r}}function ik(e,t){if(e4(e),typeof t!="object"||t===null||typeof t.symbologies!="object"||typeof t.design!="object")throw new TypeError("verify: registries gives the symbologies and the design registries.");let n=[];try{n=Yi(e.design)}catch{}JL([...e.requires,...n],t,e.assets,e.design?.assets);let r=En(e.design,t.design);if(r.design===null)throw new K("design/invalid","This design cannot be checked until it is fixed.",{issues:r.issues.length});let o=r.design,s=zf(e.conditions.sizeMm,"sizeMm"),i=zf(e.conditions.dpi,"dpi")??o.output.dpi??null,a=zf(e.conditions.distanceMm,"distanceMm"),l=t.symbologies.require(o.symbol.symbology),c=Fn(e.content,{symbology:o.symbol.symbology,...o.symbol.ecLevel===void 0?{}:{ecLevel:o.symbol.ecLevel},...o.symbol.boostEc===void 0?{}:{boostEc:o.symbol.boostEc},...o.symbol.minVersion===void 0?{}:{minVersion:o.symbol.minVersion},...o.symbol.maxVersion===void 0?{}:{maxVersion:o.symbol.maxVersion},...o.symbol.mask===void 0?{}:{mask:o.symbol.mask},...o.symbol.segmentation===void 0?{}:{segmentation:o.symbol.segmentation}},t.symbologies),u=e.assets,d=tn(c,o,{registries:t.design,...u===void 0?{}:{assets:x=>u[x]},seed:e.seed,overlay:e.overlay??null}),m=t4(c,o,t),f=rk(o,t.design),p=c.matrix.width+2*m.quiet,h=o.output.sizeBasis==="symbol"?c.matrix.width:d.scene.width,g=d.scene.unitsPerMm===void 0?null:o.output.sizeMm*p/h,y=s??g,b=y===null?null:y/p;return{job:e,registries:t,design:o,entry:l,symbol:c,built:d,origin:{x:m.x,y:m.y},quietZone:m.quiet,conditions:{sizeMm:y,dpi:i,distanceMm:a},moduleMm:b,reference:l.read(c.matrix,{strict:!0}),seeds:e.captureSeeds??8,inks:f,polarity:ok(f)}}var Bc=10,ak=18,sk=Object.freeze({r:255,g:255,b:255,a:1});function Vf(e,t=Bc,n=!0){let{scene:r}=e.built,{dpi:o}=e.conditions,{moduleMm:s}=e;if(n&&s!==null&&o!==null){let c=Math.max(1,Math.round(r.width*s/25.4*o)),u=Of(Tt(r,{width:c,background:sk})),d=Math.max(1,Math.ceil(t*r.width/c)),m=u.width*d,f=u.height*d,p=new Float32Array(m*f);for(let h=0;h<f;h+=1){let g=Math.floor(h/d)*u.width;for(let y=0;y<m;y+=1)p[h*m+y]=u.data[g+Math.floor(y/d)]}return{plane:{width:m,height:f,data:p},scaleX:m/r.width,scaleY:f/r.height}}let i=Math.max(1,Math.round(r.width*t)),a=Math.max(1,Math.round(r.height*t));return{plane:Of(Tt(r,{width:i,height:a,background:sk})),scaleX:i/r.width,scaleY:a/r.height}}var n4=.25;function qf(e){return Math.ceil(n4*e)}function lk(e,t,n){let{layout:r,blocks:o}=e;if(t.length!==r.width*r.height)throw new TypeError("codewordCoverage: one obscured flag per module, row major.");let s=ll(o),i=s.block.length,a=new Uint8Array(i),l=new Uint8Array(i);for(let u=0;u<t.length;u+=1){if(t[u]===0)continue;let d=r.dataBits[u];if(d<0)continue;let m=d>>3;a[m]=1,n!==void 0&&n[u]!==0&&(l[m]=1)}let c=o.blocks.map(()=>({worst:0,expected:0}));for(let u=0;u<i;u+=1){let d=c[s.block[u]];d.worst+=a[u],d.expected+=l[u]}return{blocks:o.blocks.map((u,d)=>{let m=al(u.ecCount,o.p),f=qf(m),p=c[d];return{index:d,ec:u.ecCount,p:o.p,t:m,reserve:f,coveredWorst:p.worst,coveredExpected:p.expected,margin:m-f-p.worst}}),worst:a,expected:l}}function r4(e,t){let n=Number.POSITIVE_INFINITY;for(let r=0;r<t.length;r+=1){let o=t[r],s=o-qf(o)-e[r];s<n&&(n=s)}return n===Number.POSITIVE_INFINITY?0:n}function o4(e,t){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(e[n]!==t[n])return!1;return!0}function ck(e,t){let n=Tr(e,{profile:"strict-v1",polarity:t.polarity,symbologies:[t.entry.id],maxSymbols:1},t.registries.symbologies),r=n.ok?n.value[0]:void 0;if(r===void 0)return{read:!1,margin:null};let{read:o}=r,s=t.reference;if(o.version!==s.version||!o4(o.bitstream.bytes,s.bitstream.bytes))return{read:!1,margin:null};let i=r4(o.errorsPerBlock,o.capacityPerBlock);return{read:i>=0,margin:i}}var Fc=Object.freeze([.7,.55,.4,.2]),Uc=Object.freeze([.5,.4,.3,.2]),Zi=.4,s4={pass:"verify.check.contrast.sc.pass",warn:"verify.check.contrast.sc.warn",fail:"verify.check.contrast.sc.fail"},i4={pass:"verify.check.contrast.mod.pass",warn:"verify.check.contrast.mod.warn",fail:"verify.check.contrast.mod.fail"},a4={pass:"verify.check.logo-budget.pass",warn:"verify.check.logo-budget.warn",fail:"verify.check.logo-budget.fail"},uk=.25;function dk(e,t){let n=["A","B","C","D"];for(let r=0;r<t.length;r+=1)if(e>=t[r])return n[r];return"F"}function at(e,t,n,r,o,s,i){return{id:e,status:t,measured:n,threshold:r,...i===void 0?{}:{grade:i},messageKey:o,...s===void 0?{}:{params:s}}}function Hf(e){return Math.round(e*100)}function l4(e,t){return e===te.finder||e===te.separator||e===te["sub-finder"]||e===te["corner-finder"]||e===te.alignment&&t==="qr"}function c4(e,t){let{symbol:n,origin:r,polarity:o}=e,{obscured:s}=e.built,{width:i,height:a,data:l}=n.matrix,c=new Float32Array(i*a),u=Number.POSITIVE_INFINITY,d=Number.NEGATIVE_INFINITY;for(let g=0;g<a;g+=1)for(let y=0;y<i;y+=1){let b=Nc(t.plane,(r.x+y+.5)*t.scaleX,(r.y+g+.5)*t.scaleY),x=g*i+y;c[x]=b,s[x]!==1&&(b<u&&(u=b),b>d&&(d=b))}u===Number.POSITIVE_INFINITY&&(u=0,d=0);let m=(u+d)/2,f=d-u,p=new Uint8Array(i*a),h=Number.POSITIVE_INFINITY;for(let g=0;g<c.length;g+=1){let y=c[g],b=o==="dark-on-light"?y<m:y>m,x=l[g]===1===b;if(x||(p[g]=1),s[g]===1||l4(n.layout.roles[g],n.symbology))continue;let w=f===0?0:2*Math.abs(y-m)/f,k=x?w:-w;k<h&&(h=k)}return{samples:c,rmin:u,rmax:d,threshold:m,wrong:p,mod:h===Number.POSITIVE_INFINITY?0:h}}function u4(e,t,n){let{plane:r,scaleX:o,scaleY:s}=t,{origin:i,polarity:a}=e,{width:l,height:c}=e.symbol.matrix,u=n.rmax-n.rmin,d=a==="dark-on-light"?n.threshold+uk*u:n.threshold-uk*u,m=g=>a==="dark-on-light"?g>=d:g<=d,f=g=>({x0:Math.ceil((i.x-g)*o),y0:Math.ceil((i.y-g)*s),x1:Math.floor((i.x+l+g)*o),y1:Math.floor((i.y+c+g)*s)}),p=g=>({x0:Math.floor((i.x-g)*o),y0:Math.floor((i.y-g)*s),x1:Math.ceil((i.x+l+g)*o),y1:Math.ceil((i.y+c+g)*s)}),h=0;for(let g=1;g<=20;g+=1){let y=f(g),b=p(g-1);if(y.x0<0||y.y0<0||y.x1>r.width||y.y1>r.height||!d4(r,y,b,m))break;h=g}return h}function d4(e,t,n,r){for(let o=t.y0;o<t.y1;o+=1){let s=o>=n.y0&&o<n.y1;for(let i=t.x0;i<t.x1;i+=1){if(s&&i>=n.x0&&i<n.x1){i=n.x1-1;continue}if(!r(e.data[o*e.width+i]))return!1}}return!0}var m4=new Set([te.finder,te.separator,te.timing,te.format,te.version,te["dark-module"],te["sub-finder"],te["corner-finder"]]);function mk(e,t){let{symbol:n,entry:r,built:o,polarity:s,inks:i,reference:a}=e,l=[],c=c4(e,t),u=u4(e,t,c);l.push(at("quiet-zone",u>=r.quietZone?"pass":"fail",u,r.quietZone,u>=r.quietZone?"verify.check.quiet-zone.pass":"verify.check.quiet-zone.fail",{modules:u,minimum:r.quietZone}));let d=Uf(i,s,As,255),m=(c.rmax-c.rmin)/255,f=Math.min(d,m),p=f<Fc[3]?"fail":f<Fc[2]?"warn":"pass";l.push(at("contrast",p,f,Fc[2],s4[p],{percent:Hf(Math.max(0,f)),grade:dk(f,Fc)},"SC"));let h=c.mod,g=h<Uc[3]?"fail":h<Uc[2]?"warn":"pass";l.push(at("contrast",g,h,Uc[2],h<0?"verify.check.contrast.mod.wrong":i4[g],{percent:Hf(Math.max(0,h)),grade:dk(h,Uc)},"MOD"));let y=Ff(i);l.push(at("polarity",s==="dark-on-light"?"pass":"warn",y,0,s==="dark-on-light"?"verify.check.polarity.pass":"verify.check.polarity.warn"));let{obscured:b}=o,x=0,w=0;for(let I=0;I<b.length;I+=1){if(b[I]===0)continue;let U=n.layout.roles[I];m4.has(U)?x+=1:U===te.alignment&&(w+=1)}let k=o.issues.filter(I=>I.code==="design.issue.region-pair").length,S=x>0||k>0?"fail":w>0?"warn":"pass";l.push(at("function-patterns",S,x+k+w,0,x>0?"verify.check.function-patterns.covered":k>0?"verify.check.function-patterns.finder":w>0?"verify.check.function-patterns.alignment":"verify.check.function-patterns.pass",{modules:x+w},"FPD"));let E=lk(n,b,c.wrong),R=Math.min(...E.blocks.map(I=>I.margin)),C=E.blocks.reduce((I,U)=>I+U.coveredWorst,0),A=E.blocks.some(I=>I.coveredExpected>I.t-2*I.reserve),O=R<0?"fail":C>0&&A?"warn":"pass";l.push(at("logo-budget",O,R,0,C===0?"verify.check.logo-budget.none":a4[O],{codewords:C,spare:Math.max(0,R)},"UEC")),l.push(at("finder-shape",k>0?"fail":"pass",k,0,k>0?"verify.check.finder-shape.fail":"verify.check.finder-shape.pass",void 0,"FPD"));let D=Uf(i,s,Is,1);l.push(at("colour-red-channel",D<Zi?"warn":"pass",D,Zi,D<Zi?"verify.check.colour-red-channel.warn":"verify.check.colour-red-channel.pass",{percent:Hf(Math.max(0,D))}));let N=[];r.phoneReadable||N.push(at("reader-support","warn",0,1,r.id==="rmqr"?"verify.check.reader-support.rmqr":"verify.check.reader-support.micro"));let T=a.bitstream.segments;return T.some(I=>I.mode==="kanji")&&N.push(at("reader-support","warn",1,0,"verify.check.reader-support.kanji")),T.some(I=>I.eci!==null)&&N.push(at("reader-support","pass",1,0,"verify.check.reader-support.eci")),N.length===0&&N.push(at("reader-support","pass",1,1,"verify.check.reader-support.pass")),l.push(...N),{checks:l,coverage:E,sampling:c}}var fk=(e,t)=>ck(e.image,t);function pk(e,t,n){let r;return{get image(){let{scene:o}=t.built;return r??=tk(e(),o.width,o.height,t.job.seed,n).image,r}}}function f4(e,t,n){let r=[];for(let o of Oc){if(n!==void 0&&!n.includes(o.axis))continue;if(o.axis!=="distance"){r.push({ladder:o,levels:o.levels,typical:o.levels.indexOf(o.typical)});continue}let{moduleMm:s}=e;if(s===null)continue;let{distanceMm:i}=e.conditions,a=i===null?ht.minPxPerModule:Math.min(t,Pc(s,i)),l=[t,...o.levels.filter(c=>c<t)];l.includes(a)||l.push(a),l.sort((c,u)=>u-c),r.push({ladder:o,levels:l,typical:l.indexOf(a)})}return r}function*p4(e,t,n,r,o,s,i){let a=o.reader??fk,{axis:l}=n.ladder,c=-1,u=-1,d=null,m=0,f=o.onlyTypical===!0,p=o.stopAtTypical===!0||f?n.typical:n.levels.length-1;for(let h=f?n.typical:0;h<=p&&u<0;h+=1){let g=n.levels[h];for(let y=0;y<e.seeds;y+=1){let b={axis:l,level:g,seed:y,pxPerModule:l==="distance"?g:r},x=a(pk(t,e,b),e,b);if(m+=1,s.done+=1,x.read?d=d===null?x.margin:Math.min(d,x.margin):u=h,yield{done:s.done,total:s.total,axis:l},u>=0)break}u<0&&(c=h)}s.done+=n.levels.length*e.seeds-m,i.set(l,{passed:c,failed:u,minMargin:d,seeds:e.seeds})}function h4(e){return Math.min(ak,Math.max(Bc,Math.ceil(1.5*e)))}function*y4(e,t={}){let n=t.reader??fk,r=e.symbol.matrix.width+2*e.quietZone,o=Ww(r,e.moduleMm),s=f4(e,o,t.axes),i=1+e.seeds+s.reduce((h,g)=>h+g.levels.length*e.seeds,0),a={done:0,total:i},l=mk(e,Vf(e,Bc,!1));a.done+=1,yield{done:a.done,total:i,axis:"static"};let c,u=()=>(c??=Vf(e,h4(o)),c),d=!0,m=null,f=0;for(let h=0;h<e.seeds;h+=1){let g={axis:"baseline",level:0,seed:h,pxPerModule:o},y=n(pk(u,e,g),e,g);if(f+=1,a.done+=1,y.read?m=m===null?y.margin:Math.min(m,y.margin):d=!1,yield{done:a.done,total:i,axis:"static"},!d)break}a.done+=e.seeds-f;let p=new Map;for(let h of s)yield*p4(e,u,h,o,t,a,p);return g4(e,l,s,p,{passed:d,minMargin:m,seeds:f})}function Gf(e,t){let n=t===1?10:100;return Math.round(e*n)/n}function Kf(e,t,n){if(t<0)return null;let r=e.levels[t];return e.ladder.axis!=="distance"?r:Math.round(Lf(n,r))}function g4(e,t,n,r,o){let{moduleMm:s,conditions:i,symbol:a}=e,l=n.map(g=>{let y=r.get(g.ladder.axis);return{axis:g.ladder.axis,worstPassed:Kf(g,y.passed,s),firstFailed:Kf(g,y.failed,s),minMargin:y.minMargin,seeds:y.seeds,typical:Kf(g,g.typical,s)}}),c=n.find(g=>g.ladder.axis==="distance"),u=null;if(c!==void 0){let g=r.get("distance");u=g.passed<0?Number.POSITIVE_INFINITY:Math.max(ht.minPxPerModule,c.levels[g.passed])}else s!==null&&(u=ht.minPxPerModule);let d=u===null||!Number.isFinite(u)?null:Cc(u),m=s===null||u===null?null:Number.isFinite(u)?Lf(s,u):0,f=[];for(let g of t.checks)f.push(g),g.id==="logo-budget"&&f.push(b4(e,m,u));let p=t.coverage.blocks.map(g=>({index:g.index,ec:g.ec,p:g.p,t:g.t,coveredWorst:g.coveredWorst,coveredExpected:g.coveredExpected,margin:g.margin})),h="pass";f.some(g=>g.status==="warn")&&(h="warn");for(let g of n){let y=r.get(g.ladder.axis);y.failed>=0&&y.failed<=g.typical&&(h="warn")}return(!o.passed||f.some(g=>g.status==="fail"))&&(h="fail"),{schema:1,profile:"strict-v1",seed:e.job.seed,verdict:h,symbol:{symbology:a.symbology,version:a.version,ecLevel:a.ecLevel,mask:a.mask,modules:[a.matrix.width,a.matrix.height]},conditions:i,checks:f,blocks:p,captures:l,limits:{maxDistanceMm:m===null?null:Math.round(m),minModuleMm:d===null?null:Gf(d,2),inkFraction:e.built.inkFraction},baseline:o}}function b4(e,t,n){let{moduleMm:r,conditions:o}=e;if(r===null||t===null||n===null)return at("module-size","warn",0,Cc(),"verify.check.module-size.unknown");let s=Number.isFinite(n)?Cc(n):Number.POSITIVE_INFINITY,i=o.sizeMm,a={sizeMm:Gf(i,1),moduleMm:Gf(r,2),distanceCm:Math.round(t/10)};if(!Number.isFinite(s))return at("module-size","fail",r,0,"verify.check.module-size.unread",a);let l=Math.ceil(i*s/r);if(r<s)return at("module-size","fail",r,s,"verify.check.module-size.fail",{...a,minimumMm:l});let c=o.distanceMm;return c!==null&&t<c?at("module-size","warn",r,s,"verify.check.module-size.short",{...a,expectedCm:Math.round(c/10),minimumMm:Math.ceil(i*c/t)}):t<ht.comfortMm?at("module-size","warn",r,s,"verify.check.module-size.close",a):at("module-size","pass",r,s,"verify.check.module-size.pass",a)}function zc(e,t){return y4(ik(e,t))}function x4(e){let{assets:t}=e;return{content:e.content,design:e.design,conditions:{sizeMm:e.sizeMm,dpi:e.dpi,distanceMm:null},seed:e.seed,requires:Yi(e.design),...Object.keys(t).length===0?{}:{assets:t},captureSeeds:e.captureSeeds,overlay:e.overlay}}function w4(e){let t=[];e.baseline.passed||t.push(P(nl.baselineFailed,["check","baseline"],"warning"));for(let n of e.checks)n.status!=="pass"&&t.push(P(n.messageKey,["check",n.id],n.status==="fail"?"warning":"info",n.params));return{verdict:e.verdict,issues:t}}function hk(e,t=zc){return function*(r){let o=yield*t(x4(r),e);return w4(o)}}var k4=8,Vc=class{decoded=new Map;image(t){if(this.decoded.has(t)){let o=this.decoded.get(t);return this.decoded.delete(t),this.decoded.set(t,o),o}let n=null,r=Lo(t);if(r!==null)try{n=Ac(r,{maxPixels:he.assetSide*he.assetSide})}catch{n=null}for(this.decoded.set(t,n);this.decoded.size>k4;){let o=this.decoded.keys().next().value;this.decoded.delete(o)}return n}lookup(t){return n=>{let r=t.assets?.[n];return r===void 0?void 0:this.image(r.png)??void 0}}all(t){let n=t.assets;if(n===void 0)return;let r={};for(let[o,s]of Object.entries(n)){let i=this.image(s.png);i!==null&&(r[o]=i)}return r}};function yk(e,t){return t===void 0?e.minSizeMm:e.sizesMm?.[t]??e.minSizeMm}var qc="https://example.com/",v4=["link","contact","message","network","event","place","payment","commerce","text"],S4=["classic","rounded","dots","hex","fluid","bold","minimal","colour","print"],M4=["L","M","Q","H"],Qf={kind:"solid",colour:{r:0,g:0,b:0,a:1}},Wf={kind:"solid",colour:{r:255,g:255,b:255,a:1}},gk=["11011","10101","01110","10101","11011"];function Ps(e){let{design:t}=e;return[e.symbologies.version,e.payloads.version,t.moduleShapes.version,t.regionShapes.version,t.fills.version,t.frames.version,t.icons.version,t.presets.version].join(".")}function E4(){return yn({width:1,height:1,background:null,layers:[]})}function bo(e){let t;return()=>{if(t===void 0)try{t=e()}catch{t=E4()}return t}}function $i(e,t,n){return yn(e,{idPrefix:`t-${t}-${n}-`})}function T4(e,t){let n=e.moduleShapes.require(t),r=gk.length,o=new Uint8Array(r*r);gk.forEach((c,u)=>{for(let d=0;d<r;d+=1)o[u*r+d]=c[d]==="1"?1:0});let s=li(r,r,o),i=mt(n.params,void 0),a=Wn(1),l=new ee;for(let c=0;c<o.length;c+=1)o[c]===1&&(l.transform(ja(c%r+1,Math.floor(c/r)+1)),n.path({neighbours:s[c],params:i,prng:a.fork(c)},l));return $i({width:r+2,height:r+2,background:Wf,layers:[{kind:"path",path:l.build(),paint:Qf}]},"module",t)}function R4(e,t){let n=t==="outer"?"square-centre":"square",r=e.regionShapes.get(n);return r!==void 0&&r.part!==t?r:void 0}function A4(e,t){let n=e.regionShapes.require(t),r=n.kinds.includes("concentric-7")?"concentric-7":n.kinds[0]??"concentric-7",o=new ee;pi(n,r,mt(n.params,void 0),1,1,o);let s=R4(e,n.part);return s!==void 0&&s.kinds.includes(r)&&pi(s,r,mt(s.params,void 0),1,1,o),$i({width:9,height:9,background:Wf,layers:[{kind:"path",path:o.build(),paint:Qf}]},"region",t)}function I4(e,t){let n=e.fills.require(t),r={kind:"entry",ref:{id:t}},o=Wn(1),s=[],i=4;if(n.space==="module")for(let a=0;a<i*i;a+=1){let l=a%i+.5,c=Math.floor(a/i)+.5,u={x:l,y:c,width:1,height:1};s.push({kind:"path",path:new ee().rect(l,c,1,1).build(),paint:Et(r,u,e.fills,o.fork(a))})}else{let a={x:.5,y:.5,width:i,height:i};s.push({kind:"path",path:new ee().rect(a.x,a.y,a.width,a.height).build(),paint:Et(r,a,e.fills,o)})}return $i({width:i+1,height:i+1,background:Wf,layers:s},"fill",t)}function P4(e,t){let n=e.icons.require(t);return $i({width:1,height:1,background:null,layers:[{kind:"path",path:n.path,paint:Qf}]},"icon",t)}function _f(e,t,n,r,o,s,i){let a=Nr(n,i);return $i(tn(t,a.design,{registries:e,seed:1,overlay:a.overlay,...s===void 0?{}:{fonts:s}}).scene,r,o)}function C4(e){return Fn(qc,{ecLevel:"M"},e.symbologies)}function N4(e,t){let n=new Set;for(let r of e)for(let o of t(r))n.add(o);return M4.filter(r=>n.has(r))}var L4=Object.freeze(["square","dot","hex"]);function O4(e,t,n){let r="concentric-7";if(!t.kinds.includes(r))return Object.freeze([]);let o=mt(t.params,void 0),s=[];for(let i of e.regionShapes.list()){if(i.part===t.part||!i.kinds.includes(r))continue;let a=mt(i.params,void 0),[l,c,u,d]=t.part==="outer"?[t,o,i,a]:[i,a,t,o];try{yr(l,c,u,d,r,n)&&s.push(i.id)}catch{}}return Object.freeze(s)}function bk(e,t){let{design:n}=e,r,o=()=>r??=C4(e),s=v4.map(p=>({category:p,labelKey:hd(p),types:Object.freeze(e.payloads.list().filter(h=>h.category===p).map(h=>Object.freeze({id:h.id,labelKey:h.labelKey,descriptionKey:h.descriptionKey,actionKey:h.actionKey,category:h.category,generate:h.generate!==!1,designLocked:h.constraints?.designLocked===!0})))})).filter(p=>p.types.length>0),i=e.symbologies.list().map(p=>Object.freeze({id:p.id,labelKey:p.labelKey,phoneReadable:p.phoneReadable,noteKey:p.phoneReadable?null:`symbology.${p.id}.not-phone-readable`,ecLevels:Object.freeze(N4(p.versions,h=>p.ecLevels(h))),quietZone:p.quietZone})),a=n.moduleShapes.list().map(p=>Object.freeze({id:p.id,labelKey:p.labelKey,params:p.params,family:hr(p),thumbnail:bo(()=>T4(n,p.id))})),l=p=>{let h,g=()=>h??=Object.freeze(Object.fromEntries(L4.map(y=>[y,O4(n,p,y)])));return Object.freeze({id:p.id,labelKey:p.labelKey,params:p.params,part:p.part,kinds:p.kinds,get pairs(){return g().square},get pairsByFamily(){return g()},thumbnail:bo(()=>A4(n,p.id))})},c=n.regionShapes.list(),u=n.fills.list().map(p=>Object.freeze({id:p.id,labelKey:p.labelKey,params:p.params,thumbnail:bo(()=>I4(n,p.id))})),d=n.frames.list().map(p=>Object.freeze({id:p.id,labelKey:p.labelKey,params:p.params,text:p.text,thumbnail:bo(()=>_f(n,o(),{...cr(),frame:{ref:{id:p.id}}},"frame",p.id,t))})),m=n.icons.list().map(p=>Object.freeze({id:p.id,labelKey:p.labelKey,params:Object.freeze([]),thumbnail:bo(()=>P4(n,p.id))})),f=S4.map(p=>({category:p,labelKey:yd(p),presets:Object.freeze(n.presets.list().filter(h=>h.category===p).map(h=>Object.freeze({id:h.id,labelKey:h.labelKey,params:Object.freeze([]),category:h.category,minSizeMm:h.minSizeMm,ecLevels:h.ecLevels,sizesMm:Object.freeze(Object.fromEntries(h.ecLevels.map(g=>[g,yk(h,g)]))),thumbnail:bo(()=>_f(n,o(),h.design,"preset",h.id,t))})))})).filter(p=>p.presets.length>0);return Object.freeze({payloadTypes:Object.freeze(s.map(p=>Object.freeze(p))),symbologies:Object.freeze(i),moduleShapes:Object.freeze(a),rings:Object.freeze(c.filter(p=>p.part==="outer").map(l)),centres:Object.freeze(c.filter(p=>p.part==="inner").map(l)),fills:Object.freeze(u),frames:Object.freeze(d),icons:Object.freeze(m),presets:Object.freeze(f.map(p=>Object.freeze(p)))})}function xk(e,t,n,r,o){let s=new Map;return Object.freeze({get(i){let a=e.design.presets.get(i);if(a===void 0)return null;if(n===null){for(let c of t.presets)for(let u of c.presets)if(u.id===i)return u.thumbnail();return null}let l=s.get(i);return l===void 0&&(l=bo(()=>_f(e.design,n,a.design,"preset",i,o,r))(),s.set(i,l)),l}})}var Kc=16384,Xf=64*1024*1024,D4=1024,j4=300,_c=25,wk=Object.freeze({svg:"image/svg+xml",png:"image/png",jpeg:"image/jpeg",webp:"image/webp",pdf:"application/pdf",eps:"application/postscript"}),B4=Object.freeze({svg:"svg",png:"png",jpeg:"jpg",webp:"webp",pdf:"pdf",eps:"eps"}),F4={r:255,g:255,b:255,a:1};function U4(e){return typeof e=="number"&&Number.isFinite(e)&&e>0}function Hc(e,t,n){return typeof e=="number"&&Number.isFinite(e)&&e>=t&&e<=n}function z4(e,t){let n=[],r=l=>{n.push(P(Le.exportOption,["options",l],"warning"))},o=typeof t=="object"&&t!==null?t:{},s=e.design,i={};if(o.quietZone!==void 0){let l=o.quietZone;if(typeof l=="number"&&Number.isInteger(l)&&l>=0&&l<=he.quietZone){s={...s,quietZone:l};let c=Oo[e.symbol.symbology]??4;l<c&&n.push(P(Le.quietZoneBelowMinimum,["options","quietZone"],"warning",{min:c}))}else r("quietZone")}let a=s.output.sizeMm;if(o.sizeMm!==void 0&&(Hc(o.sizeMm,he.sizeMm.min,he.sizeMm.max)?e.fixedSizeMm!==void 0&&o.sizeMm!==e.fixedSizeMm?n.push(P(Le.exportSizeConstrained,["options","sizeMm"],"warning",{size:e.fixedSizeMm})):a=o.sizeMm:r("sizeMm")),a!==s.output.sizeMm&&(s={...s,output:{...s.output,sizeMm:a}}),o.widthPx!==void 0){let l=o.widthPx;typeof l=="number"&&Number.isInteger(l)&&l>=1&&l<=Kc?i.widthPx=l:r("widthPx")}return o.dpi!==void 0?Hc(o.dpi,he.dpi.min,he.dpi.max)?i.dpi=o.dpi:r("dpi"):s.output.dpi!==void 0&&(i.dpi=s.output.dpi),o.colourSpace!==void 0&&(o.colourSpace==="srgb"||o.colourSpace==="cmyk"?i.colourSpace=o.colourSpace:r("colourSpace")),o.bleedMm!==void 0&&(Hc(o.bleedMm,0,50)?i.bleedMm=o.bleedMm:r("bleedMm")),o.cropMarks!==void 0&&(typeof o.cropMarks=="boolean"?i.cropMarks=o.cropMarks:r("cropMarks")),o.quality!==void 0&&(Hc(o.quality,0,1)?i.quality=o.quality:r("quality")),{design:s,issues:n,options:i}}function Gc(e){let t=e.unitsPerMm;return U4(t)?{width:e.width/t,height:e.height/t}:null}function V4(e,t,n){if(t!==void 0)return t;let r=Gc(e);if(r!==null)return Math.max(1,Math.round(r.width/25.4*(n??j4)));let o=Math.max(1,Math.ceil(D4/e.width));return Math.max(1,Math.round(e.width*o))}function q4(e,t){return new K("render/surface-too-large","That picture is too large to draw here. Choose a smaller size.",{width:e,height:t,maxPixels:Xf})}function kk(e){return new K("render/format-unavailable","This browser cannot save in that format. Choose PNG or SVG.",{format:e})}async function H4(e,t,n,r){if(t!=="png"&&r===null)return Y(kk(t));let o=V4(e,n.options.widthPx,n.options.dpi),s=Math.max(1,Math.round(o*e.height/e.width));if(o>Kc||s>Kc||o*s>Xf)return Y(q4(o,s));let i=Tt(e,{width:o,height:s,...t==="jpeg"&&e.background===null?{background:F4}:{}});if(t==="png"){let l=Gc(e),c=l===null?n.options.dpi:o/l.width*25.4;return ae({bytes:Gn(i,c===void 0?{}:{dpi:c}),width:o,height:s})}let a=await r.encode(i,t,n.options.quality===void 0?{}:{quality:n.options.quality});return a.ok?ae({bytes:a.value,width:o,height:s}):a}async function vk(e,t,n){if(!Object.prototype.hasOwnProperty.call(wk,t))throw new TypeError("export: format is svg, png, jpeg, webp, pdf or eps.");if((t==="pdf"||t==="eps")&&e.printer===null)return Y(kk(t));let r=z4(e,n),o;try{o=tn(e.symbol,r.design,{registries:e.registries,assets:e.assets,fonts:e.fonts,seed:e.seed,overlay:e.overlay})}catch(c){return Y($e(c,"render/format-unavailable"))}let{scene:s}=o;if((t==="pdf"||t==="eps")&&Gc(s)===null){let c=e.conditions.sizeMm??_c;s={...s,unitsPerMm:(e.symbol.matrix.width+2*r.design.quietZone)/c}}let i=[...o.issues,...r.issues],a=Vy(r.design.name,B4[t]),l=(c,u,d)=>ae(Object.freeze({filename:a,mime:wk[t],bytes:c,width:u,height:d,issues:i}));try{switch(t){case"svg":return l(new TextEncoder().encode(yn(s)),s.width,s.height);case"png":case"jpeg":case"webp":{let c=await H4(s,t,r,e.rasterEncoder);return c.ok?l(c.value.bytes,c.value.width,c.value.height):c}case"pdf":case"eps":{let c=e.printer,u=Gc(s),d=r.options.colourSpace??r.design.output.colourSpace;if(t==="pdf"){let f=c.pdf(s,{colour:d,widthMm:u.width,heightMm:u.height,...r.options.bleedMm===void 0?{}:{bleedMm:r.options.bleedMm},...r.options.cropMarks===void 0?{}:{cropMarks:r.options.cropMarks}});return l(f,u.width,u.height)}let m=c.eps(s,{colour:d,widthMm:u.width});return l(new TextEncoder().encode(m),u.width,u.height)}}}catch(c){return Y($e(c,"render/format-unavailable"))}}function K4(e,t){return e.path[0]==="fields"&&e.path[1]===t}function G4(e,t){if(e.safety===void 0)return[];try{return e.safety(t)}catch{return[]}}function Sk(e,t,n){let r=e.fields.map(c=>{let u=Object.prototype.hasOwnProperty.call(t,c.key)?t[c.key]:vd(c);return Object.freeze({key:c.key,kind:c.kind,labelKey:c.labelKey,hintKey:c.hintKey??null,required:c.required===!0,multiple:c.multiple===!0,maxItems:c.maxItems??null,maxLength:c.maxLength??null,min:c.min??null,max:c.max??null,options:c.options??[],group:c.group??null,advanced:c.advanced===!0,secret:c.kind==="secret",value:u,issues:Object.freeze(n.filter(d=>K4(d,c.key)))})}),o=[],s=null,i=()=>{s!==null&&(o.push(Object.freeze({id:s.id,labelKey:s.id===null?null:gd(s.id),advanced:s.fields.every(c=>c.advanced),fields:Object.freeze(s.fields.map(c=>c.key))})),s=null)};for(let c of r)(s===null||s.id!==c.group)&&(i(),s={id:c.group,fields:[]}),s.fields.push(c);i();let a=new Set(e.fields.map(c=>c.key)),l=n.some(c=>c.severity==="error");return Object.freeze({typeId:e.id,labelKey:e.labelKey,descriptionKey:e.descriptionKey,actionKey:e.actionKey,category:e.category,fields:Object.freeze(r),groups:Object.freeze(o),hasAdvanced:r.some(c=>c.advanced),issues:Object.freeze(n.filter(c=>!(c.path[0]==="fields"&&a.has(c.path[1])))),compatibility:e.compatibility??[],safety:l?[]:G4(e,t),designLocked:e.constraints?.designLocked===!0})}var Mk=Object.freeze({past:Object.freeze([]),future:Object.freeze([]),group:null,coalescing:null});function Yf(e,t){return e.length>t?e.slice(e.length-t):e}function Zf(e,t,n,r){return e.group!==null?e:n!==null&&n===e.coalescing&&e.past.length>0?e.future.length===0?e:{...e,future:[]}:{past:Yf([...e.past,t],r),future:[],group:null,coalescing:n}}function Ek(e){return e.coalescing===null?e:{...e,coalescing:null}}function Tk(e,t,n,r){return e.group?.key===t?e:{...e.group===null?e:Qc(e,e.group.key,n,r),group:{key:t,base:n},coalescing:null}}function Qc(e,t,n,r){let o=e.group;return o===null||o.key!==t?e:$f(o.base,n)?{...e,group:null}:{past:Yf([...e.past,o.base],r),future:[],group:null,coalescing:null}}function Rk(e){return e.group===null?null:{history:{...e,group:null},restore:e.group.base}}function Ak(e,t){let n=e.past[e.past.length-1];return n===void 0?null:{history:{past:e.past.slice(0,-1),future:[...e.future,t],group:null,coalescing:null},restore:n}}function Ik(e,t,n){let r=e.future[e.future.length-1];return r===void 0?null:{history:{past:Yf([...e.past,t],n),future:e.future.slice(0,-1),group:null,coalescing:null},restore:r}}function $f(e,t){return e.typeId===t.typeId&&e.fields===t.fields&&e.design===t.design}var ep=7;function Jf(e){let t=e/255;return t<=.04045?t/12.92:Oa((t+.055)/1.055,2.4)}function nn(e){let{r:t,g:n,b:r}=zt(e);return .2126*Jf(t)+.7152*Jf(n)+.0722*Jf(r)}function xo(e,t){let n=nn(e),r=nn(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)}var Cs="logo",Ji=he.assetSide,Xc=he.assetBytes,Wc=Object.freeze({size:.2,clear:"box",padding:1,plate:null});function tp(e,t){let n=e.logo,r={size:n?.size??Wc.size,clear:n?.clear??Wc.clear,padding:n?.padding??Wc.padding,plate:n?.plate??Wc.plate,source:{kind:"asset",id:Cs}};return Object.freeze([{path:["assets",Cs],value:t},{path:["logo"],value:r}])}function np(e){let t=[{path:["logo"],value:null}];return e.assets!==void 0&&t.push({path:["assets"],value:void 0}),Object.freeze(t)}var Pk=.8,Ck=4.5,Nk=32,_4="#ffffff";function rp(e){return{kind:"solid",ink:e}}function Q4(e){return e!==null&&e.kind==="solid"?e.ink:_4}function op(e,t){let n=[...t.palette].sort((c,u)=>nn(c)-nn(u)),r=e,o=n[n.length-1];o!==void 0&&nn(o)>=Pk&&(r={...r,background:rp(o)});let s=Q4(r.background),i=n.filter(c=>nn(c)<nn(s)&&xo(c,s)>=Ck),[a,l]=i;if(a!==void 0&&(r={...r,modules:{...r.modules,paint:rp(a)}}),l!==void 0){let c=r.regions.finder??{outer:{id:"square"},inner:{id:"square-centre"}};r={...r,regions:{...r.regions,finder:{...c,outerPaint:rp(l)}}}}if(t.logo!==null){let c=r.logo;r={...r,logo:{size:c?.size??.2,clear:c?.clear??"box",padding:c?.padding??1,plate:c?.plate??null,source:{kind:"asset",id:Cs}},assets:{[Cs]:t.logo}}}return r}function Yc(e){return e==null||e.kind==="entry"?[]:e.kind==="solid"?[e.ink]:e.stops.map(t=>t.ink)}function W4(e,t){return JSON.stringify(e)===JSON.stringify(t)}function sp(e){let t=[...Yc(e.modules.paint),...Yc(e.regions.finder?.outerPaint),...Yc(e.regions.finder?.innerPaint),...Yc(e.background)],n=[];for(let s of t)n.length<Nk&&!n.some(i=>W4(i,s))&&n.push(s);let r=e.logo?.source,o=r?.kind==="asset"?e.assets?.[r.id]??null:null;return Object.freeze({palette:Object.freeze(n),logo:o,presets:Object.freeze([])})}var X4=new Set(["__proto__","constructor","prototype"]),Y4=16;function Lk(e){if(!Array.isArray(e)||e.length>Y4)return"shape";for(let t of e)if(typeof t=="number"){if(!Number.isInteger(t)||t<0||t>1024)return"shape"}else{if(typeof t!="string"||t.length===0||t.length>64)return"shape";if(X4.has(t))return"key"}return null}function Ok(e,t,n,r){let o=t[n],s=Array.isArray(e)?[...e]:typeof e=="object"&&e!==null?{...e}:typeof o=="number"?[]:{},i=s;return n===t.length-1?(r===void 0?Array.isArray(s)?s.splice(o,1):delete i[o]:i[o]=r,s):(i[o]=Ok(i[o],t,n+1,r),s)}function Dk(e,t,n){return t.length===0?n:Ok(e,t,0,n)}function Zc(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function tr(e,t){if(e===t)return!0;if(Array.isArray(e)){if(!Array.isArray(t)||e.length!==t.length)return!1;for(let n=0;n<e.length;n+=1)if(!tr(e[n],t[n]))return!1;return!0}if(Zc(e)){if(!Zc(t))return!1;let n=Object.keys(e);if(n.length!==Object.keys(t).length)return!1;for(let r of n)if(!Object.prototype.hasOwnProperty.call(t,r)||!tr(e[r],t[r]))return!1;return!0}return!1}function ea(e,t){if(tr(e,t))return e;if(Array.isArray(t)&&Array.isArray(e))return t.map((n,r)=>ea(e[r],n));if(Zc(t)&&Zc(e)){let n={};for(let r of Object.keys(t))n[r]=ea(e[r],t[r]);return n}return t}function $c(e,t){let{scheduler:n,clock:r,signal:o,progress:s,failure:i}=t;return new Promise((a,l)=>{let c=null,u=!1,d=()=>{u=!0,o.removeEventListener("abort",p),c?.(),c=null},m=y=>{d(),a(y)},f=y=>{d(),y instanceof TypeError?l(y):a(Y($e(y,i)))},p=()=>m(Y(new bn));if(o.aborted){m(Y(new bn));return}o.addEventListener("abort",p);let h;try{h=e()}catch(y){f(y);return}let g=()=>{c=null;let y=r();try{for(;;){let b=h.next();if(b.done===!0){m(ae(b.value));return}if(s(b.value),u)return;if(r()-y>=n.sliceMs)break}}catch(b){f(b);return}c=n.later(g,0)};c=n.later(g,0)})}function jk(e){let t=new Set;return{sliceMs:e.sliceMs,get pending(){return t.size},later(n,r){let o=()=>{t.delete(o)&&s()},s=e.later(()=>{t.delete(o)&&n()},r);return t.add(o),o},cancelAll(){for(let n of[...t])n()}}}var Z4=.25,$4=48;function ip(e){return Math.round(Math.min(255,Math.max(0,e))).toString(16).padStart(2,"0")}function Bk(e,t,n){let r=t*Math.min(n,1-n),o=s=>{let i=(s+e*12)%12;return(n-r*Math.max(-1,Math.min(i-3,9-i,1)))*255};return`#${ip(o(0))}${ip(o(8))}${ip(o(4))}`}function Jc(e,t,n){return t+e.next()*(n-t)}function eu(e,t){return t[e.int(t.length)]}function J4(e){return e.next()<.4?"#ffffff":Bk(e.next(),Jc(e,.2,.6),Jc(e,.94,.985))}function Ns(e,t){for(let n=0;n<$4;n+=1){let r=Bk(e.next(),Jc(e,.3,.9),Jc(e,.06,.3));if(xo(r,t)>=ep)return r}return"#000000"}function e8(e,t,n){let r=e.next(),o=Ns(e,t);if(r<.5)return{kind:"solid",ink:o};let s=Ns(e,t);if(r<.75)return{kind:"linear",angle:e.int(8)*45,space:"symbol",stops:[{offset:0,ink:o},{offset:1,ink:s}]};if(r<.9)return{kind:"radial",cx:.5,cy:.5,radius:.7,space:"symbol",stops:[{offset:0,ink:o},{offset:1,ink:s}]};let i=n.fills.list();if(i.length===0)return{kind:"solid",ink:o};let a=eu(e,i),l={};for(let c of a.params)c.kind==="colour"&&(l[c.key]=Ns(e,t));return{kind:"entry",ref:{id:a.id,params:l}}}function ap(e){let t=e.regionShapes.list(),n=t.filter(s=>s.part==="outer"&&s.kinds.includes("concentric-7")&&Vo(s)==="cornered"),r=t.filter(s=>s.part==="inner"&&s.kinds.includes("concentric-7")),o=[];for(let s of n)for(let i of r)yr(s,mt(s.params,void 0),i,mt(i.params,void 0),"concentric-7")&&o.push([s,i]);return o}function t8(e,t,n,r,o){let s=t.symbol.symbology!=="qr",i=n.filter(([d,m])=>d.unpaired?.[o]?.includes(m.id)!==!0),a=s?i.filter(([d])=>d.id==="square"):i;if(a.length===0)return null;let[l,c]=eu(e,a),u={outer:{id:l.id},inner:{id:c.id}};return e.next()<.3&&(u.outerPaint={kind:"solid",ink:Ns(e,r)}),e.next()<.3&&(u.innerPaint={kind:"solid",ink:Ns(e,r)}),u}function Fk(e,t,n,r=ap(n)){let o=Wn(t),s=J4(o.fork(1)),i=o.fork(2),a=n.moduleShapes.list(),l=a.length===0?e.modules.shape:{id:eu(o.fork(3),a).id},c=hr(n.moduleShapes.get(l.id)),u=t8(o.fork(4),e,r,s,c),d=n.frames.list().filter(h=>h.id!=="none"),m=o.fork(5),f=e.symbol.symbology!=="rmqr"&&d.length>0&&m.next()<Z4;return{schema:"qr-design",version:1,symbol:e.symbol,quietZone:e.quietZone,background:{kind:"solid",ink:s},modules:{shape:l,paint:e8(i,s,n),light:null},regions:u===null?{}:{finder:u},logo:e.logo,frame:f?{ref:{id:eu(m,d).id},paint:{kind:"solid",ink:Ns(m,s)}}:null,output:e.output,...e.assets===void 0?{}:{assets:e.assets},...e.name===void 0?{}:{name:e.name}}}function n8(e){return e==null||e===""||e===!1||Array.isArray(e)&&e.every(t=>t==="")}function Uk(e,t){let n;try{n=e.validate(t)}catch(r){let o=Jr($e(r,"payload/invalid"),["fields"]);return{ok:!1,issues:[o],reason:o}}if(qn(n)){let r=e.fields.every(i=>n8(t[i.key])),o=n.filter(i=>i.severity==="error").length,s=r?P(Le.contentEmpty,["fields"],"info"):P(Le.contentInvalid,["fields"],"error",{count:o});return{ok:!1,issues:n,reason:s}}try{return{ok:!0,text:e.build(t).text,issues:n}}catch(r){let o=Jr($e(r,"payload/invalid"),["fields"]);return{ok:!1,issues:[...n,o],reason:o}}}function zk(e){let{symbology:t,ecLevel:n,boostEc:r,minVersion:o,maxVersion:s,mask:i,segmentation:a}=e.symbol;return{symbology:t,...n===void 0?{}:{ecLevel:n},...r===void 0?{}:{boostEc:r},...o===void 0?{}:{minVersion:o},...s===void 0?{}:{maxVersion:s},...i===void 0?{}:{mask:i},...a===void 0?{}:{segmentation:a}}}function Vk(e){return JSON.stringify(zk(e))}function qk(e,t,n){try{return{ok:!0,symbol:Fn(e,zk(t),n)}}catch(r){let o=$e(r,"encode/unsupported-content");return{ok:!1,issue:Jr(o,["symbol"]),error:o}}}function r8(e,t,n){try{return t.read(e.matrix,{strict:!1}).bitstream.segments.map(o=>({mode:o.mode,chars:o.length,data:new Uint8Array(0),...o.eci===null?{}:{eci:o.eci}}))}catch{try{return Tc(n,t.profile(e.version),{...Wi,kanji:"never"})}catch{return[]}}}function o8(e,t){let n=e.versions,r=t.symbol.maxVersion;return r!==void 0&&n.includes(r)?r:n[n.length-1]}function Hk(e,t,n,r){let o=r.require(e.symbology),s=r8(e,o,t),i=0;try{i=s.length===0?0:Bn(s,o.profile(e.version))}catch{}let a=e.blocks.dataBits,l=o8(o,n),c=a;try{c=Math.max(a,o.blocks(l,e.ecLevel).dataBits)}catch{}let u=s.map(d=>Object.freeze({mode:d.mode,chars:d.chars,eci:d.eci??null}));return Object.freeze({symbology:o.id,symbologyLabelKey:o.labelKey,phoneReadable:o.phoneReadable,noteKey:o.phoneReadable?null:`symbology.${o.id}.not-phone-readable`,version:e.version,ecLevel:e.ecLevel,mask:e.mask,modules:Object.freeze([e.matrix.width,e.matrix.height]),quietZone:n.quietZone,capacity:Object.freeze({usedBits:i,totalBits:a,fraction:i/a,ofLargest:i/c}),segments:Object.freeze(u)})}var ta=8,Kk=2;function Gk(e){let{content:t,design:n,conditions:r,seed:o,assets:s,overlay:i,captureSeeds:a}=e;return Object.freeze({content:t,design:n,conditions:r,seed:o,requires:Yi(n),...s===void 0?{}:{assets:s},overlay:i,captureSeeds:a})}var _k=Object.freeze({run:async()=>Y(new K("platform/unavailable","The scan check is not part of this copy.",{feature:"verify"}))});function Qk(e,t){let{registries:n,scheduler:r,clock:o}=t;return Object.freeze({run(s,i,a){return $c(()=>e(s,n),{scheduler:r,clock:o,signal:i,progress:a,failure:"verify/missing-entry"})}})}function s8(e){return/^[\u0000-\u0020]*https?:/i.test(e)}function i8(e){try{return Gl(new URL(e).protocol.slice(0,-1))}catch{return!1}}function tu(e){try{return{ok:!0,value:e()}}catch{return{ok:!1}}}function Wk(e){return`${e.code}|${e.severity}|${JSON.stringify(e.params??{})}`}function lp(e,t){let n=[],r=nc(e,t).type,o=tu(()=>r.parse(e));o.ok||(n.push(P("inspect.issue.unreadable-as-type",[],"warning",{typeId:r.id})),r=t.get("text")??fs,o=tu(()=>r.parse(e)));let s=o.ok?o.value:{text:e},i=tu(()=>r.validate(s));i.ok&&n.push(...i.value);let a=[],l=null,c=null,u=new Set;if(s8(e)||i8(e)){let f=en(e);a.push(...f.findings);for(let p of f.findings)u.add(p.code);l=f.displayHost,c=f.unicodeHost}let d=new Set(a.map(Wk)),m=r.safety===void 0?void 0:tu(()=>r.safety(s));if(m!==void 0&&m.ok)for(let f of m.value){let p=Wk(f);u.has(f.code)||d.has(p)||(d.add(p),a.push(f))}return{payload:Object.freeze({typeId:r.id,value:s,issues:Object.freeze(n)}),safety:Object.freeze({findings:Object.freeze(a),displayHost:l,unicodeHost:c})}}var nu="",a8=Object.freeze({"00":{length:2,fixed:18},"01":{length:2,fixed:14},"02":{length:2,fixed:14},10:{length:2,max:20},11:{length:2,fixed:6},12:{length:2,fixed:6},13:{length:2,fixed:6},15:{length:2,fixed:6},16:{length:2,fixed:6},17:{length:2,fixed:6},20:{length:2,fixed:2},21:{length:2,max:20},22:{length:2,max:20},240:{length:3,max:30},241:{length:3,max:30},250:{length:3,max:30},251:{length:3,max:30},253:{length:3,max:30},254:{length:3,max:20},30:{length:2,max:8},37:{length:2,max:8},400:{length:3,max:30},401:{length:3,max:30},402:{length:3,fixed:17},403:{length:3,max:30},410:{length:3,fixed:13},411:{length:3,fixed:13},412:{length:3,fixed:13},413:{length:3,fixed:13},414:{length:3,fixed:13},415:{length:3,fixed:13},416:{length:3,fixed:13},420:{length:3,max:20},421:{length:3,max:12},422:{length:3,fixed:3},7003:{length:4,fixed:10},8003:{length:4,max:30},8004:{length:4,max:30},8020:{length:4,max:25},90:{length:2,max:30}});function l8(e){return/^3[1-6]\d\d$/.test(e)?{length:4,fixed:6}:void 0}function c8(e){return/^39[0-3]\d$/.test(e)?{length:4,max:18}:void 0}function u8(e){let t=Number(e);return t<=22||t===30||t===37||t>=90?2:t>=23&&t<=25||t>=40&&t<=42?3:4}function d8(e){for(let r of[2,3,4]){let o=e.slice(0,r),s=a8[o]??(r===4?l8(o)??c8(o):void 0);if(s!==void 0&&s.length===r)return{ai:o,spec:s}}if(!/^\d\d/.test(e))return null;let t=u8(e.slice(0,2)),n=e.slice(0,t);return!/^\d+$/.test(n)||n.length<t?null:{ai:n,spec:{length:t,max:Number(n.slice(0,2))>=91?90:70}}}function Xk(e){let t=[],n=e.startsWith(nu)?1:0;for(;n<e.length;){let r=d8(e.slice(n));if(r===null)break;let o=n+r.ai.length,s;if(r.spec.fixed!==void 0){if(s=o+r.spec.fixed,s>e.length||e.slice(o,s).includes(nu))break}else{let i=e.indexOf(nu,o);if(s=i<0?e.length:i,s-o>r.spec.max)break}t.push({ai:r.ai,value:e.slice(o,s)}),n=s,e[n]===nu&&(n+=1)}return t}function m8(e,t){return e.length===t.length&&e.every((n,r)=>n===t[r])}function Yk(e){let t=new Map;for(let r of e){let o=`${r.parity}/${r.total}`,s=t.get(o);s===void 0&&(s={parity:r.parity,total:r.total,byIndex:new Map,clash:!1},t.set(o,s));let i=s.byIndex.get(r.index);i===void 0?s.byIndex.set(r.index,r):m8(i.bytes,r.bytes)||(s.clash=!0)}let n=[];for(let r of t.values()){let o=[];for(let a=0;a<r.total;a+=1)r.byIndex.has(a)||o.push(a);let s=null,i=null;if(o.length===0){let a=0;for(let l=0;l<r.total;l+=1)for(let c of r.byIndex.get(l).bytes)a^=c;if(s=a===r.parity&&!r.clash,s){i="";for(let l=0;l<r.total;l+=1)i+=r.byIndex.get(l).text}}n.push(Object.freeze({parity:r.parity,total:r.total,complete:s===!0,text:i,missing:Object.freeze(o),parityMatches:s}))}return n}function Zk(e){if(typeof e!="object"||e===null||typeof e.symbologies!="object"||typeof e.payloads!="object")throw new TypeError("inspect: registries gives the symbologies and the content types.")}function f8(e){let{read:t}=e,{bitstream:n}=t;return Object.freeze({symbology:e.symbology,version:t.version,ecLevel:t.ecLevel,mask:t.mask,corners:e.corners,segments:n.segments,text:n.text,textSource:n.textSource,structuredAppend:n.structuredAppend,gs1:n.fnc1==="gs1"?Object.freeze(Xk(n.text)):null,quality:Object.freeze({errorsPerBlock:t.errorsPerBlock,capacityPerBlock:t.capacityPerBlock,erasuresUsed:t.erasuresUsed,formatErrors:t.formatErrors,mirrored:t.mirrored,inverted:e.inverted,minConfidence:e.minConfidence})})}function $k(e,t){if(typeof e!="string")throw new TypeError("inspectText: text is a string.");Zk(t);let{payload:n,safety:r}=lp(e,t.payloads);return Object.freeze({symbols:Object.freeze([]),sets:Object.freeze([]),payload:n,safety:r})}function Jk(e,t,n={}){Zk(t);let r=Tr(e,{...n,profile:n.profile??"lenient"},t.symbologies);if(!r.ok)return Y(r.error);let o=r.value;if(o.length===0)return Y(new K("decode/not-found","No code was found in this picture."));let s=o.map(f8),i=Yk(o.flatMap(f=>{let p=f.read.bitstream.structuredAppend;return p===null?[]:[{...p,text:f.read.bitstream.text,bytes:f.read.bitstream.bytes}]})),a=s[0],l=a.structuredAppend,u=(l===null?void 0:i.find(f=>f.parity===l.parity&&f.total===l.total))?.text??a.text,{payload:d,safety:m}=lp(u,t.payloads);return ae(Object.freeze({symbols:Object.freeze(s),sets:Object.freeze(i),payload:d,safety:m}))}var e2=["L","M","Q","H"],p8=["distance","focus","motion","noise","angle","light","glare","ink","contrast"],h8=.6;function r2(e,t){if(!Array.isArray(t.path))throw new TypeError("applyDesignPatch: patch.path is a list.");if(t.path.length===0)return t.value;let n=(r,o)=>{let s=t.path[o];if(o===t.path.length-1){if(Array.isArray(r)){let a=[...r];return a[s]=t.value,a}return{...r,[s]:t.value}}let i=r?.[s];if(typeof i!="object"||i===null)throw new TypeError("applyDesignPatch: the path goes through something that is not an object.");if(Array.isArray(r)){let a=[...r];return a[s]=n(i,o+1),a}return{...r,[s]:n(i,o+1)}};return n(e,0)}function t2(e){return{kind:"solid",ink:e}}function cp(e,t){let n={};for(let r of["finder","sub-finder","corner-finder"]){let o=e.regions[r];o!==void 0&&(n[r]={outer:o.outer,inner:o.inner})}return{...e,modules:{...e.modules,paint:t},regions:n}}function na(e,t){return e.checks.some(n=>n.id===t&&n.status!=="pass")}function Ls(e,t){let n=e.captures.find(r=>r.axis===t);return n===void 0||n.firstFailed===null?!1:n.firstFailed<=n.typical}function n2(e,t){let n=[],r=o=>{if(o!==void 0){if(o.kind==="entry"){t!==void 0&&n.push(...go(o,t));return}n.push(...o.kind==="solid"?[o.ink]:o.stops.map(s=>s.ink))}};r(e.modules.paint);for(let o of Object.values(e.regions))r(o.outerPaint),r(o.innerPaint);return n}function ra(e){return As(zt(e))}function o2(e,t,n){let r=[],o=x=>{r.some(w=>w.id===x.id)||r.push(x)},s=e.checks.some(x=>x.id==="polarity"&&x.status!=="pass"),i=na(e,"logo-budget"),a=t.logo!==null&&e.checks.some(x=>x.id==="function-patterns"&&x.status!=="pass"&&x.messageKey!=="verify.check.function-patterns.finder"),l=e.symbol.ecLevel,c=e2[e2.indexOf(l)+1],u=Ls(e,"glare");if(c!==void 0&&e.symbol.symbology==="qr"&&(i||u)&&o({id:"raise-ec",labelKey:"verify.fix.raise-ec",patch:{path:["symbol","ecLevel"],value:c},params:{level:c},targets:i?"logo-budget":"glare"}),t.logo!==null&&(i||a)){let x=Math.max(he.logoSize.min,Math.round(t.logo.size*75)/100);x<t.logo.size&&o({id:"shrink-logo",labelKey:"verify.fix.shrink-logo",patch:{path:["logo","size"],value:x},params:{percent:Math.round(x*100)},targets:i?"logo-budget":"function-patterns"}),i&&t.logo.clear==="box"&&t.logo.plate===null&&o({id:"logo-clear-shape",labelKey:"verify.fix.logo-clear-shape",patch:{path:["logo","clear"],value:"shape"},targets:"logo-budget"})}if(s&&t.background!==null&&o({id:"dark-on-light",labelKey:"verify.fix.dark-on-light",patch:{path:[],value:{...cp(t,t.background),background:t.modules.paint}},targets:"polarity"}),(na(e,"contrast")||Ls(e,"contrast")||Ls(e,"light"))&&!s){let x=n2(t,n),w=x.reduce((E,R)=>E===null||ra(R)<ra(E)?R:E,null),k=x.reduce((E,R)=>Math.max(E,ra(R)),0),S=w!==null&&ra(w)<k?w:"#000000";(x.length===0||ra(S)<k)&&o({id:"darken-modules",labelKey:S==="#000000"?"verify.fix.black-modules":"verify.fix.darken-modules",patch:{path:[],value:cp(t,t2(S))},targets:na(e,"contrast")||Ls(e,"contrast")?"contrast":"light"})}if(na(e,"colour-red-channel")&&!s){let w=n2(t,n).reduce((S,E)=>S===null||Is(zt(E))<Is(zt(S))?E:S,null),k=w!==null&&Is(zt(w))<1-Zi?w:"#000000";o({id:"low-red-ink",labelKey:k==="#000000"?"verify.fix.black-modules":"verify.fix.low-red-ink",patch:{path:[],value:cp(t,t2(k))},targets:"colour-red-channel"})}let m=e.checks.find(x=>x.id==="quiet-zone"&&x.status==="fail");m!==void 0&&t.quietZone<m.threshold&&o({id:"widen-quiet-zone",labelKey:"verify.fix.widen-quiet-zone",patch:{path:["quietZone"],value:m.threshold},params:{modules:m.threshold},targets:"quiet-zone"});let f=na(e,"finder-shape"),p=Object.values(t.regions).some(x=>x.outer.id!=="square"||x.inner.id!=="square-centre"),h=p8.find(x=>Ls(e,x));p&&(f||h!==void 0||!e.baseline.passed)&&o({id:"square-finders",labelKey:"verify.fix.square-finders",patch:{path:["regions"],value:{}},targets:f?"finder-shape":h??"finder-shape"});let g=t.modules.shape.id!=="square"&&e.limits.inkFraction<h8,y=["focus","distance","motion"].find(x=>Ls(e,x));g&&y!==void 0&&o({id:"solid-modules",labelKey:"verify.fix.solid-modules",patch:{path:["modules","shape"],value:{id:"square"}},targets:y});let b=e.checks.find(x=>x.id==="module-size"&&x.status!=="pass");if(b?.params!==void 0&&e.conditions.sizeMm!==null){let x=e.conditions.sizeMm,w=e.limits.maxDistanceMm,k=typeof b.params.minimumMm=="number"?b.params.minimumMm:w!==null&&w>0?Math.ceil(x*ht.comfortMm/w):null;k!==null&&k>x&&o({id:"print-larger",labelKey:"verify.fix.print-larger",patch:null,conditions:{sizeMm:k},params:{sizeMm:k},targets:"module-size"})}return Object.freeze(r)}var y8=200,g8=250,up=16384,dp=4*1024*1024,b8=["create","scan","bulk"],x8=Object.freeze({image:Jk,text:$k}),w8=Object.freeze({pdf:dc,eps:mc}),s2=Object.freeze({later(e,t){let n=setTimeout(e,t);return()=>clearTimeout(n)},sliceMs:8});function k8(){return typeof performance<"u"?performance.now():Date.now()}function Un(e,t=4){let n=[];return(...r)=>{for(let s of n)if(s.args.length===r.length&&s.args.every((i,a)=>i===r[a]))return s.value;let o=e(...r);return n.unshift({args:r,value:o}),n.length>t&&n.pop(),o}}function we(e){return Object.freeze(e)}function mp(e={}){if(typeof e!="object"||e===null)throw new TypeError("createStudio: options is an object.");let t=e.registries??Jl(),n=e.historyLimit??y8;if(!Number.isInteger(n)||n<0)throw new TypeError("createStudio: historyLimit is a whole number, 0 or more.");let r=e.verifyDebounceMs??g8;if(typeof r!="number"||!Number.isFinite(r)||r<0)throw new TypeError("createStudio: verifyDebounceMs is a number of milliseconds, 0 or more.");let o=e.liveCaptureSeeds??Kk;if(!Number.isInteger(o)||o<1||o>ta)throw new TypeError("createStudio: liveCaptureSeeds is a whole number from 1 to 8.");let s=e.seed??1;if(!Number.isInteger(s)||s<0||s>4294967295)throw new TypeError("createStudio: seed is an integer from 0 to 2^32 - 1.");let i=yc(e.csvFallbackEncoding,"createStudio: csvFallbackEncoding is"),a=e.clock??k8,l=e.suggestFixes??((L,B)=>o2(L,B,t.design)),c=e.inspector===void 0?x8:e.inspector,u=e.library??null,d=new Vc,m=e.fonts??Mn(),f=jk(e.scheduler??s2),p=(L,B)=>f.later(L,B),h=e.verifyGenerator===void 0?zc:e.verifyGenerator,g=e.verifyRunner??(h===null?_k:Qk(h,{registries:t,scheduler:f,clock:a})),y=[],b;if(typeof e.initial=="string"){let L=Uy(e.initial,t);b=L.document,y=L.issues}else if(e.initial!==void 0){let L=Fy(e.initial,t,m);b=L.document,y=L.issues}else b=Go(t);let x=0,w=Mk,k=y.length===0?null:we({action:"initial",issues:we(y)}),S=we({status:"idle"}),E=null,R=we({status:"idle"}),C=we({status:"idle"}),A=null,O=we(u===null?{status:"unavailable"}:{status:"checking"}),D=!1,N=new Set,T=L=>t.payloads.require(L),I=Un((L,B)=>{let F=Nr(L,B.constraints),G=En(L,t.design,{fonts:m}).issues;return we({effective:ea(L,F.design),issues:we([...G,...F.issues]),locked:B.constraints?.designLocked===!0,overlay:F.overlay})}),U=Un((L,B)=>Uk(L,B)),q=new Map,H=(L,B)=>{let F=`${t.symbologies.version}\0${Vk(B)}\0${L}`,G=q.get(F);if(G===void 0)for(G=qk(L,B,t.symbologies),q.set(F,G);q.size>8;)q.delete(q.keys().next().value);return G},W=null,$=Un((L,B,F)=>Hk(L,B,F,t.symbologies)),be=Un(L=>we({status:"ok",view:L})),X=Un((L,B,F)=>{let G;if(L.ok){let Xe=H(L.text,B);if(Xe.ok){F?.symbol!==Xe.symbol&&(W={text:L.text,symbol:Xe.symbol});let dt=$(Xe.symbol,L.text,B);return{state:be(dt),symbol:Xe.symbol,design:B}}G=Xe.issue}else G=L.reason;if(F===null)return{state:we({status:"empty",issue:G}),symbol:null,design:B};let pe=H(F.text,B),Ne=pe.ok?pe.symbol:F.symbol,Te=$(Ne,F.text,B);return{state:we({status:"stale",view:Te,issue:G}),symbol:Ne,design:B}},2),ne=Un((L,B,F)=>Sk(L,B,F)),me=Un((L,B,F)=>{if(L===null)return null;try{let G=tn(L,B,{registries:t.design,assets:d.lookup(B),fonts:m,seed:s,overlay:F});return we({svg:yn(G.scene),scene:G.scene,issues:G.issues,epsIssues:we([...qi(G.scene)])})}catch{return null}},2),fe=null,ke=()=>{let L=Ps(t);return fe?.key!==L&&(fe={key:L,value:bk(t,m)}),fe.value},Oe=Un((L,B,F)=>xk(t,L,B,F.constraints,m),2),gt=null,ie=()=>{let L=t.design.regionShapes.version;return gt?.version!==L&&(gt={version:L,pairs:ap(t.design)}),gt.pairs},Ce=Un((L,B)=>we({canUndo:L,canRedo:B}));function qe(){let L=b,B=x,F=T(L.typeId),G=()=>U(F,L.fields),pe=()=>I(L.design,F),Ne=X(G(),pe().effective,W),Te=()=>Ne,Xe={revision:B,document:L,get form(){return ne(F,L.fields,G().issues)},get payloadIssues(){return G().issues},get symbol(){return Te().state},get preview(){let dt=Te();return me(dt.symbol,dt.design,pe().overlay)},get design(){return pe()},verify:S,history:Ce(w.past.length>0||w.group!==null&&!$f(w.group.base,sr()),w.future.length>0),get catalogue(){return ke()},get presetThumbnails(){let dt=Te();return Oe(ke(),dt.state.status==="ok"?dt.symbol:null,F)},inspect:R,batch:C,library:O,refusal:k};return Object.freeze(Xe)}let Wt=qe(),ce=Ps(t);function re(){Wt=qe(),ce=Ps(t);let L,B=!1;for(let F of[...N])try{F()}catch(G){B||(L=G),B=!0}if(B)throw L}let oe=!1,se=null,Se=null,st=0,_e=null;function gn(){Se!==null&&(Se.controller.abort(),Se=null)}let mu=we({status:"idle"}),Bv=Un(L=>we({...L,stale:!0}),1);function Vs(){return E===null?mu:Bv(E)}let Hp=ta;function Kp(L){Hp=L,se?.(),se=p(Fv,r)}function Fv(){se=null;let L=T(b.typeId),B=U(L,b.fields),F=I(b.design,L).effective;_e={content:B,design:F,conditions:b.conditions},gn();let G=B.ok?H(B.text,F):null;if(!B.ok||G===null||!G.ok){S=Vs(),re();return}let pe=st+=1,Ne=new AbortController;Se={id:pe,controller:Ne};let Te=x,{overlay:Xe}=I(b.design,L),dt=Hp,ir=dt===ta,To=Gk({content:B.text,design:F,conditions:Uv(G.symbol,F,Xe),seed:s,assets:d.all(F),overlay:Xe,captureSeeds:dt});S=we({status:"running",progress:0,revision:Te,axis:null,captureSeeds:dt,full:ir}),re();let Ks=()=>!D&&Se?.id===pe,gu=bt=>{if(!Ks())return;let Vr=bt.total>0?Math.min(1,Math.max(0,bt.done/bt.total)):0;S=we({status:"running",progress:Vr,revision:Te,axis:bt.axis,captureSeeds:dt,full:ir}),re()},ar=bt=>{if(Ks()){if(Se=null,bt.ok){let Vr=bt.value,Ro=[];try{Ro=l(Vr,F)}catch{Ro=[]}E=we({status:"done",report:Vr,fixes:we([...Ro]),stale:!1,revision:Te,captureSeeds:dt,full:ir}),S=E}else bt.error.code==="cancelled"?S=Vs():S=we({status:"failed",error:Fe(bt.error),revision:Te});re()}},et;try{et=g.run(To,Ne.signal,gu)}catch(bt){et=Promise.resolve(Y($e(bt,"platform/unavailable")))}et.then(ar,bt=>ar(Y($e(bt,"platform/unavailable"))))}function Uv(L,B,F){let G=me(L,B,F)?.scene.unitsPerMm;if(G===void 0)return b.conditions;let pe=(L.matrix.width+2*B.quietZone)/G;return we({...b.conditions,sizeMm:pe})}function zv(){if(!oe||_e===null)return;let L=T(b.typeId),B=U(L,b.fields),F=I(b.design,L).effective;B===_e.content&&F===_e.design&&b.conditions===_e.conditions||(_e={content:B,design:F,conditions:b.conditions},Se!==null?(gn(),S=Vs()):S.status==="done"&&!S.stale&&(S=Vs()),Kp(o))}let sr=()=>({typeId:b.typeId,fields:b.fields,design:b.design});function St(L,B){k=we({action:L,issues:we([...B])}),re()}function qs(L){b=Object.freeze(L),x+=1,k=null,zv(),re()}function pa(L,B){w=Zf(w,sr(),B,n),qs({...b,...L})}function fu(L){qs({...b,typeId:L.typeId,fields:L.fields,design:L.design})}function Gp(L,B){let F=Ko(L,t,m);if(F.design===null)return{kind:"refuse",issues:F.issues};let G=b.design,pe=ea(G,F.design);if(pe===G){let Xe=F.issues.filter(dt=>dt.severity!=="info");return Xe.length>0&&!tr(L,G)?{kind:"refuse",issues:Xe}:{kind:"same"}}let Ne=T(b.typeId),{constraints:Te}=Ne;if(Te!==void 0&&tr(Nr(G,Te).design,Nr(pe,Te).design)){let Xe=Te.designLocked===!0;return{kind:"refuse",issues:[P(Xe?Le.designLocked:Le.constrained,B,"warning",{type:Ne.id})]}}return{kind:"change",next:pe}}function ha(L,B,F,G){let pe=Gp(B,G);pe.kind==="refuse"?St(L,pe.issues):pe.kind==="change"&&pa({design:pe.next},F)}function Vv(L,B){let F=L.design,G=B.logo!==null&&B.logo.source.kind==="asset",pe=F.logo===null&&G,Ne=B.symbol.ecLevel,Te=Ne!==void 0&&L.ecLevels.includes(Ne)?Ne:F.symbol.ecLevel??Ne;return{...F,symbol:{...B.symbol,...Te===void 0?{}:{ecLevel:Te}},logo:pe?B.logo:F.logo,output:{...B.output,colourSpace:F.output.colourSpace},...pe&&B.assets!==void 0?{assets:B.assets}:{},...B.name===void 0?{}:{name:B.name}}}function qv(L,B){try{let F=L.parse(B),G={};for(let[pe,Ne]of Object.entries(F))rl(Ne)&&(G[pe]=Ne);return bi(L,G)}catch{return null}}function Hv(L){if(L.length>up){St("payload/raw",[P(Le.rawTooLong,["text"],"error",{length:L.length,max:up})]);return}let F=[nc(L,t.payloads).type,t.payloads.get("text")].filter(G=>G!==void 0&&G.generate!==!1&&t.payloads.get(G.id)===G);for(let G of F){let pe=qv(G,L);if(pe!==null){pa({typeId:G.id,fields:pe},null);return}}St("payload/raw",[P(Le.unknownType,["text"],"error")])}function Kv(L,B,F){let G=Array.isArray(B)?B:[B];if(G.length===0)return;let pe=b.design;for(let Te of G){let Xe=typeof Te=="object"&&Te!==null?Lk(Te.path):"shape";if(Xe!==null){St(L,[P(Le.patchPath,[],"error",{problem:Xe})]);return}pe=Dk(pe,Te.path,Te.value)}let Ne=G[0];ha(L,pe,F,Ne.path)}function Gv(L){if(typeof L!="object"||L===null||typeof L.type!="string")throw new TypeError("dispatch: an action is an object with a type.");if(!D)switch(L.type){case"mode":{if(!b8.includes(L.mode))throw new TypeError("dispatch: mode is 'create', 'scan' or 'bulk'.");L.mode!==b.mode&&qs({...b,mode:L.mode});return}case"payload/type":{let B=typeof L.typeId=="string"?t.payloads.get(L.typeId):void 0;if(B===void 0){St(L.type,[P(Le.unknownType,["typeId"],"error")]);return}if(B.generate===!1){St(L.type,[P(Le.readOnlyType,["typeId"],"error",{type:B.id})]);return}if(B.id===b.typeId)return;pa({typeId:B.id,fields:bi(B,b.fields)},null);return}case"payload/field":{let F=T(b.typeId).fields.find(pe=>pe.key===L.key);if(F===void 0){St(L.type,[P(Le.unknownField,["fields"],"error")]);return}if(!rl(L.value)){St(L.type,[P(Le.fieldValue,["fields",F.key],"error")]);return}if(tr(b.fields[F.key],L.value))return;let G=Array.isArray(L.value)?we([...L.value]):L.value;pa({fields:we({...b.fields,[F.key]:G})},`field:${F.key}`);return}case"payload/raw":{if(typeof L.text!="string")throw new TypeError("dispatch: payload/raw takes text.");Hv(L.text);return}case"design/patch":Kv(L.type,L.patch,typeof L.coalesce=="string"?`patch:${L.coalesce}`:null);return;case"design/preset":{let B=typeof L.id=="string"?t.design.presets.get(L.id):void 0;if(B===void 0){St(L.type,[P(Le.unknownPreset,["id"],"error")]);return}ha(L.type,Vv(B,b.design),null,[]);return}case"design/replace":{let B=L.design;if(typeof B=="string"){if(B.length>dp){St(L.type,[P(Le.designFile,[],"error",{length:B.length,max:dp})]);return}try{B=JSON.parse(B)}catch{St(L.type,[P(Le.designFile,[],"error")]);return}}ha(L.type,B,null,[]);return}case"design/shuffle":{let B=Number(L.seed),F=Number.isFinite(B)?Math.floor(Math.abs(B))%4294967296:0;ha(L.type,Fk(b.design,F,t.design,ie()),null,[]);return}case"conditions":{let{conditions:B,bad:F}=br(L.conditions,b.conditions);if(F.length>0){St(L.type,F.map(G=>P(Le.conditions,G,"error")));return}if(tr(B,b.conditions))return;qs({...b,conditions:we(B)});return}case"history/undo":{w.group!==null&&(w=Qc(w,w.group.key,sr(),n));let B=Ak(w,sr());if(B===null)return;w=B.history,fu(B.restore);return}case"history/redo":{let B=Ik(w,sr(),n);if(B===null)return;w=B.history,fu(B.restore);return}case"history/begin":{if(typeof L.key!="string")throw new TypeError("dispatch: history/begin takes a key.");let B=w;w=Tk(w,L.key,sr(),n),w!==B&&re();return}case"history/commit":{if(typeof L.key!="string")throw new TypeError("dispatch: history/commit takes a key.");let B=w;w=Qc(w,L.key,sr(),n),w!==B&&re();return}case"history/cancel":{let B=Rk(w);if(B===null)return;w=B.history;let F=B.restore;F.typeId===b.typeId&&F.fields===b.fields&&F.design===b.design?re():fu(F);return}case"verify/request":{oe=!0;let B=T(b.typeId);_e={content:U(B,b.fields),design:I(b.design,B).effective,conditions:b.conditions},Kp(ta);return}case"verify/cancel":{oe=!1,se?.(),se=null;let B=Se!==null;gn(),B&&(S=Vs(),re());return}case"fix/apply":{let F=(S.status==="done"?S.fixes:[]).find(Ne=>Ne.id===L.fixId);if(F===void 0){St(L.type,[P(Le.unknownFix,["fixId"],"error")]);return}let G;if(F.patch!==null)try{G=r2(b.design,F.patch)}catch{St(L.type,[P(Le.patchPath,[],"error",{problem:"shape"})]);return}let pe=F.conditions===void 0?null:we(br(F.conditions,b.conditions).conditions);yu(L.type,G,pe);return}default:throw new TypeError("dispatch: that is not an action the studio knows.")}}function ya(L){C=we(L),re()}async function _v(L){let B=L.encoding??"auto",F=B==="auto"?i:yc(B,"batch: encoding is 'auto' or");A?.abort();let G=new AbortController;A=G;let pe=()=>!D&&A===G,Ne=et=>(pe()&&(A=null,ya({status:"failed",error:Fe(et)})),Y(et)),Te,Xe;try{let et,bt=[];if(typeof L.csv=="string")et=L.csv;else{let Ro=gc(L.csv,{fallback:F});et=Ro.text,bt=Ro.issues}let Vr=wc(et);Te=we([...bt,...Vr.issues]),Xe=Mc(Vr,L.mapping,t)}catch(et){if(et instanceof TypeError)throw et;return Ne($e(et,"batch/malformed-csv"))}let dt=L.output.verify;if(h===null&&dt!==void 0&&dt!=="off")return Ne(new K("platform/unavailable","The scan check is not part of this build yet.",{feature:"verify"}));let ir=0,To=0,Ks=[];ya({status:"running",done:0,total:Xe.length+1,written:ir,skipped:To,issues:Te});let gu=b.design,ar=await $c(()=>Iw(Xe,gu,L.output,t,{fonts:m,seed:s,...h===null?{}:{verifyRow:hk(t,h)}}),{scheduler:f,clock:a,signal:G.signal,failure:"platform/unavailable",progress:et=>{et.row!==void 0&&(Ks.push(et.row),et.row.status==="written"?ir+=1:To+=1),pe()&&ya({status:"running",done:et.done,total:et.total,written:ir,skipped:To,issues:Te})}});return ar.ok?(pe()&&(A=null,ya({status:"done",outcomes:we(Ks),written:ir,skipped:To,issues:Te})),ar):ar.error.code==="cancelled"?Y(ar.error):Ne(ar.error)}function ga(L){R=we(L),re()}function Hs(L){O=we(L),re()}async function Qv(L,B){try{return await L()}catch(F){if(F instanceof TypeError)throw F;return Y($e(F,B))}}let pu="on",Eo=null,hu=[];async function sn(){let L=u,B=await L.contents();if(D)return Y(new bn);if(!B.ok)return Hs({status:"failed",error:Fe(B.error)}),B;let F={items:we([...B.value.designs]),kits:we([...B.value.kits]),skipped:we([...B.value.skipped,...hu]),kit:Eo};return Hs(pu==="file"?{status:"file",unsaved:L.hasUnsavedChanges?.()===!0,...F}:{status:"on",...F}),B}function Wv(L){return L.state!==void 0?L.state:L.available?L.enabled?"on":"off":"unavailable"}function Xv(){return new K("library/not-enabled","The library is switched off. Switch it on to save designs and brand kits in this browser.")}async function Yv(L){let B=T(b.typeId),F=U(B,b.fields),{effective:G,overlay:pe}=I(b.design,B);if(!F.ok)return Y(new K("payload/invalid","Fix the content before saving the code.",{count:F.issues.filter(Te=>Te.severity==="error").length}));let Ne=H(F.text,G);return Ne.ok?vk({symbol:Ne.symbol,design:G,fixedSizeMm:B.constraints?.sizeMm,conditions:b.conditions,registries:t.design,assets:d.lookup(G),fonts:m,overlay:pe,seed:s,rasterEncoder:e.rasterEncoder??null,printer:e.printer===void 0?w8:e.printer},L.format,L.options??{}):Y(Ne.error)}function yu(L,B,F){let G=B===void 0?{kind:"same"}:Gp(B,[]),pe={};G.kind==="change"&&(pe.design=G.next),F!==null&&!tr(F,b.conditions)&&(pe.conditions=F),pe.design!==void 0&&(w=Zf(Ek(w),sr(),null,n)),Object.keys(pe).length>0&&qs({...b,...pe}),G.kind==="refuse"&&St(L,G.issues)}async function Zv(L){if(u===null)return Y(new K("library/unavailable","This copy of the studio has no library."));let B=()=>Y(new bn);switch(L.type){case"library/enable":{let F=await u.enable();if(D)return B();if(!F.ok)return Hs({status:"failed",error:Fe(F.error)}),F;let G=await sn();return G.ok?ae(G.value.designs):G}case"library/disable":{let F=await u.disable();return D?B():F.ok?(Eo=null,hu=[],pu==="file"?await sn():Hs({status:"off"}),ae(null)):F}default:break}if(O.status!=="on"&&O.status!=="file")return Y(Xv());switch(L.type){case"library/save":{let F=typeof L.name=="string"?L.name:"",G=await u.save({name:F,document:b});return D?B():(G.ok&&await sn(),G)}case"library/remove":{let F=await u.remove(L.id);if(D)return B();if(!F.ok)return F;let G=await sn();return G.ok?ae(G.value.designs):G}case"library/load":{let F=await u.load(L.id);if(D)return B();if(!F.ok)return F;let G=F.value.document,{conditions:pe}=br(G.conditions,b.conditions);yu(L.type,G.design,we(pe));let{document:Ne,...Te}=F.value;return ae(we(Te))}case"library/list-kits":{let F=await sn();return F.ok?ae(F.value.kits):F}case"library/save-kit":{let F=typeof L.name=="string"?L.name:"",G=await u.saveKit({name:F,kit:L.kit});return D?B():(G.ok&&await sn(),G)}case"library/load-kit":{let F=await u.loadKit(L.id);return D?B():(F.ok&&(Eo=F.value,yu(L.type,op(b.design,F.value.kit),null),await sn()),F)}case"library/remove-kit":{let F=await u.removeKit(L.id);if(D)return B();if(!F.ok)return F;Eo?.id===L.id&&(Eo=null);let G=await sn();return G.ok?ae(G.value.kits):G}case"library/save-file":{if(u.saveFile===void 0)return Y(_p());let F=u.saveFile(L.name);return F.ok&&await sn(),F}case"library/open-file":{if(u.openFile===void 0)return Y(_p());let F=await u.openFile(L.file);return D?B():(F.opened&&(Eo=null,hu=we(F.issues.filter(G=>G.severity!=="error")),await sn()),ae(F))}}}function _p(){return new K("library/unavailable","This library is kept in the browser, not in a file.",{reason:"not-a-file"})}async function $v(L){switch(L.type){case"export":return Yv(L);case"design-link":try{return ae(we(Dy(b.design)))}catch(B){return Y($e(B,"design/invalid"))}case"inspect/image":case"inspect/text":{let B=L.type==="inspect/image"?"image":"text";if(c===null){let G=new K("platform/unavailable","Reading codes is not part of this copy.",{feature:"inspect"});return ga({status:"failed",source:B,error:Fe(G)}),Y(G)}ga({status:"running",source:B});let F;try{F=L.type==="inspect/image"?c.image(L.image,t):ae(c.text(L.text,t))}catch(G){F=Y($e(G,"decode/unreadable"))}return D||(F.ok?ga({status:"done",source:B,report:F.value}):ga({status:"failed",source:B,error:Fe(F.error)})),F}case"batch":return _v(L);case"library/enable":case"library/disable":case"library/save":case"library/load":case"library/remove":case"library/list-kits":case"library/save-kit":case"library/load-kit":case"library/remove-kit":case"library/save-file":case"library/open-file":return Zv(L);default:throw new TypeError("run: that is not a command the studio knows.")}}if(u!==null){let L=B=>{D||Hs(B)};u.probe().then(async B=>{if(!B.ok)return L({status:"failed",error:Fe(B.error)});let F=Wv(B.value);if(F==="unavailable"||F==="off"||F==="unknown")return L({status:F});pu=F,D||await sn()},B=>L({status:"failed",error:Fe($e(B,"library/unavailable"))}))}return Object.freeze({getSnapshot(){return!D&&Ps(t)!==ce&&(Wt=qe(),ce=Ps(t)),Wt},subscribe(L){if(typeof L!="function")throw new TypeError("subscribe: listener is a function.");return D?()=>{}:(N.add(L),()=>{N.delete(L)})},dispatch:Gv,run(L){return typeof L!="object"||L===null||typeof L.type!="string"?Promise.reject(new TypeError("run: a command is an object with a type.")):D?Promise.resolve(Y(new bn)):Qv(()=>$v(L),"platform/unavailable")},dispose(){D||(D=!0,oe=!1,A?.abort(),gn(),f.cancelAll(),N.clear())}})}var v8="http://www.w3.org/2000/svg";function fp(e,t){for(let n of t)n==null||n===!1||e.appendChild(typeof n=="string"?document.createTextNode(n):n)}function S8(e,t){if(t!==void 0)for(let[n,r]of Object.entries(t))r==null||r===!1||e.setAttribute(n,r===!0?"":String(r))}function M(e,t={},n=[]){let r=document.createElement(e);if(t.className!==void 0&&(r.className=t.className),t.id!==void 0&&(r.id=t.id),t.text!==void 0&&(r.textContent=t.text),S8(r,t.attrs),t.on!==void 0)for(let[o,s]of Object.entries(t.on))r.addEventListener(o,s);return fp(r,n),r}function It(e,t={},n=[]){let r=document.createElementNS(v8,e);for(let[o,s]of Object.entries(t))r.setAttribute(o,String(s));return fp(r,n),r}function rn(e){let t=document.getElementById(e);if(t===null)throw new Error(`missing element #${e}`);return t}function le(e,t){for(;e.firstChild!==null;)e.removeChild(e.firstChild);fp(e,t)}function Z(e,t){e.textContent!==t&&(e.textContent=t)}var i2=0;function kt(e){return i2+=1,`${e}-${i2}`}var M8={undo:"M9 14 4 9l5-5M4 9h10.5a5.5 5.5 0 0 1 0 11H11",redo:"m15 14 5-5-5-5M20 9H9.5a5.5 5.5 0 0 0 0 11H13",link:"M10 14a4.5 4.5 0 0 0 6.4 0l3-3a4.5 4.5 0 0 0-6.4-6.4l-1.1 1.1M14 10a4.5 4.5 0 0 0-6.4 0l-3 3a4.5 4.5 0 0 0 6.4 6.4l1.1-1.1",download:"M12 4v11m0 0-4.5-4.5M12 15l4.5-4.5M5 19h14",copy:"M9 9h10v11H9zM5 15V4h10",print:"M7 9V4h10v5M7 17H5a1 1 0 0 1-1-1v-6a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1h-2M7 14h10v6H7z",camera:"M4 8h3l2-3h6l2 3h3v11H4zM12 16.5a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7Z",image:"M4 5h16v14H4zM4 16l5-5 4 4 2-2 5 5M15.5 9.5h.01",file:"M14 3H6v18h12V7zM14 3v4h4",pass:"m5 12.5 4.5 4.5L19 7.5",fail:"M6 6l12 12M18 6 6 18",warn:"M12 4 2.8 20h18.4zM12 10v4.5M12 17.5h.01",pending:"M12 4a8 8 0 1 0 8 8M12 8v4l3 2",shuffle:"M4 7h3.5c3 0 4.5 10 8 10H20m0 0-3-3m3 3-3 3M4 17h3.5c1.2 0 2.1-1.4 2.8-3M20 7h-4.5c-1.2 0-2.1 1.4-2.8 3M20 7l-3-3m3 3-3 3",plus:"M12 5v14M5 12h14",chevron:"m6 9 6 6 6-6",minus:"M5 12h14",eye:"M2.5 12S6 5.5 12 5.5 21.5 12 21.5 12 18 18.5 12 18.5 2.5 12 2.5 12ZM12 14.5a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5Z",ruler:"M3 16 16 3l5 5L8 21zM7 12l2 2M10 9l2 2M13 6l2 2",open:"M4 6h6l2 2h8v11H4zM4 10h16",save:"M5 4h11l3 3v13H5zM8 4v5h7V4M8 20v-6h8v6",stop:"M7 7h10v10H7z",close:"M6 6l12 12M18 6 6 18"};function lt(e,t){let n=It("svg",{viewBox:"0 0 24 24",class:t===void 0?"icon":`icon ${t}`,"aria-hidden":"true"});return n.setAttribute("focusable","false"),n.appendChild(It("path",{d:M8[e]})),n}async function a2(e){return e.text()}async function l2(e){return new Uint8Array(await e.arrayBuffer())}var E8=Object.freeze({kind:"pound"}),pp=/\{\s*(\w+)\s*(?:(\})|,\s*(plural|select)\s*,)/y,hp=/\s*(=\d+(?:\.\d+)?|[\w-]+)\s*\{/y,yp=/\s*\}/y;function c2(e,t,n){let r=[],o="",s=()=>{o!==""&&r.push(o),o=""};for(;e.pos<e.source.length;){let i=e.source[e.pos];if(i==="{"){let a=T8(e,n);if(a!==null){s(),r.push(a);continue}}else{if(i==="}"&&t)return s(),{nodes:r,closed:!0};if(i==="#"&&n){s(),r.push(E8),e.pos+=1;continue}}o+=i,e.pos+=1}return s(),{nodes:r,closed:!1}}function T8(e,t){let n=e.pos;pp.lastIndex=n;let r=pp.exec(e.source);if(r===null)return null;let o=r[1];if(e.pos=pp.lastIndex,r[2]!==void 0)return{kind:"argument",name:o,source:e.source.slice(n,e.pos)};let s=r[3],i=new Map;for(;;){if(yp.lastIndex=e.pos,i.size>0&&yp.test(e.source))return e.pos=yp.lastIndex,{kind:s,name:o,source:e.source.slice(n,e.pos),branches:i};hp.lastIndex=e.pos;let a=hp.exec(e.source);if(a===null)break;e.pos=hp.lastIndex;let l=c2(e,!0,t||s==="plural");if(!l.closed)break;e.pos+=1,i.has(a[1])||i.set(a[1],l.nodes)}return e.pos=n,null}function R8(e){return c2({source:e,pos:0},!1,!1).nodes}function gp(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function A8(e,t){return e.get(`=${t}`)??(t===1?e.get("one"):void 0)??e.get("other")}function bp(e,t,n){let r="";for(let o of e){if(typeof o=="string"){r+=o;continue}switch(o.kind){case"pound":r+=n;break;case"argument":r+=gp(t,o.name)?String(t[o.name]):o.source;break;case"select":{let s=gp(t,o.name)?o.branches.get(String(t[o.name]))??o.branches.get("other"):void 0;r+=s===void 0?o.source:bp(s,t,n);break}case"plural":{let s=gp(t,o.name)?t[o.name]:void 0,i=typeof s=="number"||typeof s=="string"&&s.trim()!==""?Number(s):Number.NaN,a=Number.isFinite(i)?A8(o.branches,i):void 0;r+=a===void 0?o.source:bp(a,t,String(s));break}}}return r}function u2(e,t={}){return e.includes("{")?bp(R8(e),t,void 0):e}var d2=Object.freeze({"app.masthead.eyebrow":"Offline QR code studio","app.masthead.title":"Make a QR code that keeps working.","app.masthead.lede":"Everything happens in this page. Nothing is sent anywhere, and you can check that by turning your network off and using it anyway.","app.mode.label":"Mode","app.mode.create":"Create","app.mode.create-hint":"One code","app.mode.scan":"Scan","app.mode.scan-hint":"Read a code","app.mode.bulk":"Bulk","app.mode.bulk-hint":"From a spreadsheet","app.tools.label":"Changes","app.history.undo":"Undo","app.history.redo":"Redo","app.history.undone":"Undone.","app.history.redone":"Redone.","app.link.copy":"Copy design link","app.link.copied":"Design link copied. Put it at the end of this file's address to open the same look, without the content.","app.link.copy-failed":"This browser would not copy from here. Save the design as a file instead.","app.section.content":"Content","app.section.style":"Style","app.section.modules":"Modules","app.section.eyes":"Corner squares","app.section.colour":"Colour","app.section.logo":"Logo","app.section.frame":"Frame","app.section.print":"Printed size","app.section.check":"Scan check","app.section.export":"Save","app.section.library":"Library","app.content.types":"Kind of code","app.content.more":"More kinds","app.content.choose":"Choose","app.content.when-scanned":"When scanned","app.content.advanced":"More options","app.content.required":"Required","app.content.show-secret":"Show","app.content.add-item":"Add another","app.content.remove-item":"Remove","app.content.remove-numbered":"Remove {label} {n}","app.content.add-scheme":"Add https://","app.content.safety":"What a phone may warn about","app.content.compatibility":"Phone support","app.capacity.label":"Space used","app.capacity.empty":"No code yet","app.capacity.value":"Uses {used} of {total} bits, {percent}%","app.capacity.largest":"The largest code these settings allow would be about {percent}% full.","app.encoding.symbology":"Kind of symbol","app.encoding.version":"Version","app.encoding.modules":"Modules","app.encoding.modules-value":"Grid of {width} by {height}","app.encoding.ec":"Error correction","app.encoding.ec-l":"L, about 7%","app.encoding.ec-m":"M, about 15%","app.encoding.ec-q":"Q, about 25%","app.encoding.ec-h":"H, about 30%","app.encoding.mask":"Mask","app.encoding.segments":"Segments","app.encoding.segment":"Mode {mode}, {chars, plural, one {# character} other {# characters}}","app.encoding.mode-numeric":"Numeric","app.encoding.mode-alphanumeric":"Alphanumeric","app.encoding.mode-byte":"Bytes","app.encoding.mode-kanji":"Kanji","app.proof.label":"Proof","app.proof.sample":"Sample","app.proof.sample-note":"This is a sample. Your code appears here as you type.","app.proof.not-updated":"Not updated","app.proof.surround":"Surround","app.proof.surround-light":"Light","app.proof.surround-dark":"Dark","app.proof.true-size":"True size","app.proof.calibrate":"Calibrate","app.proof.calibrate-title":"Match a card","app.proof.calibrate-help":"Hold a bank card against the screen and move the slider until the outline is the same width. The setting lasts until you close the page.","app.proof.calibrate-scale":"Outline width","app.proof.calibrate-reset":"Reset","app.proof.calibrate-done":"Done","app.proof.alt-sample":"A sample code in the current design. It is not your code.","app.proof.alt-summary":"It holds {summary}.","app.proof.alt-stale":"This is the last code that worked, not the content as it stands.","app.proof.alt-check":"Scan check: {verdict}.","app.proof.slug-version":"Version {version}","app.proof.slug-level":"Level {level}","app.proof.slug-modules":"Modules {width} \xD7 {height}","app.proof.slug-mask":"Mask {mask}","app.proof.slug-width":"Width {size} mm","app.strip.label":"Simulated captures","app.strip.caption":"Each picture stands for a condition. The words beside it are the check's result.","app.strip.sharp":"Sharp","app.strip.far":"Far","app.strip.soft":"Soft focus","app.strip.angle":"Angle","app.strip.dim":"Dim","app.strip.glare":"Glare","app.strip.ink":"Ink spread","app.strip.pass":"Reads","app.strip.partial":"Reads in part","app.strip.fail":"Fails","app.strip.unknown":"Not checked","app.strip.running":"Checking","app.check.run":"Check it scans","app.check.cancel":"Stop","app.check.running":"Checking, {percent}%.","app.check.idle":"Not checked yet","app.check.idle-detail":"The check prints the code in simulated captures (far, out of focus, at an angle, in poor light) and reads each one the way a strict phone would.","app.check.stale":"The design has changed since this check.","app.check.quick":"This was a quick check after your change. Check it scans again for the full result before you print.","app.check.unavailable":"The scan check cannot run in this copy of the studio.","app.check.unavailable-detail":"The code is still made to the standard. Before you print many, scan a test print with the phones you expect people to use.","app.check.meta-unavailable":"Not available","app.check.verdict-pass":"Scans well","app.check.verdict-warn":"Scans, with cautions","app.check.verdict-fail":"Will not scan reliably","app.check.status-pass":"Passes","app.check.status-warn":"Caution","app.check.status-fail":"Fails","app.check.measured":"Measured {measured}, needs {threshold}","app.check.limits":"Scans from about {distance} cm when printed {size} mm wide.","app.check.limits-module":"Keep each module at least {size} mm across.","app.check.captures":"Every capture","app.check.fixes":"Suggested changes","app.check.fixed":"Change made. Undo puts it back.","app.axis.distance":"Distance","app.axis.focus":"Focus","app.axis.motion":"Movement","app.axis.noise":"Grain","app.axis.angle":"Angle","app.axis.light":"Light","app.axis.glare":"Glare","app.axis.ink":"Ink spread","app.axis.contrast":"Contrast","app.style.presets":"Presets","app.style.custom":"Your own","app.style.standard":"Standard","app.style.from-kit":"From your brand kit","app.style.shuffle":"Shuffle","app.style.shuffle-hint":"A new combination that still scans. Undo goes back.","app.modules.shape":"Module shape","app.eyes.ring":"Outer ring","app.eyes.centre":"Centre","app.eyes.pairs-note":"Only centres that phones still find inside this ring are offered.","app.colour.modules":"Modules","app.colour.eyes":"Corner squares","app.colour.background":"Background","app.colour.same":"As the modules","app.colour.transparent":"Transparent","app.colour.kind-solid":"Solid","app.colour.kind-linear":"Linear","app.colour.kind-radial":"Radial","app.colour.kind-pattern":"Pattern","app.colour.kind-short-gradient":"Gradient","app.colour.ink":"Colour","app.colour.hex":"Hex value","app.colour.hex-invalid":"Write a colour as six hex digits, such as #1a2b3c.","app.colour.pattern":"Pattern","app.colour.angle":"Angle","app.colour.radius":"Spread","app.colour.stop":"Stop {n}","app.colour.stop-position":"Stop {n} position","app.colour.add-stop":"Add a stop","app.colour.remove-stop":"Remove","app.colour.remove-stop-numbered":"Remove stop {n}","app.colour.space":"Spread over","app.colour.space-symbol":"The whole code","app.colour.space-module":"Each module","app.colour.contrast":"Contrast","app.colour.contrast-value":"Ratio {ratio} to 1","app.colour.contrast-good":"Strong. Phones find this easily.","app.colour.contrast-fair":"Enough for most phones. More is safer in print.","app.colour.contrast-poor":"Too low. Many phones will not find the code.","app.colour.contrast-inverted":"The modules are lighter than the background. Many phones cannot read a code that way round.","app.colour.contrast-transparent":"Measured against white, because the background is transparent. Check it against what it is printed on.","app.colour.meta":"Modules {fg} on {bg}","app.logo.choose":"Logo","app.logo.none":"No logo","app.logo.picture":"Your picture","app.logo.upload":"Choose a picture","app.logo.upload-hint":"PNG, JPEG or WebP. It is made into a PNG of at most 1024 pixels, kept inside the design.","app.logo.added":"Logo added.","app.logo.size":"Size","app.logo.padding":"Clear space","app.logo.padding-value":"Modules: {value}","app.logo.clear":"Modules under the logo","app.logo.clear-none":"Keep them","app.logo.clear-box":"Clear a box","app.logo.clear-shape":"Clear to its shape","app.logo.plate":"Plate behind it","app.logo.plate-none":"None","app.logo.plate-square":"Square","app.logo.plate-rounded":"Rounded","app.logo.plate-circle":"Circle","app.logo.level-hint":"A logo covers part of the code. Error correction level H leaves the most room for it.","app.logo.use-h":"Use level H","app.frame.choose":"Frame","app.frame.caption":"Caption","app.frame.caption-hint":"Up to {chars} characters.","app.frame.default-caption":"Scan me","app.frame.font":"Typeface","app.print.size":"Printed width, mm","app.print.size-hint":"Leave it empty to save at any size. A PDF then prints at the scan check's size.","app.print.basis":"Measured across","app.print.basis-artwork":"The whole artwork","app.print.basis-symbol":"The code alone","app.print.dpi":"Resolution, dpi","app.print.dpi-hint":"For a PNG drawn from the printed width. 300 suits most printers.","app.print.distance":"Furthest scanning distance, cm","app.print.distance-hint":"How far away people will be. The scan check holds the code to it.","app.print.not-set":"Any size","app.print.meta":"Width {size} mm","app.export.format":"Format","app.export.format-svg":"SVG","app.export.format-png":"PNG","app.export.format-pdf":"PDF","app.export.format-eps":"EPS","app.export.format-jpeg":"JPEG","app.export.format-webp":"WebP","app.export.hint-svg":"Sharp at any size. For the web and most design tools.","app.export.hint-png":"A picture with exact pixels. For documents, slides and messages.","app.export.hint-pdf":"For printing and for a print shop, at its printed width.","app.export.hint-eps":"For older print and design software.","app.export.hint-jpeg":"A smaller picture with no transparency.","app.export.hint-webp":"A smaller picture for the web. Not every browser can save it.","app.export.size":"Size","app.export.size-pixels":"Pixels","app.export.size-print":"Printed width","app.export.width-px":"Width in pixels","app.export.width-px-hint":"Leave it empty and every module lands on whole pixels, about 1000 across.","app.export.width-mm":"Width in millimetres","app.export.width-mm-hint":"Leave it empty to use the printed size.","app.export.dpi":"Resolution, dpi","app.export.automatic":"Automatic","app.export.quality":"Quality","app.export.colour-space":"Colour","app.export.colour-srgb":"RGB, for screens and most printers","app.export.colour-cmyk":"CMYK, for a print shop","app.export.bleed":"Bleed, mm","app.export.crop-marks":"Crop marks","app.export.download":"Download","app.export.download-format":"Download {format}","app.export.copy-image":"Copy image","app.export.copy-svg":"Copy SVG","app.export.print":"Print","app.export.print-alt":"The QR code at its printed width of {size} mm.","app.export.saved":"Saved {filename}.","app.export.copied-image":"Image copied.","app.export.copied-svg":"SVG copied.","app.dock.label":"Save the code","app.library.intro":"Saved designs and brand kits are kept in a file you save. Nothing is kept in this browser, and a saved design never holds what a code says, so the file is safe to share.","app.library.name":"Name","app.library.name-hint":"For the design or the brand kit you save next.","app.library.untitled":"Untitled","app.library.save-design":"Save this design","app.library.save-kit":"Save as brand kit","app.library.saved":"Design saved to the library. Save the library file to keep it.","app.library.kit-saved":"Brand kit saved, with this design's colours and logo. Save the library file to keep it.","app.library.designs":"Designs","app.library.kits":"Brand kits","app.library.empty":"Nothing saved yet.","app.library.unsaved":"The library has changes that are not in a file yet.","app.library.saved-at":"Saved {date}","app.library.use":"Use","app.library.use-named":"Use {name}","app.library.used":"Used the look of {name}. What the code says is unchanged, and Undo goes back.","app.library.kit-used":"Used the brand kit {name}: its colours where they still read, and its logo. Undo goes back.","app.library.in-use":"In use","app.library.remove":"Remove","app.library.remove-named":"Remove {name}","app.library.removed":"Removed {name}.","app.library.save-file":"Save library file","app.library.open-file":"Open library file","app.library.opened":"Library opened: designs {designs}, brand kits {kits}.","app.library.count":"Designs {designs}, kits {kits}","app.design.title":"This design on its own","app.design.intro":"A design file holds the look and none of the content, so it is safe to share.","app.design.save-file":"Save design file","app.design.open-file":"Open design file","app.design.applied":"Design opened.","app.scan.title":"Read a code","app.scan.intro":"Point a camera at a code, or open a picture of one. The picture is read in this page and goes nowhere.","app.scan.camera-start":"Start the camera","app.scan.camera-stop":"Stop the camera","app.scan.camera-requesting":"Asking for the camera.","app.scan.camera-live":"Camera on. Hold a code inside the frame.","app.scan.camera-read":"Read. The camera is off again.","app.scan.camera-unavailable":"This browser does not offer the camera to a file opened from this computer. Open a picture of the code instead, or drop one here.","app.scan.camera-fallback":"You can open a picture of the code instead.","app.scan.drop":"Drop a picture of a code here, paste one, or choose one","app.scan.choose":"Choose a picture","app.scan.paste-hint":"A screenshot pasted while Scan is open is read too.","app.scan.reading":"Reading the picture.","app.scan.results":"What it says","app.scan.clear":"Clear","app.scan.nothing-yet":"Nothing read yet. What a code holds appears here, exactly as it is written.","app.scan.found-one":"Found 1 code.","app.scan.found-many":"Found {count} codes.","app.scan.symbol":"Symbol: {symbology}, version {version}, level {level}","app.scan.part":"Part {index} of {total}","app.scan.type":"Kind of content","app.scan.destination":"Where it goes","app.scan.host-ascii":"Written for the browser as {host}.","app.scan.safety":"Before you open it","app.scan.safety-none":"Nothing here looks unusual.","app.scan.text":"Exactly what the code holds","app.scan.inspect-unavailable":"The full reading, with the kind of content and any warnings, cannot be shown in this copy of the studio. The text above is exactly what the code holds.","app.scan.remake":"Remake as a static code","app.scan.remade":"Made into a new code in Create. It holds the same content and never expires.","app.scan.copy-text":"Copy the text","app.scan.copied":"Text copied.","app.bulk.title":"Many codes from a spreadsheet","app.bulk.intro":"Each row of a CSV file becomes a code in the design from Create. The file is read in this page and goes nowhere.","app.bulk.source":"The spreadsheet","app.bulk.drop":"Drop a CSV file here, or choose one","app.bulk.choose":"Choose a CSV file","app.bulk.paste":"Or paste its text","app.bulk.paste-placeholder":"For example: name,url","app.bulk.encoding":"Text encoding","app.bulk.encoding-hint":"A file saved as UTF-8 is always read as UTF-8. If letters from a file look wrong, choose the encoding your spreadsheet saved it in.","app.bulk.encoding-auto":"Automatic (UTF-8, otherwise Windows-1252)","app.bulk.encoding-windows-1252":"Western European (Windows-1252)","app.bulk.encoding-shift-jis":"Japanese (Shift_JIS)","app.bulk.encoding-gb18030":"Simplified Chinese (GBK, GB18030)","app.bulk.encoding-big5":"Traditional Chinese (Big5)","app.bulk.encoding-euc-kr":"Korean (EUC-KR)","app.bulk.encoding-windows-1251":"Cyrillic (Windows-1251)","app.bulk.encoding-windows-1256":"Arabic (Windows-1256)","app.bulk.rows":"Rows {count}, columns {columns}","app.bulk.mapping":"Where each field comes from","app.bulk.type":"Kind of code","app.bulk.template-hint":"A template mixes text and columns: write a column name in curly brackets to put its value in.","app.bulk.no-column":"Leave empty","app.bulk.from-column":"A column","app.bulk.column-n":"Column {n}","app.bulk.from-template":"A template","app.bulk.template-for":"Template for {field}","app.bulk.filename":"File names","app.bulk.filename-hint":"A template, as above. Characters a file name cannot hold are replaced, and repeats are numbered.","app.bulk.preview":"Preview","app.bulk.empty":"Add a spreadsheet to see its rows here.","app.bulk.plan":"Ready {ready}, to be skipped {skipped}.","app.bulk.preview-more":"And {count, plural, one {# more row} other {# more rows}}.","app.bulk.row":"Row {row}","app.bulk.row-ok":"Ready","app.bulk.row-skipped":"Skipped","app.bulk.output":"Output","app.bulk.output-zip":"A ZIP of files","app.bulk.output-sheet":"Label sheets as a PDF","app.bulk.format":"Format of each file","app.bulk.sheet":"Label sheet","app.bulk.sheet-hint":"Print a test page on plain paper and hold it against the labels first.","app.bulk.design-note":"Every code uses the design from Create.","app.bulk.make":"Make {count, plural, one {# code} other {# codes}}","app.bulk.making":"Making codes, {done} of {total}.","app.bulk.done":"Made {written, plural, one {# code} other {# codes}}. Rows skipped: {skipped}.","app.bulk.download-again":"Download again","app.drop.title":"Drop to open","app.drop.text":"A design file, a library file, a picture of a code, or a CSV file.","app.drop.unknown":"That is not a file this studio opens. It takes design files, library files, pictures of codes and CSV files.","app.about.title":"About this file","app.about.facts":"What this file does","app.about.check":"To check, turn your network off and use it. Every part still works.","app.about.version":"Version","app.about.source":"Source code","app.about.licence":"Font licence","app.about.licence-intro":"Frame captions are drawn with IBM Plex Sans, which this file carries under the SIL Open Font License. Its terms follow."});var m2=Object.freeze({"batch.malformed-csv.unterminated-quote":"This file has a quoted cell that never ends, so it cannot be read. Check row {row}, column {column}.","batch.malformed-csv.stray-quote":"Row {row}, column {column} has a quote mark in the middle of a cell. Save the file again from your spreadsheet, or put that cell in quotes.","batch.malformed-csv.text-after-quote":"Row {row}, column {column} has text straight after the end of a quoted cell. Save the file again from your spreadsheet.","batch.malformed-csv.empty":"This file has no rows in it.","batch.encoding-unavailable":"This browser cannot read text in the encoding chosen for this file. Choose another, or save the file from your spreadsheet as CSV UTF-8.","batch.too-many-rows":"This file has more than {max, plural, one {# row} other {# rows}}. Split it into smaller files and make each batch on its own.","batch.unknown-column":"This refers to a column the file does not have. Choose one of its columns.","batch.csv.short-row":"Row {row} has {cells, plural, one {# cell} other {# cells}} where the header has {expected}. The missing ones were left empty.","batch.csv.long-row":"Row {row} has {cells} cells where the header has {expected}. The extra ones have no column and were left out.","batch.csv.duplicate-header":"Column {column} has the same name as column {first}. Anything that refers to that name uses column {first}.","batch.csv.fallback-encoding":"This file is not in UTF-8, so it was read as {encoding, select, windows-1252 {Western European (Windows-1252)} shift_jis {Japanese (Shift_JIS)} gb18030 {Simplified Chinese (GBK, GB18030)} big5 {Traditional Chinese (Big5)} euc-kr {Korean (EUC-KR)} windows-1251 {Cyrillic (Windows-1251)} windows-1256 {Arabic (Windows-1256)} other {{encoding}}}. If any letters look wrong, choose the encoding it was saved in, or save it from your spreadsheet as CSV UTF-8.","batch.csv.utf-16":"This file is in UTF-16, and was read as that.","batch.csv.odd-length":"This file ends partway through a character. The last byte was left out.","batch.issue.empty-row":"This row is empty, so no code was made for it.","batch.issue.number-format":"Write this number with a full stop for the decimal point and no thousands separators, such as 1250.50.","batch.issue.filename-fallback":"The file name for this row came out empty, so the row number was used instead.","batch.issue.filename-cleaned":"Characters a file name cannot hold were taken out of this one.","batch.issue.filename-numbered":"Another row has the same file name, so this one has {number} on the end.","batch.issue.eps-fallback":"EPS cannot carry this design's transparency, so this code was saved as a PDF instead.","batch.issue.failed":"This code could not be made.","batch.issue.check-failed":"This code did not pass the scan check. Phones may not read it reliably at this size.","batch.issue.check-warned":"This code passed the scan check, with something to look at.","batch.issue.check-unavailable":"The scan check could not be run for this code."});var f2=Object.freeze({"decode.not-found":"No code was found in this picture.","decode.not-found.geometry":"Part of a code may be here, but no whole code could be found. Make sure all of it is in the picture, with some space around it.","decode.unreadable":"A code was found here, but it could not be read.","decode.unreadable.format":"A code was found here, but the part that says how it was made could not be read.","decode.unreadable.version":"A code was found here, but its size could not be worked out. Try a sharper or straighter picture.","decode.unreadable.reed-solomon":"A code was found here, but too much of it is damaged or unclear to read, even with its error correction.","decode.unreadable.segments":"A code was found here, but it was not made correctly, so what it holds cannot be read.","decode.unreadable.margin":"This code reads here, but without enough to spare for every phone. The picture may be too coarse, taken at too steep an angle, smeared by a moving camera, or too noisy or washed out in places. The corner squares may be dotted, or too round or too cut away at the corners for some phones to follow. Or something else in the picture may look like them.","decode.unsupported":"This code uses a feature this tool cannot read.","decode.unsupported.eci":"This code uses a character set this tool cannot read.","decode.unsupported.kanji":"This code holds Japanese text, and this browser cannot read the character set it uses."});var p2=Object.freeze({"design.module.square":"Square","design.module.rounded":"Rounded","design.module.dot":"Dot","design.module.diamond":"Diamond","design.module.squircle":"Squircle","design.module.hex":"Hexagon","design.module.bars-horizontal":"Horizontal bars","design.module.bars-vertical":"Vertical bars","design.module.fluid":"Fluid","design.module.classy":"Classy","design.module.cross":"Cross","design.module.tiny-square":"Small square","design.module.mosaic":"Mosaic","design.module.star":"Star","design.region.square":"Square","design.region.rounded":"Rounded","design.region.extra-rounded":"Extra rounded","design.region.circle":"Circle","design.region.squircle":"Squircle","design.region.cushion":"Cushion","design.region.dot-ring":"Ring of dots","design.region.octagon":"Octagon","design.region.scooped":"Scooped corners","design.region.square-centre":"Square","design.region.rounded-centre":"Rounded","design.region.circle-centre":"Circle","design.region.squircle-centre":"Squircle","design.region.leaf-centre":"Leaf","design.region.octagon-centre":"Octagon","design.region.scooped-centre":"Scooped corners","design.region.flower-centre":"Flower","design.fill.palette-scatter":"Scattered colours","design.fill.two-tone-diagonal":"Two colours, split","design.frame.none":"No frame","design.frame.banner-bottom":"Banner below","design.frame.banner-top":"Banner above","design.frame.rounded-card":"Rounded card","design.frame.speech-bubble":"Speech bubble","design.frame.ticket":"Ticket","design.frame.polaroid":"Instant photo","design.frame.badge-circle":"Round badge","design.frame.phone":"Phone","design.frame.hang-tag":"Hang tag","design.frame.corner-brackets":"Corner brackets","design.frame.stamp":"Stamp","design.icon.link":"Link","design.icon.wifi":"Wi-Fi","design.icon.mail":"Email","design.icon.phone":"Phone","design.icon.chat":"Chat","design.icon.location-pin":"Location pin","design.icon.calendar":"Calendar","design.icon.contact-card":"Contact card","design.icon.cart":"Shopping cart","design.icon.food":"Knife and fork","design.icon.star":"Star","design.icon.heart":"Heart","design.icon.play":"Play","design.icon.music":"Music","design.icon.shop":"Shop","design.icon.info":"Information","design.preset.classic-black":"Classic black","design.preset.classic-navy":"Classic navy","design.preset.classic-soft-corners":"Soft corners","design.preset.classic-ink-blue":"Ink blue","design.preset.classic-octagon":"Octagon eyes","design.preset.rounded-graphite":"Rounded graphite","design.preset.rounded-ocean":"Rounded ocean","design.preset.rounded-forest":"Forest squircles","design.preset.rounded-plum":"Rounded plum","design.preset.rounded-terracotta":"Terracotta leaves","design.preset.rounded-link":"Rounded with link icon","design.preset.midnight-dots":"Midnight dots","design.preset.charcoal-dots":"Charcoal dots","design.preset.teal-dots":"Teal dots","design.preset.berry-dots":"Berry dots","design.preset.confetti-dots":"Confetti dots","design.preset.hex-pro-blue":"Hex blue","design.preset.hex-graphite":"Hex graphite","design.preset.hex-honey":"Honeycomb","design.preset.hex-night":"Hex night","design.preset.fluid-ink":"Fluid ink","design.preset.fluid-lagoon":"Fluid lagoon","design.preset.fluid-aubergine":"Fluid aubergine","design.preset.classy-slate":"Classy slate","design.preset.cobalt-bars":"Cobalt bars","design.preset.poster-yellow":"Yellow poster","design.preset.bold-tomato":"Tomato card","design.preset.bold-crosses":"Crosses","design.preset.slate-bars":"Slate bars","design.preset.red-badge":"Red badge","design.preset.chat-bubble":"Speech bubble","design.preset.minimal-tiny":"Small squares","design.preset.minimal-diamond":"Diamonds","design.preset.minimal-brackets":"Corner brackets","design.preset.minimal-stars":"Stars","design.preset.sunset-gradient":"Sunset gradient","design.preset.deep-sea-gradient":"Deep sea gradient","design.preset.two-tone":"Two tone","design.preset.violet-glow":"Violet glow","design.preset.mosaic-tiles":"Mosaic tiles","design.preset.teal-and-rust":"Teal and rust","design.preset.shop-tag":"Shop tag","design.preset.print-black":"Print black","design.preset.print-navy":"Print navy","design.preset.print-ticket":"Print ticket","design.preset.print-stamp":"Print stamp","design.param.radius":"Corner radius","design.param.size":"Size","design.param.orientation":"Orientation","design.param.thickness":"Thickness","design.param.scale":"Scale","design.param.jitter":"Variation","design.param.inner":"Inner depth","design.param.cut":"Corner cut","design.param.bite":"Corner scoop","design.param.petal":"Petal size","design.param.colour-1":"First colour","design.param.colour-2":"Second colour","design.param.colour-3":"Third colour","design.param.colour-4":"Fourth colour","design.param.count":"Colours used","design.param.angle":"Angle","design.param.split":"Split position","design.param.border":"Border","design.param.band":"Band depth","design.param.padding":"Padding","design.param.caption":"Caption space","design.param.tail":"Tail size","design.param.stub":"Stub depth","design.param.notch":"Notch size","design.param.bezel":"Bezel","design.param.gap":"Gap","design.param.arm":"Arm length","design.option.pointy":"Point at the top","design.option.flat":"Flat at the top","design.issue.not-an-object":"This should be a group of settings.","design.issue.not-a-list":"This should be a list.","design.issue.not-a-number":"Enter a number.","design.issue.not-an-integer":"Enter a whole number.","design.issue.not-a-boolean":"This should be on or off.","design.issue.not-text":"This should be text.","design.issue.out-of-range":"This is outside the range from {min} to {max}.","design.issue.invalid-option":"Choose one of the options.","design.issue.invalid-colour":"Colours are written as a # and three, four, six or eight hex digits.","design.issue.cmyk":"A print colour is four values from 0 to 1, for cyan, magenta, yellow and black.","design.issue.required":"This is required.","design.issue.unknown-key":"This setting is not part of a design, so it was left out.","design.issue.filled-default":"This was missing, so the usual setting was used.","design.issue.angle-normalised":"This angle was brought round to between 0 and 360 degrees.","design.issue.schema":"This is not a design file.","design.issue.unsupported-version":"This design was made by a different version of the studio. This one reads version {supported}.","design.issue.symbology":"Choose one of the kinds of code this studio makes.","design.issue.version-name":"This is not a size this kind of code comes in.","design.issue.version-range":"The largest size allowed is smaller than the smallest.","design.issue.mask":"Choose a mask from 0 to {max}, or let one be chosen.","design.issue.stop-count":"A gradient has from {min} to {max} colour stops.","design.issue.stop-order":"Each colour stop must come at or after the one before it.","design.issue.unknown-entry":"This refers to a style this version of the studio does not include.","design.issue.param-ignored":"This setting does not suit the style it is on, so the usual value was used.","design.issue.region-part":"This shape is for the other part of the position marks, the ring or the centre.","design.issue.region-kind":"This shape cannot draw one of this code's position marks, so that mark is drawn with squares.","design.issue.region-corners":"Readers find this kind of code by the corners of its position marks, so they are drawn square and only the centre of the main one takes the style.","design.issue.region-pair":"Strict readers may not find position marks with this ring and this centre. Choose a different centre or ring.","design.issue.ring-not-traceable":"Many phone readers cannot find position marks with a ring of dots, so it cannot be used for the corners of a QR code. Choose another ring.","design.issue.ring-round":"Some phone readers struggle to find round corners when the code is seen at an angle. A squarer ring scans more reliably.","design.issue.quiet-zone":"The margin round the code was not a usable width, so the usual width was used.","design.issue.quiet-zone-small":"The margin round the code is narrower than the {min} modules this kind of code needs, and some readers will miss it.","design.issue.asset-missing":"This logo refers to an image the design does not hold.","design.issue.asset-unavailable":"The logo image could not be loaded, so the code is shown without it.","design.issue.asset-id":"Image names use lowercase letters, digits and hyphens.","design.issue.asset-encoding":"This image is damaged.","design.issue.asset-not-png":"Images in a design are PNG files.","design.issue.asset-too-large":"This image is larger than the {max} bytes a design can hold.","design.issue.asset-mismatch":"This image is not the size the design says it is.","design.issue.too-many-assets":"A design holds at most {max} images, and this one has {count}.","design.issue.unused-asset":"Nothing in the design uses this image, so it was left out.","design.issue.logo-paint-ignored":"A picture logo keeps its own colours, so this colour was left out.","design.issue.logo-too-small":"The logo is too small to draw at this size of code.","design.issue.logo-shrunk":"The logo was made smaller to keep it off the patterns a reader uses to find and line up the code.","design.issue.frame-unsupported":"Readers lose rectangular Micro QR codes inside a frame, so this code is shown without its frame.","design.issue.caption-unsupported":"This frame has no space for a caption, so the caption was left out.","design.issue.caption-missing-glyphs":"This font cannot draw {count, plural, one {one of the characters in the caption, so it was} other {# of the characters in the caption, so they were}} left out. Choose another font, or change the text.","design.issue.caption-overflow":"The caption does not fit this frame even at its smallest size, so it is cut off. Shorten it, or choose a frame with more room.","design.issue.font-unavailable":"This font is not available here, so the caption cannot be drawn.","design.issue.too-long":"This is {length} characters and the limit is {max}.","design.issue.too-many-lines":"This has {lines} lines and the frame holds {max}.","design.issue.control-character":"This contains a control character at position {position}, which would not be shown.","design.issue.font-id":"Font names use lowercase letters, digits and hyphens.","design.issue.design-locked":"This content has a fixed design, so the design was set to it.","design.issue.colours-constrained":"This content is printed in black on white, so the colours were changed.","design.issue.symbology-constrained":"This content needs a different kind of code, so it was changed.","design.issue.ec-level-constrained":"This content needs error correction level {level}, so that level is used.","design.issue.boost-constrained":"Raising the error correction is switched off, because this content allows only certain levels.","design.issue.version-constrained":"This content allows a code no larger than version {max}.","design.issue.eci-constrained":"This content names its own character set, so no character set marker is added.","design.issue.size-constrained":"This content is printed with the code itself {size} mm wide, not counting its margin, so that size is used.","design.issue.overlay-unsupported":"The Swiss cross this content needs is printed over QR codes only, so it was left out.","design.issue.link-assets-dropped":"Images are too large to put in a link, so the logo picture was left out of it."});var h2=Object.freeze({"design.issue.svg-logo-later":"SVG logos are not supported yet. Save the logo as a PNG and choose that instead.","dom.issue.logo-downscaled":"The picture was made smaller, to {width} by {height} pixels, so the design can hold it."});var y2=Object.freeze({"encode.too-much-data":"That is too much to fit in one code at these settings. Shorten it, lower the error correction, or allow a larger code.","encode.unsupported-feature.eci":"This kind of code cannot say which character set it uses. Choose a QR code, or turn that option off.","encode.unsupported-feature.fnc1":"This kind of code cannot carry GS1 data. Choose a QR code.","encode.unsupported-feature.structured-append":"This kind of code cannot be split across several codes. Choose a QR code.","encode.unsupported-content.lone-surrogate":"This text has a broken character in it and cannot be put into a code as it is.","encode.unsupported-content.mode":"This code size cannot hold some of these characters. Choose a larger kind of code."});var g2=Object.freeze({"inspect.label.symbology":"Kind of code","inspect.label.version":"Size","inspect.label.error-correction":"Error correction","inspect.label.mask":"Mask","inspect.label.text-source":"Character set","inspect.label.segments":"Encoding","inspect.label.structured-append":"Part of a set","inspect.label.gs1":"GS1 data","inspect.label.quality":"How well it read","inspect.label.errors-corrected":"Errors repaired","inspect.label.format-errors":"Format bits repaired","inspect.label.mirrored":"Read as a mirror image","inspect.label.inverted":"Read light on dark","inspect.label.confidence":"Least certain square","inspect.label.content":"What it holds","inspect.label.destination":"Where it goes","inspect.label.unicode-host":"Address as written","inspect.text-source.utf-8":"Unicode","inspect.text-source.latin1-fallback":"Western European, guessed","inspect.text-source.shift-jis":"Japanese","inspect.text-source.eci":"Declared by the code","inspect.set.complete":"{total, plural, one {The one part of this set was found and read.} other {All # parts were found and put together.}}","inspect.set.incomplete":"This is one part of a set of {total}. Scan the other parts too to see the whole message.","inspect.set.parity-mismatch":"These parts do not belong to the same message, so they were not put together.","inspect.not-opened":"Nothing has been opened. This is where the code goes, so you can decide whether to.","inspect.issue.unreadable-as-type":"This looked like a particular kind of content but could not be read as one, so it is shown as plain text.","inspect.gs1.00":"Shipping container code","inspect.gs1.01":"Product number","inspect.gs1.02":"Product number of contents","inspect.gs1.10":"Batch or lot","inspect.gs1.11":"Production date","inspect.gs1.12":"Due date","inspect.gs1.13":"Packaging date","inspect.gs1.15":"Best before","inspect.gs1.16":"Sell by","inspect.gs1.17":"Use by or expiry","inspect.gs1.20":"Variant","inspect.gs1.21":"Serial number","inspect.gs1.22":"Consumer product variant","inspect.gs1.240":"Additional product identification","inspect.gs1.241":"Customer part number","inspect.gs1.250":"Secondary serial number","inspect.gs1.251":"Reference to source entity","inspect.gs1.253":"Document type identifier","inspect.gs1.254":"Location number extension","inspect.gs1.30":"Variable count","inspect.gs1.37":"Count of items contained","inspect.gs1.400":"Order number","inspect.gs1.401":"Consignment number","inspect.gs1.402":"Shipment number","inspect.gs1.403":"Routing code","inspect.gs1.410":"Ship to location","inspect.gs1.411":"Bill to location","inspect.gs1.412":"Purchased from","inspect.gs1.413":"Ship for location","inspect.gs1.414":"Physical location","inspect.gs1.415":"Invoicing party","inspect.gs1.416":"Production or service location","inspect.gs1.420":"Ship to postcode","inspect.gs1.421":"Ship to postcode with country","inspect.gs1.422":"Country of origin","inspect.gs1.7003":"Expiry date and time","inspect.gs1.8003":"Returnable asset identifier","inspect.gs1.8004":"Individual asset identifier","inspect.gs1.8020":"Payment slip reference","inspect.gs1.90":"Agreed between trading partners","inspect.gs1.measure":"Measurement","inspect.gs1.amount":"Amount or price","inspect.gs1.unknown":"Other GS1 data"});var b2=Object.freeze({"dom.library.issue.too-large":"This file is too large to be a library. A library file holds at most {max} bytes.","dom.library.issue.too-deep":"This file nests too deeply to be a library, so it was not opened.","dom.library.issue.not-json":"This file could not be read as a library. Choose a .qrlibrary.json file saved from the studio.","dom.library.issue.not-a-library":"This is not a library file. Choose a .qrlibrary.json file saved from the studio.","dom.library.issue.version":"This library was saved by a different version of the studio and cannot be opened here.","dom.library.issue.unknown-key":"This library file has a part the studio does not know, so it was not opened.","dom.library.issue.too-many":"This library file holds {count} entries of one kind, and a library holds at most {max}.","dom.library.issue.unreadable":"This file could not be read. Choose it again.","dom.library.issue.content":"A saved item held the content of a code, which a library never keeps, so it was left out.","dom.library.issue.corrupt":"A saved item is damaged and was left out.","dom.library.error.blocked":"The library is open in another tab. Close that tab and the library will be deleted.","dom.library.error.missing":"That saved item is no longer in the library.","dom.library.error.file-full":"This library holds as much as one file can. Remove something, or save it and start another.","dom.library.error.kit":"This brand kit has a colour, logo or preset the studio cannot use."});var x2=Object.freeze({"symbology.micro.label":"Micro QR","symbology.micro.not-phone-readable":"Most phone cameras cannot read Micro QR codes. Use one only where you know the scanner that will read it supports Micro QR, and test it with that scanner before printing.","symbology.micro.detection-only":"The smallest size, M1, can tell when it has been damaged but cannot repair any of the damage."});var w2=Object.freeze({"own-link.issue.from":"Enter the full address on your own site that the code will hold, starting with https://.","own-link.issue.from-query":"The address the code holds cannot include a query string or a fragment, because redirect rules match the path alone.","own-link.issue.from-path":"Use only letters, digits, hyphens, dots, underscores and slashes in the path, so every platform matches it the same way.","own-link.issue.to":"Enter the full destination address, starting with https://.","own-link.issue.to-userinfo":"The destination has a user name or password in it. Browsers warn about these links, so leave it out.","own-link.issue.to-insecure":"The destination does not use a secure connection. Use https:// if the site supports it.","own-link.issue.status":"Choose 302 or 307 for a destination you may change, or 301 or 308 for one you will not.","own-link.issue.permanent":"Browsers remember a permanent redirect, so if you change the destination later, people who scanned before may still go to the old one.","own-link.issue.loop":"The destination is the same address as the code, so it would redirect to itself.","own-link.issue.target":"Choose from the listed hosting setups.","own-link.issue.url":"Enter the full address, starting with https://.","own-link.issue.utm-required":"Fill in the source, medium and campaign. Analytics groups visits by all three.","own-link.issue.utm-value":"This contains a character that cannot go in a link.","own-link.note.cloudflare-bulk":"Upload this to a Bulk Redirect List in the Cloudflare dashboard, then turn the list on with a Bulk Redirect Rule.","own-link.note.cloudflare-rule":"Create a Redirect Rule with this expression and target in the Cloudflare dashboard, or send it to the Rulesets API.","own-link.note.netlify":"Put this line in the _redirects file in the folder your site is published from.","own-link.note.netlify-status":"Put this line in the _redirects file in the folder your site is published from. Netlify does not support 307 or 308, so the nearest status it does support is used.","own-link.note.vercel":"Add this to the redirects in vercel.json at the root of your project, keeping any that are already there.","own-link.note.apache":"Add this line to the .htaccess file in your site folder. The server has to allow FileInfo overrides.","own-link.note.nginx":"Add this block inside the server block for your site, then reload nginx.","own-link.note.html":"Upload this page to your site at the path the code holds. Use it only where the host has no redirect settings, because search engines treat it as a page rather than a redirect."});var k2=Object.freeze({"payload.issue.wrong-kind":"This value is the wrong kind of thing for this field.","payload.issue.required":"This is required.","payload.issue.too-long":"This is {length} characters and the limit is {max}.","payload.issue.too-many":"There are {count} of these and the limit is {max}.","payload.issue.line-break":"This has to fit on one line.","payload.issue.control-character":"This contains a control character at position {position}, which a reader would not show.","payload.issue.unpaired-surrogate":"This contains a broken character at position {position}.","payload.issue.not-a-number":"Enter a number.","payload.issue.not-an-integer":"Enter a whole number.","payload.issue.below-min":"This is below the minimum of {min}.","payload.issue.above-max":"This is above the maximum of {max}.","payload.issue.invalid-option":"Choose one of the options.","payload.issue.invalid-url":"This is not a complete web address. It should start with https://.","payload.issue.url-scheme":"Only web addresses starting with https:// or http:// work here.","payload.issue.invalid-email":"This is not an email address.","payload.issue.invalid-tel":"Enter a phone number using digits, with + and the country code if it is international.","payload.issue.invalid-date":"Enter a real date.","payload.issue.invalid-datetime":"Enter a real date and time.","payload.issue.invalid-iban":"This is not an IBAN. It starts with two letters and two digits.","payload.issue.iban-country":"This IBAN starts with a country code that has no IBANs.","payload.issue.iban-length":"This IBAN has {length} characters, and IBANs from this country have {expected}.","payload.issue.iban-checksum":"This IBAN fails its check digits. A character is probably mistyped.","payload.issue.invalid-bic":"This is not a BIC. It is 8 or 11 letters and digits.","payload.issue.amount-decimals":"Use at most {max} decimal places.","payload.issue.invalid-currency":"Use a three-letter currency code.","payload.issue.invalid-country":"Use a two-letter country code.","payload.issue.invalid-latitude":"Latitude is between -90 and 90.","payload.issue.invalid-longitude":"Longitude is between -180 and 180.","payload.issue.creditor-reference":"This creditor reference fails its check digits. It starts with RF and two digits.","payload.safety.scheme.dangerous":"This code runs a script or opens something on the device ({scheme}) instead of going to a website. Do not open it.","payload.safety.scheme.unusual":"This link opens an app rather than a web page ({scheme}). Check that is what you expected.","payload.safety.host.ip-literal":"This link goes to a numeric address, {host}, rather than to a named website.","payload.safety.host.mixed-script":"The address {host} mixes letters from different alphabets, which is how look-alike addresses are made.","payload.safety.host.punycode":"The address {host} is shown in its own letters as {unicodeHost}. Check it is the site you expect.","payload.safety.host.lookalike":"The address {host} is written in letters that look like ordinary ones but come from another alphabet.","payload.safety.url.userinfo":"This link is written to look like another address. It goes to {host}.","payload.safety.host.shortener":"This link goes through a redirect service, {host}, and whoever runs it decides where it ends up.","payload.safety.host.dynamic-qr":"This code goes through a QR code redirect service, {host}, and whoever runs it decides where it ends up.","payload.safety.url.tracking-params":"This link carries tracking parameters ({count}) that record where you came from. The page is the same without them.","payload.safety.url.insecure":"This link does not use a secure connection, so what you see or send could be read or changed on the way.","payload.safety.url.very-long":"This link is {length} characters long, so the part you can see may not be the part that matters.","payload.safety.payload.open-wifi":"This network has no password, so anyone nearby can join it and may see what you send over it.","payload.safety.payload.payment":"This code starts a payment. Check who is being paid and how much before you confirm.","payload.safety.payload.service-code":"This code dials a service code with * or #, which can change phone settings such as call forwarding. Do not call it.","payload.safety.payload.sends-message":"This code prepares a message. Nothing is sent until you choose to send it.","payload.text.label":"Text","payload.text.description":"Any text, shown as it is.","payload.text.action":"Shows some text.","payload.text.field.text":"Text","payload.url.label":"Web link","payload.url.description":"A web address that opens in the browser.","payload.url.action":"Opens a web page.","payload.url.field.url":"Web address","payload.url.hint.url":"The full address, starting with https://.","payload.url.field.utm-source":"Campaign source","payload.url.field.utm-medium":"Campaign medium","payload.url.field.utm-campaign":"Campaign name","payload.url.field.utm-term":"Campaign term","payload.url.field.utm-content":"Campaign content","payload.url.issue.utm-incomplete":"Analytics groups visits by source, medium and campaign together, so fill in all three.","payload.email.label":"Email","payload.email.description":"An email with the address, subject and message filled in.","payload.email.action":"Opens an email ready to send.","payload.email.field.to":"To","payload.email.field.cc":"Cc","payload.email.field.bcc":"Bcc","payload.email.field.subject":"Subject","payload.email.field.body":"Message","payload.email.issue.no-recipient":"Add at least one address to send to.","payload.phone.label":"Phone call","payload.phone.description":"A phone number to call.","payload.phone.action":"Offers to call a phone number.","payload.phone.field.number":"Phone number","payload.phone.hint.number":"Include + and the country code so it works from anywhere.","payload.sms.label":"Text message","payload.sms.description":"A text message with the number and message filled in.","payload.sms.action":"Opens a text message ready to send.","payload.sms.field.number":"Phone number","payload.sms.hint.number":"Include + and the country code so it works from anywhere.","payload.sms.field.message":"Message","payload.whatsapp.label":"WhatsApp chat","payload.whatsapp.description":"A WhatsApp chat with a number, with a message typed in if you like.","payload.whatsapp.action":"Opens a WhatsApp chat.","payload.whatsapp.field.number":"WhatsApp number","payload.whatsapp.hint.number":"The full international number, starting with + and the country code.","payload.whatsapp.field.message":"Message","payload.whatsapp.issue.international":"Start the number with + and the country code. WhatsApp links only work with the full number.","payload.whatsapp.compat.app":"Opens in WhatsApp if it is installed, otherwise on the WhatsApp website.","payload.telegram.label":"Telegram chat","payload.telegram.description":"A Telegram chat with a username or a phone number.","payload.telegram.action":"Opens a Telegram chat.","payload.telegram.field.target":"Chat with","payload.telegram.option.target.username":"A username","payload.telegram.option.target.phone":"A phone number","payload.telegram.field.username":"Username","payload.telegram.hint.username":"Without the @.","payload.telegram.field.phone":"Phone number","payload.telegram.hint.phone":"The full international number, starting with + and the country code.","payload.telegram.field.message":"Message","payload.telegram.issue.international":"Start the number with + and the country code.","payload.telegram.issue.username":"A Telegram username is 5 to 32 letters, digits and underscores.","payload.telegram.compat.app":"Opens in Telegram if it is installed, otherwise on the Telegram website.","payload.signal.label":"Signal chat","payload.signal.description":"A Signal chat with a phone number.","payload.signal.action":"Opens a Signal chat.","payload.signal.field.number":"Signal number","payload.signal.hint.number":"The full international number, starting with + and the country code.","payload.signal.issue.international":"Start the number with + and the country code.","payload.signal.compat.app":"Needs the Signal app to open the chat.","payload.facetime.label":"FaceTime call","payload.facetime.description":"A FaceTime call to a phone number or an email address.","payload.facetime.action":"Offers to start a FaceTime call.","payload.facetime.field.contact":"Phone number or email","payload.facetime.hint.contact":"The number or email address the person uses for FaceTime.","payload.facetime.field.audio-only":"Audio only","payload.facetime.issue.contact":"Enter a phone number or an email address.","payload.facetime.compat.apple-only":"Only iPhone, iPad and Mac open FaceTime calls.","payload.wifi.label":"Wi-Fi network","payload.wifi.description":"The name and password of a Wi-Fi network, so a phone can join without typing them.","payload.wifi.action":"Joins a Wi-Fi network.","payload.wifi.field.ssid":"Network name","payload.wifi.hint.ssid":"Exactly as it appears in the list of networks, including capitals.","payload.wifi.field.security":"Security","payload.wifi.hint.security":"Most home and office networks use WPA. Choose WPA3 only if the network accepts nothing else.","payload.wifi.option.security.wpa":"WPA2 or WPA3","payload.wifi.option.security.sae":"WPA3 only","payload.wifi.option.security.wep":"WEP (old)","payload.wifi.option.security.nopass":"No password","payload.wifi.option.security.wpa2-eap":"Enterprise (WPA2-EAP)","payload.wifi.field.password":"Password","payload.wifi.field.hidden":"Hidden network","payload.wifi.hint.hidden":"Tick this if the network does not appear in the list of networks.","payload.wifi.field.eap-method":"EAP method","payload.wifi.option.eap-method.peap":"PEAP","payload.wifi.option.eap-method.tls":"TLS","payload.wifi.option.eap-method.ttls":"TTLS","payload.wifi.option.eap-method.pwd":"PWD","payload.wifi.option.eap-method.sim":"SIM","payload.wifi.option.eap-method.aka":"AKA","payload.wifi.option.eap-method.aka-prime":"AKA'","payload.wifi.field.phase2":"Phase 2 method","payload.wifi.option.phase2.pap":"PAP","payload.wifi.option.phase2.mschap":"MSCHAP","payload.wifi.option.phase2.mschapv2":"MSCHAPv2","payload.wifi.option.phase2.gtc":"GTC","payload.wifi.option.phase2.sim":"SIM","payload.wifi.option.phase2.aka":"AKA","payload.wifi.option.phase2.aka-prime":"AKA'","payload.wifi.field.identity":"Identity","payload.wifi.field.anonymous-identity":"Anonymous identity","payload.wifi.issue.ssid-too-long":"This network name is {length} bytes and Wi-Fi allows {max}.","payload.wifi.issue.password-required":"Enter the password, or choose No password.","payload.wifi.issue.wep-key":"A WEP key is 5 or 13 characters, or 10 or 26 hexadecimal digits.","payload.wifi.issue.wpa-ascii":"A WPA password uses only the letters, digits and symbols on an English keyboard.","payload.wifi.issue.wpa-length":"This password is {length, plural, one {# character} other {# characters}}. A WPA password is {min} to {max}.","payload.wifi.issue.eap-ignored":"The enterprise settings are only used when Security is Enterprise.","payload.wifi.issue.hex-ssid":"Some Android apps read a network name made only of the digits 0 to 9 and the letters A to F as raw bytes, and will not find this network.","payload.wifi.compat.enterprise":"The camera built into Android treats an enterprise network as one with a password and may not join it. Apps based on ZXing read the enterprise settings.","payload.wifi.issue.password-ignored":"A network with no password ignores the password.","payload.vcard.label":"Contact card","payload.vcard.description":"A contact with name, numbers, email and address, saved to the address book in one step.","payload.vcard.action":"Offers to save a contact.","payload.vcard.field.prefix":"Title before the name","payload.vcard.field.given-name":"First name","payload.vcard.field.additional-names":"Middle names","payload.vcard.field.family-name":"Last name","payload.vcard.field.suffix":"Title after the name","payload.vcard.field.formatted-name":"Name as shown","payload.vcard.hint.formatted-name":"Leave this empty to use the name parts above.","payload.vcard.field.organisation":"Organisation","payload.vcard.field.department":"Department","payload.vcard.field.title":"Job title","payload.vcard.field.mobile":"Mobile","payload.vcard.field.work-phone":"Work phone","payload.vcard.field.home-phone":"Home phone","payload.vcard.field.fax":"Fax","payload.vcard.field.other-phone":"Other phone","payload.vcard.field.email":"Email","payload.vcard.field.website":"Website","payload.vcard.field.street":"Street address","payload.vcard.field.locality":"Suburb or city","payload.vcard.field.region":"State or region","payload.vcard.field.postcode":"Postcode","payload.vcard.field.country":"Country","payload.vcard.field.address-type":"Address type","payload.vcard.option.address-type.work":"Work","payload.vcard.option.address-type.home":"Home","payload.vcard.field.note":"Note","payload.vcard.field.birthday":"Birthday","payload.vcard.issue.no-name":"Add a name or an organisation.","payload.mecard.label":"Contact card (compact)","payload.mecard.description":"A shorter contact card that makes a smaller code, with fewer details than a full one.","payload.mecard.action":"Offers to save a contact.","payload.mecard.field.family-name":"Last name","payload.mecard.field.given-name":"First name","payload.mecard.field.nickname":"Nickname","payload.mecard.field.phones":"Phone","payload.mecard.field.email":"Email","payload.mecard.field.url":"Website","payload.mecard.field.address":"Address","payload.mecard.field.organisation":"Organisation","payload.mecard.hint.organisation":"Some older readers ignore this.","payload.mecard.field.note":"Note","payload.mecard.field.birthday":"Birthday","payload.mecard.issue.no-name":"Add a first or last name.","payload.mecard.compat.org":"The organisation is a later addition to this format and some older readers ignore it.","payload.event.label":"Calendar event","payload.event.description":"An event with its time and place, added to the calendar in one step.","payload.event.action":"Offers to add an event to the calendar.","payload.event.field.summary":"Event name","payload.event.field.timing":"Time","payload.event.hint.timing":"A set time is the same moment everywhere. Local time is that time wherever the reader is.","payload.event.option.timing.utc":"At a set time","payload.event.option.timing.floating":"At a local time","payload.event.option.timing.all-day":"All day","payload.event.field.start":"Starts","payload.event.field.end":"Ends","payload.event.field.start-date":"First day","payload.event.field.end-date":"Last day","payload.event.hint.end-date":"Leave this empty for a one-day event.","payload.event.field.location":"Location","payload.event.field.description":"Description","payload.event.field.url":"Web address","payload.event.issue.end-before-start":"The end is before the start.","payload.geo.label":"Map location","payload.geo.description":"A point on the map, opened in the map app.","payload.geo.action":"Shows a place on a map.","payload.geo.field.latitude":"Latitude","payload.geo.field.longitude":"Longitude","payload.geo.field.altitude":"Altitude","payload.geo.hint.altitude":"In metres above sea level. Most map apps ignore it.","payload.geo.field.uncertainty":"Accuracy","payload.geo.hint.uncertainty":"How far off the point may be, in metres.","payload.bitcoin.label":"Bitcoin payment","payload.bitcoin.description":"A request to pay a Bitcoin address, with the amount filled in if you like.","payload.bitcoin.action":"Opens a Bitcoin payment in a wallet.","payload.bitcoin.field.address":"Bitcoin address","payload.bitcoin.hint.address":"Paste it from the wallet that will receive the payment rather than typing it.","payload.bitcoin.field.amount":"Amount (BTC)","payload.bitcoin.field.label":"Paid to","payload.bitcoin.field.message":"Message","payload.bitcoin.issue.address":"This is not a Bitcoin address.","payload.bitcoin.issue.address-checksum":"This address fails its own check. A character is mistyped, and a payment to it would fail.","payload.bitcoin.issue.testnet":"This is a test network address. Real bitcoin sent to it is lost.","payload.lightning.label":"Lightning invoice","payload.lightning.description":"A Lightning invoice from a wallet, as a code that can be scanned to pay it.","payload.lightning.action":"Opens a Lightning payment in a wallet.","payload.lightning.field.invoice":"Invoice","payload.lightning.hint.invoice":"Paste the invoice from the wallet that will be paid. It starts with lnbc.","payload.lightning.issue.format":"This is not a Lightning invoice.","payload.lightning.issue.checksum":"This invoice fails its own check. It was copied incompletely or changed.","payload.lightning.issue.prefix":"This invoice does not say which network it is for in a way wallets accept.","payload.lightning.issue.amount":"The amount in this invoice is written in a way wallets refuse.","payload.lightning.issue.testnet":"This invoice is for a test network. A real wallet cannot pay it.","payload.epc.label":"SEPA transfer","payload.epc.description":"A euro bank transfer with the account, amount and reference filled in, for banking apps in Europe.","payload.epc.action":"Opens a bank transfer in a banking app.","payload.epc.field.name":"Pay to","payload.epc.field.iban":"IBAN","payload.epc.field.bic":"BIC","payload.epc.hint.bic":"Needed only for banks outside the European Economic Area.","payload.epc.field.amount":"Amount (EUR)","payload.epc.field.reference":"Creditor reference","payload.epc.hint.reference":"A structured reference, usually starting with RF. Use either this or a message.","payload.epc.field.message":"Message","payload.epc.field.purpose":"Purpose code","payload.epc.hint.purpose":"A four-letter ISO 20022 code, such as CHAR for a donation.","payload.epc.field.information":"Note for the payer","payload.epc.hint.information":"Shown to the person paying. It is not sent with the payment.","payload.epc.field.version":"Format version","payload.epc.option.version.002":"Version 2","payload.epc.option.version.001":"Version 1 (needs a BIC)","payload.epc.issue.bic-required":"Version 1 needs a BIC.","payload.epc.issue.bic-outside-eea":"This IBAN is from a SEPA country outside the European Economic Area, so the transfer needs a BIC.","payload.epc.issue.not-sepa":"This IBAN is not from a SEPA country, so a SEPA transfer may not reach it.","payload.epc.issue.purpose":"A purpose code is four capital letters or digits.","payload.epc.issue.reference-and-message":"Use either a creditor reference or a message, not both.","payload.epc.issue.reference-unchecked":"This reference does not start with RF, so its check digits cannot be checked here.","payload.epc.issue.too-long":"This transfer is {length} bytes and the format allows {max}. Shorten the name or the message.","payload.swiss-qr-bill.label":"Swiss QR-bill","payload.swiss-qr-bill.description":"The payment part of a Swiss QR-bill, in francs or euros.","payload.swiss-qr-bill.action":"Opens a bill payment in a Swiss banking app.","payload.swiss-qr-bill.field.iban":"Account (IBAN or QR-IBAN)","payload.swiss-qr-bill.hint.iban":"A Swiss or Liechtenstein IBAN. A QR-IBAN needs a QR reference.","payload.swiss-qr-bill.field.creditor-name":"Payable to","payload.swiss-qr-bill.field.creditor-street":"Street","payload.swiss-qr-bill.field.creditor-building":"Building number","payload.swiss-qr-bill.field.creditor-postcode":"Postcode","payload.swiss-qr-bill.field.creditor-town":"Town","payload.swiss-qr-bill.field.creditor-country":"Country","payload.swiss-qr-bill.field.creditor-address-type":"Address format","payload.swiss-qr-bill.hint.creditor-address-type":"Bills are made with separate address lines. Combined lines are only read from older bills.","payload.swiss-qr-bill.option.creditor-address-type.s":"Separate lines","payload.swiss-qr-bill.option.creditor-address-type.k":"Combined lines (old)","payload.swiss-qr-bill.field.amount":"Amount","payload.swiss-qr-bill.field.currency":"Currency","payload.swiss-qr-bill.option.currency.chf":"Swiss francs (CHF)","payload.swiss-qr-bill.option.currency.eur":"Euros (EUR)","payload.swiss-qr-bill.field.debtor-name":"Payable by","payload.swiss-qr-bill.field.debtor-street":"Street","payload.swiss-qr-bill.field.debtor-building":"Building number","payload.swiss-qr-bill.field.debtor-postcode":"Postcode","payload.swiss-qr-bill.field.debtor-town":"Town","payload.swiss-qr-bill.field.debtor-country":"Country","payload.swiss-qr-bill.field.debtor-address-type":"Address format","payload.swiss-qr-bill.hint.debtor-address-type":"Bills are made with separate address lines. Combined lines are only read from older bills.","payload.swiss-qr-bill.option.debtor-address-type.s":"Separate lines","payload.swiss-qr-bill.option.debtor-address-type.k":"Combined lines (old)","payload.swiss-qr-bill.field.reference-type":"Reference","payload.swiss-qr-bill.hint.reference-type":"A QR-IBAN takes a QR reference. Any other IBAN takes a creditor reference or none.","payload.swiss-qr-bill.option.reference-type.qrr":"QR reference","payload.swiss-qr-bill.option.reference-type.scor":"Creditor reference (RF)","payload.swiss-qr-bill.option.reference-type.non":"No reference","payload.swiss-qr-bill.field.reference":"Reference number","payload.swiss-qr-bill.field.message":"Additional information","payload.swiss-qr-bill.field.billing-information":"Billing information","payload.swiss-qr-bill.field.alternative1":"Alternative procedure 1","payload.swiss-qr-bill.field.alternative2":"Alternative procedure 2","payload.swiss-qr-bill.issue.iban-country":"A QR-bill account is a Swiss (CH) or Liechtenstein (LI) IBAN.","payload.swiss-qr-bill.issue.combined-address":"This bill uses combined address lines, which QR-bills stopped accepting in November 2025. Split the address into its lines before making the bill again.","payload.swiss-qr-bill.issue.qrr-needs-qr-iban":"A QR reference needs a QR-IBAN.","payload.swiss-qr-bill.issue.qr-iban-needs-qrr":"A QR-IBAN needs a QR reference.","payload.swiss-qr-bill.issue.qrr-chf-only":"From QR-bill version 2.4 a QR reference is only for bills in Swiss francs. A bill in euros made this way is accepted until November 2027.","payload.swiss-qr-bill.issue.notification":"An amount of 0.00 makes a notification, not a bill to pay. Put DO NOT USE FOR PAYMENT in the additional information.","payload.swiss-qr-bill.issue.bytes":"This bill is {length} bytes once its accented letters are encoded, and the code holds {max}. It may not fit.","payload.swiss-qr-bill.issue.qr-reference":"A QR reference is 27 digits and this one fails its check digit.","payload.swiss-qr-bill.issue.reference-not-allowed":"Choose a reference type before entering a reference.","payload.swiss-qr-bill.issue.message-too-long":"The additional and billing information together are {length} characters, and a bill allows {max}.","payload.swiss-qr-bill.issue.character":"This contains a character QR-bills do not allow, at position {position}.","payload.swiss-qr-bill.issue.too-long":"This bill is {length} characters and a QR-bill allows {max}.","payload.pix.label":"Pix payment","payload.pix.description":"A Pix payment to a Pix key, for banking apps in Brazil.","payload.pix.action":"Opens a Pix payment in a banking app.","payload.pix.field.key":"Pix key","payload.pix.hint.key":"A CPF, CNPJ, email address, phone number with +55, or random key.","payload.pix.field.name":"Receiver name","payload.pix.field.city":"City","payload.pix.field.amount":"Amount (BRL)","payload.pix.field.description":"Message","payload.pix.field.txid":"Transaction ID","payload.pix.hint.txid":"Letters and digits only. Leave it empty if you do not use one.","payload.pix.issue.key":"This is not a Pix key.","payload.pix.issue.account-too-long":"The key and the message together take {length} characters and Pix allows {max}.","payload.pix.issue.txid":"A transaction ID is up to 25 letters and digits.","payload.pix.issue.non-ascii":"Some banking apps show accented letters incorrectly. Consider writing this without them.","payload.pix.compat.banking-apps":"Opens in the banking apps of Brazilian banks that offer Pix.","payload.upi.label":"UPI payment","payload.upi.description":"A UPI payment to a payment address, for payment apps in India.","payload.upi.action":"Opens a UPI payment in a payment app.","payload.upi.field.address":"UPI ID","payload.upi.hint.address":"The payment address, such as name@bank.","payload.upi.field.name":"Payee name","payload.upi.field.amount":"Amount (INR)","payload.upi.field.note":"Note","payload.upi.issue.address":"This is not a UPI ID. It looks like name@bank.","payload.gs1-digital-link.label":"Product link (GS1)","payload.gs1-digital-link.description":"A product code that tills read as the barcode and phones open as a web page.","payload.gs1-digital-link.action":"Opens a product page.","payload.gs1-digital-link.field.domain":"Web domain","payload.gs1-digital-link.hint.domain":"Your own domain, or id.gs1.org if you do not have one.","payload.gs1-digital-link.field.gtin":"GTIN","payload.gs1-digital-link.hint.gtin":"The number under the product barcode: 8, 12, 13 or 14 digits.","payload.gs1-digital-link.field.batch":"Batch or lot","payload.gs1-digital-link.field.serial":"Serial number","payload.gs1-digital-link.field.expiry":"Expiry date","payload.gs1-digital-link.hint.expiry":"As YYMMDD. A day of 00 means the end of the month.","payload.gs1-digital-link.field.best-before":"Best before","payload.gs1-digital-link.hint.best-before":"As YYMMDD. A day of 00 means the end of the month.","payload.gs1-digital-link.issue.domain":"This is not a web domain.","payload.gs1-digital-link.issue.gtin":"A GTIN is 8, 12, 13 or 14 digits.","payload.gs1-digital-link.issue.gtin-check-digit":"This GTIN fails its check digit. A digit is probably mistyped.","payload.gs1-digital-link.issue.character":"This contains a character GS1 codes do not allow.","payload.gs1-digital-link.issue.date":"Enter the date as YYMMDD.","payload.zatca.label":"Saudi e-invoice","payload.zatca.description":"The code on a Saudi tax invoice. It can be read here but not made.","payload.zatca.action":"Shows the details of a tax invoice.","payload.zatca.field.seller-name":"Seller","payload.zatca.field.vat-number":"VAT number","payload.zatca.field.timestamp":"Issued","payload.zatca.field.total":"Total with VAT","payload.zatca.field.vat-total":"VAT","payload.zatca.field.has-invoice-hash":"Invoice hash","payload.zatca.field.has-signature":"Signature","payload.zatca.field.has-public-key":"Public key","payload.zatca.field.has-stamp-signature":"Stamp signature","payload.zatca.issue.vat-number":"A Saudi VAT number is 15 digits that start and end with 3.","payload.zatca.issue.timestamp":"The issue time is not written as a date and time.","payload.zatca.issue.amount":"This amount is not written as a number.","payload.zatca.issue.phase-one":"This code has no signature parts. Invoices have needed them since 1 January 2023, so it may be old or incomplete."});var v2=Object.freeze({"symbology.rmqr.label":"Rectangular Micro QR","symbology.rmqr.not-phone-readable":"Most phone cameras cannot read rectangular Micro QR codes. Use one only where you know the scanner that will read it supports rMQR, and test it with that scanner before printing."});var S2=Object.freeze({"studio.issue.content-invalid":"The code shown is the last one that worked. Fix what is highlighted to update it.","studio.issue.content-empty":"Fill in the details and the code appears here.","studio.issue.design-locked":"This kind of code has a fixed design that its specification sets, so the design cannot be changed.","studio.issue.constrained":"This kind of code does not allow that change. Its specification sets this part of the design.","studio.issue.unknown-type":"This version of the studio does not include that kind of content.","studio.issue.read-only-type":"This kind of code can be read and explained here, but not made: it has to come from the system that issues it.","studio.issue.unknown-field":"This kind of content has no such field.","studio.issue.field-value":"That value is the wrong kind of thing for this field.","studio.issue.unknown-preset":"This version of the studio does not include that preset.","studio.issue.patch-path":"That change does not refer to a part of a design.","studio.issue.design-file":"This file is not a design, or it is damaged. Design files are saved from this studio as JSON.","studio.issue.design-link":"The design in this link could not be opened, so the studio started with the standard design.","studio.issue.raw-too-long":"This is {length} characters, and no code holds more than {max}. Shorten it to make a code from it.","studio.issue.unknown-fix":"That suggestion no longer applies. Run the scan check again.","studio.issue.conditions":"Enter a number greater than zero, or leave this empty.","studio.issue.document-repaired":"Part of what was opened could not be used as it was, so the standard setting was used instead.","studio.issue.quiet-zone-below-minimum":"This leaves less than {min} modules of space round the code, which some phones need to find it.","studio.issue.export-size-constrained":"This kind of code is printed at {size} mm, which its specification sets, so that size was used.","studio.issue.export-option":"This setting is out of range, so it was left out.","studio.category.link":"Links","studio.category.contact":"Contact details","studio.category.message":"Messages","studio.category.network":"Networks","studio.category.event":"Events","studio.category.place":"Places","studio.category.payment":"Payments","studio.category.commerce":"Products","studio.category.text":"Text","studio.preset-category.classic":"Classic","studio.preset-category.rounded":"Rounded","studio.preset-category.dots":"Dots","studio.preset-category.hex":"Hexagons","studio.preset-category.fluid":"Fluid","studio.preset-category.bold":"Bold","studio.preset-category.minimal":"Minimal","studio.preset-category.colour":"Colour","studio.preset-category.print":"For print","studio.group.address":"Address","studio.group.creditor":"Payable to","studio.group.debtor":"Payable by","studio.group.eap":"Enterprise sign in","studio.group.name":"Name","studio.group.phones":"Phone numbers","studio.group.time":"Date and time","studio.group.utm":"Campaign tracking","studio.axis.static":"Checking the design","studio.axis.distance":"Checking from further away","studio.axis.focus":"Checking out of focus","studio.axis.motion":"Checking with a moving phone","studio.axis.noise":"Checking in a grainy picture","studio.axis.angle":"Checking at an angle","studio.axis.light":"Checking in poor light","studio.axis.glare":"Checking with glare","studio.axis.ink":"Checking with ink spread","studio.axis.contrast":"Checking at low contrast","error.encode.too-much-data":"That is too much to fit in one code at these settings. Shorten it, lower the error correction, or allow a larger code.","error.encode.unsupported-content":"This content cannot be put into this kind of code as it is.","error.encode.unsupported-feature":"This kind of code cannot do that. Choose a QR code.","error.design.invalid":"This design is damaged or incomplete.","error.design.unsupported-schema":"This design was made by a different version of the studio and cannot be opened here.","error.design.unknown-entry":"This design uses something this version of the studio does not include.","error.payload.invalid":"The content has problems to fix before the code can be made.","error.payload.unparseable":"That text could not be read as this kind of content.","error.decode.not-found":"No code was found in this picture.","error.decode.unreadable":"A code was found here, but it could not be read.","error.decode.unsupported":"This code uses a feature this tool cannot read.","error.decode.incomplete-set":"This code is one of a set, and some of the set is missing. Scan every code in the set.","error.decode.conflicting-set":"These codes say they are one set, but they do not fit together. Scan the codes of one set only.","error.image.unreadable":"This picture could not be opened. Try a PNG or JPEG, or take a screenshot of it.","error.image.too-large":"This picture is larger than this tool will open. Try a smaller one.","error.font.malformed":"This font file is damaged, or is not a font this tool can read.","error.font.missing-glyphs":"This font cannot draw some of these characters.","error.render.surface-too-large":"That picture is too large to draw here. Choose a smaller size.","error.render.format-unavailable":"This browser cannot save in that format. Choose PNG or SVG.","error.archive.too-large":"This is larger than this tool will handle in one go.","error.archive.malformed":"This file is damaged and cannot be opened.","error.batch.malformed-csv":"This spreadsheet file could not be read. Save it as CSV from your spreadsheet and try again.","error.batch.too-many-rows":"This file has more rows than can be made into codes at once.","error.batch.unknown-column":"A column this needs is not in the file.","error.library.unavailable":"The library is not available in this browser, so designs and brand kits cannot be saved here.","error.library.not-enabled":"The library is switched off. Switch it on to save designs and brand kits in this browser.","error.library.quota":"This browser has no more room for saved designs and brand kits. Remove some and try again.","error.library.corrupt":"A saved design or brand kit is damaged and cannot be opened.","error.camera.permission-denied":"The camera is not allowed for this page. Allow it in the browser settings, or choose a picture instead.","error.camera.unavailable":"No camera could be opened. Choose a picture instead.","error.camera.in-use":"The camera is in use by another app or tab. Close it there, then try again.","error.camera.insecure-context":"The camera only works on a secure page. Open this page over https, or choose a picture instead.","error.verify.missing-entry":"The scan check could not run, because this design uses something it does not include.","error.platform.unavailable":"This browser cannot do that.","error.cancelled":"That was stopped before it finished."});var M2=Object.freeze({"symbology.qr.label":"QR code","symbology.read.version":"This code is not a size its kind of code comes in, or it says it is a different version from its size.","symbology.read.format":"The part of this code that says how it was made is too damaged to read.","symbology.read.reed-solomon":"Part of this code is too damaged to read, even with its error correction.","symbology.read.segments":"This code was not made correctly, so what it holds cannot be read.","symbology.read.unsupported.eci":"This code uses a character set this tool cannot read.","symbology.read.unsupported.kanji":"This code holds Japanese text, and this browser cannot read the character set it uses."});var E2=Object.freeze({"text.font.plex-sans-regular":"Sans","text.font.plex-sans-bold":"Sans bold","text.font.registered":"Your font","text.font.malformed":"This font file is damaged, or is not a TrueType font this tool can read.","text.font.missing-glyphs":"This font cannot draw some of these characters. Choose another font, or change the text.","render.print.too-large":"That page is larger than a PDF can be. Choose a smaller size.","render.eps.transparency":"EPS cannot carry transparency. Save this design as a PDF, or make every colour in it opaque.","sheet.cell-too-small":"This code is larger than the labels on this sheet. Make it smaller, or choose a sheet with larger labels.","sheet.template.a4-21-63x38":"A4, 21 labels 63.5 x 38.1 mm","sheet.template.a4-24-63x34":"A4, 24 labels 63.5 x 33.9 mm","sheet.template.a4-14-99x38":"A4, 14 labels 99.1 x 38.1 mm","sheet.template.a4-8-99x68":"A4, 8 labels 99.1 x 67.7 mm","sheet.template.a4-65-38x21":"A4, 65 labels 38.1 x 21.2 mm","sheet.template.a4-12-round-64":"A4, 12 round labels 63.5 mm","sheet.template.a4-10-cards-85x54":"A4, 10 business cards 85 x 54 mm","sheet.template.letter-30-67x25":"US Letter, 30 labels 2 5/8 x 1 in","sheet.template.letter-10-102x51":"US Letter, 10 labels 4 x 2 in","sheet.template.letter-80-44x13":"US Letter, 80 labels 1 3/4 x 1/2 in","sheet.template.letter-12-round-51":"US Letter, 12 round labels 2 in","sheet.template.letter-12-square-51":"US Letter, 12 square labels 2 x 2 in","sheet.template.letter-10-cards-89x51":"US Letter, 10 business cards 3 1/2 x 2 in","sheet.template.print-a4":"A4, copies with crop marks","sheet.template.print-letter":"US Letter, copies with crop marks"});var T2=Object.freeze({"verify.check-name.quiet-zone":"Clear margin","verify.check-name.contrast":"Overall contrast","verify.check-name.modulation":"Clear squares","verify.check-name.polarity":"Dark on light","verify.check-name.function-patterns":"Patterns readers look for","verify.check-name.logo-budget":"Logo size","verify.check-name.module-size":"Print size","verify.check-name.finder-shape":"Corner square shape","verify.check-name.colour-red-channel":"Colours under red light","verify.check-name.reader-support":"Phone support","verify.status.pass":"Passes","verify.status.warn":"Worth checking","verify.status.fail":"Will not scan reliably","verify.verdict.pass":"This should scan on the phones people carry, in everyday conditions.","verify.verdict.warn":"This scans, but some people will have trouble with it. The checks below say when.","verify.verdict.fail":"This is likely to fail for many people. Fix the problems below before printing it.","verify.baseline.fail":"Even a clean photograph of this design did not scan.","verify.error.missing-entry":"This check needs a style or picture this copy of the studio does not have, so it was not run.","verify.check.quiet-zone.pass":"There is a clear margin {modules} squares wide all round the code.","verify.check.quiet-zone.fail":"{modules, plural, =0 {There is no clear margin round the code.} one {The clear margin round the code is only # square wide.} other {The clear margin round the code is only # squares wide.}} Readers need one at least {minimum} squares wide, with nothing printed in it.","verify.check.contrast.sc.pass":"The dark and light parts differ by {percent} percent, grade {grade}.","verify.check.contrast.sc.warn":"The dark and light parts differ by only {percent} percent, grade {grade}. Some phones will struggle, more so in poor light.","verify.check.contrast.sc.fail":"The dark and light parts differ by only {percent} percent, grade {grade}. That is too little for phones to tell them apart.","verify.check.contrast.mod.pass":"Every square reads clearly as dark or light, grade {grade}.","verify.check.contrast.mod.warn":"Some squares are close to the middle shade, so they read less clearly, grade {grade}.","verify.check.contrast.mod.fail":"Some squares are too close to the middle shade to read reliably, grade {grade}.","verify.check.contrast.mod.wrong":"Some squares read as the wrong shade even in a clean photograph. Check the colours of the squares and any gradient.","verify.check.polarity.pass":"Dark squares on a light background, which every reader expects.","verify.check.polarity.warn":"Light squares on a dark background. Some phone readers cannot read a code this way round.","verify.check.function-patterns.pass":"Nothing covers the corner squares or the other patterns readers find the code by.","verify.check.function-patterns.covered":"The logo or its background covers part of the patterns readers find the code by. Make the logo smaller.","verify.check.function-patterns.finder":"The corner squares are drawn in a shape readers may not recognise.","verify.check.function-patterns.alignment":"The logo covers one of the small alignment squares inside the code. Most readers manage without it, but not all.","verify.check.logo-budget.none":"Nothing covers the code, so all of its error correction is kept for wear and poor light.","verify.check.logo-budget.pass":"The logo covers {codewords, plural, one {# piece} other {# pieces}} of the code, and enough error correction is left for wear and poor light.","verify.check.logo-budget.warn":"The logo covers {codewords, plural, one {# piece} other {# pieces}} of the code. It reads, but little error correction is left for wear and poor light.","verify.check.logo-budget.fail":"The logo covers too much of the code: repairing it would use up the error correction kept for wear and poor light.","verify.check.module-size.unknown":"Give the printed size to check how far away this scans from.","verify.check.module-size.unread":"Printed {sizeMm} mm wide, this did not scan from any distance in the check.","verify.check.module-size.fail":"Printed {sizeMm} mm wide, the squares are too small for a phone to focus on. Print it at least {minimumMm} mm wide.","verify.check.module-size.short":"Scans from about {distanceCm} cm away when printed {sizeMm} mm wide, but people are expected to scan it from {expectedCm} cm. Print it at least {minimumMm} mm wide.","verify.check.module-size.close":"Scans from about {distanceCm} cm away when printed {sizeMm} mm wide, so people will have to hold their phone close to it.","verify.check.module-size.pass":"Scans from about {distanceCm} cm away when printed {sizeMm} mm wide.","verify.check.finder-shape.pass":"The corner squares are a shape readers recognise.","verify.check.finder-shape.fail":"The corner squares are drawn in a shape readers may not recognise. Choose another corner style.","verify.check.colour-red-channel.pass":"Also reads under the red light of shop and warehouse scanners.","verify.check.colour-red-channel.warn":"Under the red light many shop and warehouse scanners use, these colours keep only {percent} percent of their contrast. Phones see colour and are not affected; those scanners may be.","verify.check.reader-support.pass":"Phone cameras read this kind of code.","verify.check.reader-support.micro":"Most phone cameras cannot read Micro QR codes. Use one only with a scanner you know reads them.","verify.check.reader-support.rmqr":"Most phone cameras cannot read rectangular Micro QR codes. Use one only with a scanner you know reads them.","verify.check.reader-support.kanji":"This code stores Japanese text in a compact form that some readers show wrongly.","verify.check.reader-support.eci":"This code says which character set it uses. A few older readers ignore that and may show some characters wrongly.","verify.axis.distance":"Distance","verify.axis.distance.ok":"Scans from as far away as people will hold their phone.","verify.axis.distance.short":"Does not scan from as far away as people will hold their phone.","verify.axis.focus":"Focus","verify.axis.focus.ok":"Scans while the camera is still finding its focus.","verify.axis.focus.short":"Needs the camera perfectly in focus.","verify.axis.motion":"Movement","verify.axis.motion.ok":"Scans with a slightly unsteady hand.","verify.axis.motion.short":"Needs a very steady hand.","verify.axis.noise":"Grain","verify.axis.noise.ok":"Scans through the grain a phone camera adds indoors.","verify.axis.noise.short":"Struggles with the grain a phone camera adds indoors.","verify.axis.angle":"Angle","verify.axis.angle.ok":"Scans with the phone held at an angle.","verify.axis.angle.short":"Needs the phone held almost straight on.","verify.axis.light":"Dim light","verify.axis.light.ok":"Scans in dim, uneven light.","verify.axis.light.short":"Needs good, even light.","verify.axis.glare":"Glare","verify.axis.glare.ok":"Scans with a reflection across it.","verify.axis.glare.short":"A reflection on glossy paper or a screen stops it scanning.","verify.axis.ink":"Ink spread","verify.axis.ink.ok":"Scans when the ink spreads a little or prints thin.","verify.axis.ink.short":"Needs crisp printing: ink that spreads or prints thin stops it scanning.","verify.axis.contrast":"Fading","verify.axis.contrast.ok":"Scans after the print has faded.","verify.axis.contrast.short":"Stops scanning as the print fades.","verify.fix.raise-ec":"Use error correction level {level}","verify.fix.shrink-logo":"Make the logo smaller, {percent} percent of the width","verify.fix.logo-clear-shape":"Clear only the space the logo itself takes","verify.fix.dark-on-light":"Swap to dark squares on a light background","verify.fix.darken-modules":"Use the darkest colour in the design for every square","verify.fix.black-modules":"Print the squares in black","verify.fix.low-red-ink":"Use the colour red light scanners see best","verify.fix.widen-quiet-zone":"Widen the clear margin to {modules} squares","verify.fix.square-finders":"Use plain square corners","verify.fix.solid-modules":"Draw the code with plain squares","verify.fix.print-larger":"Print it at least {sizeMm} mm wide"});var A2=Object.freeze({app:d2,batch:m2,decode:f2,design:p2,dom:h2,encode:y2,inspect:g2,library:b2,micro:x2,"own-link":w2,payload:k2,rmqr:v2,studio:S2,symbology:M2,text:E2,verify:T2}),_Q=Object.freeze(Object.keys(A2).filter(e=>e!=="app")),R2=Object.freeze(Object.assign({},...Object.values(A2)));function ru(e,t={}){let n=Object.prototype.hasOwnProperty.call(R2,e)?R2[e]:void 0;return n===void 0?e:u2(n,t)}function v(e,t={}){return ru(e,t)}function Ft(e){return ru(e.code,e.params??{})}function yt(e){return ru(e.messageKey,e.params)}var I8=new Intl.NumberFormat("en-AU",{maximumFractionDigits:1}),P8=new Intl.NumberFormat("en-AU",{maximumFractionDigits:0}),C8=new Intl.NumberFormat("en-AU",{maximumFractionDigits:2});function zn(e){return I8.format(e)}function nr(e){return P8.format(e)}function Vn(e){return C8.format(e)}var N8=new Intl.NumberFormat("en-AU",{style:"percent",maximumFractionDigits:0}),L8=new Intl.NumberFormat("en-AU",{style:"unit",unit:"degree",unitDisplay:"long",maximumFractionDigits:0});function oa(e){return N8.format(e)}function ou(e){return L8.format(e)}var O8=new Intl.DateTimeFormat("en-AU",{dateStyle:"medium",timeStyle:"short"});function xp(e){return O8.format(new Date(e))}function de(e,t){let n=["btn"];return t.primary===!0&&n.push("btn--primary"),t.small===!0&&n.push("btn--small"),t.compact===!0&&n.push("btn--compact"),M("button",{className:n.join(" "),attrs:{type:"button",...t.attrs},on:{click:t.onClick}},[t.icon===void 0?null:lt(t.icon),M("span",{className:"btn__label",text:e})])}function rr(e,t){let n=e.querySelector(".btn__label");n!==null&&Z(n,t)}function on(e,t,n,r){let o=M("span",{className:"card__meta"}),s=M("div",{className:"card__body"}),i=M("details",{className:"card",...r===void 0?{}:{id:r}},[M("summary",{className:"card__head"},[M("span",{className:"card__num",text:String(e).padStart(2,"0")}),M("h2",{className:"card__title",text:t}),o,lt("chevron","card__chevron")]),s]);return i.open=n,{root:i,body:s,meta:o}}function vt(e,t){if(t.length===0){le(e,[]),e.hidden=!0;return}e.hidden=!1,le(e,t.map(n=>M("li",{className:`note note--${n.severity}`},[lt(n.severity==="error"?"fail":n.severity==="warning"?"warn":"pending"),M("span",{text:Ft(n)})])))}function Ve(e,t,n,r="segments",o={}){let s=o.name??kt("choice"),i=M("div",{className:`${r}__grid`}),a=M("fieldset",{className:r},[M("legend",{className:o.legendHidden===!0?"sr-only":"legend",text:e}),i]),l=null,c=d=>{le(i,d.map(m=>{let f=M("input",{className:"choice__input",attrs:{type:"radio",name:s,value:m.value,disabled:m.disabled===!0},on:{change:()=>{f.checked&&n(m.value)}}});f.checked=m.value===l;let p=[f],h=M("span",{className:"choice__box"},[m.picture===void 0?null:M("img",{className:"choice__img",attrs:{src:m.picture,alt:"",width:48,height:48,decoding:"async"}}),M("span",{className:"choice__label",text:m.label}),m.hint===void 0?null:M("span",{className:"choice__hint",text:m.hint})]);return p.push(h),M("label",{className:"choice"},p)}))};c(t);let u=()=>[...i.querySelectorAll("input")];return{root:a,inputs:u,set(d){l=d;for(let m of u()){let f=m.value===d;m.checked!==f&&(m.checked=f)}},setChoices(d){let m=document.activeElement,f=m instanceof HTMLInputElement&&i.contains(m);c(d),f&&(u().find(h=>h.checked)??u()[0])?.focus()}}}function ct(e,t,n){let r=t.id===""?kt("field"):t.id;t.id=r;let o=`${r}-hint`,s=`${r}-issues`,i=M("label",{className:"field__label",text:e,attrs:{for:r}}),a=M("p",{className:"field__hint",id:o,text:n??""});a.hidden=n===void 0;let l=M("ul",{className:"field__issues",id:s});l.hidden=!0;let c=`${o} ${s}`;t.setAttribute("aria-describedby",c);let u=t instanceof HTMLSelectElement?M("div",{className:"field__select"},[t]):t;return{root:M("div",{className:"field"},[i,u,a,l]),label:i,hint:a,issues:l,describedBy:c}}function or(e,t,n,r){let o=kt("slider"),s=M("output",{className:"slider__value",attrs:{for:o}}),i=M("input",{className:"slider__input",id:o,attrs:{type:"range",min:t.min,max:t.max,step:t.step},on:{input:()=>{let l=Number(i.value);Z(s,n(l)),r(l,"move")},change:()=>r(Number(i.value),"end")}});return{root:M("div",{className:"slider"},[M("label",{className:"slider__label",text:e,attrs:{for:o}}),s,i]),input:i,set(l){Number(i.value)!==l&&(i.value=String(l)),Z(s,n(l))}}}function I2(e,t,n,r){let o=!1;return(s,i)=>{o||(t(e),o=!0),n(s),i==="end"&&(r(e),o=!1)}}function P2(e,t){let n=v(e.labelKey);switch(e.kind){case"boolean":{let r=M("input",{attrs:{type:"checkbox"},on:{change:()=>t(r.checked,"end")}});return{root:M("label",{className:"tick"},[r,M("span",{text:n})]),set(s){r.checked=s===!0}}}case"select":{let r=M("select",{on:{change:()=>t(r.value,"end")}},(e.options??[]).map(s=>M("option",{text:v(s.labelKey),attrs:{value:s.value}})));return{root:ct(n,r).root,set(s){r.value=String(s)}}}case"colour":{let r=M("input",{className:"colour-well",attrs:{type:"color"},on:{input:()=>t(r.value,"move"),change:()=>t(r.value,"end")}});return{root:ct(n,r).root,set(s){typeof s=="string"&&/^#[0-9a-f]{6}$/i.test(s)&&(r.value=s)}}}default:{let r=e.kind==="angle",o=e.min??0,s=e.max??(r?360:1),i=e.step??(e.kind==="integer"||r?1:(s-o)/100),a=r?ou:e.kind==="integer"?c=>String(c):Vn,l=or(n,{min:o,max:s,step:i},a,(c,u)=>t(c,u));return{root:l.root,set(c){typeof c=="number"&&l.set(c)}}}}}var C2=new WeakSet;function Os(e){C2.add(e)}function N2(e){return e instanceof Element&&C2.has(e)}var wp=12,D8={"windows-1252":"app.bulk.encoding-windows-1252",shift_jis:"app.bulk.encoding-shift-jis",gb18030:"app.bulk.encoding-gb18030",big5:"app.bulk.encoding-big5","euc-kr":"app.bulk.encoding-euc-kr","windows-1251":"app.bulk.encoding-windows-1251","windows-1256":"app.bulk.encoding-windows-1256"};function L2(e){let t=null,n=null,r="auto",o="url",s={},i="",a="zip",l="png",c=Xi()[0]?.id??"",u="srgb",d=null,m=M("ul",{className:"field__issues"});m.hidden=!0;let f=M("p",{className:"bulk__summary"}),p=M("input",{attrs:{type:"file",accept:".csv,.tsv,.txt,text/csv,text/plain"}});p.hidden=!0,p.addEventListener("change",()=>{let ce=p.files?.[0];p.value="",ce!==void 0&&w(ce)});let h=kt("paste"),g=M("textarea",{className:"input input--area input--mono",id:h,attrs:{rows:5,spellcheck:"false",autocomplete:"off",placeholder:v("app.bulk.paste-placeholder")}});Os(g);let y=null;g.addEventListener("input",()=>{y!==null&&clearTimeout(y),y=setTimeout(()=>{y=null,n=null,g.value.trim()===""?(t=null,Ce()):x(g.value)},250)});let b=M("div",{className:"dropzone dropzone--compact",attrs:{role:"group","aria-label":v("app.bulk.drop")}},[lt("file","dropzone__icon"),M("p",{className:"dropzone__text",text:v("app.bulk.drop")}),de(v("app.bulk.choose"),{icon:"open",onClick:()=>p.click()}),p]);b.addEventListener("dragover",ce=>{ce.preventDefault(),b.dataset.over="true"}),b.addEventListener("dragleave",()=>{b.dataset.over="false"}),b.addEventListener("drop",ce=>{ce.preventDefault(),ce.stopPropagation(),b.dataset.over="false";let re=ce.dataTransfer?.files[0];re!==void 0&&w(re)});function x(ce,re=!1){try{let oe=typeof ce=="string"?null:gc(ce,{fallback:r==="auto"?bf:r}),se=wc(oe===null?ce:oe.text),Se=t?.table.headers;t={csv:ce,table:se},re&&Se!==void 0&&Se.length===se.headers.length&&Se.every((_e,gn)=>_e===se.headers[gn])||E(),vt(m,[...oe?.issues??[],...se.issues].slice(0,6))}catch(oe){t=null;let se=oe instanceof K?oe:new K("batch/malformed-csv","This spreadsheet file could not be read.");vt(m,[]),m.hidden=!1,le(m,[M("li",{className:"note note--error",text:yt(Fe(se))})])}Ce()}async function w(ce){g.value="",n=await l2(ce),x(n)}let k=M("select",{className:"input input--select",on:{change:()=>{r=k.value,n!==null&&x(n,!0)}}},[M("option",{text:v("app.bulk.encoding-auto"),attrs:{value:"auto"}}),...hc.map(ce=>M("option",{text:v(D8[ce]),attrs:{value:ce}}))]);k.value=r;let S=ct(v("app.bulk.encoding"),k,v("app.bulk.encoding-hint"));function E(){if(t===null)return;let ce=e.registries.payloads.get(o),re=t.table.headers,oe={};for(let st of ce?.fields??[]){let _e=Ss(re,st.key);_e===-1&&(_e=Ss(re,v(st.labelKey))),oe[st.key]=_e===-1?null:{column:re[_e]}}let se=(ce?.fields??[]).filter(st=>st.required===!0);re.length===1&&se.length===1&&Object.values(oe).every(st=>st===null)&&(oe[se[0].key]={column:re[0]}),s=oe;let Se=re[0];i=Se===void 0?"":`qr-{${Se}}`,O.value=i}let R=kt("bulk-type"),C=M("select",{className:"input input--select",id:R,on:{change:()=>{o=C.value,E(),Ce()}}}),A=M("div",{className:"mapping"}),O=M("input",{className:"input input--mono",attrs:{type:"text",autocomplete:"off",spellcheck:"false"},on:{input:()=>{i=O.value,H()}}});Os(O);let D=ct(v("app.bulk.filename"),O,v("app.bulk.filename-hint"));function N(){let ce=e.registries.payloads.get(o);if(ce===void 0||t===null){le(A,[]);return}let re=t.table.headers;le(A,ce.fields.map(oe=>{let se=kt("map"),Se=s[oe.key]??null,st=M("select",{className:"input input--select",id:se});le(st,[M("option",{text:v("app.bulk.no-column"),attrs:{value:""}}),M("optgroup",{attrs:{label:v("app.bulk.from-column")}},re.map((gn,mu)=>M("option",{text:gn===""?v("app.bulk.column-n",{n:mu+1}):gn,attrs:{value:`c:${gn}`}}))),M("option",{text:v("app.bulk.from-template"),attrs:{value:"template"}})]),st.value=Se===null?"":"column"in Se?`c:${Se.column}`:"template";let _e=M("input",{className:"input input--mono",attrs:{type:"text",autocomplete:"off",spellcheck:"false","aria-label":v("app.bulk.template-for",{field:v(oe.labelKey)})}});return Os(_e),_e.value=Se!==null&&"template"in Se?Se.template:"",_e.hidden=!(Se!==null&&"template"in Se),st.addEventListener("change",()=>{st.value===""?s[oe.key]=null:st.value==="template"?(s[oe.key]={template:_e.value},_e.hidden=!1,_e.focus()):s[oe.key]={column:st.value.slice(2)},st.value!=="template"&&(_e.hidden=!0),H()}),_e.addEventListener("input",()=>{s[oe.key]={template:_e.value},H()}),M("div",{className:"mapping__row"},[M("label",{className:"field__label",text:v(oe.labelKey),attrs:{for:se}},oe.required===!0?[M("span",{className:"tag",text:v("app.content.required")})]:[]),st,_e])}))}let T=M("p",{className:"bulk__summary"}),I=M("ol",{className:"preview"}),U=[];function q(){let ce={};for(let[re,oe]of Object.entries(s))oe!==null&&(ce[re]=oe);return{typeId:o,fields:ce,filename:i}}function H(){if(t===null){U=[],le(I,[]),Z(T,v("app.bulk.empty")),me.disabled=!0;return}try{U=Mc(t.table,q(),e.registries)}catch(oe){U=[],le(I,[]);let se=oe instanceof K?oe:new K("batch/unknown-column","A column this needs is not in the file.");Z(T,yt(Fe(se))),me.disabled=!0;return}let ce=U.filter(oe=>oe.content!==null).length;Z(T,v("app.bulk.plan",{ready:ce,skipped:U.length-ce})),rr(me,v("app.bulk.make",{count:ce})),me.disabled=ce===0||e.snapshot().batch.status==="running";let re=U.slice(0,wp);le(I,[...re.map(oe=>{let se=M("li",{className:"preview__row"},[M("span",{className:"preview__number",text:v("app.bulk.row",{row:oe.rowNumber})}),M("span",{className:"preview__name",text:oe.filename}),M("span",{className:"preview__state"},[lt(oe.content===null?"fail":"pass"),M("span",{text:oe.content===null?v("app.bulk.row-skipped"):v("app.bulk.row-ok")})]),oe.issues.length===0?null:M("ul",{className:"preview__issues"},oe.issues.slice(0,3).map(Se=>M("li",{text:Ft(Se)})))]);return se.dataset.result=oe.content===null?"fail":"pass",se}),U.length>wp?M("li",{className:"preview__more",text:v("app.bulk.preview-more",{count:U.length-wp})}):null])}let W=Ve(v("app.bulk.output"),[{value:"zip",label:v("app.bulk.output-zip")},{value:"sheet",label:v("app.bulk.output-sheet")}],ce=>{a=ce,be()});W.set(a);let $=M("div",{className:"bulk__output"});function be(){if(a==="zip"){let se=Ve(v("app.bulk.format"),["png","svg","pdf","eps"].map(Se=>({value:Se,label:v(Se==="png"?"app.export.format-png":Se==="svg"?"app.export.format-svg":Se==="pdf"?"app.export.format-pdf":"app.export.format-eps")})),Se=>{l=Se});se.set(l),le($,[se.root]);return}let ce=kt("sheet"),re=M("select",{className:"input input--select",id:ce,on:{change:()=>{c=re.value}}},Xi().map(se=>M("option",{text:v(se.labelKey),attrs:{value:se.id}})));re.value=c;let oe=Ve(v("app.export.colour-space"),[{value:"srgb",label:v("app.export.colour-srgb")},{value:"cmyk",label:v("app.export.colour-cmyk")}],se=>{u=se});oe.set(u),le($,[ct(v("app.bulk.sheet"),re,v("app.bulk.sheet-hint")).root,oe.root])}be();let X=M("span",{className:"check__progress",attrs:{"aria-hidden":"true"}},[M("span",{className:"check__progress-fill"})]),ne=M("p",{className:"bulk__summary"}),me=de(v("app.bulk.make",{count:0}),{icon:"download",primary:!0,onClick:()=>void Oe()});me.disabled=!0;let fe=de(v("app.bulk.download-again"),{icon:"download",small:!0,onClick:()=>{d!==null&&_n(d.bytes,d.filename,d.mime)}});fe.hidden=!0;let ke=M("ul",{className:"field__issues"});ke.hidden=!0;async function Oe(){if(t===null)return;let ce=a==="zip"?{kind:"zip",format:l}:{kind:"sheet",template:c,colourSpace:u},re=await e.studio.run({type:"batch",csv:t.csv,encoding:r,mapping:q(),output:ce});if(!re.ok){re.error.code!=="cancelled"&&e.announce(yt(Fe(re.error)));return}let oe=a==="zip"?"qr-codes.zip":"qr-labels.pdf",se=a==="zip"?"application/zip":"application/pdf";d={bytes:re.value,filename:oe,mime:se},_n(re.value,oe,se).ok&&e.announce(v("app.export.saved",{filename:oe})),fe.hidden=!1}let gt=M("div",{className:"bulk"},[M("div",{className:"scan__intro"},[M("h2",{className:"mode__title",text:v("app.bulk.title")}),M("p",{className:"mode__lede",text:v("app.bulk.intro")})]),M("ol",{className:"steps"},[ie(1,v("app.bulk.source"),[b,M("div",{className:"field"},[M("label",{className:"field__label",text:v("app.bulk.paste"),attrs:{for:h}}),g]),S.root,f,m]),ie(2,v("app.bulk.mapping"),[ct(v("app.bulk.type"),C).root,M("p",{className:"field__hint",text:v("app.bulk.template-hint")}),A,D.root]),ie(3,v("app.bulk.preview"),[T,I]),ie(4,v("app.bulk.output"),[W.root,$,M("p",{className:"field__hint",text:v("app.bulk.design-note")}),M("div",{className:"bulk__run"},[me,fe]),X,ne,ke])])]);function ie(ce,re,oe){return M("li",{className:"card card--static step"},[M("div",{className:"card__head card__head--static"},[M("span",{className:"card__num",text:String(ce).padStart(2,"0")}),M("h3",{className:"card__title",text:re})]),M("div",{className:"card__body"},oe)])}function Ce(){t===null?Z(f,""):Z(f,v("app.bulk.rows",{count:nr(t.table.rows.length),columns:t.table.headers.length})),N(),H()}let qe=null,Wt=null;return Ce(),{root:gt,readFile:w,update(ce){qe!==ce.catalogue&&(qe=ce.catalogue,le(C,ce.catalogue.payloadTypes.map(oe=>M("optgroup",{attrs:{label:v(oe.labelKey)}},oe.types.filter(se=>se.generate).map(se=>M("option",{text:v(se.labelKey),attrs:{value:se.id}}))))),C.value=o);let re=ce.batch;if(re!==Wt)switch(Wt=re,gt.dataset.status=re.status,re.status){case"idle":Z(ne,"");break;case"running":X.style.setProperty("--fill",String(re.total===0?0:re.done/re.total)),Z(ne,v("app.bulk.making",{done:re.done,total:re.total})),me.disabled=!0;break;case"done":{X.style.setProperty("--fill","1"),Z(ne,v("app.bulk.done",{written:re.written,skipped:re.skipped}));let oe=re.outcomes.filter(se=>se.status==="skipped"||se.check==="fail"||se.check==="warn").slice(0,8);ke.hidden=oe.length===0,le(ke,oe.map(se=>M("li",{className:se.status==="skipped"||se.check==="fail"?"note note--warning":"note note--info",text:`${v("app.bulk.row",{row:se.rowNumber})}: ${se.issues.map(Ft).join(" ")}`}))),H();break}case"failed":Z(ne,yt(re.error)),H();break}}}}var su=new WeakMap,O2=new Map;function Fr(e,t){let n=su.get(e);if(n!==void 0&&n.svg===t)return;let r=URL.createObjectURL(new Blob([t],{type:"image/svg+xml"}));su.set(e,{url:r,svg:t}),e.src=r,n!==void 0&&URL.revokeObjectURL(n.url)}function D2(e){let t=su.get(e);t!==void 0&&URL.revokeObjectURL(t.url),su.delete(e),e.removeAttribute("src")}function j2(e,t){let n=O2.get(e);return n===void 0&&(n=URL.createObjectURL(new Blob([t()],{type:"image/svg+xml"})),O2.set(e,n)),n}var B2={pass:"pass",partial:"warn",fail:"fail",unknown:"pending",running:"pending",unavailable:"pending"},F2={pass:"app.strip.pass",partial:"app.strip.partial",fail:"app.strip.fail",unknown:"app.strip.unknown",running:"app.strip.running",unavailable:"app.strip.unknown"},j8=[{id:"sharp",labelKey:"app.strip.sharp",axis:"static"},{id:"far",labelKey:"app.strip.far",axis:"distance"},{id:"soft",labelKey:"app.strip.soft",axis:"focus"},{id:"angle",labelKey:"app.strip.angle",axis:"angle"},{id:"dim",labelKey:"app.strip.dim",axis:"light"},{id:"glare",labelKey:"app.strip.glare",axis:"glare"},{id:"ink",labelKey:"app.strip.ink",axis:"ink"}],B8={distance:"app.axis.distance",focus:"app.axis.focus",motion:"app.axis.motion",noise:"app.axis.noise",angle:"app.axis.angle",light:"app.axis.light",glare:"app.axis.glare",ink:"app.axis.ink",contrast:"app.axis.contrast"};function U2(e){return e===void 0?"unknown":e.firstFailed===null||e.firstFailed>e.typical?"pass":e.worstPassed===null?"fail":"partial"}function F8(e){return!e.baseline.passed||e.checks.some(t=>t.status==="fail")?"fail":e.checks.some(t=>t.status==="warn")?"partial":"pass"}function Ds(e){let t=e.verify;return t.status==="failed"&&t.error.params.feature==="verify"}function U8(e,t){let n=e.verify;if(Ds(e))return"unavailable";if(n.status==="running")return"running";if(n.status!=="done")return"unknown";let r=n.report;return t==="static"?F8(r):U2(r.captures.find(o=>o.axis===t))}function z2(e,t){let n=j8.map(s=>{let i=M("img",{className:"capture__img",attrs:{alt:"",decoding:"async"}}),a=M("span",{className:"capture__result"}),l=M("li",{className:`capture capture--${s.id}`},[M("span",{className:"capture__view",attrs:{"aria-hidden":"true"}},[i]),M("span",{className:"capture__name",text:v(s.labelKey)}),a]);return{tile:s,img:i,result:a,root:l}}),r=M("p",{className:"strip__caption"}),o=M("div",{className:"strip"},[M("h3",{className:"strip__title",text:v("app.strip.label")}),M("ol",{className:"strip__row"},n.map(s=>s.root)),r]);return t.onDrawn(s=>{for(let i of n)s!==null&&Fr(i.img,s.svg)}),{root:o,update(s){let i=s.verify.status==="done"&&s.verify.stale;o.dataset.stale=String(i);for(let{tile:a,result:l,root:c}of n){let u=U8(s,a.axis);c.dataset.result=u,le(l,[lt(B2[u]),M("span",{text:v(F2[u])})])}Z(r,Ds(s)?v("app.check.unavailable"):i?v("app.check.stale"):v("app.strip.caption"))}}}function V2(e){let t=M("p",{className:"check__status",attrs:{"aria-live":"off"}}),n=M("span",{className:"check__progress",attrs:{"aria-hidden":"true"}},[M("span",{className:"check__progress-fill"})]),r=de(v("app.check.run"),{icon:"pass",onClick:()=>e.dispatch({type:"verify/request"})}),o=de(v("app.check.cancel"),{icon:"stop",small:!0,onClick:()=>e.dispatch({type:"verify/cancel"})}),s=M("div",{className:"check__detail"}),i=M("div",{className:"panel check"},[M("div",{className:"check__head"},[t,r,o]),n,s]),a=null;function l(u){return u.verdict==="pass"?v("app.check.verdict-pass"):u.verdict==="warn"?v("app.check.verdict-warn"):v("app.check.verdict-fail")}function c(u,d){let m=M("ul",{className:"checks"},u.checks.map(y=>{let b=y.status==="pass"?v("app.check.status-pass"):y.status==="warn"?v("app.check.status-warn"):v("app.check.status-fail"),x=M("li",{className:"checks__row"},[lt(y.status==="pass"?"pass":y.status==="warn"?"warn":"fail"),M("span",{className:"checks__name",text:v(bd(y.id,y.grade))}),M("span",{className:"checks__word",text:b}),M("span",{className:"checks__sentence",text:v(y.messageKey,{measured:Vn(y.measured),threshold:Vn(y.threshold)})}),M("span",{className:"checks__numbers",text:v("app.check.measured",{measured:Vn(y.measured),threshold:Vn(y.threshold)})})]);return x.dataset.result=y.status,x})),f=M("ul",{className:"checks checks--captures"},u.captures.map(y=>{let b=U2(y),x=M("li",{className:"checks__row"},[lt(B2[b]),M("span",{className:"checks__name",text:v(B8[y.axis])}),M("span",{className:"checks__word",text:v(F2[b])})]);return x.dataset.result=b==="partial"?"warn":b,x})),p=[],h=u.conditions.sizeMm;u.limits.maxDistanceMm!==null&&h!==null&&p.push(M("p",{className:"check__limit",text:v("app.check.limits",{distance:nr(u.limits.maxDistanceMm/10),size:zn(h)})})),u.limits.minModuleMm!==null&&p.push(M("p",{className:"check__limit",text:v("app.check.limits-module",{size:Vn(u.limits.minModuleMm)})}));let g=d.length===0?null:M("div",{className:"fixes"},[M("h3",{className:"notes__title",text:v("app.check.fixes")}),M("div",{className:"fixes__list"},d.map(y=>de(v(y.labelKey),{small:!0,onClick:()=>{e.dispatch({type:"fix/apply",fixId:y.id}),e.announce(v("app.check.fixed"))}})))]);le(s,[...p,m,M("details",{className:"advanced"},[M("summary",{className:"advanced__head",text:v("app.check.captures")}),M("div",{className:"advanced__body"},[f])]),g])}return{root:i,update(u){let d=u.verify;if(o.hidden=d.status!=="running",r.hidden=d.status==="running"||Ds(u),i.dataset.status=Ds(u)?"unavailable":d.status,d.status==="running"&&(n.style.setProperty("--fill",String(d.progress)),Z(t,`${v("app.check.running",{percent:Math.round(d.progress*100)})} ${d.axis===null?"":v(xd(d.axis))}`.trim())),a!==d){if(a=d,Ds(u)){Z(t,v("app.check.unavailable")),le(s,[M("p",{className:"field__hint",text:v("app.check.unavailable-detail")})]);return}switch(d.status){case"idle":Z(t,v("app.check.idle")),le(s,[M("p",{className:"field__hint",text:v("app.check.idle-detail")})]);return;case"running":return;case"failed":Z(t,yt(d.error)),le(s,[]);return;case"done":Z(t,d.stale?`${l(d.report)}. ${v("app.check.stale")}`:d.full?l(d.report):`${l(d.report)}. ${v("app.check.quick")}`),i.dataset.depth=d.full?"full":"quick",i.dataset.verdict=d.report.verdict,c(d.report,d.fixes);return}}},meta(u){if(Ds(u))return v("app.check.meta-unavailable");let d=u.verify;return d.status==="done"?d.report.verdict==="pass"?v("app.check.verdict-pass"):d.report.verdict==="warn"?v("app.check.verdict-warn"):v("app.check.verdict-fail"):d.status==="running"?v("app.strip.running"):v("app.check.idle")}}}var wW=Object.freeze(["scheme/dangerous","scheme/unusual","host/ip-literal","host/mixed-script","host/punycode","host/lookalike","url/userinfo","host/shortener","host/dynamic-qr","url/tracking-params","url/insecure","url/very-long","payload/open-wifi","payload/payment","payload/sends-message","payload/service-code"]);function iu(e){return`payload.safety.${e.replace("/",".")}`}var sa=["url","text","wifi","vcard","email","phone","sms","whatsapp","geo","event"],z8=new Set(["number","integer","amount","latitude","longitude"]);function V8(e){switch(e){case"url":return"url";case"email":return"email";case"tel":return"tel";case"date":return"date";case"datetime":return"datetime-local";case"secret":return"password";default:return"text"}}function q8(e){switch(e){case"integer":return"numeric";case"number":case"amount":case"latitude":case"longitude":return"decimal";case"url":return"url";case"email":return"email";case"tel":return"tel";default:return null}}function H8(e){return["url","email","tel","iban","bic","currency","country","secret"].includes(e)}function q2(e){let t=e.trim();return t===""?null:Number(t.replace(",","."))}function K8(e,t){return e===null?t===null:typeof t!="number"?!1:e===t||Number.isNaN(e)&&Number.isNaN(t)}function au(e,t){return t?e.issues:[]}function K2(e,t,n){let r=z8.has(e.kind),o=e.kind==="multiline"?M("textarea",{className:"input input--area",attrs:{rows:3}}):M("input",{className:"input",attrs:{type:V8(e.kind)}});o.setAttribute("autocomplete","off"),e.maxLength!==null&&o.setAttribute("maxlength",String(e.maxLength));let s=q8(e.kind);return s!==null&&o.setAttribute("inputmode",s),H8(e.kind)&&(o.setAttribute("spellcheck","false"),o.setAttribute("autocapitalize","off"),o.setAttribute("autocorrect","off")),(e.kind==="iban"||e.kind==="bic"||e.kind==="currency"||e.kind==="country")&&o.setAttribute("autocapitalize","characters"),o.addEventListener("input",()=>{t(r?q2(o.value):o.value)}),o.addEventListener("blur",n),{control:o,sync(i){if(r){K8(q2(o.value),i)||(o.value=i===null?"":String(i));return}let a=typeof i=="string"?i:i===null?"":String(i);o.value!==a&&(o.value=a)}}}function G8(e,t,n){let r=t.key,o=p=>{e.dispatch({type:"payload/field",key:r,value:p})},s=()=>n(r),i=v(t.labelKey),a=t.hintKey===null?void 0:v(t.hintKey);if(t.kind==="boolean"){let p=M("input",{attrs:{type:"checkbox"},on:{change:()=>{s(),o(p.checked)}}}),h=M("ul",{className:"field__issues",id:kt("issues")});return h.hidden=!0,p.setAttribute("aria-describedby",h.id),{root:M("div",{className:"field field--check"},[M("label",{className:"tick"},[p,M("span",{text:i})]),a===void 0?null:M("p",{className:"field__hint",text:a}),h]),update(y,b){p.checked=y.value===!0,vt(h,au(y,b))}}}if(t.kind==="select"){let p=M("select",{className:"input input--select",on:{change:()=>{s(),o(p.value)}}}),h=t.options.map(y=>M("option",{text:v(y.labelKey),attrs:{value:y.value}}));t.options.some(y=>y.value==="")||h.unshift(M("option",{text:v("app.content.choose"),attrs:{value:""}})),le(p,h);let g=ct(i,p,a);return t.required&&g.label.appendChild(H2()),{root:g.root,update(y,b){let x=typeof y.value=="string"?y.value:"";p.value!==x&&(p.value=x);let w=au(y,b);vt(g.issues,w),p.setAttribute("aria-invalid",String(w.some(k=>k.severity==="error")))}}}if(t.multiple)return _8(t,o,s,i,a);let{control:l,sync:c}=K2(t,o,s),u=ct(i,l,a);t.required&&(u.label.appendChild(H2()),l.setAttribute("aria-required","true"));let d=M("div",{className:"field__extras"});u.root.insertBefore(d,u.hint);let m=null;t.secret&&(m=de(v("app.content.show-secret"),{small:!0,icon:"eye",attrs:{"aria-pressed":"false","aria-controls":l.id},onClick:()=>{let p=l.getAttribute("type")==="password";l.setAttribute("type",p?"text":"password"),m?.setAttribute("aria-pressed",String(p))}}),d.appendChild(m));let f=t.kind==="url"?de(v("app.content.add-scheme"),{small:!0,onClick:()=>{o(`https://${l.value.trim()}`),l.focus()}}):null;return f!==null&&(f.hidden=!0,d.appendChild(f)),{root:u.root,update(p,h){c(p.value);let g=au(p,h);if(vt(u.issues,g),l.setAttribute("aria-invalid",String(g.some(y=>y.severity==="error"))),f!==null){let y=typeof p.value=="string"?p.value.trim():"";f.hidden=!(y!==""&&!y.includes(":")&&/^[^\s/]+\.[^\s]+/.test(y)&&p.issues.some(b=>b.code==="payload.issue.invalid-url"))}d.hidden=d.querySelectorAll("button:not([hidden])").length===0}}}function H2(){return M("span",{className:"tag",text:v("app.content.required")})}function _8(e,t,n,r,o){let s=kt("list"),i=M("div",{className:"list"}),a=M("ul",{className:"field__issues",id:kt("issues")});a.hidden=!0;let l=[],c=de(v("app.content.add-item"),{small:!0,icon:"plus",onClick:()=>{t([...l,""]),queueMicrotask(()=>i.querySelector(".list__row:last-child input")?.focus())}}),u=M("fieldset",{className:"field field--list"},[M("legend",{className:"field__label",id:s,text:r}),i,o===void 0?null:M("p",{className:"field__hint",text:o}),a,M("div",{className:"field__extras"},[c])]),d=f=>{le(i,Array.from({length:Math.max(1,f)},(p,h)=>{let g={...e},{control:y}=K2(g,x=>{let w=[...l];for(;w.length<=h;)w.push("");w[h]=typeof x=="string"?x:x===null?"":String(x),t(w)},n);y.setAttribute("aria-label",`${r} ${h+1}`),y.setAttribute("aria-describedby",a.id);let b=f>1?de(v("app.content.remove-item"),{small:!0,icon:"minus",attrs:{"aria-label":v("app.content.remove-numbered",{label:r,n:h+1})},onClick:()=>t(l.filter((x,w)=>w!==h))}):null;return M("div",{className:"list__row"},[y,b])}))},m=-1;return{root:u,update(f,p){l=Array.isArray(f.value)?[...f.value]:[];let h=Math.max(1,l.length);h!==m&&(d(h),m=h),i.querySelectorAll("input").forEach((g,y)=>{let b=l[y]??"";g.value!==b&&(g.value=b)}),c.hidden=f.maxItems!==null&&l.length>=f.maxItems,vt(a,au(f,p))}}}function Q8(e){let t=M("span",{className:"meter__fill"}),n=M("span",{className:"meter",attrs:{role:"meter","aria-valuemin":0,"aria-valuemax":100,"aria-label":v("app.capacity.label")}},[t]),r=M("span",{className:"encoding__reading"}),o=M("summary",{className:"encoding__head"},[M("span",{className:"encoding__title",text:v("app.capacity.label")}),n,r]),s=Ve(v("app.encoding.symbology"),[],h=>{let g=e.snapshot().catalogue.symbologies.find(x=>x.id===h);if(g===void 0)return;let y=e.snapshot().document.design.symbol.ecLevel,b=y!==void 0&&g.ecLevels.includes(y)?y:g.ecLevels[0];e.dispatch({type:"design/patch",patch:{path:["symbol"],value:{symbology:h,...b===void 0?{}:{ecLevel:b}}}})},"segments"),i=M("p",{className:"note note--warning"});i.hidden=!0;let a=Ve(v("app.encoding.ec"),[],h=>e.dispatch({type:"design/patch",patch:{path:["symbol","ecLevel"],value:h}})),l=M("dl",{className:"facts facts--mono"}),c=M("p",{className:"field__hint"}),u=M("details",{className:"encoding"},[o,M("div",{className:"encoding__body"},[c,l,s.root,i,a.root])]),d={L:"app.encoding.ec-l",M:"app.encoding.ec-m",Q:"app.encoding.ec-q",H:"app.encoding.ec-h"},m={numeric:"app.encoding.mode-numeric",alphanumeric:"app.encoding.mode-alphanumeric",byte:"app.encoding.mode-byte",kanji:"app.encoding.mode-kanji"},f=null,p="";return{root:u,update(h){let g=h.catalogue,y=h.design.effective;f!==g&&(f=g,s.setChoices(g.symbologies.map(C=>({value:C.id,label:v(C.labelKey)})))),s.set(y.symbol.symbology);let b=g.symbologies.find(C=>C.id===y.symbol.symbology),x=b?.noteKey??null;i.hidden=x===null,x!==null&&Z(i,v(x));let w=(b?.ecLevels??[]).join("");w!==p&&(p=w,a.setChoices((b?.ecLevels??[]).map(C=>({value:C,label:v(d[C]??C)}))));let k=h.symbol,S=k.status==="empty"?null:k.view;if(a.set(S?.ecLevel??y.symbol.ecLevel??null),S===null){t.style.setProperty("--fill","0"),n.setAttribute("aria-valuenow","0"),Z(r,v("app.capacity.empty")),le(l,[]),c.hidden=!0;return}let E=Math.round(S.capacity.fraction*100);t.style.setProperty("--fill",String(Math.min(1,S.capacity.fraction))),n.setAttribute("aria-valuenow",String(E)),n.setAttribute("aria-valuetext",v("app.capacity.value",{used:nr(S.capacity.usedBits),total:nr(S.capacity.totalBits),percent:E})),n.dataset.level=S.capacity.ofLargest>.85?"high":"normal",Z(r,v("app.capacity.value",{used:nr(S.capacity.usedBits),total:nr(S.capacity.totalBits),percent:E})),c.hidden=!1,Z(c,v("app.capacity.largest",{percent:Math.max(1,Math.round(S.capacity.ofLargest*100))}));let R=[[v("app.encoding.version"),S.version],[v("app.encoding.modules"),v("app.encoding.modules-value",{width:S.modules[0],height:S.modules[1]})],[v("app.encoding.ec"),S.ecLevel],[v("app.encoding.mask"),String(S.mask)],[v("app.encoding.segments"),S.segments.map(C=>v("app.encoding.segment",{mode:v(m[C.mode]??C.mode),chars:C.chars})).join("; ")]];le(l,R.flatMap(([C,A])=>[M("dt",{text:C}),M("dd",{text:A})]))}}}function G2(e){let t=Ve(v("app.content.types"),[],k=>e.dispatch({type:"payload/type",typeId:k}),"chips"),n=M("select",{className:"input input--select more__select",attrs:{"aria-label":v("app.content.more")},on:{change:()=>{n.value!==""&&e.dispatch({type:"payload/type",typeId:n.value})}}}),r=M("div",{className:"more"},[n]),o=M("p",{className:"content__description"}),s=M("p",{className:"content__action"},[M("span",{className:"content__action-label",text:v("app.content.when-scanned")}),M("span",{className:"content__action-text"})]),i=M("div",{className:"form"}),a=M("ul",{className:"field__issues"});a.hidden=!0;let l=M("div",{className:"content__notes"}),c=Q8(e),u=M("p",{className:"note note--info",text:v("studio.issue.design-locked")});u.hidden=!0;let d=M("div",{className:"content"},[t.root,i,a,s,o,u,l,c.root]),m=null,f=null,p="",h=new Map,g=new Set,y=k=>{if(!g.has(k)&&(g.add(k),f!==null)){let S=f.fields.find(E=>E.key===k);S!==void 0&&h.get(k)?.update(S,!0)}};function b(k){h=new Map;let S=new Map(k.fields.map(A=>[A.key,A])),E=[],R=[];for(let A of k.groups){let O=[],D=[];for(let T of A.fields){let I=S.get(T);if(I===void 0)continue;let U=G8(e,I,y);h.set(T,U),(I.advanced?D:O).push(U.root)}let N=T=>A.labelKey===null?M("div",{className:"form__group"},T):M("fieldset",{className:"form__group form__group--named"},[M("legend",{className:"legend",text:v(A.labelKey)}),...T]);O.length>0&&E.push(N(O)),D.length>0&&R.push(N(D))}let C=[...E];R.length>0&&C.push(M("details",{className:"advanced"},[M("summary",{className:"advanced__head",text:v("app.content.advanced")}),M("div",{className:"advanced__body"},R)])),le(i,C)}function x(k){let S=[];k.safety.length>0&&S.push(M("div",{className:"notes"},[M("h3",{className:"notes__title",text:v("app.content.safety")}),M("ul",{className:"notes__list"},k.safety.map(E=>M("li",{className:`note note--${E.severity==="danger"?"error":E.severity==="caution"?"warning":"info"}`},[lt(E.severity==="danger"?"fail":"warn"),M("span",{text:v(iu(E.code),E.params??{})})])))])),k.compatibility.length>0&&S.push(M("div",{className:"notes"},[M("h3",{className:"notes__title",text:v("app.content.compatibility")}),M("ul",{className:"notes__list"},k.compatibility.map(E=>M("li",{className:"note note--info"},[lt("pending"),M("span",{text:v(E.noteKey)})])))])),le(l,S)}function w(k){let S=k.catalogue;if(m!==S){m=S;let C=S.payloadTypes.flatMap(A=>A.types).filter(A=>A.generate);t.setChoices(sa.map(A=>C.find(O=>O.id===A)).filter(A=>A!==void 0).map(A=>({value:A.id,label:v(A.labelKey)}))),t.root.querySelector(".chips__grid")?.appendChild(r),le(n,[M("option",{text:v("app.content.more"),attrs:{value:""}}),...S.payloadTypes.map(A=>({group:A,types:A.types.filter(O=>O.generate&&!sa.includes(O.id))})).filter(({types:A})=>A.length>0).map(({group:A,types:O})=>M("optgroup",{attrs:{label:v(A.labelKey)}},O.map(D=>M("option",{text:v(D.labelKey),attrs:{value:D.id}}))))])}let E=k.form,R=k.document.typeId;if(t.set(sa.includes(R)?R:null),n.value=sa.includes(R)?"":R,r.dataset.active=sa.includes(R)?"false":"true",E!==f){let C=`${E.typeId}:${E.fields.map(A=>A.key).join(",")}`;C!==p?(f?.typeId!==E.typeId&&(g=new Set),p=C,b(E),x(E)):(f===null||f.safety!==E.safety||f.compatibility!==E.compatibility)&&x(E);for(let A of E.fields)h.get(A.key)?.update(A,g.has(A.key));vt(a,E.issues),Z(o,v(E.descriptionKey)),Z(s.lastElementChild,v(E.actionKey)),u.hidden=!E.designLocked,f=E}c.update(k)}return{root:d,update:w,meta:k=>v(k.form.labelKey)}}function kp(e,t,n){let r=Math.max(e,t);if(r<=n)return[e,t];let o=n/r;return[Math.max(1,Math.round(e*o)),Math.max(1,Math.round(t*o))]}function _2(e,t){let n=e/t,r=[];for(let o=0;o<t;o+=1){let s=o*n,i=(o+1)*n,a=Math.floor(s),l=Math.min(e,Math.ceil(i)),c=new Float64Array(l-a);for(let u=a;u<l;u+=1)c[u-a]=(Math.min(i,u+1)-Math.max(s,u))/n;r.push({start:a,weights:c})}return r}function vp(e,t,n){if(!Number.isInteger(t)||!Number.isInteger(n)||t<1||n<1||t>e.width||n>e.height)throw new TypeError("areaAverage: the target is a whole number of pixels, 1 to the source size.");if(t===e.width&&n===e.height)return e;let{data:r}=e,o=_2(e.width,t),s=new Float64Array(t*e.height*4);for(let l=0;l<e.height;l+=1)for(let c=0;c<t;c+=1){let{start:u,weights:d}=o[c],m=0,f=0,p=0,h=0;for(let y=0;y<d.length;y+=1){let b=(l*e.width+u+y)*4,x=d[y],w=r[b+3]*x;m+=r[b]*w,f+=r[b+1]*w,p+=r[b+2]*w,h+=w}let g=(l*t+c)*4;s[g]=m,s[g+1]=f,s[g+2]=p,s[g+3]=h}let i=_2(e.height,n),a=new Uint8ClampedArray(t*n*4);for(let l=0;l<n;l+=1){let{start:c,weights:u}=i[l];for(let d=0;d<t;d+=1){let m=0,f=0,p=0,h=0;for(let y=0;y<u.length;y+=1){let b=((c+y)*t+d)*4,x=u[y];m+=s[b]*x,f+=s[b+1]*x,p+=s[b+2]*x,h+=s[b+3]*x}let g=(l*t+d)*4;h>0&&(a[g]=Math.round(m/h),a[g+1]=Math.round(f/h),a[g+2]=Math.round(p/h)),a[g+3]=Math.round(h)}}return{width:t,height:n,data:a}}var W8="design.issue.svg-logo-later",X8="dom.issue.logo-downscaled",Y8=4*Ji*Ji,Q2=16;function Z8(e){let t=0;for(e[0]===239&&e[1]===187&&e[2]===191&&(t=3);t<e.length&&(e[t]===32||e[t]===9||e[t]===10||e[t]===13);)t+=1;return e[t]===60}async function $8(e){if(e.type==="image/svg+xml")return!0;let t=e.name;if(typeof t=="string"&&/\.svgz?$/i.test(t))return!0;try{return Z8(new Uint8Array(await e.slice(0,64).arrayBuffer()))}catch{return!1}}async function W2(e,t={}){if(await $8(e))return Y(P(W8,["logo"],"error"));let n=await io(e,{maxPixels:Y8,...t.deps===void 0?{}:{deps:t.deps}});if(!n.ok)return Y(P(gi(n.error),["logo"],"error",n.error.params));let r=n.value,[o,s]=kp(r.width,r.height,Ji),i=vp(r,o,s),a=Gn(i,{level:9});for(;a.length>Xc&&Math.max(o,s)>Q2;){let c=Math.max(o,s),u=Math.sqrt(Xc/a.length)*.95,d=Math.max(Q2,Math.min(c-1,Math.floor(c*u)));[o,s]=kp(o,s,d),i=vp(r,o,s),a=Gn(i,{level:9})}let l=[];return(o!==r.width||s!==r.height)&&l.push(P(X8,["logo"],"info",{width:o,height:s})),ae(Object.freeze({asset:Object.freeze({png:fc(a),width:o,height:s}),image:i,issues:Object.freeze(l)}))}function aa(e){return Array.isArray(e)?`[${e.map(aa).join(",")}]`:typeof e=="object"&&e!==null?`{${Object.entries(e).filter(([,n])=>n!==void 0).sort(([n],[r])=>n<r?-1:n>r?1:0).map(([n,r])=>`${JSON.stringify(n)}:${aa(r)}`).join(",")}}`:JSON.stringify(e)??"null"}function Ut(e,t,n,r){let o=r===void 0?{type:"design/patch",patch:{path:t,value:n}}:{type:"design/patch",patch:{path:t,value:n},coalesce:r};e.dispatch(o)}function ia(e,t,n){return I2(t,r=>e.dispatch({type:"history/begin",key:r}),r=>{let o=n(r);Ut(e,o.path,o.value)},r=>e.dispatch({type:"history/commit",key:r}))}function Bs(e,t){return j2(`${e}:${t.id}`,()=>t.thumbnail())}function la(e,t,n,r,o){let s=null,i=new Map;return{draw(a,l){let c=a?.id??null;if(c!==s){s=c,i=new Map;let u=[];for(let d of a?.params??[]){let m=!1,p=P2(d,(h,g)=>{let y=r();if(y===void 0)return;let b=o({id:y.id,params:{...y.params,[d.key]:h}}),x=`${n}:${d.key}`;g==="move"&&!m&&(e.dispatch({type:"history/begin",key:x}),m=!0),Ut(e,b.path,b.value),g==="end"&&m&&(e.dispatch({type:"history/commit",key:x}),m=!1)});i.set(d.key,p),u.push(p.root)}le(t,u),t.hidden=u.length===0}for(let u of a?.params??[])i.get(u.key)?.set(l?.params?.[u.key]??u.default)}}}function Z2(e,t){let n=M("div",{className:"gallery__grid"}),r=kt("preset"),o=de(v("app.style.shuffle"),{icon:"shuffle",onClick:()=>{let g=crypto.getRandomValues(new Uint32Array(1))[0]??1;e.dispatch({type:"design/shuffle",seed:g})}}),s=M("div",{className:"gallery"},[M("fieldset",{className:"gallery__set"},[M("legend",{className:"sr-only",text:v("app.style.presets")}),n]),M("div",{className:"gallery__actions"},[o,M("p",{className:"field__hint",text:v("app.style.shuffle-hint")})])]),i=[],a=[],l="",c=null,u=null,d=null,m=null;function f(g){let y=g.library;return y.status!=="on"&&y.status!=="file"?[]:y.kit?.kit.presets??[]}function p(g){i.length=0,a.length=0;let y=[],b=g.catalogue.presets.flatMap(k=>k.presets),x=f(g).map(k=>b.find(S=>S.id===k)).filter(k=>k!==void 0),w=[...x.length===0?[]:[{labelKey:"app.style.from-kit",presets:x}],...g.catalogue.presets];for(let k of w){y.push(M("p",{className:"gallery__category",text:v(k.labelKey)}));for(let S of k.presets){let E=M("img",{className:"choice__img",attrs:{alt:"",width:72,height:72,decoding:"async"}}),R=M("input",{className:"choice__input",attrs:{type:"radio",name:r,value:S.id},on:{change:()=>{R.checked&&e.dispatch({type:"design/preset",id:S.id})}}});i.push([S.id,E]),a.push([S.id,R]),y.push(M("label",{className:"choice choice--preset"},[R,M("span",{className:"choice__box"},[E,M("span",{className:"choice__label",text:v(S.labelKey)})])]))}}le(n,y)}function h(){if(m=null,!t.open||u===null||u===d)return;let g=u;d=g;let y=[...i],b=()=>{if(g!==u)return;let x=performance.now();for(;y.length>0&&performance.now()-x<12;){let[w,k]=y.shift(),S=g.get(w);S!==null&&Fr(k,S)}y.length>0&&setTimeout(b,0)};b()}return t.addEventListener("toggle",()=>{t.open&&m===null&&(m=setTimeout(h,0))}),{root:s,update(g){let y=f(g).join(",");(c!==g.catalogue||y!==l)&&(c=g.catalogue,l=y,p(g),d=null),g.presetThumbnails!==u&&(u=g.presetThumbnails,m!==null&&clearTimeout(m),m=setTimeout(h,d===null?0:350));let b=cu(e,g.document.design);for(let[x,w]of a){let k=x===b;w.checked!==k&&(w.checked=k),w.disabled=g.design.locked}o.disabled=g.design.locked},meta(g){let y=g.document.design,b=cu(e,y),x=b===null?void 0:e.registries.design.presets.get(b);return x!==void 0?v(x.labelKey):eO(y)?v("app.style.standard"):v("app.style.custom")}}}var J8=aa($2(cr()));function $2(e){return{modules:e.modules,regions:e.regions,background:e.background,frame:e.frame,logo:e.logo}}function eO(e){return aa($2(e))===J8}var X2=new WeakMap;function cu(e,t){let n=X2.get(t);if(n!==void 0)return n;let r=(s,i)=>aa({modules:s.modules,regions:s.regions,background:s.background,frame:s.frame,quietZone:s.quietZone,logo:i?s.logo:null}),o=null;for(let s of e.registries.design.presets.list()){let i=s.design.logo!==null;if(r(t,i)===r(s.design,i)){o=s.id;break}}return X2.set(t,o),o}function J2(e){let t=M("div",{className:"params"}),n=Ve(v("app.modules.shape"),[],i=>Ut(e,["modules","shape"],{id:i}),"swatches"),r=la(e,t,"modules",()=>e.snapshot().document.design.modules.shape,i=>({path:["modules","shape"],value:i})),o=M("div",{className:"panel"},[n.root,t]),s=null;return{root:o,update(i){let a=i.catalogue;s!==a&&(s=a,n.setChoices(a.moduleShapes.map(c=>({value:c.id,label:v(c.labelKey),picture:Bs("module",c)}))));let l=i.document.design.modules.shape;n.set(l.id),r.draw(a.moduleShapes.find(c=>c.id===l.id),l);for(let c of n.inputs())c.disabled=i.design.locked},meta(i){let a=i.catalogue.moduleShapes.find(l=>l.id===i.document.design.modules.shape.id);return a===void 0?"":v(a.labelKey)}}}var tO={finder:"concentric-7","sub-finder":"concentric-5","corner-finder":"corner-l"},ev=["finder","sub-finder","corner-finder"];function Sp(e,t,n){let r=n.document.design.regions,o=n.catalogue.rings.find(a=>a.id===e.id),s=n.catalogue.centres.find(a=>a.id===t.id),i={};for(let a of ev){let l=tO[a],c=r[a]??r.finder,u={outer:e,inner:t,...c?.outerPaint===void 0?{}:{outerPaint:c.outerPaint},...c?.innerPaint===void 0?{}:{innerPaint:c.innerPaint}};o!==void 0&&s!==void 0&&o.kinds.includes(l)&&s.kinds.includes(l)?i[a]=u:r[a]!==void 0&&a!=="finder"&&(i[a]=r[a])}return i}function tv(e){let t=e.document.design.modules.shape.id;return e.catalogue.moduleShapes.find(n=>n.id===t)?.family??"square"}function Y2(e,t){return e===void 0?[]:e.pairsByFamily[tv(t)]}function Ur(e){let t=e.document.design.regions.finder;return{outer:t?.outer??{id:"square"},inner:t?.inner??{id:"square-centre"}}}function nv(e){let t=M("div",{className:"params"}),n=M("div",{className:"params"}),r=(m,f)=>{Ut(e,["regions"],Sp(m,f,e.snapshot()))},o=Ve(v("app.eyes.ring"),[],m=>{let f=e.snapshot(),p=f.catalogue.rings.find(b=>b.id===m),{inner:h}=Ur(f),g=Y2(p,f),y=g.includes(h.id)?h:{id:g[0]??"square-centre"};r({id:m},y)},"swatches"),s=Ve(v("app.eyes.centre"),[],m=>r(Ur(e.snapshot()).outer,{id:m}),"swatches"),i=la(e,t,"ring",()=>Ur(e.snapshot()).outer,m=>({path:["regions"],value:Sp(m,Ur(e.snapshot()).inner,e.snapshot())})),a=la(e,n,"centre",()=>Ur(e.snapshot()).inner,m=>({path:["regions"],value:Sp(Ur(e.snapshot()).outer,m,e.snapshot())})),l=M("div",{className:"panel"},[o.root,t,s.root,M("p",{className:"field__hint",text:v("app.eyes.pairs-note")}),n]),c=null,u=null,d="";return{root:l,update(m){let f=m.catalogue,{outer:p,inner:h}=Ur(m),g=tv(m);(c!==f||u!==g)&&(c=f,u=g,o.setChoices(f.rings.filter(w=>w.pairsByFamily[g].length>0||w.id===p.id).map(w=>({value:w.id,label:v(w.labelKey),picture:Bs("ring",w)}))),d="");let y=f.rings.find(w=>w.id===p.id),b=y===void 0?f.centres.map(w=>w.id):Y2(y,m),x=`${p.id}:${b.join(",")}`;if(x!==d){d=x;let w=f.centres.filter(k=>b.includes(k.id)||k.id===h.id).map(k=>({value:k.id,label:v(k.labelKey),picture:Bs("centre",k)}));s.setChoices(w)}o.set(p.id),s.set(h.id),i.draw(y,p),a.draw(f.centres.find(w=>w.id===h.id),h);for(let w of[...o.inputs(),...s.inputs()])w.disabled=m.design.locked},meta(m){let{outer:f}=Ur(m),p=m.catalogue.rings.find(h=>h.id===f.id);return p===void 0?"":v(p.labelKey)}}}function js(e){let t=typeof e=="string"?e:e.srgb;if(/^#[0-9a-f]{6}$/i.test(t))return t.toLowerCase();let n=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(t);return n!==null?`#${n[1]}${n[1]}${n[2]}${n[2]}${n[3]}${n[3]}`.toLowerCase():/^#[0-9a-f]{8}$/i.test(t)?t.slice(0,7).toLowerCase():"#000000"}function lu(e,t){if(t==null)return[];switch(t.kind){case"solid":return[t.ink];case"entry":{let n=e.registries.design.fills.get(t.ref.id),r=[];for(let o of n?.params??[]){if(o.kind!=="colour")continue;let s=t.ref.params?.[o.key]??o.default;typeof s=="string"&&r.push(s)}return r}default:return t.stops.map(n=>n.ink)}}function Mp(e,t){let n=M("div",{className:"paint__body"}),r=(f,p)=>{let h=t.write(f),g=p===void 0?{type:"design/patch",patch:h}:{type:"design/patch",patch:h,coalesce:p};e.dispatch(g)},o=[];t.extra.includes("same")&&o.push({value:"same",label:v("app.colour.same")}),t.extra.includes("none")&&o.push({value:"none",label:v("app.colour.transparent")}),o.push({value:"solid",label:v("app.colour.kind-solid")},{value:"linear",label:v("app.colour.kind-linear")},{value:"radial",label:v("app.colour.kind-radial")}),t.extra.includes("entry")&&o.push({value:"entry",label:v("app.colour.kind-pattern")});let s=f=>f===void 0?"same":f===null?"none":f.kind==="conic"?"radial":f.kind,i=f=>lu(e,f)[0]??"#000000",a=Ve(t.label,o,f=>{let p=t.read(e.snapshot()),h=js(i(p??t.read(e.snapshot()))),g="#1d4ed8",y=p!=null&&"stops"in p&&p.stops.length>=2?[...p.stops]:[{offset:0,ink:h},{offset:1,ink:h===g?"#000000":g}];switch(f){case"same":r(void 0);return;case"none":r(null);return;case"solid":r({kind:"solid",ink:h});return;case"linear":r({kind:"linear",angle:45,stops:y,space:"symbol"});return;case"radial":r({kind:"radial",cx:.5,cy:.5,radius:.75,stops:y,space:"symbol"});return;case"entry":{let b=e.snapshot().catalogue.fills[0];b!==void 0&&r({kind:"entry",ref:{id:b.id}});return}}}),l="",c=[],u=(f,p,h,g)=>{let y=M("input",{className:"colour-well",attrs:{type:"color","aria-label":f}}),b=kt("hex"),x=M("input",{className:"input input--hex",id:b,attrs:{type:"text",spellcheck:"false",autocomplete:"off",maxlength:7,"aria-label":`${f}, ${v("app.colour.hex")}`}}),w=M("p",{className:"field__hint field__hint--error",text:v("app.colour.hex-invalid")});w.hidden=!0;let k=!1,S=(E,R)=>{let C=t.read(e.snapshot());C!=null&&(R==="move"&&!k&&(e.dispatch({type:"history/begin",key:g}),k=!0),r(h(C,E)),R==="end"&&k&&(e.dispatch({type:"history/commit",key:g}),k=!1))};return y.addEventListener("input",()=>S(y.value,"move")),y.addEventListener("change",()=>S(y.value,"end")),x.addEventListener("change",()=>{let E=x.value.trim(),R=E.startsWith("#")?E:`#${E}`,C=/^#[0-9a-f]{6}$/i.test(R);w.hidden=C,x.setAttribute("aria-invalid",String(!C)),C&&S(R.toLowerCase(),"end")}),c.push(E=>{if(E==null)return;let R=p(E);if(R===void 0)return;let C=js(R);y.value!==C&&(y.value=C),document.activeElement!==x&&x.value!==C&&(x.value=C)}),M("div",{className:"ink"},[M("span",{className:"ink__label",text:f}),y,x,w])};function d(f){c=[];let p=[];if(f==null){le(n,p);return}if(f.kind==="solid")p.push(u(v("app.colour.ink"),h=>h.kind==="solid"?h.ink:void 0,(h,g)=>({kind:"solid",ink:g}),`${t.key}:solid`));else if(f.kind==="entry"){let h=Ve(v("app.colour.pattern"),e.snapshot().catalogue.fills.map(b=>({value:b.id,label:v(b.labelKey),picture:Bs("fill",b)})),b=>r({kind:"entry",ref:{id:b}}),"swatches");h.set(f.ref.id);let g=M("div",{className:"params"}),y=la(e,g,`${t.key}:fill`,()=>{let b=t.read(e.snapshot());return b?.kind==="entry"?b.ref:void 0},b=>{let[x]=t.write({kind:"entry",ref:b});return x??{path:[],value:void 0}});c.push(b=>{b?.kind==="entry"&&(h.set(b.ref.id),y.draw(e.snapshot().catalogue.fills.find(x=>x.id===b.ref.id),b.ref))}),p.push(h.root,g)}else{let h=f;if(h.kind==="linear"){let x=or(v("app.colour.angle"),{min:0,max:360,step:1},w=>ou(w),ia(e,`${t.key}:angle`,w=>{let k=t.read(e.snapshot()),S=k?.kind==="linear"?{...k,angle:w}:k,[E]=t.write(S);return E??{path:[],value:void 0}}));c.push(w=>{w?.kind==="linear"&&x.set(w.angle)}),p.push(x.root)}else{let x=or(v("app.colour.radius"),{min:.1,max:2,step:.01},Vn,ia(e,`${t.key}:radius`,w=>{let k=t.read(e.snapshot()),S=k?.kind==="radial"?{...k,radius:w}:k,[E]=t.write(S);return E??{path:[],value:void 0}}));c.push(w=>{w?.kind==="radial"&&x.set(w.radius)}),p.push(x.root)}let g=M("ol",{className:"stops"});h.stops.forEach((x,w)=>{let k=or(v("app.colour.stop-position",{n:w+1}),{min:0,max:100,step:1},R=>oa(R/100),ia(e,`${t.key}:stop-${w}`,R=>{let C=t.read(e.snapshot());if(C==null||!("stops"in C))return{path:[],value:void 0};let A={...C,stops:C.stops.map((D,N)=>N===w?{...D,offset:R/100}:D)},[O]=t.write(A);return O??{path:[],value:void 0}}));c.push(R=>{if(R!=null&&"stops"in R){let C=R.stops[w];C!==void 0&&k.set(Math.round(C.offset*100))}});let S=u(v("app.colour.stop",{n:w+1}),R=>"stops"in R?R.stops[w]?.ink:void 0,(R,C)=>"stops"in R?{...R,stops:R.stops.map((A,O)=>O===w?{...A,ink:C}:A)}:R,`${t.key}:stop-ink-${w}`),E=h.stops.length>2?de(v("app.colour.remove-stop"),{small:!0,icon:"minus",attrs:{"aria-label":v("app.colour.remove-stop-numbered",{n:w+1})},onClick:()=>{let R=t.read(e.snapshot());R!=null&&"stops"in R&&r({...R,stops:R.stops.filter((C,A)=>A!==w)})}}):null;g.appendChild(M("li",{className:"stops__row"},[S,k.root,E]))});let y=h.stops.length<16?de(v("app.colour.add-stop"),{small:!0,icon:"plus",onClick:()=>{let x=t.read(e.snapshot());if(x==null||!("stops"in x))return;let w=x.stops[x.stops.length-1],k={offset:1,ink:w===void 0?"#000000":w.ink},S=[...x.stops,k].map((E,R,C)=>({...E,offset:C.length===1?0:R/(C.length-1)}));r({...x,stops:S})}}):null,b=Ve(v("app.colour.space"),[{value:"symbol",label:v("app.colour.space-symbol")},{value:"module",label:v("app.colour.space-module")}],x=>{let w=t.read(e.snapshot());w!=null&&"space"in w&&r({...w,space:x})});c.push(x=>{x!=null&&"space"in x&&b.set(x.space)}),p.push(g,...y===null?[]:[y],b.root)}le(n,p)}return{root:M("div",{className:"paint"},[a.root,n]),update(f){let p=t.read(f),h=s(p);a.set(h);let g=p==null?h:p.kind==="entry"?"entry":p.kind==="solid"?"solid":`${p.kind}:${p.stops.length}`;g!==l&&(l=g,d(p));for(let y of c)y(p);for(let y of a.inputs())y.disabled=f.design.locked}}}function rv(e){let t=Mp(e,{label:v("app.colour.modules"),read:u=>u.document.design.modules.paint,write:u=>[{path:["modules","paint"],value:u??{kind:"solid",ink:"#000000"}}],extra:["entry"],key:"colour:modules"}),n=Mp(e,{label:v("app.colour.eyes"),read:u=>u.document.design.regions.finder?.outerPaint,write:u=>{let m=e.snapshot().document.design.regions,f=m.finder??{outer:{id:"square"},inner:{id:"square-centre"}},p={};for(let h of ev){let g=h==="finder"?f:m[h];if(g===void 0)continue;let{outerPaint:y,innerPaint:b,...x}=g;p[h]=u==null?x:{...x,outerPaint:u,innerPaint:u}}return[{path:["regions"],value:p}]},extra:["same"],key:"colour:eyes"}),r=Mp(e,{label:v("app.colour.background"),read:u=>u.document.design.background,write:u=>[{path:["background"],value:u===void 0?null:u}],extra:["none"],key:"colour:background"}),o=M("p",{className:"contrast__ratio"}),s=M("p",{className:"contrast__verdict"}),i=M("ul",{className:"field__issues"}),a=M("span",{className:"contrast__swatch",attrs:{"aria-hidden":"true"}},[M("span",{className:"contrast__fg"})]),l=M("div",{className:"contrast",attrs:{role:"group","aria-label":v("app.colour.contrast")}},[M("p",{className:"legend",text:v("app.colour.contrast")}),M("div",{className:"contrast__row"},[a,M("div",{},[o,s])]),i]);return{root:M("div",{className:"panel"},[M("section",{className:"panel__part"},[t.root]),M("section",{className:"panel__part"},[n.root]),M("section",{className:"panel__part"},[r.root]),l]),update(u){t.update(u),n.update(u),r.update(u);let d=u.design.effective,m=[...lu(e,d.modules.paint),...lu(e,d.regions.finder?.outerPaint)],f=d.background===null?["#ffffff"]:lu(e,d.background),p=21,h=!1;for(let b of m)for(let x of f)try{let w=xo(b,x);w<p&&(p=w,h=nn(b)>nn(x))}catch{}a.style.setProperty("--fg",js(m[0]??"#000000")),a.style.setProperty("--bg",js(f[0]??"#ffffff")),Z(o,v("app.colour.contrast-value",{ratio:zn(p)}));let g=p>=7?"good":p>=4.5?"fair":"poor";l.dataset.level=h?"poor":g,Z(s,h?v("app.colour.contrast-inverted"):g==="good"?v("app.colour.contrast-good"):g==="fair"?v("app.colour.contrast-fair"):v("app.colour.contrast-poor"));let y=[];d.background===null&&y.push(v("app.colour.contrast-transparent")),u.form.designLocked&&y.push(v("studio.issue.design-locked")),le(i,y.map(b=>M("li",{className:"note note--info",text:b}))),i.hidden=y.length===0},meta(u){let d=u.document.design.modules.paint,m=u.document.design.background,f=d.kind==="solid"?js(d.ink):v("app.colour.kind-short-gradient"),p=m===null?v("app.colour.transparent"):m.kind==="solid"?js(m.ink):v("app.colour.kind-short-gradient");return v("app.colour.meta",{fg:f,bg:p})}}}function ov(e){let t=M("input",{attrs:{type:"file",accept:"image/png,image/jpeg,image/webp,image/gif,image/svg+xml"}});t.hidden=!0;let n=M("ul",{className:"field__issues"});n.hidden=!0;let r=Ve(v("app.logo.choose"),[],p=>{let h=e.snapshot().document.design;if(p==="none"){e.dispatch({type:"design/patch",patch:np(h)});return}if(p==="asset")return;let g=h.logo;e.dispatch({type:"design/patch",patch:[{path:["logo"],value:{source:{kind:"icon",id:p},size:g?.size??.2,clear:g?.clear??"box",padding:g?.padding??1,plate:g?.plate??null}},...g?.source.kind==="asset"?[{path:["assets"],value:void 0}]:[]]})},"swatches"),o=de(v("app.logo.upload"),{icon:"image",onClick:()=>t.click()}),s=async p=>{let h=await W2(p);if(!h.ok){vt(n,[h.error]),e.announce(v(h.error.code,h.error.params??{}));return}vt(n,h.value.issues),e.dispatch({type:"design/patch",patch:tp(e.snapshot().document.design,h.value.asset)}),e.announce(v("app.logo.added"))};t.addEventListener("change",()=>{let p=t.files?.[0];t.value="",p!==void 0&&s(p)});let i=or(v("app.logo.size"),{min:.05,max:.4,step:.01},p=>oa(p),ia(e,"logo:size",p=>({path:["logo","size"],value:p}))),a=or(v("app.logo.padding"),{min:0,max:4,step:.5},p=>v("app.logo.padding-value",{value:zn(p)}),ia(e,"logo:padding",p=>({path:["logo","padding"],value:p}))),l=Ve(v("app.logo.clear"),[{value:"none",label:v("app.logo.clear-none")},{value:"box",label:v("app.logo.clear-box")},{value:"shape",label:v("app.logo.clear-shape")}],p=>Ut(e,["logo","clear"],p)),c=Ve(v("app.logo.plate"),[{value:"none",label:v("app.logo.plate-none")},{value:"square",label:v("app.logo.plate-square")},{value:"rounded",label:v("app.logo.plate-rounded")},{value:"circle",label:v("app.logo.plate-circle")}],p=>{let h=e.snapshot().document.design.background,g=h?.kind==="solid"?h:{kind:"solid",ink:"#ffffff"};Ut(e,["logo","plate"],p==="none"?null:{paint:g,shape:p})}),u=M("div",{className:"note note--warning logo__level"},[M("span",{text:v("app.logo.level-hint")}),de(v("app.logo.use-h"),{small:!0,onClick:()=>Ut(e,["symbol","ecLevel"],"H")})]),d=M("div",{className:"logo__settings"},[i.root,l.root,a.root,c.root,u]),m=M("div",{className:"panel"},[r.root,M("div",{className:"logo__upload"},[o,M("p",{className:"field__hint",text:v("app.logo.upload-hint")}),t]),n,d]),f="";return{root:m,update(p){let h=p.document.design,g=h.logo,y=g?.source.kind==="asset",b=`${p.catalogue.icons.length}:${y}`;if(b!==f){f=b;let k=[{value:"none",label:v("app.logo.none")}];y&&k.push({value:"asset",label:v("app.logo.picture")});for(let S of p.catalogue.icons)k.push({value:S.id,label:v(S.labelKey),picture:Bs("icon",S)});r.setChoices(k)}r.set(g===null?"none":g.source.kind==="asset"?"asset":g.source.id),d.hidden=g===null,g!==null&&(i.set(g.size),a.set(g.padding),l.set(g.clear),c.set(g.plate?.shape??"none"));let x=p.symbol.status==="empty"?h.symbol.ecLevel:p.symbol.view.ecLevel;u.hidden=g===null||x==="H";let w=p.design.locked;for(let k of[...r.inputs(),...l.inputs(),...c.inputs()])k.disabled=w;o.disabled=w},meta(p){let h=p.document.design.logo;if(h===null)return v("app.logo.none");if(h.source.kind==="asset")return v("app.logo.picture");let g=h.source,y=p.catalogue.icons.find(b=>b.id===g.id);return y===void 0?"":v(y.labelKey)}}}function sv(e){let t=M("div",{className:"params"}),n=Ve(v("app.frame.choose"),[],u=>{if(u==="none"){Ut(e,["frame"],null);return}let d=e.snapshot().catalogue.frames.find(p=>p.id===u),m=e.snapshot().document.design.frame,f=m?.text?.content??v("app.frame.default-caption");Ut(e,["frame"],{ref:{id:u},...d?.text===null||d===void 0?{}:{text:{content:f.slice(0,d.text.maxChars),fontId:m?.text?.fontId??Uo[1]}}})},"swatches"),r=M("input",{className:"input",attrs:{type:"text",autocomplete:"off"},on:{input:()=>{let u=e.snapshot().document.design.frame;u!==null&&Ut(e,["frame","text"],{content:r.value,fontId:u.text?.fontId??Uo[1]},"caption")}}}),o=ct(v("app.frame.caption"),r),s=Ve(v("app.frame.font"),[{value:Uo[0],label:v("text.font.plex-sans-regular")},{value:Uo[1],label:v("text.font.plex-sans-bold")}],u=>{let d=e.snapshot().document.design.frame;d!==null&&Ut(e,["frame","text"],{content:d.text?.content??"",fontId:u})}),i=M("div",{className:"frame__text"},[o.root,s.root]),a=la(e,t,"frame",()=>e.snapshot().document.design.frame?.ref,u=>({path:["frame","ref"],value:u})),l=M("div",{className:"panel"},[n.root,i,t]),c=null;return{root:l,update(u){let d=u.catalogue;c!==d&&(c=d,n.setChoices(d.frames.map(y=>({value:y.id,label:v(y.labelKey),picture:Bs("frame",y)}))));let m=u.document.design.frame,f=m?.ref.id??"none";n.set(f);let p=d.frames.find(y=>y.id===f),h=p?.text??null;if(i.hidden=m===null||h===null,h!==null&&m!==null){r.maxLength=h.maxChars;let y=m.text?.content??"";r.value!==y&&(r.value=y),Z(o.hint,v("app.frame.caption-hint",{chars:h.maxChars})),o.hint.hidden=!1,s.set(m.text?.fontId??Uo[1])}a.draw(f==="none"?void 0:p,m?.ref);let g=u.design.locked;for(let y of[...n.inputs(),...s.inputs()])y.disabled=g;r.disabled=g},meta(u){let d=u.document.design.frame?.ref.id??"none",m=u.catalogue.frames.find(f=>f.id===d);return m===void 0?"":v(m.labelKey)}}}function Ep(e,t){let n=M("input",{className:"input input--number",attrs:{type:"number",inputmode:"decimal",...t}});return n.addEventListener("change",()=>{let r=n.value.trim();e(r===""?null:Number(r))}),n}function iv(e){let t=Ep(u=>Ut(e,["output","sizeMm"],u===null?void 0:u),{min:5,max:2e3,step:.5}),n=ct(v("app.print.size"),t,v("app.print.size-hint")),r=Ve(v("app.print.basis"),[{value:"artwork",label:v("app.print.basis-artwork")},{value:"symbol",label:v("app.print.basis-symbol")}],u=>Ut(e,["output","sizeBasis"],u)),o=Ep(u=>Ut(e,["output","dpi"],u===null?void 0:u),{min:72,max:2400,step:1}),s=ct(v("app.print.dpi"),o,v("app.print.dpi-hint")),i=Ep(u=>e.dispatch({type:"conditions",conditions:{distanceMm:u===null?null:u*10}}),{min:1,max:1e4,step:1}),a=ct(v("app.print.distance"),i,v("app.print.distance-hint")),l=M("ul",{className:"field__issues"});return{root:M("div",{className:"panel"},[n.root,r.root,s.root,a.root,l]),update(u){let d=u.document.design.output,m=(g,y)=>{let b=y==null?"":String(y);document.activeElement!==g&&g.value!==b&&(g.value=b)};m(t,d.sizeMm),m(o,d.dpi);let f=u.document.conditions.distanceMm;m(i,f===null?null:f/10),r.set(d.sizeBasis??"artwork");let p=u.refusal;vt(l,p!==null&&p.issues.some(g=>g.path[0]==="output"||g.path[0]==="conditions")?p.issues:[]);let h=u.design.locked;t.disabled=h,o.disabled=h;for(let g of r.inputs())g.disabled=h},meta(u){let d=u.document.design.output.sizeMm;return d===void 0?v("app.print.not-set"):v("app.print.meta",{size:zn(d)})}}}function Tp(e){let t=e.library;return t.status==="on"||t.status==="file"?t:null}function av(e,t){let n=N=>e.announce(yt(Fe(N))),r=M("input",{className:"input",attrs:{type:"text",autocomplete:"off",maxlength:80,placeholder:v("app.library.untitled")}});Os(r);let o=ct(v("app.library.name"),r,v("app.library.name-hint")),s=()=>r.value.trim()===""?v("app.library.untitled"):r.value.trim(),i=de(v("app.library.save-design"),{icon:"save",primary:!0,onClick:async()=>{let N=await e.studio.run({type:"library/save",name:s()});if(!N.ok)return n(N.error);r.value="",e.announce(v("app.library.saved"))}}),a=de(v("app.library.save-kit"),{icon:"save",onClick:async()=>{let N=e.snapshot().document.design,T=t(N),I={...sp(N),presets:T===null?[]:[T]},U=await e.studio.run({type:"library/save-kit",name:s(),kit:I});if(!U.ok)return n(U.error);r.value="",e.announce(v("app.library.kit-saved"))}}),l=M("ul",{className:"library__list"}),c=M("ul",{className:"library__list"}),u=M("p",{className:"field__hint",text:v("app.library.empty")}),d=M("p",{className:"note note--warning",text:v("app.library.unsaved")});d.hidden=!0;let m=M("ul",{className:"field__issues"});m.hidden=!0;let f=M("h3",{className:"notes__title",text:v("app.library.designs")}),p=M("h3",{className:"notes__title",text:v("app.library.kits")}),h=M("input",{attrs:{type:"file",accept:`${wi},application/json`}});h.hidden=!0;let g=M("input",{attrs:{type:"file",accept:".json,application/json"}});g.hidden=!0;async function y(N){let T=await e.studio.run({type:"library/open-file",file:N});if(!T.ok)return n(T.error);if(!T.value.opened){vt(m,T.value.issues),e.announce(T.value.issues.map(Ft).join(" "));return}let I=Tp(e.snapshot());e.announce(v("app.library.opened",{designs:I?.items.length??0,kits:I?.kits.length??0}))}async function b(N){let T=await a2(N),I=e.snapshot().document.design;e.dispatch({type:"design/replace",design:T});let U=e.snapshot();U.document.design!==I?e.announce(v("app.design.applied")):U.refusal!==null&&e.announce(U.refusal.issues.map(Ft).join(" "))}h.addEventListener("change",()=>{let N=h.files?.[0];h.value="",N!==void 0&&y(N)}),g.addEventListener("change",()=>{let N=g.files?.[0];g.value="",N!==void 0&&b(N)});let x=de(v("app.library.save-file"),{icon:"download",onClick:async()=>{let N=await e.studio.run({type:"library/save-file"});if(!N.ok)return n(N.error);e.announce(v("app.export.saved",{filename:N.value.filename}))}}),w=de(v("app.library.open-file"),{icon:"open",onClick:()=>h.click()}),k=de(v("app.design.save-file"),{icon:"save",onClick:()=>{let N=e.snapshot().document.design,T=new TextEncoder().encode(JSON.stringify(N,null," ")),I=_n(T,"qr-design.json","application/json");I.ok?e.announce(v("app.export.saved",{filename:"qr-design.json"})):n(I.error)}}),S=de(v("app.design.open-file"),{icon:"open",onClick:()=>g.click()}),E=M("div",{className:"panel library"},[M("p",{className:"field__hint",text:v("app.library.intro")}),M("div",{className:"library__save"},[o.root,i,a]),d,m,u,f,l,p,c,M("div",{className:"library__files"},[x,w,h]),M("h3",{className:"notes__title",text:v("app.design.title")}),M("p",{className:"field__hint",text:v("app.design.intro")}),M("div",{className:"library__files"},[k,S,g])]);function R(N,T,I,U,q){return M("li",{className:"library__item"},[M("div",{className:"library__about"},[M("span",{className:"library__name",text:N}),M("span",{className:"library__when",text:T}),q?M("span",{className:"tag",text:v("app.library.in-use")}):null]),M("div",{className:"library__actions"},[de(v("app.library.use"),{small:!0,attrs:{"aria-label":v("app.library.use-named",{name:N})},onClick:()=>void I()}),de(v("app.library.remove"),{small:!0,icon:"minus",attrs:{"aria-label":v("app.library.remove-named",{name:N})},onClick:()=>void U()})])])}function C(N,T){let I=T.catalogue.payloadTypes.flatMap(q=>q.types).find(q=>q.id===N.typeId),U=v("app.library.saved-at",{date:xp(N.savedAt)});return R(N.name,I===void 0?U:`${v(I.labelKey)}. ${U}`,async()=>{let q=await e.studio.run({type:"library/load",id:N.id});if(!q.ok)return n(q.error);e.announce(v("app.library.used",{name:N.name}))},async()=>{let q=await e.studio.run({type:"library/remove",id:N.id});if(!q.ok)return n(q.error);e.announce(v("app.library.removed",{name:N.name}))},!1)}function A(N,T){return R(N.name,v("app.library.saved-at",{date:xp(N.savedAt)}),async()=>{let I=await e.studio.run({type:"library/load-kit",id:N.id});if(!I.ok)return n(I.error);e.announce(v("app.library.kit-used",{name:N.name}))},async()=>{let I=await e.studio.run({type:"library/remove-kit",id:N.id});if(!I.ok)return n(I.error);e.announce(v("app.library.removed",{name:N.name}))},N.id===T)}let O=null;function D(N){let T=N.library;if(T===O)return;O=T;let I=Tp(N),U=I?.items??[],q=I?.kits??[];i.disabled=I===null,a.disabled=I===null,d.hidden=!(T.status==="file"&&T.unsaved),vt(m,I?.skipped??[]),f.hidden=U.length===0,p.hidden=q.length===0,T.status==="failed"?(Z(u,yt(T.error)),u.hidden=!1):(Z(u,v("app.library.empty")),u.hidden=U.length>0||q.length>0),le(l,U.map(H=>C(H,N))),le(c,q.map(H=>A(H,I?.kit?.id??null)))}return window.addEventListener("beforeunload",N=>{let T=e.snapshot().library;T.status==="file"&&T.unsaved&&(N.preventDefault(),N.returnValue="")}),{root:E,update:D,meta:N=>{let T=Tp(N);return v("app.library.count",{designs:T?.items.length??0,kits:T?.kits.length??0})},openFile:y,openDesign:b}}var Rp=96/25.4;function Ap(e,t,n){if(e.unitsPerMm!==void 0&&e.unitsPerMm>0)return e.width/e.unitsPerMm;let r=t===null?e.width:t.modules[0]+2*t.quietZone,o=n.document.conditions.sizeMm??_c;return e.width*o/r}function lv(e,t){let n=t.logo!==null&&t.logo.source.kind==="asset"?{...t,logo:null}:t,r=[n,{...n,symbol:{symbology:"qr",ecLevel:n.symbol.ecLevel??"M"}}];for(let o of r)try{let s=Fn(qc,{symbology:o.symbol.symbology,...o.symbol.ecLevel===void 0?{}:{ecLevel:o.symbol.ecLevel}},e.symbologies),i=tn(s,o,{registries:e.design,seed:1}).scene;return{svg:yn(i,{idPrefix:"sample-"}),scene:i}}catch{}return null}var cv=85.6,nO=53.98/85.6,wo=Rp;function rO(e){let t=e.verify;return t.status!=="done"||t.stale?null:t.report.verdict==="pass"?v("app.check.verdict-pass"):t.report.verdict==="warn"?v("app.check.verdict-warn"):v("app.check.verdict-fail")}function oO(e){for(let t of e.form.fields){if(t.secret||t.advanced)continue;let n=Array.isArray(t.value)?t.value.find(o=>o!==""):t.value;if(typeof n!="string"||n.trim()==="")continue;let r=n.trim().replace(/\s+/g," ");return r.length>60?`${r.slice(0,57)}...`:r}return null}function sO(e,t,n){let r=[`${v(t.symbologyLabelKey)}. ${v(e.form.labelKey)}.`];if(n)r.push(v("app.proof.alt-stale"));else{let s=oO(e);s!==null&&r.push(v("app.proof.alt-summary",{summary:s}))}r.push(v(e.form.actionKey));let o=rO(e);return o!==null&&r.push(v("app.proof.alt-check",{verdict:o})),r.join(" ")}function uv(e,t,n,r){e.setAttribute("viewBox",r?`0 0 ${t} 18`:`0 0 18 ${t}`),e.setAttribute("width",String(r?t:18)),e.setAttribute("height",String(r?18:t));let s=[];if(t>0&&n>0){let i=t/n,a=[1,2,5,10,20,50,100,200,500].find(u=>u*i>=5)??1e3,l=a*(a===2?5:10),c="";for(let u=0;u<=n+1e-9;u+=a){let d=Math.round(u*i)+.5,m=Math.abs(u%l)<1e-9,f=!m&&Math.abs(u%(l/2))<1e-9,p=m?9:f?6:3.5;if(c+=r?`M${d} 18v-${p}`:`M18 ${d}h-${p}`,m&&u>0&&u<n-a*.5){let h=It("text",r?{x:d+2,y:8}:{x:7,y:d-2},[String(Math.round(u))]);r||h.setAttribute("transform",`rotate(-90 7 ${d-2})`),s.push(h)}}s.unshift(It("path",{d:c}))}le(e,s)}function dv(e,t,n){let r=[],o=null,s="none",i=!1,a=M("img",{className:"proof__img",attrs:{alt:"",decoding:"sync"}}),l=It("svg",{class:"proof__quiet","aria-hidden":"true",preserveAspectRatio:"none"}),c=M("span",{className:"proof__badge"}),u=M("div",{className:"proof__stage"},[a,l,c]),d=It("svg",{class:"ruler ruler--top","aria-hidden":"true"}),m=It("svg",{class:"ruler ruler--left","aria-hidden":"true"}),f=["tl","tr","bl","br"].map(X=>M("span",{className:`crop crop--${X}`,attrs:{"aria-hidden":"true"}})),p=M("div",{className:"proof__frame"},[M("span",{className:"proof__corner",attrs:{"aria-hidden":"true"}}),d,m,u,...f]),h=It("svg",{class:"proof__registration",viewBox:"0 0 24 24","aria-hidden":"true"},[It("circle",{cx:12,cy:12,r:6.5}),It("path",{d:"M12 1v22M1 12h22"})]),g=M("p",{className:"proof__slug"}),y=M("div",{className:"proof__sheet"},[h,p,g]);y.dataset.surround="light";let b=M("p",{className:"proof__note",attrs:{role:"note"}});b.hidden=!0;let x=Ve(v("app.proof.surround"),[{value:"light",label:v("app.proof.surround-light")},{value:"dark",label:v("app.proof.surround-dark")}],X=>{y.dataset.surround=X},"segments",{legendHidden:!0});x.set("light");let w=de(v("app.proof.true-size"),{icon:"ruler",small:!0,attrs:{"aria-pressed":"false"},onClick:()=>{i=!i,w.setAttribute("aria-pressed",String(i)),T()}}),k=M("div",{className:"calibrate__card",attrs:{"aria-hidden":"true"}}),S=M("input",{className:"slider__input",id:"calibrate-scale",attrs:{type:"range",min:2,max:8,step:.01},on:{input:()=>{wo=Number(S.value),E(),T()}}}),E=()=>{k.style.setProperty("width",`${cv*wo}px`),k.style.setProperty("height",`${cv*nO*wo}px`)},R=M("dialog",{className:"calibrate",attrs:{"aria-labelledby":"calibrate-title"}},[M("h2",{id:"calibrate-title",className:"calibrate__title",text:v("app.proof.calibrate-title")}),M("p",{className:"calibrate__help",text:v("app.proof.calibrate-help")}),M("div",{className:"calibrate__bench"},[k]),M("div",{className:"slider"},[M("label",{className:"slider__label",text:v("app.proof.calibrate-scale"),attrs:{for:"calibrate-scale"}}),S]),M("div",{className:"calibrate__actions"},[de(v("app.proof.calibrate-reset"),{small:!0,onClick:()=>{wo=Rp,S.value=String(wo),E(),T()}}),de(v("app.proof.calibrate-done"),{primary:!0,small:!0,onClick:()=>R.close()})])]),C=de(v("app.proof.calibrate"),{small:!0,onClick:()=>{S.value=String(wo),E(),R.showModal()}}),A=M("div",{className:"proof__bar"},[x.root,w,C]),O=M("h2",{className:"sr-only",id:"proof-title",text:v("app.proof.label")}),D=M("div",{className:"proof__bar-host"},[A]),N=M("section",{className:"proof",attrs:{"aria-labelledby":"proof-title"}},[O,D,M("div",{className:"proof__desk"},[y]),b,n,t,R]);function T(){if(o===null)return;let X=o.scene.height/o.scene.width;u.style.setProperty("--ratio",String(X)),i?(u.style.setProperty("--true-width",`${o.widthMm*wo}px`),y.dataset.size="true"):y.dataset.size="fit",I()}function I(){if(o===null)return;let X=u.clientWidth,ne=u.clientHeight,me=o.widthMm*o.scene.height/o.scene.width;uv(d,X,o.widthMm,!0),uv(m,ne,me,!1)}typeof ResizeObserver=="function"&&new ResizeObserver(()=>I()).observe(u);function U(X,ne,me){if(ne===null||me){le(l,[]);return}let fe=ne.quietZone;l.setAttribute("viewBox",`0 0 ${X.width} ${X.height}`),le(l,[It("rect",{x:fe,y:fe,width:X.width-2*fe,height:X.height-2*fe,"vector-effect":"non-scaling-stroke"})])}function q(X,ne,me){let fe=[];X!==null&&(fe.push(v("app.proof.slug-version",{version:X.version})),fe.push(v("app.proof.slug-level",{level:X.ecLevel})),fe.push(v("app.proof.slug-modules",{width:X.modules[0],height:X.modules[1]})),fe.push(v("app.proof.slug-mask",{mask:X.mask}))),fe.push(v("app.proof.slug-width",{size:zn(ne)})),le(g,[M("span",{className:"proof__slug-label",text:me?v("app.proof.sample"):v("app.proof.label")}),...fe.map(ke=>M("span",{text:ke}))])}function H(X){o=X;for(let ne of r)ne(X)}let W=null,$=null;function be(X){let ne=X.symbol,me=X.design.effective,fe=null,ke=null,Oe;if(ne.status==="empty")Oe="sample",W!==me&&(W=me,$=lv(e.registries,me)),$!==null&&(fe={svg:$.svg,scene:$.scene,widthMm:Ap($.scene,null,X),sample:!0});else{Oe=ne.status,ke=ne.view;let ie=X.preview;ie!==null&&(fe={svg:ie.svg,scene:ie.scene,widthMm:Ap(ie.scene,ke,X),sample:!1})}fe===null?D2(a):Fr(a,fe.svg),Oe==="ok"&&(s==="sample"||s==="none")&&(u.classList.remove("proof__stage--printing"),u.offsetWidth,u.classList.add("proof__stage--printing")),s=Oe,u.dataset.state=Oe,u.dataset.ground=me.background===null?"transparent":"solid",Z(c,Oe==="stale"?v("app.proof.not-updated"):Oe==="sample"?v("app.proof.sample"):""),c.hidden=Oe==="ok",Oe==="sample"?(a.alt=v("app.proof.alt-sample"),Z(b,v("app.proof.sample-note")),b.hidden=!1):ke!==null&&(a.alt=sO(X,ke,Oe==="stale"),ne.status==="stale"?(Z(b,`${v("app.proof.not-updated")}. ${v(ne.issue.code,ne.issue.params??{})}`),b.hidden=!1):b.hidden=!0),fe!==null&&(U(fe.scene,ke,me.frame!==null),q(ke,fe.widthMm,fe.sample)),(o?.svg!==fe?.svg||o?.widthMm!==fe?.widthMm||o?.sample!==fe?.sample)&&H(fe),T()}return u.addEventListener("animationend",()=>u.classList.remove("proof__stage--printing")),{root:N,toolbar:A,update:be,current:()=>o,onDrawn(X){r.push(X)}}}var iO=["svg","png","pdf","eps","jpeg","webp"],ca={svg:"app.export.format-svg",png:"app.export.format-png",pdf:"app.export.format-pdf",eps:"app.export.format-eps",jpeg:"app.export.format-jpeg",webp:"app.export.format-webp"},aO={svg:"app.export.hint-svg",png:"app.export.hint-png",pdf:"app.export.hint-pdf",eps:"app.export.hint-eps",jpeg:"app.export.hint-jpeg",webp:"app.export.hint-webp"};function mv(e,t,n){let r={format:"png",sizing:"pixels",widthPx:null,sizeMm:null,dpi:null,colourSpace:null,bleedMm:0,cropMarks:!1,quality:.92};function o(){let T={};return(r.format==="png"||r.format==="jpeg"||r.format==="webp")&&(r.sizing==="pixels"&&r.widthPx!==null&&(T.widthPx=r.widthPx),r.sizing==="print"&&(r.sizeMm!==null&&(T.sizeMm=r.sizeMm),r.dpi!==null&&(T.dpi=r.dpi)),r.format!=="png"&&(T.quality=r.quality)),(r.format==="pdf"||r.format==="eps")&&(r.sizeMm!==null&&(T.sizeMm=r.sizeMm),r.colourSpace!==null&&(T.colourSpace=r.colourSpace)),r.format==="pdf"&&(r.bleedMm>0&&(T.bleedMm=r.bleedMm),r.cropMarks&&(T.cropMarks=!0)),T}function s(T){e.announce(yt(Fe(T)))}async function i(){let T=await e.studio.run({type:"export",format:r.format,options:o()});if(!T.ok){s(T.error);return}let I=_n(T.value.bytes,T.value.filename,T.value.mime);if(!I.ok){s(I.error);return}let U=T.value.issues.map(Ft);e.announce([v("app.export.saved",{filename:T.value.filename}),...U].join(" "))}async function a(){let T=await e.studio.run({type:"export",format:"png",options:{widthPx:1024}});if(!T.ok){s(T.error);return}let I=await Hy(T.value.bytes);I.ok?e.announce(v("app.export.copied-image")):s(I.error)}async function l(){let T=await e.studio.run({type:"export",format:"svg",options:{}});if(!T.ok){s(T.error);return}let I=await _o(new TextDecoder().decode(T.value.bytes));I.ok?e.announce(v("app.export.copied-svg")):s(I.error)}function c(){let T=t()?.current()??null;T===null||T.sample||(Fr(n,T.svg),n.style.setProperty("width",`${T.widthMm}mm`),n.alt=v("app.export.print-alt",{size:zn(T.widthMm)}))}function u(){c(),window.print()}window.addEventListener("beforeprint",c);let d=de(v("app.export.download-format",{format:v(ca.png)}),{icon:"download",primary:!0,onClick:()=>void i()}),m=de(v("app.export.copy-image"),{icon:"copy",onClick:()=>void a()}),f=de(v("app.export.copy-svg"),{icon:"copy",onClick:()=>void l()}),p=de(v("app.export.print"),{icon:"print",onClick:u}),h=M("div",{className:"proof__actions"},[d,m,f,p]),g=de(v("app.export.download-format",{format:v(ca.png)}),{icon:"download",primary:!0,onClick:()=>void i()}),y=M("span",{className:"dock__note"}),b=M("div",{className:"dock",attrs:{role:"region","aria-label":v("app.dock.label")}},[y,g]),x=M("p",{className:"note note--info"});x.hidden=!0;let w=M("p",{className:"field__hint"}),k=Ve(v("app.export.format"),iO.map(T=>({value:T,label:v(ca[T])})),T=>{r.format=T,A(),D()},"segments");k.set(r.format);let S=M("div",{className:"export__options"}),E=de(v("app.export.download"),{icon:"download",primary:!0,onClick:()=>void i()}),R=M("div",{className:"panel export"},[k.root,x,w,S,E]);function C(T,I,U,q,H){let W=M("input",{className:"input input--number",attrs:{type:"number",inputmode:"decimal",...q}}),$=I();return W.value=$===null?"":String($),W.addEventListener("change",()=>{let be=W.value.trim(),X=be===""?null:Number(be);U(X!==null&&Number.isFinite(X)?X:null)}),W.setAttribute("placeholder",v("app.export.automatic")),ct(T,W,H).root}function A(){let T=r.format,I=[];if(T==="png"||T==="jpeg"||T==="webp"){let q=Ve(v("app.export.size"),[{value:"pixels",label:v("app.export.size-pixels")},{value:"print",label:v("app.export.size-print")}],H=>{r.sizing=H,A()});if(q.set(r.sizing),I.push(q.root),r.sizing==="pixels"?I.push(C(v("app.export.width-px"),()=>r.widthPx,H=>{r.widthPx=H===null?null:Math.round(H)},{min:16,max:16384,step:1},v("app.export.width-px-hint"))):I.push(C(v("app.export.width-mm"),()=>r.sizeMm,H=>{r.sizeMm=H},{min:5,max:2e3,step:.5}),C(v("app.export.dpi"),()=>r.dpi,H=>{r.dpi=H},{min:72,max:2400,step:1})),T!=="png"){let H=or(v("app.export.quality"),{min:.5,max:1,step:.01},W=>oa(W),W=>{r.quality=W});H.set(r.quality),I.push(H.root)}}else if(T==="pdf"||T==="eps"){I.push(C(v("app.export.width-mm"),()=>r.sizeMm,H=>{r.sizeMm=H},{min:5,max:2e3,step:.5},v("app.export.width-mm-hint")));let q=Ve(v("app.export.colour-space"),[{value:"srgb",label:v("app.export.colour-srgb")},{value:"cmyk",label:v("app.export.colour-cmyk")}],H=>{r.colourSpace=H});if(q.set(r.colourSpace??e.snapshot().design.effective.output.colourSpace),I.push(q.root),T==="pdf"){I.push(C(v("app.export.bleed"),()=>r.bleedMm===0?null:r.bleedMm,W=>{r.bleedMm=W??0},{min:0,max:50,step:.5}));let H=M("input",{attrs:{type:"checkbox"},on:{change:()=>{r.cropMarks=H.checked}}});H.checked=r.cropMarks,I.push(M("label",{className:"tick"},[H,M("span",{text:v("app.export.crop-marks")})]))}}le(S,I),S.hidden=I.length===0}A();let O=null;function D(){let T=v("app.export.download-format",{format:v(ca[r.format])});rr(d,T),rr(g,T),Z(w,v(aO[r.format])),O!==null&&N(O)}D();function N(T){O=T;let I=T.symbol.status==="ok";for(let H of[d,m,f,p,g,E])H.disabled=!I;let U=T.preview?.epsIssues??[],q=k.inputs().find(H=>H.value==="eps");q!==void 0&&(q.disabled=U.length>0),x.hidden=U.length===0,U.length>0&&(Z(x,U.map(Ft).join(" ")),r.format==="eps"&&(r.format="pdf",k.set("pdf"),A(),D())),Z(y,I?v(T.form.labelKey):T.symbol.status==="stale"?v("app.proof.not-updated"):v("app.proof.sample"))}return{panel:{root:R,update:N,meta:()=>v(ca[r.format])},actions:h,dock:b,download:i,print:u}}var lO=5,cO=15;function ko(e,t,n){let r={"camera/permission-denied":"The camera is not allowed for this page. Allow it in the browser settings, or choose a picture instead.","camera/unavailable":"No camera could be opened. Choose a picture instead.","camera/in-use":"The camera is in use by another app or tab. Close it there, then try again.","camera/insecure-context":"The camera only works on a secure page. Open this page over https, or choose a picture instead."};return new K(e,r[e],{reason:t},n===void 0?void 0:{cause:n})}function uO(e){switch(e?.name){case"NotAllowedError":case"SecurityError":case"PermissionDeniedError":return ko("camera/permission-denied","denied",e);case"NotFoundError":case"DevicesNotFoundError":return ko("camera/unavailable","no-device",e);case"OverconstrainedError":case"ConstraintNotSatisfiedError":return ko("camera/unavailable","constraints",e);case"NotReadableError":case"TrackStartError":case"AbortError":return ko("camera/in-use","in-use",e);default:return ko("camera/unavailable","no-api",e)}}function dO(e){let t={width:{ideal:1920},height:{ideal:1080}};return e.deviceId!==void 0?{deviceId:{exact:e.deviceId},...t}:{facingMode:e.facingMode??"environment",...t}}async function mO(e,t){try{return await e({video:dO(t),audio:!1})}catch(n){let r=n?.name;if(r!=="OverconstrainedError"&&r!=="ConstraintNotSatisfiedError")throw n;return e({video:!0,audio:!1})}}var Ip=0;function fv(e){for(let t of e.getTracks())t.stop()}function pv(){return typeof navigator<"u"&&navigator.mediaDevices?.getUserMedia!==void 0?e=>navigator.mediaDevices.getUserMedia(e):void 0}function fO(){if(!(typeof document>"u"))return e=>{let t=()=>{document.visibilityState==="hidden"&&e()};return document.addEventListener("visibilitychange",t),()=>document.removeEventListener("visibilitychange",t)}}function pO(){return typeof requestAnimationFrame=="function"?{request:requestAnimationFrame,cancel:cancelAnimationFrame}:{request:e=>setTimeout(e,16),cancel:e=>clearTimeout(e)}}async function hv(e){let t=e.deps??{};if(!(t.isSecureContext??(typeof isSecureContext=="boolean"?isSecureContext:!1)))return Y(ko("camera/insecure-context","insecure"));let r=t.getUserMedia??pv();if(r===void 0)return Y(ko("camera/unavailable","no-api"));let o=t.now??(()=>Date.now()),s=t.requestFrame===void 0||t.cancelFrame===void 0?pO():null,i=t.requestFrame??s.request,a=t.cancelFrame??s.cancel,l=e.decode??(U=>Tr(U,{...e.decodeOptions,budget:{maxAttempts:lO,...e.decodeOptions?.budget}},e.symbologies));e.onStatus?.({state:"requesting"});let c=Ip+=1,u;try{u=await mO(r,e)}catch(U){return e.onStatus?.({state:"stopped"}),Y(uO(U))}let d=()=>(fv(u),e.video.srcObject===u&&(e.video.srcObject=null),ae({stop:()=>{},stopped:!0,superseded:!0}));if(c!==Ip)return d();e.video.srcObject=u;try{await e.video.play()}catch{}if(c!==Ip)return d();let m=e.video,f=u.getVideoTracks()[0],p=D0({maxPixels:e.maxPixels??Dm,...t.createCanvas===void 0?{}:{createCanvas:t.createCanvas}}),h=1e3/(e.scansPerSecond??cO),g=typeof m.requestVideoFrameCallback=="function",y=[],b=!1,x=null,w=!1,k=Number.NEGATIVE_INFINITY,S=0,E=()=>{x!==null&&(g?m.cancelVideoFrameCallback?.(x):a(x),x=null)},R=()=>{if(!b){b=!0,E(),fv(u),m.srcObject===u&&(m.srcObject=null);for(let U of y)U();e.onStatus?.({state:"stopped"})}},C=()=>{x=g?m.requestVideoFrameCallback.call(m,O):i(O)},A=(U,q)=>{w=!1,k=o(),S=k-U,!b&&q.ok&&q.value.length>0&&e.onResult(q.value)};function O(){if(x=null,b||(C(),w||o()-k<Math.max(h,S)))return;let U=o(),q=p(m);if(!q.ok)return;w=!0;let H;try{H=l(q.value)}catch{A(U,ae([]));return}typeof H.then=="function"?H.then(W=>A(U,W),()=>A(U,ae([]))):A(U,H)}f!==void 0&&typeof f.addEventListener=="function"&&(f.addEventListener("ended",R),y.push(()=>f.removeEventListener("ended",R)));let D={stop:R,get stopped(){return b},superseded:!1},T=(t.addVisibilityListener??fO())?.(R);if(T!==void 0&&y.push(T),b)return T?.(),ae(D);let I=f!==void 0&&typeof f.getSettings=="function"?f.getSettings():null;return e.onStatus?.({state:"live",settings:I}),C(),ae(D)}function Pp(e={}){return(e.isSecureContext??(typeof isSecureContext=="boolean"?isSecureContext:!1))&&(e.getUserMedia??pv())!==void 0}function hO(e,t){let n=e.snapshot().catalogue.symbologies.find(r=>r.id===t);return n===void 0?t:v(n.labelKey)}function gv(e){let t=M("video",{className:"viewfinder__video",attrs:{playsinline:!0,muted:!0,autoplay:!0,"aria-hidden":"true"}});t.muted=!0;let n=It("svg",{class:"viewfinder__outline","aria-hidden":"true",preserveAspectRatio:"xMidYMid meet"}),r=M("p",{className:"viewfinder__status"}),o=M("div",{className:"viewfinder"},[t,n,M("span",{className:"viewfinder__frame",attrs:{"aria-hidden":"true"}})]);o.dataset.live="false";let s=null,i=de(v("app.scan.camera-start"),{icon:"camera",primary:!0,onClick:()=>{s!==null&&!s.stopped?a():l()}});function a(){s?.stop(),s=null,o.dataset.live="false",le(n,[]),rr(i,v("app.scan.camera-start"))}async function l(){if(!Pp()){Z(r,v("app.scan.camera-unavailable")),o.dataset.live="refused";return}Z(r,v("app.scan.camera-requesting"));let T=await hv({video:t,symbologies:e.registries.symbologies,onStatus:I=>{I.state==="live"?(o.dataset.live="true",Z(r,v("app.scan.camera-live")),rr(i,v("app.scan.camera-stop"))):I.state==="stopped"&&(o.dataset.live="false",rr(i,v("app.scan.camera-start")))},onResult:I=>{c(I),a(),Z(r,v("app.scan.camera-read")),A(I)}});if(!T.ok){o.dataset.live="refused",Z(r,`${yt(Fe(T.error))} ${v("app.scan.camera-fallback")}`);return}T.value.superseded||(s=T.value)}function c(T){t.videoWidth!==0&&(n.setAttribute("viewBox",`0 0 ${t.videoWidth} ${t.videoHeight}`),le(n,T.map(I=>It("polygon",{points:I.corners.map(U=>`${U.x},${U.y}`).join(" ")}))))}let u=M("input",{attrs:{type:"file",accept:"image/*"}});u.hidden=!0,u.addEventListener("change",()=>{let T=u.files?.[0];u.value="",T!==void 0&&N(T)});let d=de(v("app.scan.choose"),{icon:"image",onClick:()=>u.click()}),m=M("div",{className:"dropzone",attrs:{role:"group","aria-label":v("app.scan.drop")}},[lt("image","dropzone__icon"),M("p",{className:"dropzone__text",text:v("app.scan.drop")}),d,M("p",{className:"field__hint",text:v("app.scan.paste-hint")}),u]);m.addEventListener("dragover",T=>{T.preventDefault(),m.dataset.over="true"}),m.addEventListener("dragleave",()=>{m.dataset.over="false"}),m.addEventListener("drop",T=>{T.preventDefault(),T.stopPropagation(),m.dataset.over="false";let I=T.dataTransfer?.files[0];I!==void 0&&N(I)});let f=M("p",{className:"results__status"}),p=M("ol",{className:"results__list"}),h=de(v("app.scan.clear"),{small:!0,onClick:()=>{le(p,[]),Z(f,v("app.scan.nothing-yet")),h.hidden=!0}});h.hidden=!0;let g=M("section",{className:"results",attrs:{"aria-labelledby":"results-title"}},[M("div",{className:"results__head"},[M("h2",{className:"results__title",id:"results-title",text:v("app.scan.results")}),h]),f,p]);Z(f,v("app.scan.nothing-yet"));let y=M("div",{className:"scan"},[M("div",{className:"scan__intro"},[M("h2",{className:"mode__title",text:v("app.scan.title")}),M("p",{className:"mode__lede",text:v("app.scan.intro")})]),M("div",{className:"scan__grid"},[M("div",{className:"card card--static scan__inputs"},[M("div",{className:"card__body"},[o,M("div",{className:"viewfinder__controls"},[i,r]),m])]),g])]);Pp()||(Z(r,v("app.scan.camera-unavailable")),o.dataset.live="refused");function b(T){e.dispatch({type:"payload/raw",text:T});let I=e.snapshot();if(I.refusal?.action==="payload/raw"){e.announce(I.refusal.issues.map(U=>v(U.code,U.params??{})).join(" "));return}e.dispatch({type:"mode",mode:"create"}),e.announce(v("app.scan.remade"))}function x(T){return M("pre",{className:"results__text",attrs:{tabindex:0}},[T])}function w(T,I,U){let q=[M("p",{className:"results__symbol",text:v("app.scan.symbol",{symbology:hO(e,T.symbology),version:T.version,level:T.ecLevel})})];if(T.part!==null&&q.push(M("p",{className:"tag",text:v("app.scan.part",{index:T.part.index+1,total:T.part.total})})),I!==null&&I.payload!==null){let H=I.payload,W=e.registries.payloads.get(H.typeId);if(q.push(M("h3",{className:"notes__title",text:v("app.scan.type")})),q.push(M("p",{className:"results__type",text:W===void 0?H.typeId:v(W.labelKey)})),W!==void 0){q.push(M("p",{className:"field__hint",text:v(W.actionKey)}));let $=[];for(let be of W.fields){let X=H.value[be.key],ne=Array.isArray(X)?X.filter(me=>me!=="").join(", "):X==null||X===!1?"":String(X);ne!==""&&($.push(M("dt",{text:v(be.labelKey)})),$.push(be.kind==="secret"?M("dd",{},[k(ne)]):M("dd",{className:"results__value",text:ne})))}$.length>0&&q.push(M("dl",{className:"facts"},$))}}if(I?.safety!==null&&I?.safety!==void 0){let H=I.safety;H.displayHost!==null&&(q.push(M("h3",{className:"notes__title",text:v("app.scan.destination")})),q.push(M("p",{className:"results__host",text:H.unicodeHost??H.displayHost})),H.unicodeHost!==null&&H.unicodeHost!==H.displayHost&&q.push(M("p",{className:"field__hint",text:v("app.scan.host-ascii",{host:H.displayHost})}))),q.push(M("h3",{className:"notes__title",text:v("app.scan.safety")})),q.push(H.findings.length===0?M("p",{className:"note note--info",text:v("app.scan.safety-none")}):M("ul",{className:"notes__list"},H.findings.map(W=>M("li",{className:`note note--${W.severity==="danger"?"error":W.severity==="caution"?"warning":"info"}`},[lt(W.severity==="danger"?"fail":"warn"),M("span",{text:v(iu(W.code),W.params??{})})]))))}return q.push(M("h3",{className:"notes__title",text:v("app.scan.text")})),q.push(x(T.text)),U&&q.push(M("p",{className:"note note--info",text:v("app.scan.inspect-unavailable")})),q.push(M("div",{className:"results__actions"},[de(v("app.scan.remake"),{primary:!0,small:!0,onClick:()=>b(T.text)}),de(v("app.scan.copy-text"),{small:!0,icon:"copy",onClick:async()=>{let H=await _o(T.text);e.announce(H.ok?v("app.scan.copied"):yt(Fe(H.error)))}})])),M("li",{className:"card card--static results__card"},[M("div",{className:"card__body"},q)])}function k(T){let I=M("span",{className:"results__value results__value--secret",text:"\u25CF".repeat(Math.min(12,T.length))}),U=!1,q=de(v("app.content.show-secret"),{small:!0,icon:"eye",attrs:{"aria-pressed":"false"},onClick:()=>{U=!U,Z(I,U?T:"\u25CF".repeat(Math.min(12,T.length))),q.setAttribute("aria-pressed",String(U))}});return M("span",{className:"results__secret"},[I,q])}function S(T){h.hidden=!1,le(p,[]),Z(f,yt(T)),e.announce(yt(T))}function E(T,I,U){h.hidden=!1;let q=T.length===1?v("app.scan.found-one"):v("app.scan.found-many",{count:T.length});Z(f,q),le(p,T.map(H=>w(H,I,U))),e.announce(q),p.querySelector("h3, .results__symbol")?.scrollIntoView?.({block:"nearest"})}function R(T){return T.map(I=>({text:I.read.bitstream.text,symbology:I.symbology,version:I.read.version,ecLevel:I.read.ecLevel,part:I.read.bitstream.structuredAppend}))}function C(T){return T.symbols.map(I=>({text:I.text,symbology:I.symbology,version:I.version,ecLevel:I.ecLevel,part:I.structuredAppend}))}async function A(T){let I=T.map(q=>q.read.bitstream.text).join(""),U=await e.studio.run({type:"inspect/text",text:I});U.ok?E(R(T),U.value,!1):E(R(T),null,O(Fe(U.error)))}function O(T){return T.code==="platform/unavailable"&&T.params.feature==="inspect"}async function D(T){Z(f,v("app.scan.reading"));let I=await e.studio.run({type:"inspect/image",image:T});if(I.ok){I.value.symbols.length===0?S(Fe(yv())):E(C(I.value),I.value,!1);return}let U=Fe(I.error);if(!O(U)){S(U);return}let q=Tr(T,{},e.registries.symbologies);if(!q.ok){S(Fe(q.error));return}if(q.value.length===0){S(Fe(yv()));return}E(R(q.value),null,!0)}async function N(T){Z(f,v("app.scan.reading"));let I=await io(T);if(!I.ok){S(Fe(I.error));return}await D(I.value)}return document.addEventListener("paste",T=>{e.snapshot().document.mode==="scan"&&O0(T).then(I=>{I.ok?I.value!==null&&D(I.value):S(Fe(I.error))})}),{root:y,readBlob:N,stopCamera:a,update(T){T.document.mode!=="scan"&&s!==null&&a()}}}function yv(){return new K("decode/not-found","No code was found in this picture.")}var zr=["create","scan","bulk"];function kv(e,t){let n=e.replace(/^#/,"");try{n=decodeURIComponent(n)}catch{}let r=null,o=null,s=null;for(let i of n.split(/[/&]/)){let a=i.replace(/^(?:mode|type|design)=/,"");a.startsWith("v1.")?r=a:zr.includes(a)?o=a:a!==""&&t(a)&&(s=a)}return{design:r,mode:o,typeId:s}}var zs=Jl(),vv=Jy({registries:zs}),Sv=e=>{let t=zs.payloads.get(e);return t!==void 0&&t.generate!==!1},vo=kv(location.hash,Sv),Dp=null;function yO(){if(vo.mode===null&&vo.typeId===null)return vo.design??void 0;let e;if(vo.design!==null)try{e=yi(vo.design,zs.design)}catch{Dp=v("studio.issue.design-link")}return{mode:vo.mode??"create",typeId:vo.typeId??"url",fields:{},...e===void 0?{}:{design:e},conditions:eo}}var ut=mp({registries:zs,library:vv,rasterEncoder:j0(),initial:yO()}),Fs=M("p",{className:"toast",attrs:{role:"status","aria-live":"polite"}});Fs.dataset.shown="false";var Cp=null,We={studio:ut,registries:zs,library:vv,dispatch:e=>ut.dispatch(e),snapshot:()=>ut.getSnapshot(),announce(e){Fs.textContent="",Fs.dataset.shown="true",requestAnimationFrame(()=>{Fs.textContent=e}),Cp!==null&&clearTimeout(Cp),Cp=setTimeout(()=>{Fs.dataset.shown="false"},6e3)}};rn("version").textContent="0.1.1";rn("font-licence").textContent=cy;Z(rn("about-title"),v("app.about.title"));Z(rn("facts-title"),v("app.about.facts"));Z(rn("version-label"),v("app.about.version"));Z(rn("source-label"),v("app.about.source"));Z(rn("licence-title"),v("app.about.licence"));Z(rn("licence-intro"),v("app.about.licence-intro"));Z(rn("check-it"),v("app.about.check"));rn("about-title").parentElement?.appendChild(lt("chevron","card__chevron"));var Mv=M("img",{className:"print-sheet__img",attrs:{alt:""}});document.body.appendChild(M("div",{className:"print-sheet"},[Mv]));var Fp=M("div",{className:"strip-host"}),Up=M("div",{className:"actions-host"}),Ev=null,Us=mv(We,()=>Ev,Mv),Mo=dv(We,Up,Fp);Ev=Mo;var uu=z2(We,Mo);Fp.appendChild(uu.root);Up.appendChild(Us.actions);function Tv(){ut.getSnapshot().history.canUndo&&(ut.dispatch({type:"history/undo"}),We.announce(v("app.history.undone")))}function jp(){ut.getSnapshot().history.canRedo&&(ut.dispatch({type:"history/redo"}),We.announce(v("app.history.redone")))}var Rv=de(v("app.history.undo"),{icon:"undo",small:!0,attrs:{"aria-keyshortcuts":"Control+Z Meta+Z","aria-label":v("app.history.undo")},onClick:Tv}),Av=de(v("app.history.redo"),{icon:"redo",small:!0,attrs:{"aria-keyshortcuts":"Control+Shift+Z Meta+Shift+Z","aria-label":v("app.history.redo")},onClick:jp}),gO=de(v("app.link.copy"),{icon:"link",small:!0,attrs:{"aria-label":v("app.link.copy")},onClick:async()=>{let e=await ut.run({type:"design-link"});if(!e.ok){We.announce(v("error.design.invalid"));return}let t=`#${e.value.link}`,n=await _o(t);We.announce(n.ok?[v("app.link.copied"),...e.value.issues.map(Ft)].join(" "):v("app.link.copy-failed"))}}),bO={create:"app.mode.create",scan:"app.mode.scan",bulk:"app.mode.bulk"},xO={create:"app.mode.create-hint",scan:"app.mode.scan-hint",bulk:"app.mode.bulk-hint"},Iv=zr.map(e=>{let t=M("button",{className:"tab",id:`tab-${e}`,attrs:{type:"button",role:"tab","aria-controls":`panel-${e}`},on:{click:()=>ut.dispatch({type:"mode",mode:e}),keydown:n=>{let r=zr.indexOf(e),o=-1;if(n.key==="ArrowRight"||n.key==="ArrowDown"?o=(r+1)%zr.length:n.key==="ArrowLeft"||n.key==="ArrowUp"?o=(r+zr.length-1)%zr.length:n.key==="Home"?o=0:n.key==="End"&&(o=zr.length-1),o===-1)return;n.preventDefault();let s=zr[o];ut.dispatch({type:"mode",mode:s}),document.getElementById(`tab-${s}`)?.focus()}}},[M("span",{className:"tab__label",text:v(bO[e])}),M("span",{className:"tab__hint",text:v(xO[e])})]);return{mode:e,tab:t}}),wO=M("header",{className:"masthead"},[M("div",{className:"masthead__words"},[M("p",{className:"eyebrow",text:v("app.masthead.eyebrow")}),M("h1",{className:"masthead__title",text:v("app.masthead.title")}),M("p",{className:"masthead__lede",text:v("app.masthead.lede")})]),M("div",{className:"masthead__tools"},[M("div",{className:"tabs",attrs:{role:"tablist","aria-label":v("app.mode.label")}},Iv.map(e=>e.tab)),M("div",{className:"tools",attrs:{role:"group","aria-label":v("app.tools.label")}},[Rv,Av,gO])])]),Np=G2(We),kO={root:Np.root,update:Np.update,meta:Np.meta},bv=on(2,v("app.section.style"),!0,"card-style"),Bp=av(We,e=>cu(We,e)),ma=[{card:on(1,v("app.section.content"),!0,"card-content"),panel:kO},{card:bv,panel:Z2(We,bv.root)},{card:on(3,v("app.section.modules"),!1,"card-modules"),panel:J2(We)},{card:on(4,v("app.section.eyes"),!1,"card-eyes"),panel:nv(We)},{card:on(5,v("app.section.colour"),!1,"card-colour"),panel:rv(We)},{card:on(6,v("app.section.logo"),!1,"card-logo"),panel:ov(We)},{card:on(7,v("app.section.frame"),!1,"card-frame"),panel:sv(We)},{card:on(8,v("app.section.print"),!1,"card-print"),panel:iv(We)},{card:on(9,v("app.section.check"),!1,"card-check"),panel:V2(We)},{card:on(10,v("app.section.export"),!1,"card-export"),panel:Us.panel},{card:on(11,v("app.section.library"),!1,"card-library"),panel:Bp}];for(let e of ma)e.card.body.appendChild(e.panel.root);var ua=M("div",{className:"notice",attrs:{role:"alert"}});ua.hidden=!0;var Pv=M("span",{className:"proof-sentinel",attrs:{"aria-hidden":"true"}}),So=M("div",{className:"create__proof"},[Mo.root]);So.dataset.compact="false";var zp=M("span",{className:"proof-spacer",attrs:{"aria-hidden":"true"}}),Cv=M("section",{className:"mode",id:"panel-create",attrs:{role:"tabpanel","aria-labelledby":"tab-create"}},[Pv,M("div",{className:"create"},[M("div",{className:"create__controls"},[ua,...ma.map(e=>e.card.root)]),So,zp])]),Vp=window.matchMedia("(max-width: 699px)");typeof IntersectionObserver=="function"&&new IntersectionObserver(([e])=>{let t=Vp.matches&&e!==void 0&&!e.isIntersecting&&e.boundingClientRect.top<0;if(String(t)===So.dataset.compact)return;let n=So.offsetHeight;So.dataset.compact=String(t);let r=So.offsetHeight;zp.style.setProperty("height",t?`${Math.max(0,n-r)}px`:"0px")}).observe(Pv);var Lp=e=>ma.find(t=>t.card.root.id===e)?.card,vO=Mo.toolbar.parentElement;function Nv(){Vp.matches?(Lp("card-check")?.body.prepend(uu.root),Lp("card-export")?.body.appendChild(Us.actions),Lp("card-print")?.body.prepend(Mo.toolbar)):(Fp.appendChild(uu.root),Up.appendChild(Us.actions),vO.appendChild(Mo.toolbar),So.dataset.compact="false",zp.style.setProperty("height","0px"))}Nv();Vp.addEventListener("change",Nv);var du=gv(We),qp=L2(We),Lv=M("section",{className:"mode",id:"panel-scan",attrs:{role:"tabpanel","aria-labelledby":"tab-scan"}},[du.root]),Ov=M("section",{className:"mode",id:"panel-bulk",attrs:{role:"tabpanel","aria-labelledby":"tab-bulk"}},[qp.root]),SO={create:Cv,scan:Lv,bulk:Ov},fa=M("div",{className:"veil",attrs:{"aria-hidden":"true"}},[M("div",{className:"veil__card"},[M("p",{className:"veil__title",text:v("app.drop.title")}),M("p",{className:"veil__text",text:v("app.drop.text")})])]);fa.dataset.shown="false";le(rn("app"),[wO,Cv,Lv,Ov]);document.body.appendChild(Us.dock);document.body.appendChild(Fs);document.body.appendChild(fa);var da=0,Dv=e=>[...e.dataTransfer?.types??[]].includes("Files");window.addEventListener("dragenter",e=>{Dv(e)&&(da+=1,fa.dataset.shown="true")});window.addEventListener("dragleave",()=>{da=Math.max(0,da-1),da===0&&(fa.dataset.shown="false")});window.addEventListener("dragover",e=>{Dv(e)&&e.preventDefault()});window.addEventListener("drop",()=>{da=0,fa.dataset.shown="false"},!0);window.addEventListener("drop",e=>{e.preventDefault();let t=e.dataTransfer?.files[0];t!==void 0&&MO(t)});async function MO(e){let t=e.name.toLowerCase();if(t.endsWith(wi)){await Bp.openFile(e);return}if(t.endsWith(".json")||e.type==="application/json"){await Bp.openDesign(e);return}if(e.type.startsWith("image/")){ut.dispatch({type:"mode",mode:"scan"}),await du.readBlob(e);return}if(/\.(csv|tsv|txt)$/.test(t)||e.type==="text/csv"){ut.dispatch({type:"mode",mode:"bulk"}),await qp.readFile(e);return}We.announce(v("app.drop.unknown"))}document.addEventListener("keydown",e=>{if(!(e.metaKey||e.ctrlKey)||e.altKey||N2(e.target))return;let t=e.key.toLowerCase();t==="z"?(e.preventDefault(),e.shiftKey?jp():Tv()):t==="y"&&e.ctrlKey&&!e.metaKey&&(e.preventDefault(),jp())});window.addEventListener("hashchange",()=>{let e=kv(location.hash,Sv);if(e.mode!==null&&ut.dispatch({type:"mode",mode:e.mode}),e.typeId!==null&&ut.dispatch({type:"payload/type",typeId:e.typeId}),e.design!==null)try{let t=yi(e.design,zs.design);ut.dispatch({type:"design/replace",design:t}),We.announce(v("app.design.applied"))}catch{We.announce(v("studio.issue.design-link"))}});var xv=null,wv=null;function jv(){let e=ut.getSnapshot(),t=e.document.mode;if(t!==xv){xv=t,document.body.dataset.mode=t;for(let{mode:r,tab:o}of Iv){let s=r===t;o.setAttribute("aria-selected",String(s)),o.tabIndex=s?0:-1,SO[r].hidden=!s}}if(Rv.disabled=!e.history.canUndo,Av.disabled=!e.history.canRedo,e.refusal!==wv){wv=e.refusal;let r=e.refusal;r===null||r.issues.length===0?ua.hidden=!0:(Z(ua,r.issues.map(Ft).join(" ")),ua.hidden=!1)}if(t==="create"){Mo.update(e),uu.update(e);for(let r of ma)r.card.root.open&&r.panel.update(e),Z(r.card.meta,r.panel.meta(e))}Us.panel.update(e);let n=[du,qp];for(let r of n)r.update(e)}for(let e of ma)e.card.root.addEventListener("toggle",()=>{e.card.root.open&&e.panel.update(ut.getSnapshot())});var Op=!1;ut.subscribe(()=>{Op||(Op=!0,queueMicrotask(()=>{Op=!1,jv()}))});jv();ut.dispatch({type:"verify/request"});Dp!==null&&We.announce(Dp);window.addEventListener("pagehide",()=>{du.stopCamera()});})();
188
188
  </script>
189
189
  </body>
190
190
  </html>