From 0eeac1bb920f460820acea4c43f4b909da5b7643 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Mon, 19 Oct 2026 13:00:31 +0400 Subject: [PATCH] docs: normalize badge in-app checkout wireframe --- ...026-09-23-badge-in-app-checkout.excalidraw | 9588 +---------------- 1 file changed, 243 insertions(+), 9345 deletions(-) diff --git a/plans/sketches/2026-09-23-badge-in-app-checkout.excalidraw b/plans/sketches/2026-09-23-badge-in-app-checkout.excalidraw index 25caf53711..3e48751677 100644 --- a/plans/sketches/2026-09-23-badge-in-app-checkout.excalidraw +++ b/plans/sketches/2026-09-23-badge-in-app-checkout.excalidraw @@ -3,9350 +3,248 @@ "version": 2, "source": "https://excalidraw-jetbrains-plugin", "elements": [ - { - "id": "hdr-bg", - "type": "rectangle", - "x": 0, - "y": 0, - "width": 2500, - "height": 96, - "strokeColor": "transparent", - "backgroundColor": "#1c1e26", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": null, - "groupIds": [ - "header" - ], - "seed": 1001, - "index": "a000", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "hdr-title", - "type": "text", - "x": 40, - "y": 24, - "width": 620, - "height": 28, - "strokeColor": "#ffffff", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "header" - ], - "seed": 1002, - "text": "Buying a badge - hidden codes", - "fontSize": 22, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a001", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Buying a badge - hidden codes", - "lineHeight": 1.2727272727272727 - }, - { - "id": "hdr-sub", - "type": "text", - "x": 40, - "y": 58, - "width": 1500, - "height": 15, - "strokeColor": "#a0a6b0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "header" - ], - "seed": 1003, - "text": "the shipped code purchase, reused whole: the page still mints a code, the deep link carries it, and the buyer never sees it. solid = exists, dashed = does not", - "fontSize": 12, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a002", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "the shipped code purchase, reused whole: the page still mints a code, the deep link carries it, and the buyer never sees it. solid = exists, dashed = does not", - "lineHeight": 1.25 - }, - { - "id": "hdr-r1", - "type": "text", - "x": 2260, - "y": 26, - "width": 200, - "height": 15, - "strokeColor": "#a0a6b0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "header" - ], - "seed": 1004, - "text": "in-app checkout", - "fontSize": 12, - "fontFamily": 2, - "textAlign": "right", - "verticalAlign": "top", - "autoResize": false, - "index": "a003", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "in-app checkout", - "lineHeight": 1.25 - }, - { - "id": "hdr-r2", - "type": "text", - "x": 2260, - "y": 48, - "width": 200, - "height": 14, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "header" - ], - "seed": 1005, - "text": "wireframes", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "right", - "verticalAlign": "top", - "autoResize": false, - "index": "a004", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "wireframes", - "lineHeight": 1.2727272727272727 - }, - { - "id": "l1-band", - "type": "rectangle", - "x": 20, - "y": 150, - "width": 2460, - "height": 850, - "strokeColor": "transparent", - "backgroundColor": "#eef5ff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "lane1" - ], - "seed": 1010, - "index": "a010", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "l1-head", - "type": "text", - "x": 60, - "y": 178, - "width": 900, - "height": 22, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "lane1" - ], - "seed": 1011, - "text": "Non-store builds - the browser does all of it", - "fontSize": 17, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a011", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Non-store builds - the browser does all of it", - "lineHeight": 1.2941176470588236 - }, - { - "id": "l1-sub", - "type": "text", - "x": 60, - "y": 206, - "width": 1300, - "height": 14, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "lane1" - ], - "seed": 1012, - "text": "no catalog API, no invoice API, no in-app checkout: the app opens the page, the page sells a code, the deep link brings it home", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a012", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "no catalog API, no invoice API, no in-app checkout: the app opens the page, the page sells a code, the deep link brings it home", - "lineHeight": 1.2727272727272727 - }, - { - "id": "a1-panel", - "type": "rectangle", - "x": 60, - "y": 260, - "width": 300, - "height": 620, - "strokeColor": "#8f97a3", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1101, - "boundElements": [ - { - "id": "ar-a1a2", - "type": "arrow" - } - ], - "index": "a020", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a1-title", - "type": "text", - "x": 80, - "y": 306, - "width": 260, - "height": 24, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1102, - "text": "Support SimpleX", - "fontSize": 19, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a021", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Support SimpleX", - "lineHeight": 1.263157894736842 - }, - { - "id": "a1-body", - "type": "text", - "x": 76, - "y": 348, - "width": 268, - "height": 39, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1103, - "text": "Get a badge to send larger files (2-5GB)\nthat stay available longer (7-21 days),\nand to show it on your profile.", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a022", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Get a badge to send larger files (2-5GB)\nthat stay available longer (7-21 days),\nand to show it on your profile.", - "lineHeight": 1.3 - }, - { - "id": "a1-info", - "type": "text", - "x": 80, - "y": 404, - "width": 260, - "height": 13, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1104, - "text": "(i) How badges protect your privacy", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a023", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "(i) How badges protect your privacy", - "lineHeight": 1.3 - }, - { - "id": "a1-hero", - "type": "rectangle", - "x": 132, - "y": 448, - "width": 156, - "height": 156, - "strokeColor": "transparent", - "backgroundColor": "#e8eef7", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1105, - "index": "a024", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a1-herot", - "type": "text", - "x": 132, - "y": 519, - "width": 156, - "height": 12, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1106, - "text": "phone-supporter", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a025", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "phone-supporter", - "lineHeight": 1.3333333333333333 - }, - { - "id": "a1-btn", - "type": "rectangle", - "x": 90, - "y": 730, - "width": 240, - "height": 38, - "strokeColor": "transparent", - "backgroundColor": "#0053d0", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1107, - "boundElements": [ - { - "id": "a1-btnt", - "type": "text" - } - ], - "index": "a026", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a1-btnt", - "type": "text", - "x": 100, - "y": 742, - "width": 220, - "height": 14, - "strokeColor": "#ffffff", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1108, - "text": "Buy in browser", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "a1-btn", - "index": "a027", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "originalText": "Buy in browser", - "autoResize": true, - "lineHeight": 1.2727272727272727 - }, - { - "id": "a1-sec", - "type": "text", - "x": 80, - "y": 786, - "width": 260, - "height": 13, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1109, - "text": "Redeem code", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a028", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Redeem code", - "lineHeight": 1.3 - }, - { - "id": "a1-secn", - "type": "text", - "x": 80, - "y": 806, - "width": 260, - "height": 12, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1112, - "text": "the manual path, for a code from elsewhere", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a029", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "the manual path, for a code from elsewhere", - "lineHeight": 1.3333333333333333 - }, - { - "id": "a1-capt", - "type": "text", - "x": 60, - "y": 900, - "width": 300, - "height": 14, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1110, - "text": "A1. BadgesSupportSimplexView", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a02a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "A1. BadgesSupportSimplexView", - "lineHeight": 1.2727272727272727 - }, - { - "id": "a1-capb", - "type": "text", - "x": 60, - "y": 920, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A1", - "lane1" - ], - "seed": 1111, - "text": "Get your code becomes the primary button and loses the\nconfirm-in-browser alert - the tap opens the browser. Redeem\nbadge code drops to the text button. The info button stays as\nit is - the file's TODO would swap it for Why SimpleX is built\nonce purchase lands, and it should not.\nchooseLevelButton() is never called in this build.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a02b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Get your code becomes the primary button and loses the\nconfirm-in-browser alert - the tap opens the browser. Redeem\nbadge code drops to the text button. The info button stays as\nit is - the file's TODO would swap it for Why SimpleX is built\nonce purchase lands, and it should not.\nchooseLevelButton() is never called in this build.", - "lineHeight": 1.2222222222222223 - }, - { - "id": "a2-panel", - "type": "rectangle", - "x": 480, - "y": 260, - "width": 300, - "height": 620, - "strokeColor": "#8f97a3", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1201, - "boundElements": [ - { - "id": "ar-a1a2", - "type": "arrow" - }, - { - "id": "ar-a2a3", - "type": "arrow" - } - ], - "index": "a030", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a2-url", - "type": "rectangle", - "x": 480, - "y": 260, - "width": 300, - "height": 26, - "strokeColor": "transparent", - "backgroundColor": "#eceef1", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1202, - "index": "a031", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a2-urlt", - "type": "text", - "x": 496, - "y": 268, - "width": 268, - "height": 12, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1203, - "text": "badges.simplex.chat/#/tier?app=true", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a032", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "badges.simplex.chat/#/tier?app=true", - "lineHeight": 1.3333333333333333 - }, - { - "id": "a2-title", - "type": "text", - "x": 496, - "y": 312, - "width": 268, - "height": 22, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1204, - "text": "Choose your badge", - "fontSize": 17, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a033", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Choose your badge", - "lineHeight": 1.2941176470588236 - }, - { - "id": "a2-lede", - "type": "text", - "x": 496, - "y": 342, - "width": 268, - "height": 13, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1205, - "text": "Larger files that stay available longer.", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a034", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Larger files that stay available longer.", - "lineHeight": 1.368421052631579 - }, - { - "id": "a2-c1", - "type": "rectangle", - "x": 496, - "y": 378, - "width": 130, - "height": 150, - "strokeColor": "#d6dae0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1206, - "index": "a035", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a2-c1i", - "type": "rectangle", - "x": 545, - "y": 398, - "width": 32, - "height": 32, - "strokeColor": "transparent", - "backgroundColor": "#dfe4ea", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1207, - "index": "a036", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a2-c1t", - "type": "text", - "x": 504, - "y": 442, - "width": 114, - "height": 52, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1208, - "text": "Supporter\n2GB files\n\n$7/month", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a037", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Supporter\n2GB files\n\n$7/month", - "lineHeight": 1.3 - }, - { - "id": "a2-c2", - "type": "rectangle", - "x": 634, - "y": 378, - "width": 130, - "height": 150, - "strokeColor": "#0053d0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1209, - "index": "a038", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a2-c2i", - "type": "rectangle", - "x": 683, - "y": 398, - "width": 32, - "height": 32, - "strokeColor": "transparent", - "backgroundColor": "#dfe4ea", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1210, - "index": "a039", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a2-c2t", - "type": "text", - "x": 642, - "y": 442, - "width": 114, - "height": 52, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1211, - "text": "Legend\n5GB files\n\n$70/month", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a03a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Legend\n5GB files\n\n$70/month", - "lineHeight": 1.3 - }, - { - "id": "a2-btn", - "type": "rectangle", - "x": 496, - "y": 560, - "width": 268, - "height": 36, - "strokeColor": "transparent", - "backgroundColor": "#0053d0", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1212, - "boundElements": [ - { - "id": "a2-btnt", - "type": "text" - } - ], - "index": "a03b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a2-btnt", - "type": "text", - "x": 506, - "y": 571, - "width": 248, - "height": 14, - "strokeColor": "#ffffff", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1213, - "text": "Continue", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "a2-btn", - "index": "a03c", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "originalText": "Continue", - "autoResize": true, - "lineHeight": 1.2727272727272727 - }, - { - "id": "a2-capt", - "type": "text", - "x": 480, - "y": 900, - "width": 300, - "height": 14, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1215, - "text": "A2. Where the link lands", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a03d", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "A2. Where the link lands", - "lineHeight": 1.2727272727272727 - }, - { - "id": "a2-capb", - "type": "text", - "x": 480, - "y": 920, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A2", - "lane1" - ], - "seed": 1216, - "text": "The page's own second screen, quoted as it is. The flag\nin #/tier?app=true skips its Support SimpleX, which the\napp has just shown. NEW on the page: read that flag, start\nhere, and carry it: the session to checkout, then the order.\nThe app builds the URL, so it can also say which kind of\napp it is - better than guessing from the user agent.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a03e", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "The page's own second screen, quoted as it is. The flag\nin #/tier?app=true skips its Support SimpleX, which the\napp has just shown. NEW on the page: read that flag, start\nhere, and carry it: the session to checkout, then the order.\nThe app builds the URL, so it can also say which kind of\napp it is - better than guessing from the user agent.", - "lineHeight": 1.2222222222222223 - }, - { - "id": "a3-panel", - "type": "rectangle", - "x": 900, - "y": 260, - "width": 300, - "height": 620, - "strokeColor": "#8f97a3", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1301, - "boundElements": [ - { - "id": "ar-a2a3", - "type": "arrow" - }, - { - "id": "ar-a3a4", - "type": "arrow" - } - ], - "index": "a040", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a3-url", - "type": "rectangle", - "x": 900, - "y": 260, - "width": 300, - "height": 26, - "strokeColor": "transparent", - "backgroundColor": "#eceef1", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1302, - "index": "a041", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a3-urlt", - "type": "text", - "x": 916, - "y": 268, - "width": 268, - "height": 12, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1303, - "text": "badges.simplex.chat/#/tier?app=true", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a042", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "badges.simplex.chat/#/tier?app=true", - "lineHeight": 1.3333333333333333 - }, - { - "id": "a3-title", - "type": "text", - "x": 916, - "y": 312, - "width": 268, - "height": 22, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1304, - "text": "How long?", - "fontSize": 17, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a043", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "How long?", - "lineHeight": 1.2941176470588236 - }, - { - "id": "a3-lede", - "type": "text", - "x": 916, - "y": 342, - "width": 268, - "height": 13, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1305, - "text": "Legend - 5GB files, 21 days", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a044", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Legend - 5GB files, 21 days", - "lineHeight": 1.368421052631579 - }, - { - "id": "a3-c1", - "type": "rectangle", - "x": 916, - "y": 378, - "width": 84, - "height": 124, - "strokeColor": "#d6dae0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1306, - "index": "a045", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a3-c1t", - "type": "text", - "x": 920, - "y": 418, - "width": 76, - "height": 39, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1307, - "text": "1 month\n\n$70", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a046", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "1 month\n\n$70", - "lineHeight": 1.3 - }, - { - "id": "a3-c2", - "type": "rectangle", - "x": 1008, - "y": 378, - "width": 84, - "height": 124, - "strokeColor": "#d6dae0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1308, - "index": "a047", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a3-c2t", - "type": "text", - "x": 1012, - "y": 412, - "width": 76, - "height": 52, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1309, - "text": "3 months\n\n$140\none month free", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a048", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "3 months\n\n$140\none month free", - "lineHeight": 1.3 - }, - { - "id": "a3-c3", - "type": "rectangle", - "x": 1100, - "y": 378, - "width": 84, - "height": 124, - "strokeColor": "#0053d0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1310, - "index": "a049", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a3-c3t", - "type": "text", - "x": 1104, - "y": 412, - "width": 76, - "height": 52, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1311, - "text": "12 months\n\n$420\nsave 50%", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a04a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "12 months\n\n$420\nsave 50%", - "lineHeight": 1.3 - }, - { - "id": "a3-note", - "type": "text", - "x": 916, - "y": 520, - "width": 268, - "height": 24, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1312, - "text": "Paid once, for the months you choose.\nNo subscription.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a04b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Paid once, for the months you choose.\nNo subscription.", - "lineHeight": 1.3333333333333333 - }, - { - "id": "a3-btn", - "type": "rectangle", - "x": 916, - "y": 560, - "width": 268, - "height": 36, - "strokeColor": "transparent", - "backgroundColor": "#0053d0", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1313, - "boundElements": [ - { - "id": "a3-btnt", - "type": "text" - } - ], - "index": "a04c", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a3-btnt", - "type": "text", - "x": 926, - "y": 571, - "width": 248, - "height": 14, - "strokeColor": "#ffffff", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1314, - "text": "Continue", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "a3-btn", - "index": "a04d", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "originalText": "Continue", - "autoResize": true, - "lineHeight": 1.2727272727272727 - }, - { - "id": "a3-capt", - "type": "text", - "x": 900, - "y": 900, - "width": 300, - "height": 14, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1315, - "text": "A3. Unchanged", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a04e", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "A3. Unchanged", - "lineHeight": 1.2727272727272727 - }, - { - "id": "a3-capb", - "type": "text", - "x": 900, - "y": 920, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A3", - "lane1" - ], - "seed": 1316, - "text": "The page's own screen, and the source of the names this\nplan adopts in the app: Choose your badge, How long?,\nCheck your order. Prices and offers are the compiled catalog\nthe page already has, so getBadgeCatalog is not needed by\nanyone in this lane.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a04f", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "The page's own screen, and the source of the names this\nplan adopts in the app: Choose your badge, How long?,\nCheck your order. Prices and offers are the compiled catalog\nthe page already has, so getBadgeCatalog is not needed by\nanyone in this lane.", - "lineHeight": 1.4666666666666666 - }, - { - "id": "a4-panel", - "type": "rectangle", - "x": 1320, - "y": 260, - "width": 300, - "height": 620, - "strokeColor": "#8f97a3", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1401, - "boundElements": [ - { - "id": "ar-a3a4", - "type": "arrow" - }, - { - "id": "ar-a4a5", - "type": "arrow" - } - ], - "index": "a050", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a4-url", - "type": "rectangle", - "x": 1320, - "y": 260, - "width": 300, - "height": 26, - "strokeColor": "transparent", - "backgroundColor": "#eceef1", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1402, - "index": "a051", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a4-urlt", - "type": "text", - "x": 1336, - "y": 268, - "width": 268, - "height": 12, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1403, - "text": "badges.simplex.chat/?order=8f3a...", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a052", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "badges.simplex.chat/?order=8f3a...", - "lineHeight": 1.3333333333333333 - }, - { - "id": "a4-title", - "type": "text", - "x": 1336, - "y": 312, - "width": 268, - "height": 22, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1404, - "text": "Check your order", - "fontSize": 17, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a053", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Check your order", - "lineHeight": 1.2941176470588236 - }, - { - "id": "a4-rowsL", - "type": "text", - "x": 1336, - "y": 352, - "width": 160, - "height": 48, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1405, - "text": "Your badge\nDuration\nLaunch discount: 50% off\nTotal", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a054", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Your badge\nDuration\nLaunch discount: 50% off\nTotal", - "lineHeight": 1.263157894736842 - }, - { - "id": "a4-rowsR", - "type": "text", - "x": 1508, - "y": 352, - "width": 96, - "height": 48, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1406, - "text": "Legend\n12 months\n-$420.00\n$420.00", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "right", - "verticalAlign": "top", - "autoResize": false, - "index": "a055", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Legend\n12 months\n-$420.00\n$420.00", - "lineHeight": 1.263157894736842 - }, - { - "id": "a4-label", - "type": "text", - "x": 1336, - "y": 420, - "width": 100, - "height": 12, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1407, - "text": "PAY WITH", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a056", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "PAY WITH", - "lineHeight": 1.3333333333333333 - }, - { - "id": "a4-m1", - "type": "rectangle", - "x": 1336, - "y": 438, - "width": 84, - "height": 60, - "strokeColor": "#d6dae0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1408, - "index": "a057", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a4-m1t", - "type": "text", - "x": 1340, - "y": 460, - "width": 76, - "height": 13, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1409, - "text": "Bitcoin", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a058", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Bitcoin", - "lineHeight": 1.3 - }, - { - "id": "a4-m2", - "type": "rectangle", - "x": 1428, - "y": 438, - "width": 84, - "height": 60, - "strokeColor": "#0053d0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1410, - "index": "a059", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a4-m2t", - "type": "text", - "x": 1432, - "y": 460, - "width": 76, - "height": 13, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1411, - "text": "Monero", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a05a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Monero", - "lineHeight": 1.3 - }, - { - "id": "a4-m3", - "type": "rectangle", - "x": 1520, - "y": 438, - "width": 84, - "height": 60, - "strokeColor": "#d6dae0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1412, - "index": "a05b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a4-m3t", - "type": "text", - "x": 1524, - "y": 460, - "width": 76, - "height": 13, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1413, - "text": "Card", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a05c", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Card", - "lineHeight": 1.3 - }, - { - "id": "a4-btn", - "type": "rectangle", - "x": 1336, - "y": 560, - "width": 268, - "height": 36, - "strokeColor": "transparent", - "backgroundColor": "#0053d0", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1414, - "boundElements": [ - { - "id": "a4-btnt", - "type": "text" - } - ], - "index": "a05d", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a4-btnt", - "type": "text", - "x": 1346, - "y": 571, - "width": 248, - "height": 14, - "strokeColor": "#ffffff", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1415, - "text": "Pay $420.00 with Monero", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "a4-btn", - "index": "a05e", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "originalText": "Pay $420.00 with Monero", - "autoResize": true, - "lineHeight": 1.2727272727272727 - }, - { - "id": "a4-capt", - "type": "text", - "x": 1320, - "y": 900, - "width": 300, - "height": 14, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1416, - "text": "A4. Unchanged, and the pay screens after it", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a05f", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "A4. Unchanged, and the pay screens after it", - "lineHeight": 1.2727272727272727 - }, - { - "id": "a4-capb", - "type": "text", - "x": 1320, - "y": 920, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A4", - "lane1" - ], - "seed": 1417, - "text": "The method is picked here and the code is minted here, as\ntoday: the browser generates it and sends only its SHA-256.\nSend 1.482 XMR, the countdown and Payment received follow\nand are unchanged, so they are not drawn. The service needs\nno new API for this lane at all.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a05g", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "The method is picked here and the code is minted here, as\ntoday: the browser generates it and sends only its SHA-256.\nSend 1.482 XMR, the countdown and Payment received follow\nand are unchanged, so they are not drawn. The service needs\nno new API for this lane at all.", - "lineHeight": 1.4666666666666666 - }, - { - "id": "a5-panel", - "type": "rectangle", - "x": 1740, - "y": 260, - "width": 300, - "height": 620, - "strokeColor": "#0053d0", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dashed", - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1501, - "boundElements": [ - { - "id": "ar-a4a5", - "type": "arrow" - }, - { - "id": "ar-a5a6", - "type": "arrow" - } - ], - "index": "a060", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a5-url", - "type": "rectangle", - "x": 1740, - "y": 260, - "width": 300, - "height": 26, - "strokeColor": "transparent", - "backgroundColor": "#eceef1", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1502, - "index": "a061", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a5-urlt", - "type": "text", - "x": 1756, - "y": 268, - "width": 268, - "height": 12, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1503, - "text": "badges.simplex.chat/?order=8f3a...", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a062", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "badges.simplex.chat/?order=8f3a...", - "lineHeight": 1.3333333333333333 - }, - { - "id": "a5-title", - "type": "text", - "x": 1756, - "y": 312, - "width": 268, - "height": 22, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1504, - "text": "Paid", - "fontSize": 17, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a063", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Paid", - "lineHeight": 1.2941176470588236 - }, - { - "id": "a5-lede", - "type": "text", - "x": 1756, - "y": 344, - "width": 268, - "height": 26, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1505, - "text": "Opening SimpleX to add your badge.\nIf nothing happens, use the button.", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a064", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Opening SimpleX to add your badge.\nIf nothing happens, use the button.", - "lineHeight": 1.368421052631579 - }, - { - "id": "a5-btn", - "type": "rectangle", - "x": 1756, - "y": 396, - "width": 268, - "height": 38, - "strokeColor": "transparent", - "backgroundColor": "#0053d0", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1506, - "boundElements": [ - { - "id": "a5-btnt", - "type": "text" - } - ], - "index": "a065", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a5-btnt", - "type": "text", - "x": 1766, - "y": 408, - "width": 248, - "height": 14, - "strokeColor": "#ffffff", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1507, - "text": "Return to SimpleX", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "a5-btn", - "index": "a066", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "originalText": "Return to SimpleX", - "autoResize": true, - "lineHeight": 1.2727272727272727 - }, - { - "id": "a5-sec", - "type": "text", - "x": 1756, - "y": 452, - "width": 268, - "height": 13, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1508, - "text": "Show code", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a067", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Show code", - "lineHeight": 1.3 - }, - { - "id": "a5-link", - "type": "rectangle", - "x": 1756, - "y": 496, - "width": 268, - "height": 34, - "strokeColor": "#d6dae0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1509, - "index": "a068", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a5-linkt", - "type": "text", - "x": 1762, - "y": 507, - "width": 256, - "height": 13, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1510, - "text": "simplexchat:/badge/code/SB-4K2M9-...", - "fontSize": 9, - "fontFamily": 3, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a069", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "simplexchat:/badge/code/SB-4K2M9-...", - "lineHeight": 1.4444444444444444 - }, - { - "id": "a5-note", - "type": "text", - "x": 1756, - "y": 544, - "width": 268, - "height": 33, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1511, - "text": "the page tries this on load; the button is\nthe backup, and Show code is the\nbackup to the backup", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a06a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "the page tries this on load; the button is\nthe backup, and Show code is the\nbackup to the backup", - "lineHeight": 1.2222222222222223 - }, - { - "id": "a5-capt", - "type": "text", - "x": 1740, - "y": 900, - "width": 300, - "height": 14, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1512, - "text": "A5. New: the code leaves by link, not by eye", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a06b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "A5. New: the code leaves by link, not by eye", - "lineHeight": 1.2727272727272727 - }, - { - "id": "a5-capb", - "type": "text", - "x": 1740, - "y": 920, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A5", - "lane1" - ], - "seed": 1513, - "text": "Replaces codeIssued for a mobile app purchase. The flag is\nnot in the URL here - it rode the session to checkout and is\nstamped on the order. The code is still minted and saved, so\nShow code recovers it if the link fails; a code that could\nnot be saved gets the plain screen instead. simplexchat: is a\nscheme of its own, so a badge link can never be read as a\nconnection link. The attempt is silent where it is blocked.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a06c", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Replaces codeIssued for a mobile app purchase. The flag is\nnot in the URL here - it rode the session to checkout and is\nstamped on the order. The code is still minted and saved, so\nShow code recovers it if the link fails; a code that could\nnot be saved gets the plain screen instead. simplexchat: is a\nscheme of its own, so a badge link can never be read as a\nconnection link. The attempt is silent where it is blocked.", - "lineHeight": 1.2222222222222223 - }, - { - "id": "a6-panel", - "type": "rectangle", - "x": 2160, - "y": 260, - "width": 300, - "height": 620, - "strokeColor": "#0053d0", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dashed", - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1601, - "boundElements": [ - { - "id": "ar-a5a6", - "type": "arrow" - } - ], - "index": "a070", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a6-title", - "type": "text", - "x": 2180, - "y": 306, - "width": 260, - "height": 24, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1602, - "text": "Badge is being issued", - "fontSize": 18, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a071", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Badge is being issued", - "lineHeight": 1.3333333333333333 - }, - { - "id": "a6-spin", - "type": "ellipse", - "x": 2288, - "y": 380, - "width": 44, - "height": 44, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1603, - "index": "a072", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a6-spint", - "type": "text", - "x": 2180, - "y": 440, - "width": 260, - "height": 12, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1604, - "text": "progress", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a073", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "progress", - "lineHeight": 1.3333333333333333 - }, - { - "id": "a6-body", - "type": "text", - "x": 2186, - "y": 478, - "width": 248, - "height": 39, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1605, - "text": "This takes a moment. You do not\nneed to do anything, and you can\nclose the app.", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a074", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "This takes a moment. You do not\nneed to do anything, and you can\nclose the app.", - "lineHeight": 1.368421052631579 - }, - { - "id": "a6-then", - "type": "rectangle", - "x": 2176, - "y": 600, - "width": 268, - "height": 96, - "strokeColor": "#8f97a3", - "backgroundColor": "#f2f3f5", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1606, - "index": "a075", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a6-theni", - "type": "rectangle", - "x": 2190, - "y": 612, - "width": 240, - "height": 72, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1607, - "index": "a076", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a6-theng", - "type": "rectangle", - "x": 2298, - "y": 620, - "width": 24, - "height": 24, - "strokeColor": "transparent", - "backgroundColor": "#dfe4ea", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1608, - "index": "a077", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "a6-thent", - "type": "text", - "x": 2180, - "y": 650, - "width": 260, - "height": 13, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1609, - "text": "Legend", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a078", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Legend", - "lineHeight": 1.3 - }, - { - "id": "a6-thens", - "type": "text", - "x": 2180, - "y": 666, - "width": 260, - "height": 11, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1610, - "text": "shown on your profile", - "fontSize": 8.5, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a079", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "shown on your profile", - "lineHeight": 1.2941176470588236 - }, - { - "id": "a6-thenn", - "type": "text", - "x": 2160, - "y": 708, - "width": 300, - "height": 11, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1611, - "text": "then BadgesYourBadgeView, unchanged", - "fontSize": 8.5, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a07a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "then BadgesYourBadgeView, unchanged", - "lineHeight": 1.2941176470588236 - }, - { - "id": "a6-capt", - "type": "text", - "x": 2160, - "y": 900, - "width": 300, - "height": 14, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1612, - "text": "A6. New screen, and the only new app state", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a07b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "A6. New screen, and the only new app state", - "lineHeight": 1.2727272727272727 - }, - { - "id": "a6-capb", - "type": "text", - "x": 2160, - "y": 920, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "A6", - "lane1" - ], - "seed": 1613, - "text": "The deep link lands here, not on Redeem code: a pasted code\nand a QR scanner make no sense when the code arrived by\nlink. It calls the existing apiRedeemBadgeCode and shows its\nfailures as that screen does. Naming: Redeeming code names\nthe mechanism, Badge is being issued names the outcome -\nand the outcome is what the buyer cares about.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a07c", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "The deep link lands here, not on Redeem code: a pasted code\nand a QR scanner make no sense when the code arrived by\nlink. It calls the existing apiRedeemBadgeCode and shows its\nfailures as that screen does. Naming: Redeeming code names\nthe mechanism, Badge is being issued names the outcome -\nand the outcome is what the buyer cares about.", - "lineHeight": 1.2222222222222223 - }, - { - "id": "ar-a1a2", - "type": "arrow", - "x": 368, - "y": 570, - "width": 104, - "height": 0, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "strokeWidth": 2, - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 1701, - "points": [ - [ - 0, - 0 - ], - [ - 104, - 0 - ] - ], - "startArrowhead": null, - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-a1a2-t", - "type": "text" - } - ], - "index": "a080", - "version": 2, - "versionNonce": 1538965901, - "isDeleted": false, - "fillStyle": "solid", - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251194517, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-a1a2-t", - "type": "text", - "x": 365.810546875, - "y": 563.5, - "width": 108.37890625, - "height": 13, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 1702, - "text": "Buy in browser - no alert", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-a1a2", - "index": "a081", - "version": 3, - "versionNonce": 709045891, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251191288, - "link": null, - "locked": false, - "originalText": "Buy in browser - no alert", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "ar-a2a3", - "type": "arrow", - "x": 788, - "y": 570, - "width": 104, - "height": 0, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "strokeWidth": 2, - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 1703, - "points": [ - [ - 0, - 0 - ], - [ - 104, - 0 - ] - ], - "startArrowhead": null, - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-a2a3-t", - "type": "text" - } - ], - "index": "a082", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-a2a3-t", - "type": "text", - "x": 800, - "y": 556, - "width": 80, - "height": 13, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 1704, - "text": "Continue", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-a2a3", - "index": "a083", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "originalText": "Continue", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "ar-a3a4", - "type": "arrow", - "x": 1208, - "y": 570, - "width": 104, - "height": 0, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "strokeWidth": 2, - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 1705, - "points": [ - [ - 0, - 0 - ], - [ - 104, - 0 - ] - ], - "startArrowhead": null, - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-a3a4-t", - "type": "text" - } - ], - "index": "a084", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-a3a4-t", - "type": "text", - "x": 1220, - "y": 556, - "width": 80, - "height": 13, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 1706, - "text": "Continue", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-a3a4", - "index": "a085", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "originalText": "Continue", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "ar-a4a5", - "type": "arrow", - "x": 1628, - "y": 570, - "width": 104, - "height": 0, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "strokeWidth": 2, - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 1707, - "points": [ - [ - 0, - 0 - ], - [ - 104, - 0 - ] - ], - "startArrowhead": null, - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-a4a5-t", - "type": "text" - } - ], - "index": "a086", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-a4a5-t", - "type": "text", - "x": 1640, - "y": 556, - "width": 80, - "height": 13, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 1708, - "text": "it settles", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-a4a5", - "index": "a087", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "originalText": "it settles", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "ar-a5a6", - "type": "arrow", - "x": 2048, - "y": 570, - "width": 104, - "height": 0, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "strokeWidth": 2, - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 1709, - "points": [ - [ - 0, - 0 - ], - [ - 104, - 0 - ] - ], - "startArrowhead": null, - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-a5a6-t", - "type": "text" - } - ], - "index": "a088", - "version": 2, - "versionNonce": 737650275, - "isDeleted": false, - "fillStyle": "solid", - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251382068, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-a5a6-t", - "type": "text", - "x": 2056.93115234375, - "y": 557, - "width": 86.1376953125, - "height": 26, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 1710, - "text": "simplexchat: carries\nthe code", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-a5a6", - "index": "a089", - "version": 4, - "versionNonce": 1743168653, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251380246, - "link": null, - "locked": false, - "originalText": "simplexchat: carries the code", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "l2-band", - "type": "rectangle", - "x": 20, - "y": 1040, - "width": 2460, - "height": 850, - "strokeColor": "transparent", - "backgroundColor": "#f5f1ff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "lane2" - ], - "seed": 2010, - "index": "a100", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "l2-head", - "type": "text", - "x": 60, - "y": 1068, - "width": 900, - "height": 22, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "lane2" - ], - "seed": 2011, - "text": "Store builds - the store path in the app, the browser alongside it", - "fontSize": 17, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a101", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Store builds - the store path in the app, the browser alongside it", - "lineHeight": 1.2941176470588236 - }, - { - "id": "l2-sub", - "type": "text", - "x": 60, - "y": 1096, - "width": 1300, - "height": 14, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "lane2" - ], - "seed": 2012, - "text": "Buy in browser runs lane A unchanged; only these four screens and the outcomes after them are in-app, and only here", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a102", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Buy in browser runs lane A unchanged; only these four screens and the outcomes after them are in-app, and only here", - "lineHeight": 1.2727272727272727 - }, - { - "id": "b1-panel", - "type": "rectangle", - "x": 60, - "y": 1150, - "width": 300, - "height": 620, - "strokeColor": "#8f97a3", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2101, - "boundElements": [ - { - "id": "ar-b1b2", - "type": "arrow" - } - ], - "index": "a110", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "b1-title", - "type": "text", - "x": 80, - "y": 1196, - "width": 260, - "height": 24, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2102, - "text": "Support SimpleX", - "fontSize": 19, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a111", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Support SimpleX", - "lineHeight": 1.263157894736842 - }, - { - "id": "b1-body", - "type": "text", - "x": 76, - "y": 1238, - "width": 268, - "height": 39, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2103, - "text": "Get a badge to send larger files (2-5GB)\nthat stay available longer (7-21 days),\nand to show it on your profile.", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a112", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Get a badge to send larger files (2-5GB)\nthat stay available longer (7-21 days),\nand to show it on your profile.", - "lineHeight": 1.3 - }, - { - "id": "b1-info", - "type": "text", - "x": 80, - "y": 1294, - "width": 260, - "height": 13, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2104, - "text": "(i) How badges protect your privacy", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a113", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "(i) How badges protect your privacy", - "lineHeight": 1.3 - }, - { - "id": "b1-hero", - "type": "rectangle", - "x": 132, - "y": 1338, - "width": 156, - "height": 156, - "strokeColor": "transparent", - "backgroundColor": "#efeaf9", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2105, - "index": "a114", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "b1-herot", - "type": "text", - "x": 132, - "y": 1409, - "width": 156, - "height": 12, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2106, - "text": "phone-supporter", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a115", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "phone-supporter", - "lineHeight": 1.3333333333333333 - }, - { - "id": "b1-btn", - "type": "rectangle", - "x": 90, - "y": 1620, - "width": 240, - "height": 38, - "strokeColor": "transparent", - "backgroundColor": "#5b21b6", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2107, - "boundElements": [ - { - "id": "b1-btnt", - "type": "text" - } - ], - "index": "a116", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "b1-btnt", - "type": "text", - "x": 100, - "y": 1632, - "width": 220, - "height": 14, - "strokeColor": "#ffffff", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2108, - "text": "Choose your badge", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "b1-btn", - "index": "a117", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "originalText": "Choose your badge", - "autoResize": true, - "lineHeight": 1.2727272727272727 - }, - { - "id": "b1-sec", - "type": "text", - "x": 80, - "y": 1676, - "width": 260, - "height": 13, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2109, - "text": "Buy in browser", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a118", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Buy in browser", - "lineHeight": 1.3 - }, - { - "id": "b1-secn", - "type": "text", - "x": 80, - "y": 1696, - "width": 260, - "height": 24, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2110, - "text": "where the browser is not allowed,\nthis slot reads Redeem code instead", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a119", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "where the browser is not allowed,\nthis slot reads Redeem code instead", - "lineHeight": 1.3333333333333333 - }, - { - "id": "b1-capt", - "type": "text", - "x": 60, - "y": 1790, - "width": 300, - "height": 14, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2111, - "text": "B1. Two buttons, one of them gated", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a11a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "B1. Two buttons, one of them gated", - "lineHeight": 1.2727272727272727 - }, - { - "id": "b1-capb", - "type": "text", - "x": 60, - "y": 1810, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B1", - "lane2" - ], - "seed": 2112, - "text": "Buy in browser is the same tap as A1's and runs the same\nlane, but only where the store rules allow it - a wider set of\nmarkets than the crowdfunding banner covers, and not pinned\ndown yet. Where it is not allowed the slot reads Redeem code\ninstead, so this screen always offers one of the two and codes\nare never out of reach.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a11b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Buy in browser is the same tap as A1's and runs the same\nlane, but only where the store rules allow it - a wider set of\nmarkets than the crowdfunding banner covers, and not pinned\ndown yet. Where it is not allowed the slot reads Redeem code\ninstead, so this screen always offers one of the two and codes\nare never out of reach.", - "lineHeight": 1.2222222222222223 - }, - { - "id": "b2-panel", - "type": "rectangle", - "x": 480, - "y": 1150, - "width": 300, - "height": 620, - "strokeColor": "#8f97a3", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2201, - "boundElements": [ - { - "id": "ar-b1b2", - "type": "arrow" - }, - { - "id": "ar-b2b3", - "type": "arrow" - } - ], - "index": "a120", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "b2-back", - "type": "text", - "x": 496, - "y": 1168, - "width": 20, - "height": 14, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2202, - "text": "<", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a121", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "<", - "lineHeight": 1.2727272727272727 - }, - { - "id": "b2-title", - "type": "text", - "x": 500, - "y": 1196, - "width": 260, - "height": 24, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2203, - "text": "Choose your badge", - "fontSize": 19, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a122", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Choose your badge", - "lineHeight": 1.263157894736842 - }, - { - "id": "b2-lede", - "type": "text", - "x": 500, - "y": 1236, - "width": 260, - "height": 13, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2204, - "text": "Larger files that stay available longer.", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a123", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Larger files that stay available longer.", - "lineHeight": 1.368421052631579 - }, - { - "id": "b2-avatar", - "type": "ellipse", - "x": 598, - "y": 1268, - "width": 56, - "height": 56, - "strokeColor": "transparent", - "backgroundColor": "#e3e6ea", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2205, - "index": "a124", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "b2-name", - "type": "text", - "x": 500, - "y": 1334, - "width": 260, - "height": 15, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2206, - "text": "My nickname [badge] v", - "fontSize": 12, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a125", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "My nickname [badge] v", - "lineHeight": 1.25 - }, - { - "id": "b2-c1", - "type": "rectangle", - "x": 492, - "y": 1378, - "width": 132, - "height": 150, - "strokeColor": "#5b21b6", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2207, - "index": "a126", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "b2-c1i", - "type": "rectangle", - "x": 542, - "y": 1398, - "width": 32, - "height": 32, - "strokeColor": "transparent", - "backgroundColor": "#dfe4ea", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2208, - "index": "a127", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "b2-c1t", - "type": "text", - "x": 500, - "y": 1442, - "width": 116, - "height": 52, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2209, - "text": "Supporter\nSend 2GB files\n\n$6.99/month", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a128", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Supporter\nSend 2GB files\n\n$6.99/month", - "lineHeight": 1.3 - }, - { - "id": "b2-c2", - "type": "rectangle", - "x": 636, - "y": 1378, - "width": 132, - "height": 150, - "strokeColor": "#d6dae0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2210, - "index": "a129", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "b2-c2i", - "type": "rectangle", - "x": 686, - "y": 1398, - "width": 32, - "height": 32, - "strokeColor": "transparent", - "backgroundColor": "#dfe4ea", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2211, - "index": "a12a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "b2-c2t", - "type": "text", - "x": 644, - "y": 1442, - "width": 116, - "height": 52, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2212, - "text": "Legend\nSend 5GB files\n\n$69.99/month", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a12b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Legend\nSend 5GB files\n\n$69.99/month", - "lineHeight": 1.3 - }, - { - "id": "b2-btn", - "type": "rectangle", - "x": 510, - "y": 1596, - "width": 240, - "height": 38, - "strokeColor": "transparent", - "backgroundColor": "#5b21b6", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2213, - "boundElements": [ - { - "id": "b2-btnt", - "type": "text" - } - ], - "index": "a12c", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001521, - "link": null, - "locked": false - }, - { - "id": "b2-btnt", - "type": "text", - "x": 520, - "y": 1608, - "width": 220, - "height": 14, - "strokeColor": "#ffffff", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2214, - "text": "Continue", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "b2-btn", - "index": "a12d", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "originalText": "Continue", - "autoResize": true, - "lineHeight": 1.2727272727272727 - }, - { - "id": "b2-sec", - "type": "text", - "x": 500, - "y": 1652, - "width": 260, - "height": 13, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2215, - "text": "Redeem code", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a12e", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Redeem code", - "lineHeight": 1.3 - }, - { - "id": "b2-infon", - "type": "text", - "x": 500, - "y": 1676, - "width": 260, - "height": 12, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2216, - "text": "here only when B1 offers the browser;\nthe privacy link always stays on B1", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a12f", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "here only when B1 offers the browser;\nthe privacy link always stays on B1", - "lineHeight": 1.3333333333333333 - }, - { - "id": "b2-capt", - "type": "text", - "x": 480, - "y": 1790, - "width": 300, - "height": 14, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2217, - "text": "B2. BadgesChooseBadgeView", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a130", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "B2. BadgesChooseBadgeView", - "lineHeight": 1.2727272727272727 - }, - { - "id": "b2-capb", - "type": "text", - "x": 480, - "y": 1810, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B2", - "lane2" - ], - "seed": 2218, - "text": "Your level becomes Choose your badge, with the page's lede.\nRedeem code sits here only when B1's slot is taken by Buy in\nbrowser; where the browser is not allowed it stays on B1 and\nthis screen has Continue alone. The privacy link never moves -\nit stays on Support SimpleX in both builds.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a131", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001521, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Your level becomes Choose your badge, with the page's lede.\nRedeem code sits here only when B1's slot is taken by Buy in\nbrowser; where the browser is not allowed it stays on B1 and\nthis screen has Continue alone. The privacy link never moves -\nit stays on Support SimpleX in both builds.", - "lineHeight": 1.4666666666666666 - }, - { - "id": "b3-panel", - "type": "rectangle", - "x": 900, - "y": 1150, - "width": 300, - "height": 620, - "strokeColor": "#8f97a3", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2301, - "boundElements": [ - { - "id": "ar-b2b3", - "type": "arrow" - }, - { - "id": "ar-b3b4", - "type": "arrow" - } - ], - "index": "a132", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "b3-back", - "type": "text", - "x": 916, - "y": 1168, - "width": 20, - "height": 14, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2302, - "text": "<", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a133", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "<", - "lineHeight": 1.2727272727272727 - }, - { - "id": "b3-title", - "type": "text", - "x": 920, - "y": 1196, - "width": 260, - "height": 24, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2303, - "text": "How long?", - "fontSize": 19, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a134", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "How long?", - "lineHeight": 1.263157894736842 - }, - { - "id": "b3-lede", - "type": "text", - "x": 920, - "y": 1236, - "width": 260, - "height": 13, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2304, - "text": "Legend - 5GB files, 21 days", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a135", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Legend - 5GB files, 21 days", - "lineHeight": 1.368421052631579 - }, - { - "id": "b3-avatar", - "type": "ellipse", - "x": 1022, - "y": 1268, - "width": 56, - "height": 56, - "strokeColor": "transparent", - "backgroundColor": "#e3e6ea", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2305, - "index": "a136", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "b3-name", - "type": "text", - "x": 920, - "y": 1334, - "width": 260, - "height": 15, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2306, - "text": "My nickname [badge]", - "fontSize": 12, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a137", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "My nickname [badge]", - "lineHeight": 1.25 - }, - { - "id": "b3-c1", - "type": "rectangle", - "x": 912, - "y": 1386, - "width": 85, - "height": 124, - "strokeColor": "#d6dae0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2307, - "index": "a138", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "b3-c1t", - "type": "text", - "x": 917, - "y": 1426, - "width": 75, - "height": 39, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2308, - "text": "1 month\n\n$69.99", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a139", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "1 month\n\n$69.99", - "lineHeight": 1.3 - }, - { - "id": "b3-c2", - "type": "rectangle", - "x": 1007, - "y": 1386, - "width": 85, - "height": 124, - "strokeColor": "#d6dae0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2309, - "index": "a13a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "b3-c2t", - "type": "text", - "x": 1010, - "y": 1426, - "width": 79, - "height": 39, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2310, - "text": "Monthly\n\n$69.99/month", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a13b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Monthly\n\n$69.99/month", - "lineHeight": 1.3 - }, - { - "id": "b3-c3", - "type": "rectangle", - "x": 1102, - "y": 1386, - "width": 85, - "height": 124, - "strokeColor": "#5b21b6", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 2, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2311, - "index": "a13c", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "b3-c3t", - "type": "text", - "x": 1105, - "y": 1420, - "width": 79, - "height": 52, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2312, - "text": "Annual\n\n$699.99/year\nSave 17%", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a13d", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Annual\n\n$699.99/year\nSave 17%", - "lineHeight": 1.3 - }, - { - "id": "b3-btn", - "type": "rectangle", - "x": 930, - "y": 1620, - "width": 240, - "height": 38, - "strokeColor": "transparent", - "backgroundColor": "#5b21b6", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2313, - "boundElements": [ - { - "id": "b3-btnt", - "type": "text" - } - ], - "index": "a13e", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "b3-btnt", - "type": "text", - "x": 940, - "y": 1632, - "width": 220, - "height": 14, - "strokeColor": "#ffffff", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2314, - "text": "Continue", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "b3-btn", - "index": "a13f", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "originalText": "Continue", - "autoResize": true, - "lineHeight": 1.2727272727272727 - }, - { - "id": "b3-foot", - "type": "text", - "x": 920, - "y": 1676, - "width": 260, - "height": 13, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2315, - "text": "Renews on 24 August 2027. Cancel anytime.", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a140", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Renews on 24 August 2027. Cancel anytime.", - "lineHeight": 1.368421052631579 - }, - { - "id": "b3-capt", - "type": "text", - "x": 900, - "y": 1790, - "width": 300, - "height": 14, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2316, - "text": "B3. BadgesHowLongView, disarmed", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a141", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "B3. BadgesHowLongView, disarmed", - "lineHeight": 1.2727272727272727 - }, - { - "id": "b3-capb", - "type": "text", - "x": 900, - "y": 1810, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B3", - "lane2" - ], - "seed": 2317, - "text": "The level name was the title; now How long? is, with the\nchosen badge on the line under it, as the page does it.\nPay $69.99 becomes Continue and purchase() moves to B4.\nBadgePeriod as written today: one-time, monthly, annual,\nprices from StoreKit and Play, which need not match the web\npage's and generally will not.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a142", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "The level name was the title; now How long? is, with the\nchosen badge on the line under it, as the page does it.\nPay $69.99 becomes Continue and purchase() moves to B4.\nBadgePeriod as written today: one-time, monthly, annual,\nprices from StoreKit and Play, which need not match the web\npage's and generally will not.", - "lineHeight": 1.2222222222222223 - }, - { - "id": "b4-panel", - "type": "rectangle", - "x": 1320, - "y": 1150, - "width": 300, - "height": 620, - "strokeColor": "#5b21b6", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dashed", - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2401, - "boundElements": [ - { - "id": "ar-b3b4", - "type": "arrow" - }, - { - "id": "ar-b4o1", - "type": "arrow" - }, - { - "id": "ar-b4o2", - "type": "arrow" - }, - { - "id": "ar-b4o3", - "type": "arrow" - } - ], - "index": "a143", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "b4-back", - "type": "text", - "x": 1336, - "y": 1168, - "width": 20, - "height": 14, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2402, - "text": "<", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a144", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "<", - "lineHeight": 1.2727272727272727 - }, - { - "id": "b4-title", - "type": "text", - "x": 1340, - "y": 1196, - "width": 260, - "height": 24, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2403, - "text": "Check your order", - "fontSize": 19, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a145", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Check your order", - "lineHeight": 1.263157894736842 - }, - { - "id": "b4-rowsL", - "type": "text", - "x": 1344, - "y": 1270, - "width": 160, - "height": 36, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2404, - "text": "Your badge\nDuration\nTotal", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a146", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Your badge\nDuration\nTotal", - "lineHeight": 1.263157894736842 - }, - { - "id": "b4-rowsR", - "type": "text", - "x": 1500, - "y": 1270, - "width": 96, - "height": 36, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2405, - "text": "Legend\nAnnual\n$699.99/year", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "right", - "verticalAlign": "top", - "autoResize": false, - "index": "a147", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Legend\nAnnual\n$699.99/year", - "lineHeight": 1.263157894736842 - }, - { - "id": "b4-div", - "type": "rectangle", - "x": 1344, - "y": 1292, - "width": 252, - "height": 1, - "strokeColor": "#dfe4ea", - "backgroundColor": "#dfe4ea", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": null, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2406, - "index": "a148", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "b4-note", - "type": "text", - "x": 1344, - "y": 1336, - "width": 252, - "height": 26, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2407, - "text": "Charged by the App Store to the\naccount on this device.", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a149", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Charged by the App Store to the\naccount on this device.", - "lineHeight": 1.368421052631579 - }, - { - "id": "b4-btn", - "type": "rectangle", - "x": 1350, - "y": 1620, - "width": 240, - "height": 38, - "strokeColor": "transparent", - "backgroundColor": "#5b21b6", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2408, - "boundElements": [ - { - "id": "b4-btnt", - "type": "text" - } - ], - "index": "a14a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "b4-btnt", - "type": "text", - "x": 1360, - "y": 1632, - "width": 220, - "height": 14, - "strokeColor": "#ffffff", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2409, - "text": "Pay $699.99/year", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "b4-btn", - "index": "a14b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "originalText": "Pay $699.99/year", - "autoResize": true, - "lineHeight": 1.2727272727272727 - }, - { - "id": "b4-foot", - "type": "text", - "x": 1340, - "y": 1676, - "width": 260, - "height": 13, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2410, - "text": "Renews on 24 August 2027. Cancel anytime.", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a14c", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Renews on 24 August 2027. Cancel anytime.", - "lineHeight": 1.368421052631579 - }, - { - "id": "b4-capt", - "type": "text", - "x": 1320, - "y": 1790, - "width": 300, - "height": 14, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2411, - "text": "B4. New screen, one for every market", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a14d", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "B4. New screen, one for every market", - "lineHeight": 1.2727272727272727 - }, - { - "id": "b4-capb", - "type": "text", - "x": 1320, - "y": 1810, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "B4", - "lane2" - ], - "seed": 2412, - "text": "No second button and nothing about paying elsewhere - that\nchoice was made back on B1. So this screen is identical in\nevery storefront and nothing on it is gated, which also means\nthe subscription never has to be reconciled against a web\nprice.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a14e", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "No second button and nothing about paying elsewhere - that\nchoice was made back on B1. So this screen is identical in\nevery storefront and nothing on it is gated, which also means\nthe subscription never has to be reconciled against a web\nprice.", - "lineHeight": 1.4666666666666666 - }, - { - "id": "o1-card", - "type": "rectangle", - "x": 1740, - "y": 1160, - "width": 300, - "height": 120, - "strokeColor": "#5b21b6", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dashed", - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "O1", - "lane2" - ], - "seed": 2601, - "boundElements": [ - { - "id": "ar-b4o1", - "type": "arrow" - } - ], - "index": "a150", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "o1-t", - "type": "text", - "x": 1760, - "y": 1174, - "width": 260, - "height": 17, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O1", - "lane2" - ], - "seed": 2602, - "text": "Paid", - "fontSize": 13, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a151", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Paid", - "lineHeight": 1.3076923076923077 - }, - { - "id": "o1-s", - "type": "text", - "x": 1760, - "y": 1198, - "width": 260, - "height": 13, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O1", - "lane2" - ], - "seed": 2603, - "text": "o Issuing your badge", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a152", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "o Issuing your badge", - "lineHeight": 1.3 - }, - { - "id": "o1-b", - "type": "text", - "x": 1766, - "y": 1222, - "width": 248, - "height": 26, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O1", - "lane2" - ], - "seed": 2604, - "text": "The store has taken the payment.\nKeeps trying if you close the app.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a153", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "The store has taken the payment.\nKeeps trying if you close the app.", - "lineHeight": 1.4444444444444444 - }, - { - "id": "o2-card", - "type": "rectangle", - "x": 1740, - "y": 1300, - "width": 300, - "height": 96, - "strokeColor": "#8f97a3", - "backgroundColor": "#f2f3f5", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "O2", - "lane2" - ], - "seed": 2605, - "index": "a154", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "o2-i", - "type": "rectangle", - "x": 1756, - "y": 1312, - "width": 268, - "height": 72, - "strokeColor": "transparent", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "O2", - "lane2" - ], - "seed": 2606, - "index": "a155", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "o2-g", - "type": "rectangle", - "x": 1878, - "y": 1320, - "width": 24, - "height": 24, - "strokeColor": "transparent", - "backgroundColor": "#dfe4ea", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "O2", - "lane2" - ], - "seed": 2607, - "index": "a156", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "o2-t", - "type": "text", - "x": 1760, - "y": 1350, - "width": 260, - "height": 13, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O2", - "lane2" - ], - "seed": 2608, - "text": "Legend", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a157", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Legend", - "lineHeight": 1.3 - }, - { - "id": "o2-s", - "type": "text", - "x": 1760, - "y": 1366, - "width": 260, - "height": 11, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O2", - "lane2" - ], - "seed": 2609, - "text": "shown on your profile", - "fontSize": 8.5, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a158", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "shown on your profile", - "lineHeight": 1.2941176470588236 - }, - { - "id": "o2-n", - "type": "text", - "x": 1740, - "y": 1402, - "width": 300, - "height": 11, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O2", - "lane2" - ], - "seed": 2610, - "text": "BadgesYourBadgeView, unchanged", - "fontSize": 8.5, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a159", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "BadgesYourBadgeView, unchanged", - "lineHeight": 1.2941176470588236 - }, - { - "id": "o3-card", - "type": "rectangle", - "x": 1740, - "y": 1424, - "width": 300, - "height": 130, - "strokeColor": "#5b21b6", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "strokeStyle": "dashed", - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "O3", - "lane2" - ], - "seed": 2611, - "boundElements": [ - { - "id": "ar-b4o2", - "type": "arrow" - } - ], - "index": "a15a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "o3-t", - "type": "text", - "x": 1760, - "y": 1438, - "width": 260, - "height": 15, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O3", - "lane2" - ], - "seed": 2612, - "text": "Waiting for approval", - "fontSize": 12, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a15b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Waiting for approval", - "lineHeight": 1.25 - }, - { - "id": "o3-s", - "type": "text", - "x": 1760, - "y": 1460, - "width": 260, - "height": 13, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O3", - "lane2" - ], - "seed": 2613, - "text": "o Nothing has been charged", - "fontSize": 9.5, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a15c", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "o Nothing has been charged", - "lineHeight": 1.368421052631579 - }, - { - "id": "o3-b", - "type": "text", - "x": 1746, - "y": 1484, - "width": 288, - "height": 39, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O3", - "lane2" - ], - "seed": 2614, - "text": "Ask to Buy on iOS, a slow payment on\nPlay. Holds the slot so nothing can be\nbought twice, and becomes Paid above.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a15d", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Ask to Buy on iOS, a slow payment on\nPlay. Holds the slot so nothing can be\nbought twice, and becomes Paid above.", - "lineHeight": 1.4444444444444444 - }, - { - "id": "o4-card", - "type": "rectangle", - "x": 1760, - "y": 1584, - "width": 260, - "height": 120, - "strokeColor": "#d6dae0", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "O4", - "lane2" - ], - "seed": 2615, - "boundElements": [ - { - "id": "ar-b4o3", - "type": "arrow" - } - ], - "index": "a15e", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "o4-t", - "type": "text", - "x": 1776, - "y": 1598, - "width": 228, - "height": 14, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O4", - "lane2" - ], - "seed": 2616, - "text": "Cannot verify this purchase", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a15f", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Cannot verify this purchase", - "lineHeight": 1.2727272727272727 - }, - { - "id": "o4-b", - "type": "text", - "x": 1776, - "y": 1620, - "width": 228, - "height": 39, - "strokeColor": "#4b5563", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O4", - "lane2" - ], - "seed": 2617, - "text": "The store returned a transaction\nthat Apple has not signed. Nothing\nhas been bought.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a15g", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "The store returned a transaction\nthat Apple has not signed. Nothing\nhas been bought.", - "lineHeight": 1.4444444444444444 - }, - { - "id": "o4-d", - "type": "rectangle", - "x": 1760, - "y": 1668, - "width": 260, - "height": 1, - "strokeColor": "#dfe4ea", - "backgroundColor": "#dfe4ea", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": null, - "groupIds": [ - "O4", - "lane2" - ], - "seed": 2618, - "index": "a15h", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "o4-o", - "type": "text", - "x": 1760, - "y": 1678, - "width": 260, - "height": 14, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O4", - "lane2" - ], - "seed": 2619, - "text": "Ok", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a15i", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Ok", - "lineHeight": 1.2727272727272727 - }, - { - "id": "o-note", - "type": "text", - "x": 1740, - "y": 1712, - "width": 300, - "height": 44, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O", - "lane2" - ], - "seed": 2620, - "text": "iOS only - Play does no local verification, so a bad\ntoken is refused by the service instead. cancelled:\nnothing. other errors: today's Purchase error alert.", - "fontSize": 8.5, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a15j", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "iOS only - Play does no local verification, so a bad\ntoken is refused by the service instead. cancelled:\nnothing. other errors: today's Purchase error alert.", - "lineHeight": 1.7254901960784312 - }, - { - "id": "o-capt", - "type": "text", - "x": 1740, - "y": 1790, - "width": 300, - "height": 14, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O", - "lane2" - ], - "seed": 2621, - "text": "B5. What the sheet returns", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a15k", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "B5. What the sheet returns", - "lineHeight": 1.2727272727272727 - }, - { - "id": "o-capb", - "type": "text", - "x": 1740, - "y": 1810, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "O", - "lane2" - ], - "seed": 2622, - "text": "Two of these are states on BadgeState, not alerts: Paid, which\nthe worker retries, and Waiting, which holds nothing but the\nslot - Support SimpleX must not offer a second purchase of a\nconsumable. Both resolve through the store, not the service:\nTransaction.updates on iOS, queryPurchasesAsync on Play,\nwhich is also how each is re-found after a restart.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a15l", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Two of these are states on BadgeState, not alerts: Paid, which\nthe worker retries, and Waiting, which holds nothing but the\nslot - Support SimpleX must not offer a second purchase of a\nconsumable. Both resolve through the store, not the service:\nTransaction.updates on iOS, queryPurchasesAsync on Play,\nwhich is also how each is re-found after a restart.", - "lineHeight": 1.2222222222222223 - }, - { - "id": "ar-b1b2", - "type": "arrow", - "x": 368, - "y": 1460, - "width": 104, - "height": 0, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "strokeWidth": 2, - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 2701, - "points": [ - [ - 0, - 0 - ], - [ - 104, - 0 - ] - ], - "startArrowhead": null, - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-b1b2-t", - "type": "text" - } - ], - "index": "a180", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-b1b2-t", - "type": "text", - "x": 380, - "y": 1446, - "width": 80, - "height": 13, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 2702, - "text": "Choose your badge", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-b1b2", - "index": "a181", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "originalText": "Choose your badge", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "ar-b2b3", - "type": "arrow", - "x": 788, - "y": 1460, - "width": 104, - "height": 0, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "strokeWidth": 2, - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 2703, - "points": [ - [ - 0, - 0 - ], - [ - 104, - 0 - ] - ], - "startArrowhead": null, - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-b2b3-t", - "type": "text" - } - ], - "index": "a182", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-b2b3-t", - "type": "text", - "x": 800, - "y": 1446, - "width": 80, - "height": 13, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 2704, - "text": "Continue", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-b2b3", - "index": "a183", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "originalText": "Continue", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "ar-b3b4", - "type": "arrow", - "x": 1208, - "y": 1460, - "width": 104, - "height": 0, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "strokeWidth": 2, - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 2705, - "points": [ - [ - 0, - 0 - ], - [ - 104, - 0 - ] - ], - "startArrowhead": null, - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-b3b4-t", - "type": "text" - } - ], - "index": "a184", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-b3b4-t", - "type": "text", - "x": 1220, - "y": 1446, - "width": 80, - "height": 13, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 2706, - "text": "Continue", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-b3b4", - "index": "a185", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "originalText": "Continue", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "ar-b4o1", - "type": "arrow", - "x": 1628, - "y": 1220, - "width": 104, - "height": 0, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "strokeWidth": 2, - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 2709, - "points": [ - [ - 0, - 0 - ], - [ - 104, - 0 - ] - ], - "startArrowhead": null, - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-b4o1-t", - "type": "text" - } - ], - "index": "a186", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-b4o1-t", - "type": "text", - "x": 1640, - "y": 1206, - "width": 80, - "height": 13, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 2710, - "text": "verified", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-b4o1", - "index": "a187", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "originalText": "verified", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "ar-b4o2", - "type": "arrow", - "x": 1628, - "y": 1489, - "width": 104, - "height": 0, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "strokeWidth": 2, - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 2711, - "points": [ - [ - 0, - 0 - ], - [ - 104, - 0 - ] - ], - "startArrowhead": null, - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-b4o2-t", - "type": "text" - } - ], - "index": "a188", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-b4o2-t", - "type": "text", - "x": 1640, - "y": 1475, - "width": 80, - "height": 13, - "strokeColor": "#5b21b6", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 2712, - "text": "pending", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-b4o2", - "index": "a189", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "originalText": "pending", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "ar-b4o3", - "type": "arrow", - "x": 1628, - "y": 1644, - "width": 124, - "height": 0, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "strokeWidth": 2, - "strokeStyle": "dashed", - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 2713, - "points": [ - [ - 0, - 0 - ], - [ - 124, - 0 - ] - ], - "startArrowhead": null, - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-b4o3-t", - "type": "text" - } - ], - "index": "a18a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-b4o3-t", - "type": "text", - "x": 1640, - "y": 1630, - "width": 100, - "height": 13, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 2714, - "text": "unverified", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-b4o3", - "index": "a18b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "originalText": "unverified", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "l3-band", - "type": "rectangle", - "x": 20, - "y": 1930, - "width": 2460, - "height": 850, - "strokeColor": "transparent", - "backgroundColor": "#fff6ef", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "lane3" - ], - "seed": 3010, - "index": "a200", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "l3-head", - "type": "text", - "x": 60, - "y": 1958, - "width": 900, - "height": 22, - "strokeColor": "#a15c1e", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "lane3" - ], - "seed": 3011, - "text": "Desktop - where the deep link may not exist", - "fontSize": 17, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a201", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Desktop - where the deep link may not exist", - "lineHeight": 1.2941176470588236 - }, - { - "id": "l3-sub", - "type": "text", - "x": 60, - "y": 1986, - "width": 1300, - "height": 14, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "lane3" - ], - "seed": 3012, - "text": "the fallback is the shipped code flow with both halves opened at once, so nothing depends on a scheme handler that may not be there", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a202", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "the fallback is the shipped code flow with both halves opened at once, so nothing depends on a scheme handler that may not be there", - "lineHeight": 1.2727272727272727 - }, - { - "id": "d1-panel", - "type": "rectangle", - "x": 60, - "y": 2040, - "width": 300, - "height": 620, - "strokeColor": "#8f97a3", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3101, - "boundElements": [ - { - "id": "ar-d1d2", - "type": "arrow" - } - ], - "index": "a210", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "d1-back", - "type": "text", - "x": 76, - "y": 2058, - "width": 20, - "height": 14, - "strokeColor": "#a15c1e", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3102, - "text": "<", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a211", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "<", - "lineHeight": 1.2727272727272727 - }, - { - "id": "d1-title", - "type": "text", - "x": 80, - "y": 2086, - "width": 260, - "height": 24, - "strokeColor": "#a15c1e", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3103, - "text": "Redeem code", - "fontSize": 19, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a212", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Redeem code", - "lineHeight": 1.263157894736842 - }, - { - "id": "d1-body", - "type": "text", - "x": 80, - "y": 2128, - "width": 260, - "height": 13, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3104, - "text": "Paste the code you received.", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a213", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Paste the code you received.", - "lineHeight": 1.3 - }, - { - "id": "d1-field", - "type": "rectangle", - "x": 76, - "y": 2160, - "width": 268, - "height": 40, - "strokeColor": "transparent", - "backgroundColor": "#eceef1", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3105, - "index": "a214", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "d1-fieldt", - "type": "text", - "x": 80, - "y": 2174, - "width": 260, - "height": 13, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3106, - "text": "SB-XXXXX-XXXXX-XXXXX-XXXXX", - "fontSize": 10, - "fontFamily": 3, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a215", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "SB-XXXXX-XXXXX-XXXXX-XXXXX", - "lineHeight": 1.3 - }, - { - "id": "d1-paste", - "type": "text", - "x": 80, - "y": 2216, - "width": 260, - "height": 13, - "strokeColor": "#a15c1e", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3107, - "text": "Paste", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a216", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Paste", - "lineHeight": 1.3 - }, - { - "id": "d1-scan", - "type": "rectangle", - "x": 126, - "y": 2254, - "width": 168, - "height": 168, - "strokeColor": "#d6dae0", - "backgroundColor": "#f2f3f5", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3108, - "index": "a217", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "d1-scant", - "type": "text", - "x": 126, - "y": 2332, - "width": 168, - "height": 12, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3109, - "text": "QR scanner", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a218", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "QR scanner", - "lineHeight": 1.3333333333333333 - }, - { - "id": "d1-btn", - "type": "rectangle", - "x": 90, - "y": 2510, - "width": 240, - "height": 38, - "strokeColor": "transparent", - "backgroundColor": "#dcc9b4", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3110, - "boundElements": [ - { - "id": "d1-btnt", - "type": "text" - } - ], - "index": "a219", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "d1-btnt", - "type": "text", - "x": 100, - "y": 2522, - "width": 220, - "height": 14, - "strokeColor": "#ffffff", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3111, - "text": "Redeem", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "d1-btn", - "index": "a21a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "originalText": "Redeem", - "autoResize": true, - "lineHeight": 1.2727272727272727 - }, - { - "id": "d1-note", - "type": "text", - "x": 80, - "y": 2566, - "width": 260, - "height": 24, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3112, - "text": "opened by Buy in browser at the same\nmoment as the browser, and waiting", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a21b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "opened by Buy in browser at the same\nmoment as the browser, and waiting", - "lineHeight": 1.3333333333333333 - }, - { - "id": "d1-capt", - "type": "text", - "x": 60, - "y": 2680, - "width": 300, - "height": 14, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3113, - "text": "D1. Both halves at once", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a21c", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "D1. Both halves at once", - "lineHeight": 1.2727272727272727 - }, - { - "id": "d1-capb", - "type": "text", - "x": 60, - "y": 2700, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D1", - "lane3" - ], - "seed": 3114, - "text": "On desktop, Buy in browser opens the page and this screen\ntogether, so the code has somewhere to go the moment it\nappears. No new screen, no deep link, no A6 - the shipped\nflow, with one extra window. It is also the honest fallback for\nany platform where the scheme turns out not to work.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a21d", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "On desktop, Buy in browser opens the page and this screen\ntogether, so the code has somewhere to go the moment it\nappears. No new screen, no deep link, no A6 - the shipped\nflow, with one extra window. It is also the honest fallback for\nany platform where the scheme turns out not to work.", - "lineHeight": 1.4666666666666666 - }, - { - "id": "d2-panel", - "type": "rectangle", - "x": 480, - "y": 2040, - "width": 300, - "height": 620, - "strokeColor": "#8f97a3", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3201, - "boundElements": [ - { - "id": "ar-d1d2", - "type": "arrow" - } - ], - "index": "a220", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "d2-url", - "type": "rectangle", - "x": 480, - "y": 2040, - "width": 300, - "height": 26, - "strokeColor": "transparent", - "backgroundColor": "#eceef1", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3202, - "index": "a221", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "d2-urlt", - "type": "text", - "x": 496, - "y": 2048, - "width": 268, - "height": 12, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3203, - "text": "badges.simplex.chat/#/tier?app=desktop", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a222", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "badges.simplex.chat/#/tier?app=desktop", - "lineHeight": 1.3333333333333333 - }, - { - "id": "d2-title", - "type": "text", - "x": 496, - "y": 2090, - "width": 268, - "height": 22, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3204, - "text": "Paid. Here is your code.", - "fontSize": 16, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a223", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Paid. Here is your code.", - "lineHeight": 1.375 - }, - { - "id": "d2-code", - "type": "rectangle", - "x": 496, - "y": 2128, - "width": 268, - "height": 36, - "strokeColor": "#d6dae0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3205, - "index": "a224", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "d2-codet", - "type": "text", - "x": 500, - "y": 2140, - "width": 260, - "height": 14, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3206, - "text": "SB-4K2M9-XQ7VT-H3BNP-R8WLC", - "fontSize": 10, - "fontFamily": 3, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a225", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "SB-4K2M9-XQ7VT-H3BNP-R8WLC", - "lineHeight": 1.4 - }, - { - "id": "d2-btn", - "type": "rectangle", - "x": 496, - "y": 2180, - "width": 268, - "height": 34, - "strokeColor": "#0053d0", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3207, - "boundElements": [ - { - "id": "d2-btnt", - "type": "text" - } - ], - "index": "a226", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "d2-btnt", - "type": "text", - "x": 506, - "y": 2190, - "width": 248, - "height": 14, - "strokeColor": "#0053d0", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3208, - "text": "Copy code", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "d2-btn", - "index": "a227", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "originalText": "Copy code", - "autoResize": true, - "lineHeight": 1.2727272727272727 - }, - { - "id": "d2-qr", - "type": "rectangle", - "x": 496, - "y": 2236, - "width": 110, - "height": 110, - "strokeColor": "#d6dae0", - "backgroundColor": "#f7f8fa", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": null, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3209, - "index": "a228", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "d2-qrt", - "type": "text", - "x": 496, - "y": 2352, - "width": 110, - "height": 24, - "strokeColor": "#9aa1ab", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3210, - "text": "scan to carry it\nto your phone", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "top", - "autoResize": false, - "index": "a229", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "scan to carry it\nto your phone", - "lineHeight": 1.3333333333333333 - }, - { - "id": "d2-redeem", - "type": "text", - "x": 622, - "y": 2236, - "width": 142, - "height": 36, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3211, - "text": "REDEEM IT IN THE APP\nThe Redeem code screen\nis already open.", - "fontSize": 8.5, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a22a", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "REDEEM IT IN THE APP\nThe Redeem code screen\nis already open.", - "lineHeight": 1.411764705882353 - }, - { - "id": "d2-warn", - "type": "rectangle", - "x": 622, - "y": 2288, - "width": 142, - "height": 58, - "strokeColor": "transparent", - "backgroundColor": "#fdf3e7", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3212, - "index": "a22b", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "d2-warnt", - "type": "text", - "x": 632, - "y": 2298, - "width": 122, - "height": 38, - "strokeColor": "#8a5a1e", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3213, - "text": "This is the only copy.\nSaved in this browser\nand nowhere else.", - "fontSize": 8.5, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a22c", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "This is the only copy.\nSaved in this browser\nand nowhere else.", - "lineHeight": 1.4901960784313726 - }, - { - "id": "d2-capt", - "type": "text", - "x": 480, - "y": 2680, - "width": 300, - "height": 14, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3214, - "text": "D2. The page, told which app it is", - "fontSize": 11, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a22d", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "D2. The page, told which app it is", - "lineHeight": 1.2727272727272727 - }, - { - "id": "d2-capb", - "type": "text", - "x": 480, - "y": 2700, - "width": 340, - "height": 66, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "D2", - "lane3" - ], - "seed": 3215, - "text": "codeIssued as it ships, with one line changed. The app builds\nthe URL, so ?app=desktop is a fact rather than a guess -\nbetter than sniffing the user agent, which cannot tell a\ndesktop browser opened by SimpleX from any other. Mobile\ngets ?app=true and the A5 screen instead.", - "fontSize": 9, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a22e", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "codeIssued as it ships, with one line changed. The app builds\nthe URL, so ?app=desktop is a fact rather than a guess -\nbetter than sniffing the user agent, which cannot tell a\ndesktop browser opened by SimpleX from any other. Mobile\ngets ?app=true and the A5 screen instead.", - "lineHeight": 1.4666666666666666 - }, - { - "id": "q-box", - "type": "rectangle", - "x": 900, - "y": 2040, - "width": 1540, - "height": 260, - "strokeColor": "#e0a672", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "dashed", - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "Q", - "lane3" - ], - "seed": 3301, - "index": "a230", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "q-head", - "type": "text", - "x": 924, - "y": 2064, - "width": 900, - "height": 20, - "strokeColor": "#a15c1e", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "Q", - "lane3" - ], - "seed": 3302, - "text": "QUESTIONS - deep links, and whether the desktop can have them at all", - "fontSize": 15, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a231", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "QUESTIONS - deep links, and whether the desktop can have them at all", - "lineHeight": 1.3333333333333333 - }, - { - "id": "q-body", - "type": "text", - "x": 924, - "y": 2098, - "width": 1490, - "height": 130, - "strokeColor": "#4b5563", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "Q", - "lane3" - ], - "seed": 3303, - "text": "1. Desktop has no scheme handler today. Nothing in the desktop module registers one and nothing handles it: appOpenUrl is wired in commonMain but has no desktop plumbing, and\n desktop/build.gradle.kts declares only Deb, Dmg, Msi and Exe with no protocol entry. Adding one is per-OS work - CFBundleURLTypes plus setOpenURIHandler on macOS, registry keys\n the MSI would have to write on Windows, a .desktop file with x-scheme-handler/simplexchat on Linux - and it would still not cover an unpackaged run. Hence D1: desktop does not wait for it.\n\n2. Will a browser follow it without a tap? The attempt is made from a hidden frame, so a refusal stays inside the frame rather than replacing the screen with an error page that would\n put the code into history. Expect nothing to happen on iOS Safari, which has ignored custom schemes in frames for years, nor on Chrome, which blocks a gestureless external-protocol\n launch - and a payment settling minutes after the last tap has no gesture. So Return to SimpleX is the real path. What is left is to try it on devices once the app registers the scheme.", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a232", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "1. Desktop has no scheme handler today. Nothing in the desktop module registers one and nothing handles it: appOpenUrl is wired in commonMain but has no desktop plumbing, and\n desktop/build.gradle.kts declares only Deb, Dmg, Msi and Exe with no protocol entry. Adding one is per-OS work - CFBundleURLTypes plus setOpenURIHandler on macOS, registry keys\n the MSI would have to write on Windows, a .desktop file with x-scheme-handler/simplexchat on Linux - and it would still not cover an unpackaged run. Hence D1: desktop does not wait for it.\n\n2. Will a browser follow it without a tap? The attempt is made from a hidden frame, so a refusal stays inside the frame rather than replacing the screen with an error page that would\n put the code into history. Expect nothing to happen on iOS Safari, which has ignored custom schemes in frames for years, nor on Chrome, which blocks a gestureless external-protocol\n launch - and a payment settling minutes after the last tap has no gesture. So Return to SimpleX is the real path. What is left is to try it on devices once the app registers the scheme.", - "lineHeight": 1.4444444444444444 - }, - { - "id": "n-box", - "type": "rectangle", - "x": 900, - "y": 2340, - "width": 1540, - "height": 300, - "strokeColor": "#c9ced6", - "backgroundColor": "#ffffff", - "fillStyle": "solid", - "strokeWidth": 1, - "roughness": 0, - "roundness": { - "type": 3 - }, - "groupIds": [ - "N", - "lane3" - ], - "seed": 3401, - "index": "a233", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false - }, - { - "id": "n-head", - "type": "text", - "x": 924, - "y": 2364, - "width": 900, - "height": 20, - "strokeColor": "#1c1e26", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "N", - "lane3" - ], - "seed": 3402, - "text": "What has to be built, and what it costs", - "fontSize": 15, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a234", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "What has to be built, and what it costs", - "lineHeight": 1.3333333333333333 - }, - { - "id": "n-body", - "type": "text", - "x": 924, - "y": 2398, - "width": 1490, - "height": 220, - "strokeColor": "#4b5563", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "N", - "lane3" - ], - "seed": 3403, - "text": "The browser lane needs nothing from the service: the code purchase runs exactly as it ships, the browser mints the code and sends only its SHA-256, and the only reason the buyer\nnever sees one is that the link carries it instead of the screen. The store lane is the part that does need service work - purchaseBadge has to accept a store receipt and verify it,\nand no provider adapter for that exists today.\n\nThe page needs three things: read the app flag from the fragment and start at Choose your badge; at the end, try the deep link and offer Return to SimpleX with Show code under it;\nand for ?app=desktop, keep showing codeIssued as it does now.\n\nThe app needs: Buy in browser without its confirm alert; a handler for the new link; A6, a spinner around the existing apiRedeemBadgeCode; on desktop, opening Redeem code alongside\nthe browser; and for the store lane, B4's checkout and the two BadgeState outcomes behind B5.\n\nWhat it costs: the app cannot show a price before sending the buyer out, because it has no catalog - Buy in browser is a leap into a page. And the code still exists, so it can be\nintercepted, screenshotted from the backup button, or pasted somewhere else. Hidden is not the same as absent.", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": false, - "index": "a235", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "The browser lane needs nothing from the service: the code purchase runs exactly as it ships, the browser mints the code and sends only its SHA-256, and the only reason the buyer\nnever sees one is that the link carries it instead of the screen. The store lane is the part that does need service work - purchaseBadge has to accept a store receipt and verify it,\nand no provider adapter for that exists today.\n\nThe page needs three things: read the app flag from the fragment and start at Choose your badge; at the end, try the deep link and offer Return to SimpleX with Show code under it;\nand for ?app=desktop, keep showing codeIssued as it does now.\n\nThe app needs: Buy in browser without its confirm alert; a handler for the new link; A6, a spinner around the existing apiRedeemBadgeCode; on desktop, opening Redeem code alongside\nthe browser; and for the store lane, B4's checkout and the two BadgeState outcomes behind B5.\n\nWhat it costs: the app cannot show a price before sending the buyer out, because it has no catalog - Buy in browser is a leap into a page. And the code still exists, so it can be\nintercepted, screenshotted from the backup button, or pasted somewhere else. Hidden is not the same as absent.", - "lineHeight": 2 - }, - { - "id": "ar-d1d2", - "type": "arrow", - "x": 368, - "y": 2350, - "width": 104, - "height": 0, - "strokeColor": "#a15c1e", - "backgroundColor": "transparent", - "strokeWidth": 2, - "strokeStyle": "dashed", - "roughness": 0, - "roundness": null, - "elbowed": true, - "groupIds": [], - "seed": 3501, - "points": [ - [ - 0, - 0 - ], - [ - 104, - 0 - ] - ], - "startArrowhead": "arrow", - "endArrowhead": "arrow", - "startBinding": null, - "endBinding": null, - "boundElements": [ - { - "id": "ar-d1d2-t", - "type": "text" - } - ], - "index": "a250", - "version": 2, - "versionNonce": 1589412771, - "isDeleted": false, - "fillStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "updated": 1790251896821, - "link": null, - "locked": false, - "lastCommittedPoint": null - }, - { - "id": "ar-d1d2-t", - "type": "text", - "x": 370.23193359375, - "y": 2337, - "width": 99.5361328125, - "height": 26, - "strokeColor": "#a15c1e", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [], - "seed": 3502, - "text": "opened together, code\ncarried by hand", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "center", - "verticalAlign": "middle", - "containerId": "ar-d1d2", - "index": "a251", - "version": 4, - "versionNonce": 1533799245, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251895408, - "link": null, - "locked": false, - "originalText": "opened together, code carried by hand", - "autoResize": true, - "lineHeight": 1.3 - }, - { - "id": "ft-note", - "type": "text", - "x": 60, - "y": 2830, - "width": 2400, - "height": 26, - "strokeColor": "#6b7280", - "backgroundColor": "transparent", - "roughness": 0, - "groupIds": [ - "footer" - ], - "seed": 4005, - "text": "Copy is quoted from the app and the page. The app's screens take the page's names: Your level becomes Choose your badge, the level name becomes How long?, and Check your order is shared already.\nStore prices are illustrative and come from the storefront; the page's prices are the shipped catalog. Not drawn: the page's refusals - no active price, a provider unavailable, too many attempts - which are unchanged and already built.", - "fontSize": 10, - "fontFamily": 2, - "textAlign": "left", - "verticalAlign": "top", - "autoResize": true, - "index": "a300", - "version": 1, - "versionNonce": 0, - "isDeleted": false, - "fillStyle": "solid", - "strokeWidth": 2, - "strokeStyle": "solid", - "opacity": 100, - "angle": 0, - "frameId": null, - "roundness": null, - "boundElements": [], - "updated": 1790251001522, - "link": null, - "locked": false, - "containerId": null, - "originalText": "Copy is quoted from the app and the page. The app's screens take the page's names: Your level becomes Choose your badge, the level name becomes How long?, and Check your order is shared already.\nStore prices are illustrative and come from the storefront; the page's prices are the shipped catalog. Not drawn: the page's refusals - no active price, a provider unavailable, too many attempts - which are unchanged and already built.", - "lineHeight": 1.3 - } + {"id":"hdr-bg","type":"rectangle","x":0,"y":0,"width":2500,"height":96,"strokeColor":"transparent","backgroundColor":"#1c1e26","fillStyle":"solid","strokeWidth":1,"roughness":0,"groupIds":["header"],"index":"a000"}, + {"id":"hdr-title","type":"text","x":40,"y":24,"width":620,"height":28,"strokeColor":"#ffffff","roughness":0,"groupIds":["header"],"text":"Buying a badge - hidden codes","fontSize":22,"fontFamily":2,"index":"a001","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"hdr-sub","type":"text","x":40,"y":58,"width":1500,"height":15,"strokeColor":"#a0a6b0","roughness":0,"groupIds":["header"],"text":"the shipped code purchase, reused whole: the page still mints a code, the deep link carries it, and the buyer never sees it. solid = exists, dashed = does not","fontSize":12,"fontFamily":2,"index":"a002","fillStyle":"solid","strokeWidth":2,"lineHeight":1.25}, + {"id":"hdr-r1","type":"text","x":2260,"y":26,"width":200,"height":15,"strokeColor":"#a0a6b0","roughness":0,"groupIds":["header"],"text":"in-app checkout","fontSize":12,"fontFamily":2,"textAlign":"right","autoResize":false,"index":"a003","fillStyle":"solid","strokeWidth":2,"lineHeight":1.25}, + {"id":"hdr-r2","type":"text","x":2260,"y":48,"width":200,"height":14,"strokeColor":"#6b7280","roughness":0,"groupIds":["header"],"text":"wireframes","fontSize":11,"fontFamily":2,"textAlign":"right","autoResize":false,"index":"a004","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"l1-band","type":"rectangle","x":20,"y":150,"width":2460,"height":850,"strokeColor":"transparent","backgroundColor":"#eef5ff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["lane1"],"index":"a010"}, + {"id":"l1-head","type":"text","x":60,"y":178,"width":900,"height":22,"strokeColor":"#0053d0","roughness":0,"groupIds":["lane1"],"text":"Non-store builds - the browser does all of it","fontSize":17,"fontFamily":2,"index":"a011","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2941176470588236}, + {"id":"l1-sub","type":"text","x":60,"y":206,"width":1300,"height":14,"strokeColor":"#6b7280","roughness":0,"groupIds":["lane1"],"text":"no catalog API, no invoice API, no in-app checkout: the app opens the page, the page sells a code, the deep link brings it home","fontSize":11,"fontFamily":2,"index":"a012","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a1-panel","type":"rectangle","x":60,"y":260,"width":300,"height":620,"strokeColor":"#8f97a3","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A1","lane1"],"boundElements":[{"id":"ar-a1a2","type":"arrow"}],"index":"a020"}, + {"id":"a1-title","type":"text","x":80,"y":306,"width":260,"height":24,"strokeColor":"#0053d0","roughness":0,"groupIds":["A1","lane1"],"text":"Support SimpleX","fontSize":19,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a021","fillStyle":"solid","strokeWidth":2,"lineHeight":1.263157894736842}, + {"id":"a1-body","type":"text","x":76,"y":348,"width":268,"height":39,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A1","lane1"],"text":"Get a badge to send larger files (2-5GB)\nthat stay available longer (7-21 days),\nand to show it on your profile.","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a022","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a1-info","type":"text","x":80,"y":404,"width":260,"height":13,"strokeColor":"#0053d0","roughness":0,"groupIds":["A1","lane1"],"text":"(i) How badges protect your privacy","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a023","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a1-hero","type":"rectangle","x":132,"y":448,"width":156,"height":156,"strokeColor":"transparent","backgroundColor":"#e8eef7","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A1","lane1"],"index":"a024"}, + {"id":"a1-herot","type":"text","x":132,"y":519,"width":156,"height":12,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["A1","lane1"],"text":"phone-supporter","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a025","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"a1-btn","type":"rectangle","x":90,"y":730,"width":240,"height":38,"strokeColor":"transparent","backgroundColor":"#0053d0","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A1","lane1"],"boundElements":[{"id":"a1-btnt","type":"text"}],"index":"a026"}, + {"id":"a1-btnt","type":"text","x":100,"y":742,"width":220,"height":14,"strokeColor":"#ffffff","roughness":0,"groupIds":["A1","lane1"],"text":"Buy in browser","fontSize":11,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"a1-btn","index":"a027","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a1-sec","type":"text","x":80,"y":786,"width":260,"height":13,"strokeColor":"#0053d0","roughness":0,"groupIds":["A1","lane1"],"text":"Redeem code","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a028","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a1-secn","type":"text","x":80,"y":806,"width":260,"height":12,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["A1","lane1"],"text":"the manual path, for a code from elsewhere","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a029","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"a1-capt","type":"text","x":60,"y":900,"width":300,"height":14,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A1","lane1"],"text":"A1. BadgesSupportSimplexView","fontSize":11,"fontFamily":2,"index":"a02a","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a1-capb","type":"text","x":60,"y":920,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["A1","lane1"],"text":"Get your code becomes the primary button and loses the\nconfirm-in-browser alert - the tap opens the browser. Redeem\nbadge code drops to the text button. The info button stays as\nit is - the file's TODO would swap it for Why SimpleX is built\nonce purchase lands, and it should not.\nchooseLevelButton() is never called in this build.","fontSize":9,"fontFamily":2,"index":"a02b","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2222222222222223}, + {"id":"a2-panel","type":"rectangle","x":480,"y":260,"width":300,"height":620,"strokeColor":"#8f97a3","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A2","lane1"],"boundElements":[{"id":"ar-a1a2","type":"arrow"},{"id":"ar-a2a3","type":"arrow"}],"index":"a030"}, + {"id":"a2-url","type":"rectangle","x":480,"y":260,"width":300,"height":26,"strokeColor":"transparent","backgroundColor":"#eceef1","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A2","lane1"],"index":"a031"}, + {"id":"a2-urlt","type":"text","x":496,"y":268,"width":268,"height":12,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["A2","lane1"],"text":"badges.simplex.chat/#/tier?app=true","fontSize":9,"fontFamily":2,"autoResize":false,"index":"a032","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"a2-title","type":"text","x":496,"y":312,"width":268,"height":22,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A2","lane1"],"text":"Choose your badge","fontSize":17,"fontFamily":2,"autoResize":false,"index":"a033","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2941176470588236}, + {"id":"a2-lede","type":"text","x":496,"y":342,"width":268,"height":13,"strokeColor":"#6b7280","roughness":0,"groupIds":["A2","lane1"],"text":"Larger files that stay available longer.","fontSize":9.5,"fontFamily":2,"autoResize":false,"index":"a034","fillStyle":"solid","strokeWidth":2,"lineHeight":1.368421052631579}, + {"id":"a2-c1","type":"rectangle","x":496,"y":378,"width":130,"height":150,"strokeColor":"#d6dae0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["A2","lane1"],"index":"a035"}, + {"id":"a2-c1i","type":"rectangle","x":545,"y":398,"width":32,"height":32,"strokeColor":"transparent","backgroundColor":"#dfe4ea","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A2","lane1"],"index":"a036"}, + {"id":"a2-c1t","type":"text","x":504,"y":442,"width":114,"height":52,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A2","lane1"],"text":"Supporter\n2GB files\n\n$7/month","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a037","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a2-c2","type":"rectangle","x":634,"y":378,"width":130,"height":150,"strokeColor":"#0053d0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["A2","lane1"],"index":"a038"}, + {"id":"a2-c2i","type":"rectangle","x":683,"y":398,"width":32,"height":32,"strokeColor":"transparent","backgroundColor":"#dfe4ea","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A2","lane1"],"index":"a039"}, + {"id":"a2-c2t","type":"text","x":642,"y":442,"width":114,"height":52,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A2","lane1"],"text":"Legend\n5GB files\n\n$70/month","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a03a","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a2-btn","type":"rectangle","x":496,"y":560,"width":268,"height":36,"strokeColor":"transparent","backgroundColor":"#0053d0","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A2","lane1"],"boundElements":[{"id":"a2-btnt","type":"text"}],"index":"a03b"}, + {"id":"a2-btnt","type":"text","x":506,"y":571,"width":248,"height":14,"strokeColor":"#ffffff","roughness":0,"groupIds":["A2","lane1"],"text":"Continue","fontSize":11,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"a2-btn","index":"a03c","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a2-capt","type":"text","x":480,"y":900,"width":300,"height":14,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A2","lane1"],"text":"A2. Where the link lands","fontSize":11,"fontFamily":2,"index":"a03d","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a2-capb","type":"text","x":480,"y":920,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["A2","lane1"],"text":"The page's own second screen, quoted as it is. The flag\nin #/tier?app=true skips its Support SimpleX, which the\napp has just shown. NEW on the page: read that flag, start\nhere, and carry it: the session to checkout, then the order.\nThe app builds the URL, so it can also say which kind of\napp it is - better than guessing from the user agent.","fontSize":9,"fontFamily":2,"index":"a03e","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2222222222222223}, + {"id":"a3-panel","type":"rectangle","x":900,"y":260,"width":300,"height":620,"strokeColor":"#8f97a3","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A3","lane1"],"boundElements":[{"id":"ar-a2a3","type":"arrow"},{"id":"ar-a3a4","type":"arrow"}],"index":"a040"}, + {"id":"a3-url","type":"rectangle","x":900,"y":260,"width":300,"height":26,"strokeColor":"transparent","backgroundColor":"#eceef1","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A3","lane1"],"index":"a041"}, + {"id":"a3-urlt","type":"text","x":916,"y":268,"width":268,"height":12,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["A3","lane1"],"text":"badges.simplex.chat/#/tier?app=true","fontSize":9,"fontFamily":2,"autoResize":false,"index":"a042","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"a3-title","type":"text","x":916,"y":312,"width":268,"height":22,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A3","lane1"],"text":"How long?","fontSize":17,"fontFamily":2,"autoResize":false,"index":"a043","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2941176470588236}, + {"id":"a3-lede","type":"text","x":916,"y":342,"width":268,"height":13,"strokeColor":"#6b7280","roughness":0,"groupIds":["A3","lane1"],"text":"Legend - 5GB files, 21 days","fontSize":9.5,"fontFamily":2,"autoResize":false,"index":"a044","fillStyle":"solid","strokeWidth":2,"lineHeight":1.368421052631579}, + {"id":"a3-c1","type":"rectangle","x":916,"y":378,"width":84,"height":124,"strokeColor":"#d6dae0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["A3","lane1"],"index":"a045"}, + {"id":"a3-c1t","type":"text","x":920,"y":418,"width":76,"height":39,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A3","lane1"],"text":"1 month\n\n$70","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a046","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a3-c2","type":"rectangle","x":1008,"y":378,"width":84,"height":124,"strokeColor":"#d6dae0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["A3","lane1"],"index":"a047"}, + {"id":"a3-c2t","type":"text","x":1012,"y":412,"width":76,"height":52,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A3","lane1"],"text":"3 months\n\n$140\none month free","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a048","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a3-c3","type":"rectangle","x":1100,"y":378,"width":84,"height":124,"strokeColor":"#0053d0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["A3","lane1"],"index":"a049"}, + {"id":"a3-c3t","type":"text","x":1104,"y":412,"width":76,"height":52,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A3","lane1"],"text":"12 months\n\n$420\nsave 50%","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a04a","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a3-note","type":"text","x":916,"y":520,"width":268,"height":24,"strokeColor":"#6b7280","roughness":0,"groupIds":["A3","lane1"],"text":"Paid once, for the months you choose.\nNo subscription.","fontSize":9,"fontFamily":2,"autoResize":false,"index":"a04b","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"a3-btn","type":"rectangle","x":916,"y":560,"width":268,"height":36,"strokeColor":"transparent","backgroundColor":"#0053d0","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A3","lane1"],"boundElements":[{"id":"a3-btnt","type":"text"}],"index":"a04c"}, + {"id":"a3-btnt","type":"text","x":926,"y":571,"width":248,"height":14,"strokeColor":"#ffffff","roughness":0,"groupIds":["A3","lane1"],"text":"Continue","fontSize":11,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"a3-btn","index":"a04d","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a3-capt","type":"text","x":900,"y":900,"width":300,"height":14,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A3","lane1"],"text":"A3. Unchanged","fontSize":11,"fontFamily":2,"index":"a04e","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a3-capb","type":"text","x":900,"y":920,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["A3","lane1"],"text":"The page's own screen, and the source of the names this\nplan adopts in the app: Choose your badge, How long?,\nCheck your order. Prices and offers are the compiled catalog\nthe page already has, so getBadgeCatalog is not needed by\nanyone in this lane.","fontSize":9,"fontFamily":2,"index":"a04f","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4666666666666666}, + {"id":"a4-panel","type":"rectangle","x":1320,"y":260,"width":300,"height":620,"strokeColor":"#8f97a3","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A4","lane1"],"boundElements":[{"id":"ar-a3a4","type":"arrow"},{"id":"ar-a4a5","type":"arrow"}],"index":"a050"}, + {"id":"a4-url","type":"rectangle","x":1320,"y":260,"width":300,"height":26,"strokeColor":"transparent","backgroundColor":"#eceef1","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A4","lane1"],"index":"a051"}, + {"id":"a4-urlt","type":"text","x":1336,"y":268,"width":268,"height":12,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["A4","lane1"],"text":"badges.simplex.chat/?order=8f3a...","fontSize":9,"fontFamily":2,"autoResize":false,"index":"a052","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"a4-title","type":"text","x":1336,"y":312,"width":268,"height":22,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A4","lane1"],"text":"Check your order","fontSize":17,"fontFamily":2,"autoResize":false,"index":"a053","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2941176470588236}, + {"id":"a4-rowsL","type":"text","x":1336,"y":352,"width":160,"height":48,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A4","lane1"],"text":"Your badge\nDuration\nLaunch discount: 50% off\nTotal","fontSize":9.5,"fontFamily":2,"autoResize":false,"index":"a054","fillStyle":"solid","strokeWidth":2,"lineHeight":1.263157894736842}, + {"id":"a4-rowsR","type":"text","x":1508,"y":352,"width":96,"height":48,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A4","lane1"],"text":"Legend\n12 months\n-$420.00\n$420.00","fontSize":9.5,"fontFamily":2,"textAlign":"right","autoResize":false,"index":"a055","fillStyle":"solid","strokeWidth":2,"lineHeight":1.263157894736842}, + {"id":"a4-label","type":"text","x":1336,"y":420,"width":100,"height":12,"strokeColor":"#6b7280","roughness":0,"groupIds":["A4","lane1"],"text":"PAY WITH","fontSize":9,"fontFamily":2,"autoResize":false,"index":"a056","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"a4-m1","type":"rectangle","x":1336,"y":438,"width":84,"height":60,"strokeColor":"#d6dae0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["A4","lane1"],"index":"a057"}, + {"id":"a4-m1t","type":"text","x":1340,"y":460,"width":76,"height":13,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A4","lane1"],"text":"Bitcoin","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a058","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a4-m2","type":"rectangle","x":1428,"y":438,"width":84,"height":60,"strokeColor":"#0053d0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["A4","lane1"],"index":"a059"}, + {"id":"a4-m2t","type":"text","x":1432,"y":460,"width":76,"height":13,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A4","lane1"],"text":"Monero","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a05a","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a4-m3","type":"rectangle","x":1520,"y":438,"width":84,"height":60,"strokeColor":"#d6dae0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["A4","lane1"],"index":"a05b"}, + {"id":"a4-m3t","type":"text","x":1524,"y":460,"width":76,"height":13,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A4","lane1"],"text":"Card","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a05c","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a4-btn","type":"rectangle","x":1336,"y":560,"width":268,"height":36,"strokeColor":"transparent","backgroundColor":"#0053d0","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A4","lane1"],"boundElements":[{"id":"a4-btnt","type":"text"}],"index":"a05d"}, + {"id":"a4-btnt","type":"text","x":1346,"y":571,"width":248,"height":14,"strokeColor":"#ffffff","roughness":0,"groupIds":["A4","lane1"],"text":"Pay $420.00 with Monero","fontSize":11,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"a4-btn","index":"a05e","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a4-capt","type":"text","x":1320,"y":900,"width":300,"height":14,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A4","lane1"],"text":"A4. Unchanged, and the pay screens after it","fontSize":11,"fontFamily":2,"index":"a05f","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a4-capb","type":"text","x":1320,"y":920,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["A4","lane1"],"text":"The method is picked here and the code is minted here, as\ntoday: the browser generates it and sends only its SHA-256.\nSend 1.482 XMR, the countdown and Payment received follow\nand are unchanged, so they are not drawn. The service needs\nno new API for this lane at all.","fontSize":9,"fontFamily":2,"index":"a05g","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4666666666666666}, + {"id":"a5-panel","type":"rectangle","x":1740,"y":260,"width":300,"height":620,"strokeColor":"#0053d0","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dashed","roughness":0,"roundness":{"type":3},"groupIds":["A5","lane1"],"boundElements":[{"id":"ar-a4a5","type":"arrow"},{"id":"ar-a5a6","type":"arrow"}],"index":"a060"}, + {"id":"a5-url","type":"rectangle","x":1740,"y":260,"width":300,"height":26,"strokeColor":"transparent","backgroundColor":"#eceef1","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A5","lane1"],"index":"a061"}, + {"id":"a5-urlt","type":"text","x":1756,"y":268,"width":268,"height":12,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["A5","lane1"],"text":"badges.simplex.chat/?order=8f3a...","fontSize":9,"fontFamily":2,"autoResize":false,"index":"a062","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"a5-title","type":"text","x":1756,"y":312,"width":268,"height":22,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A5","lane1"],"text":"Paid","fontSize":17,"fontFamily":2,"autoResize":false,"index":"a063","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2941176470588236}, + {"id":"a5-lede","type":"text","x":1756,"y":344,"width":268,"height":26,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A5","lane1"],"text":"Opening SimpleX to add your badge.\nIf nothing happens, use the button.","fontSize":9.5,"fontFamily":2,"autoResize":false,"index":"a064","fillStyle":"solid","strokeWidth":2,"lineHeight":1.368421052631579}, + {"id":"a5-btn","type":"rectangle","x":1756,"y":396,"width":268,"height":38,"strokeColor":"transparent","backgroundColor":"#0053d0","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A5","lane1"],"boundElements":[{"id":"a5-btnt","type":"text"}],"index":"a065"}, + {"id":"a5-btnt","type":"text","x":1766,"y":408,"width":248,"height":14,"strokeColor":"#ffffff","roughness":0,"groupIds":["A5","lane1"],"text":"Return to SimpleX","fontSize":11,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"a5-btn","index":"a066","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a5-sec","type":"text","x":1756,"y":452,"width":268,"height":13,"strokeColor":"#0053d0","roughness":0,"groupIds":["A5","lane1"],"text":"Show code","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a067","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a5-link","type":"rectangle","x":1756,"y":496,"width":268,"height":34,"strokeColor":"#d6dae0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A5","lane1"],"index":"a068"}, + {"id":"a5-linkt","type":"text","x":1762,"y":507,"width":256,"height":13,"strokeColor":"#6b7280","roughness":0,"groupIds":["A5","lane1"],"text":"simplexchat:/badge/code/SB-4K2M9-...","fontSize":9,"fontFamily":3,"textAlign":"center","autoResize":false,"index":"a069","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4444444444444444}, + {"id":"a5-note","type":"text","x":1756,"y":544,"width":268,"height":33,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["A5","lane1"],"text":"the page tries this on load; the button is\nthe backup, and Show code is the\nbackup to the backup","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a06a","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2222222222222223}, + {"id":"a5-capt","type":"text","x":1740,"y":900,"width":300,"height":14,"strokeColor":"#0053d0","roughness":0,"groupIds":["A5","lane1"],"text":"A5. New: the code leaves by link, not by eye","fontSize":11,"fontFamily":2,"index":"a06b","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a5-capb","type":"text","x":1740,"y":920,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["A5","lane1"],"text":"Replaces codeIssued for a mobile app purchase. The flag is\nnot in the URL here - it rode the session to checkout and is\nstamped on the order. The code is still minted and saved, so\nShow code recovers it if the link fails; a code that could\nnot be saved gets the plain screen instead. simplexchat: is a\nscheme of its own, so a badge link can never be read as a\nconnection link. The attempt is silent where it is blocked.","fontSize":9,"fontFamily":2,"index":"a06c","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2222222222222223}, + {"id":"a6-panel","type":"rectangle","x":2160,"y":260,"width":300,"height":620,"strokeColor":"#0053d0","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dashed","roughness":0,"roundness":{"type":3},"groupIds":["A6","lane1"],"boundElements":[{"id":"ar-a5a6","type":"arrow"}],"index":"a070"}, + {"id":"a6-title","type":"text","x":2180,"y":306,"width":260,"height":24,"strokeColor":"#0053d0","roughness":0,"groupIds":["A6","lane1"],"text":"Badge is being issued","fontSize":18,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a071","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"a6-spin","type":"ellipse","x":2288,"y":380,"width":44,"height":44,"strokeColor":"#0053d0","fillStyle":"solid","strokeWidth":2,"roughness":0,"groupIds":["A6","lane1"],"index":"a072"}, + {"id":"a6-spint","type":"text","x":2180,"y":440,"width":260,"height":12,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["A6","lane1"],"text":"progress","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a073","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"a6-body","type":"text","x":2186,"y":478,"width":248,"height":39,"strokeColor":"#6b7280","roughness":0,"groupIds":["A6","lane1"],"text":"This takes a moment. You do not\nneed to do anything, and you can\nclose the app.","fontSize":9.5,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a074","fillStyle":"solid","strokeWidth":2,"lineHeight":1.368421052631579}, + {"id":"a6-then","type":"rectangle","x":2176,"y":600,"width":268,"height":96,"strokeColor":"#8f97a3","backgroundColor":"#f2f3f5","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A6","lane1"],"index":"a075"}, + {"id":"a6-theni","type":"rectangle","x":2190,"y":612,"width":240,"height":72,"strokeColor":"transparent","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A6","lane1"],"index":"a076"}, + {"id":"a6-theng","type":"rectangle","x":2298,"y":620,"width":24,"height":24,"strokeColor":"transparent","backgroundColor":"#dfe4ea","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["A6","lane1"],"index":"a077"}, + {"id":"a6-thent","type":"text","x":2180,"y":650,"width":260,"height":13,"strokeColor":"#1c1e26","roughness":0,"groupIds":["A6","lane1"],"text":"Legend","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a078","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"a6-thens","type":"text","x":2180,"y":666,"width":260,"height":11,"strokeColor":"#6b7280","roughness":0,"groupIds":["A6","lane1"],"text":"shown on your profile","fontSize":8.5,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a079","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2941176470588236}, + {"id":"a6-thenn","type":"text","x":2160,"y":708,"width":300,"height":11,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["A6","lane1"],"text":"then BadgesYourBadgeView, unchanged","fontSize":8.5,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a07a","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2941176470588236}, + {"id":"a6-capt","type":"text","x":2160,"y":900,"width":300,"height":14,"strokeColor":"#0053d0","roughness":0,"groupIds":["A6","lane1"],"text":"A6. New screen, and the only new app state","fontSize":11,"fontFamily":2,"index":"a07b","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"a6-capb","type":"text","x":2160,"y":920,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["A6","lane1"],"text":"The deep link lands here, not on Redeem code: a pasted code\nand a QR scanner make no sense when the code arrived by\nlink. It calls the existing apiRedeemBadgeCode and shows its\nfailures as that screen does. Naming: Redeeming code names\nthe mechanism, Badge is being issued names the outcome -\nand the outcome is what the buyer cares about.","fontSize":9,"fontFamily":2,"index":"a07c","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2222222222222223}, + {"id":"ar-a1a2","type":"arrow","x":368,"y":570,"width":104,"height":0,"strokeColor":"#0053d0","strokeWidth":2,"roughness":0,"elbowed":true,"points":[[0,0],[104,0]],"endArrowhead":"arrow","boundElements":[{"id":"ar-a1a2-t","type":"text"}],"index":"a080","fillStyle":"solid"}, + {"id":"ar-a1a2-t","type":"text","x":365.810546875,"y":563.5,"width":108.37890625,"height":13,"strokeColor":"#0053d0","roughness":0,"text":"Buy in browser - no alert","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-a1a2","index":"a081","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"ar-a2a3","type":"arrow","x":788,"y":570,"width":104,"height":0,"strokeColor":"#0053d0","strokeWidth":2,"roughness":0,"elbowed":true,"points":[[0,0],[104,0]],"endArrowhead":"arrow","boundElements":[{"id":"ar-a2a3-t","type":"text"}],"index":"a082","fillStyle":"solid"}, + {"id":"ar-a2a3-t","type":"text","x":800,"y":556,"width":80,"height":13,"strokeColor":"#0053d0","roughness":0,"text":"Continue","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-a2a3","index":"a083","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"ar-a3a4","type":"arrow","x":1208,"y":570,"width":104,"height":0,"strokeColor":"#0053d0","strokeWidth":2,"roughness":0,"elbowed":true,"points":[[0,0],[104,0]],"endArrowhead":"arrow","boundElements":[{"id":"ar-a3a4-t","type":"text"}],"index":"a084","fillStyle":"solid"}, + {"id":"ar-a3a4-t","type":"text","x":1220,"y":556,"width":80,"height":13,"strokeColor":"#0053d0","roughness":0,"text":"Continue","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-a3a4","index":"a085","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"ar-a4a5","type":"arrow","x":1628,"y":570,"width":104,"height":0,"strokeColor":"#0053d0","strokeWidth":2,"roughness":0,"elbowed":true,"points":[[0,0],[104,0]],"endArrowhead":"arrow","boundElements":[{"id":"ar-a4a5-t","type":"text"}],"index":"a086","fillStyle":"solid"}, + {"id":"ar-a4a5-t","type":"text","x":1640,"y":556,"width":80,"height":13,"strokeColor":"#0053d0","roughness":0,"text":"it settles","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-a4a5","index":"a087","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"ar-a5a6","type":"arrow","x":2048,"y":570,"width":104,"height":0,"strokeColor":"#0053d0","strokeWidth":2,"roughness":0,"elbowed":true,"points":[[0,0],[104,0]],"endArrowhead":"arrow","boundElements":[{"id":"ar-a5a6-t","type":"text"}],"index":"a088","fillStyle":"solid"}, + {"id":"ar-a5a6-t","type":"text","x":2056.93115234375,"y":557,"width":86.1376953125,"height":26,"strokeColor":"#0053d0","roughness":0,"text":"simplexchat: carries\nthe code","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-a5a6","index":"a089","fillStyle":"solid","strokeWidth":2,"originalText":"simplexchat: carries the code","lineHeight":1.3}, + {"id":"l2-band","type":"rectangle","x":20,"y":1040,"width":2460,"height":850,"strokeColor":"transparent","backgroundColor":"#f5f1ff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["lane2"],"index":"a100"}, + {"id":"l2-head","type":"text","x":60,"y":1068,"width":900,"height":22,"strokeColor":"#5b21b6","roughness":0,"groupIds":["lane2"],"text":"Store builds - the store path in the app, the browser alongside it","fontSize":17,"fontFamily":2,"index":"a101","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2941176470588236}, + {"id":"l2-sub","type":"text","x":60,"y":1096,"width":1300,"height":14,"strokeColor":"#6b7280","roughness":0,"groupIds":["lane2"],"text":"Buy in browser runs lane A unchanged; only these four screens and the outcomes after them are in-app, and only here","fontSize":11,"fontFamily":2,"index":"a102","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b1-panel","type":"rectangle","x":60,"y":1150,"width":300,"height":620,"strokeColor":"#8f97a3","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["B1","lane2"],"boundElements":[{"id":"ar-b1b2","type":"arrow"}],"index":"a110"}, + {"id":"b1-title","type":"text","x":80,"y":1196,"width":260,"height":24,"strokeColor":"#5b21b6","roughness":0,"groupIds":["B1","lane2"],"text":"Support SimpleX","fontSize":19,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a111","fillStyle":"solid","strokeWidth":2,"lineHeight":1.263157894736842}, + {"id":"b1-body","type":"text","x":76,"y":1238,"width":268,"height":39,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B1","lane2"],"text":"Get a badge to send larger files (2-5GB)\nthat stay available longer (7-21 days),\nand to show it on your profile.","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a112","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"b1-info","type":"text","x":80,"y":1294,"width":260,"height":13,"strokeColor":"#5b21b6","roughness":0,"groupIds":["B1","lane2"],"text":"(i) How badges protect your privacy","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a113","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"b1-hero","type":"rectangle","x":132,"y":1338,"width":156,"height":156,"strokeColor":"transparent","backgroundColor":"#efeaf9","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["B1","lane2"],"index":"a114"}, + {"id":"b1-herot","type":"text","x":132,"y":1409,"width":156,"height":12,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["B1","lane2"],"text":"phone-supporter","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a115","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"b1-btn","type":"rectangle","x":90,"y":1620,"width":240,"height":38,"strokeColor":"transparent","backgroundColor":"#5b21b6","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["B1","lane2"],"boundElements":[{"id":"b1-btnt","type":"text"}],"index":"a116"}, + {"id":"b1-btnt","type":"text","x":100,"y":1632,"width":220,"height":14,"strokeColor":"#ffffff","roughness":0,"groupIds":["B1","lane2"],"text":"Choose your badge","fontSize":11,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"b1-btn","index":"a117","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b1-sec","type":"text","x":80,"y":1676,"width":260,"height":13,"strokeColor":"#5b21b6","roughness":0,"groupIds":["B1","lane2"],"text":"Buy in browser","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a118","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"b1-secn","type":"text","x":80,"y":1696,"width":260,"height":24,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["B1","lane2"],"text":"where the browser is not allowed,\nthis slot reads Redeem code instead","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a119","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"b1-capt","type":"text","x":60,"y":1790,"width":300,"height":14,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B1","lane2"],"text":"B1. Two buttons, one of them gated","fontSize":11,"fontFamily":2,"index":"a11a","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b1-capb","type":"text","x":60,"y":1810,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["B1","lane2"],"text":"Buy in browser is the same tap as A1's and runs the same\nlane, but only where the store rules allow it - a wider set of\nmarkets than the crowdfunding banner covers, and not pinned\ndown yet. Where it is not allowed the slot reads Redeem code\ninstead, so this screen always offers one of the two and codes\nare never out of reach.","fontSize":9,"fontFamily":2,"index":"a11b","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2222222222222223}, + {"id":"b2-panel","type":"rectangle","x":480,"y":1150,"width":300,"height":620,"strokeColor":"#8f97a3","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["B2","lane2"],"boundElements":[{"id":"ar-b1b2","type":"arrow"},{"id":"ar-b2b3","type":"arrow"}],"index":"a120"}, + {"id":"b2-back","type":"text","x":496,"y":1168,"width":20,"height":14,"strokeColor":"#5b21b6","roughness":0,"groupIds":["B2","lane2"],"text":"<","fontSize":11,"fontFamily":2,"autoResize":false,"index":"a121","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b2-title","type":"text","x":500,"y":1196,"width":260,"height":24,"strokeColor":"#5b21b6","roughness":0,"groupIds":["B2","lane2"],"text":"Choose your badge","fontSize":19,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a122","fillStyle":"solid","strokeWidth":2,"lineHeight":1.263157894736842}, + {"id":"b2-lede","type":"text","x":500,"y":1236,"width":260,"height":13,"strokeColor":"#6b7280","roughness":0,"groupIds":["B2","lane2"],"text":"Larger files that stay available longer.","fontSize":9.5,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a123","fillStyle":"solid","strokeWidth":2,"lineHeight":1.368421052631579}, + {"id":"b2-avatar","type":"ellipse","x":598,"y":1268,"width":56,"height":56,"strokeColor":"transparent","backgroundColor":"#e3e6ea","fillStyle":"solid","strokeWidth":1,"roughness":0,"groupIds":["B2","lane2"],"index":"a124"}, + {"id":"b2-name","type":"text","x":500,"y":1334,"width":260,"height":15,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B2","lane2"],"text":"My nickname [badge] v","fontSize":12,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a125","fillStyle":"solid","strokeWidth":2,"lineHeight":1.25}, + {"id":"b2-c1","type":"rectangle","x":492,"y":1378,"width":132,"height":150,"strokeColor":"#5b21b6","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["B2","lane2"],"index":"a126"}, + {"id":"b2-c1i","type":"rectangle","x":542,"y":1398,"width":32,"height":32,"strokeColor":"transparent","backgroundColor":"#dfe4ea","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["B2","lane2"],"index":"a127"}, + {"id":"b2-c1t","type":"text","x":500,"y":1442,"width":116,"height":52,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B2","lane2"],"text":"Supporter\nSend 2GB files\n\n$6.99/month","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a128","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"b2-c2","type":"rectangle","x":636,"y":1378,"width":132,"height":150,"strokeColor":"#d6dae0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["B2","lane2"],"index":"a129"}, + {"id":"b2-c2i","type":"rectangle","x":686,"y":1398,"width":32,"height":32,"strokeColor":"transparent","backgroundColor":"#dfe4ea","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["B2","lane2"],"index":"a12a"}, + {"id":"b2-c2t","type":"text","x":644,"y":1442,"width":116,"height":52,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B2","lane2"],"text":"Legend\nSend 5GB files\n\n$69.99/month","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a12b","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"b2-btn","type":"rectangle","x":510,"y":1596,"width":240,"height":38,"strokeColor":"transparent","backgroundColor":"#5b21b6","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["B2","lane2"],"boundElements":[{"id":"b2-btnt","type":"text"}],"index":"a12c"}, + {"id":"b2-btnt","type":"text","x":520,"y":1608,"width":220,"height":14,"strokeColor":"#ffffff","roughness":0,"groupIds":["B2","lane2"],"text":"Continue","fontSize":11,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"b2-btn","index":"a12d","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b2-sec","type":"text","x":500,"y":1652,"width":260,"height":13,"strokeColor":"#5b21b6","roughness":0,"groupIds":["B2","lane2"],"text":"Redeem code","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a12e","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"b2-infon","type":"text","x":500,"y":1676,"width":260,"height":12,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["B2","lane2"],"text":"here only when B1 offers the browser;\nthe privacy link always stays on B1","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a12f","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"b2-capt","type":"text","x":480,"y":1790,"width":300,"height":14,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B2","lane2"],"text":"B2. BadgesChooseBadgeView","fontSize":11,"fontFamily":2,"index":"a130","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b2-capb","type":"text","x":480,"y":1810,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["B2","lane2"],"text":"Your level becomes Choose your badge, with the page's lede.\nRedeem code sits here only when B1's slot is taken by Buy in\nbrowser; where the browser is not allowed it stays on B1 and\nthis screen has Continue alone. The privacy link never moves -\nit stays on Support SimpleX in both builds.","fontSize":9,"fontFamily":2,"index":"a131","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4666666666666666}, + {"id":"b3-panel","type":"rectangle","x":900,"y":1150,"width":300,"height":620,"strokeColor":"#8f97a3","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["B3","lane2"],"boundElements":[{"id":"ar-b2b3","type":"arrow"},{"id":"ar-b3b4","type":"arrow"}],"index":"a132"}, + {"id":"b3-back","type":"text","x":916,"y":1168,"width":20,"height":14,"strokeColor":"#5b21b6","roughness":0,"groupIds":["B3","lane2"],"text":"<","fontSize":11,"fontFamily":2,"autoResize":false,"index":"a133","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b3-title","type":"text","x":920,"y":1196,"width":260,"height":24,"strokeColor":"#5b21b6","roughness":0,"groupIds":["B3","lane2"],"text":"How long?","fontSize":19,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a134","fillStyle":"solid","strokeWidth":2,"lineHeight":1.263157894736842}, + {"id":"b3-lede","type":"text","x":920,"y":1236,"width":260,"height":13,"strokeColor":"#6b7280","roughness":0,"groupIds":["B3","lane2"],"text":"Legend - 5GB files, 21 days","fontSize":9.5,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a135","fillStyle":"solid","strokeWidth":2,"lineHeight":1.368421052631579}, + {"id":"b3-avatar","type":"ellipse","x":1022,"y":1268,"width":56,"height":56,"strokeColor":"transparent","backgroundColor":"#e3e6ea","fillStyle":"solid","strokeWidth":1,"roughness":0,"groupIds":["B3","lane2"],"index":"a136"}, + {"id":"b3-name","type":"text","x":920,"y":1334,"width":260,"height":15,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B3","lane2"],"text":"My nickname [badge]","fontSize":12,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a137","fillStyle":"solid","strokeWidth":2,"lineHeight":1.25}, + {"id":"b3-c1","type":"rectangle","x":912,"y":1386,"width":85,"height":124,"strokeColor":"#d6dae0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["B3","lane2"],"index":"a138"}, + {"id":"b3-c1t","type":"text","x":917,"y":1426,"width":75,"height":39,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B3","lane2"],"text":"1 month\n\n$69.99","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a139","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"b3-c2","type":"rectangle","x":1007,"y":1386,"width":85,"height":124,"strokeColor":"#d6dae0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["B3","lane2"],"index":"a13a"}, + {"id":"b3-c2t","type":"text","x":1010,"y":1426,"width":79,"height":39,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B3","lane2"],"text":"Monthly\n\n$69.99/month","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a13b","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"b3-c3","type":"rectangle","x":1102,"y":1386,"width":85,"height":124,"strokeColor":"#5b21b6","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":2,"roughness":0,"roundness":{"type":3},"groupIds":["B3","lane2"],"index":"a13c"}, + {"id":"b3-c3t","type":"text","x":1105,"y":1420,"width":79,"height":52,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B3","lane2"],"text":"Annual\n\n$699.99/year\nSave 17%","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a13d","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"b3-btn","type":"rectangle","x":930,"y":1620,"width":240,"height":38,"strokeColor":"transparent","backgroundColor":"#5b21b6","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["B3","lane2"],"boundElements":[{"id":"b3-btnt","type":"text"}],"index":"a13e"}, + {"id":"b3-btnt","type":"text","x":940,"y":1632,"width":220,"height":14,"strokeColor":"#ffffff","roughness":0,"groupIds":["B3","lane2"],"text":"Continue","fontSize":11,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"b3-btn","index":"a13f","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b3-foot","type":"text","x":920,"y":1676,"width":260,"height":13,"strokeColor":"#6b7280","roughness":0,"groupIds":["B3","lane2"],"text":"Renews on 24 August 2027. Cancel anytime.","fontSize":9.5,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a140","fillStyle":"solid","strokeWidth":2,"lineHeight":1.368421052631579}, + {"id":"b3-capt","type":"text","x":900,"y":1790,"width":300,"height":14,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B3","lane2"],"text":"B3. BadgesHowLongView, disarmed","fontSize":11,"fontFamily":2,"index":"a141","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b3-capb","type":"text","x":900,"y":1810,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["B3","lane2"],"text":"The level name was the title; now How long? is, with the\nchosen badge on the line under it, as the page does it.\nPay $69.99 becomes Continue and purchase() moves to B4.\nBadgePeriod as written today: one-time, monthly, annual,\nprices from StoreKit and Play, which need not match the web\npage's and generally will not.","fontSize":9,"fontFamily":2,"index":"a142","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2222222222222223}, + {"id":"b4-panel","type":"rectangle","x":1320,"y":1150,"width":300,"height":620,"strokeColor":"#5b21b6","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dashed","roughness":0,"roundness":{"type":3},"groupIds":["B4","lane2"],"boundElements":[{"id":"ar-b3b4","type":"arrow"},{"id":"ar-b4o1","type":"arrow"},{"id":"ar-b4o2","type":"arrow"},{"id":"ar-b4o3","type":"arrow"}],"index":"a143"}, + {"id":"b4-back","type":"text","x":1336,"y":1168,"width":20,"height":14,"strokeColor":"#5b21b6","roughness":0,"groupIds":["B4","lane2"],"text":"<","fontSize":11,"fontFamily":2,"autoResize":false,"index":"a144","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b4-title","type":"text","x":1340,"y":1196,"width":260,"height":24,"strokeColor":"#5b21b6","roughness":0,"groupIds":["B4","lane2"],"text":"Check your order","fontSize":19,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a145","fillStyle":"solid","strokeWidth":2,"lineHeight":1.263157894736842}, + {"id":"b4-rowsL","type":"text","x":1344,"y":1270,"width":160,"height":36,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B4","lane2"],"text":"Your badge\nDuration\nTotal","fontSize":9.5,"fontFamily":2,"autoResize":false,"index":"a146","fillStyle":"solid","strokeWidth":2,"lineHeight":1.263157894736842}, + {"id":"b4-rowsR","type":"text","x":1500,"y":1270,"width":96,"height":36,"strokeColor":"#1c1e26","roughness":0,"groupIds":["B4","lane2"],"text":"Legend\nAnnual\n$699.99/year","fontSize":9.5,"fontFamily":2,"textAlign":"right","autoResize":false,"index":"a147","fillStyle":"solid","strokeWidth":2,"lineHeight":1.263157894736842}, + {"id":"b4-div","type":"rectangle","x":1344,"y":1292,"width":252,"height":1,"strokeColor":"#dfe4ea","backgroundColor":"#dfe4ea","fillStyle":"solid","strokeWidth":1,"roughness":0,"groupIds":["B4","lane2"],"index":"a148"}, + {"id":"b4-note","type":"text","x":1344,"y":1336,"width":252,"height":26,"strokeColor":"#6b7280","roughness":0,"groupIds":["B4","lane2"],"text":"Charged by the App Store to the\naccount on this device.","fontSize":9.5,"fontFamily":2,"autoResize":false,"index":"a149","fillStyle":"solid","strokeWidth":2,"lineHeight":1.368421052631579}, + {"id":"b4-btn","type":"rectangle","x":1350,"y":1620,"width":240,"height":38,"strokeColor":"transparent","backgroundColor":"#5b21b6","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["B4","lane2"],"boundElements":[{"id":"b4-btnt","type":"text"}],"index":"a14a"}, + {"id":"b4-btnt","type":"text","x":1360,"y":1632,"width":220,"height":14,"strokeColor":"#ffffff","roughness":0,"groupIds":["B4","lane2"],"text":"Pay $699.99/year","fontSize":11,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"b4-btn","index":"a14b","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b4-foot","type":"text","x":1340,"y":1676,"width":260,"height":13,"strokeColor":"#6b7280","roughness":0,"groupIds":["B4","lane2"],"text":"Renews on 24 August 2027. Cancel anytime.","fontSize":9.5,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a14c","fillStyle":"solid","strokeWidth":2,"lineHeight":1.368421052631579}, + {"id":"b4-capt","type":"text","x":1320,"y":1790,"width":300,"height":14,"strokeColor":"#5b21b6","roughness":0,"groupIds":["B4","lane2"],"text":"B4. New screen, one for every market","fontSize":11,"fontFamily":2,"index":"a14d","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"b4-capb","type":"text","x":1320,"y":1810,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["B4","lane2"],"text":"No second button and nothing about paying elsewhere - that\nchoice was made back on B1. So this screen is identical in\nevery storefront and nothing on it is gated, which also means\nthe subscription never has to be reconciled against a web\nprice.","fontSize":9,"fontFamily":2,"index":"a14e","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4666666666666666}, + {"id":"o1-card","type":"rectangle","x":1740,"y":1160,"width":300,"height":120,"strokeColor":"#5b21b6","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dashed","roughness":0,"roundness":{"type":3},"groupIds":["O1","lane2"],"boundElements":[{"id":"ar-b4o1","type":"arrow"}],"index":"a150"}, + {"id":"o1-t","type":"text","x":1760,"y":1174,"width":260,"height":17,"strokeColor":"#1c1e26","roughness":0,"groupIds":["O1","lane2"],"text":"Paid","fontSize":13,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a151","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3076923076923077}, + {"id":"o1-s","type":"text","x":1760,"y":1198,"width":260,"height":13,"strokeColor":"#5b21b6","roughness":0,"groupIds":["O1","lane2"],"text":"o Issuing your badge","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a152","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"o1-b","type":"text","x":1766,"y":1222,"width":248,"height":26,"strokeColor":"#6b7280","roughness":0,"groupIds":["O1","lane2"],"text":"The store has taken the payment.\nKeeps trying if you close the app.","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a153","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4444444444444444}, + {"id":"o2-card","type":"rectangle","x":1740,"y":1300,"width":300,"height":96,"strokeColor":"#8f97a3","backgroundColor":"#f2f3f5","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["O2","lane2"],"index":"a154"}, + {"id":"o2-i","type":"rectangle","x":1756,"y":1312,"width":268,"height":72,"strokeColor":"transparent","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["O2","lane2"],"index":"a155"}, + {"id":"o2-g","type":"rectangle","x":1878,"y":1320,"width":24,"height":24,"strokeColor":"transparent","backgroundColor":"#dfe4ea","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["O2","lane2"],"index":"a156"}, + {"id":"o2-t","type":"text","x":1760,"y":1350,"width":260,"height":13,"strokeColor":"#1c1e26","roughness":0,"groupIds":["O2","lane2"],"text":"Legend","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a157","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"o2-s","type":"text","x":1760,"y":1366,"width":260,"height":11,"strokeColor":"#6b7280","roughness":0,"groupIds":["O2","lane2"],"text":"shown on your profile","fontSize":8.5,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a158","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2941176470588236}, + {"id":"o2-n","type":"text","x":1740,"y":1402,"width":300,"height":11,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["O2","lane2"],"text":"BadgesYourBadgeView, unchanged","fontSize":8.5,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a159","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2941176470588236}, + {"id":"o3-card","type":"rectangle","x":1740,"y":1424,"width":300,"height":130,"strokeColor":"#5b21b6","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"strokeStyle":"dashed","roughness":0,"roundness":{"type":3},"groupIds":["O3","lane2"],"boundElements":[{"id":"ar-b4o2","type":"arrow"}],"index":"a15a"}, + {"id":"o3-t","type":"text","x":1760,"y":1438,"width":260,"height":15,"strokeColor":"#1c1e26","roughness":0,"groupIds":["O3","lane2"],"text":"Waiting for approval","fontSize":12,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a15b","fillStyle":"solid","strokeWidth":2,"lineHeight":1.25}, + {"id":"o3-s","type":"text","x":1760,"y":1460,"width":260,"height":13,"strokeColor":"#5b21b6","roughness":0,"groupIds":["O3","lane2"],"text":"o Nothing has been charged","fontSize":9.5,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a15c","fillStyle":"solid","strokeWidth":2,"lineHeight":1.368421052631579}, + {"id":"o3-b","type":"text","x":1746,"y":1484,"width":288,"height":39,"strokeColor":"#6b7280","roughness":0,"groupIds":["O3","lane2"],"text":"Ask to Buy on iOS, a slow payment on\nPlay. Holds the slot so nothing can be\nbought twice, and becomes Paid above.","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a15d","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4444444444444444}, + {"id":"o4-card","type":"rectangle","x":1760,"y":1584,"width":260,"height":120,"strokeColor":"#d6dae0","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["O4","lane2"],"boundElements":[{"id":"ar-b4o3","type":"arrow"}],"index":"a15e"}, + {"id":"o4-t","type":"text","x":1776,"y":1598,"width":228,"height":14,"strokeColor":"#1c1e26","roughness":0,"groupIds":["O4","lane2"],"text":"Cannot verify this purchase","fontSize":11,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a15f","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"o4-b","type":"text","x":1776,"y":1620,"width":228,"height":39,"strokeColor":"#4b5563","roughness":0,"groupIds":["O4","lane2"],"text":"The store returned a transaction\nthat Apple has not signed. Nothing\nhas been bought.","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a15g","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4444444444444444}, + {"id":"o4-d","type":"rectangle","x":1760,"y":1668,"width":260,"height":1,"strokeColor":"#dfe4ea","backgroundColor":"#dfe4ea","fillStyle":"solid","strokeWidth":1,"roughness":0,"groupIds":["O4","lane2"],"index":"a15h"}, + {"id":"o4-o","type":"text","x":1760,"y":1678,"width":260,"height":14,"strokeColor":"#0053d0","roughness":0,"groupIds":["O4","lane2"],"text":"Ok","fontSize":11,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a15i","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"o-note","type":"text","x":1740,"y":1712,"width":300,"height":44,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["O","lane2"],"text":"iOS only - Play does no local verification, so a bad\ntoken is refused by the service instead. cancelled:\nnothing. other errors: today's Purchase error alert.","fontSize":8.5,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a15j","fillStyle":"solid","strokeWidth":2,"lineHeight":1.7254901960784312}, + {"id":"o-capt","type":"text","x":1740,"y":1790,"width":300,"height":14,"strokeColor":"#5b21b6","roughness":0,"groupIds":["O","lane2"],"text":"B5. What the sheet returns","fontSize":11,"fontFamily":2,"index":"a15k","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"o-capb","type":"text","x":1740,"y":1810,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["O","lane2"],"text":"Two of these are states on BadgeState, not alerts: Paid, which\nthe worker retries, and Waiting, which holds nothing but the\nslot - Support SimpleX must not offer a second purchase of a\nconsumable. Both resolve through the store, not the service:\nTransaction.updates on iOS, queryPurchasesAsync on Play,\nwhich is also how each is re-found after a restart.","fontSize":9,"fontFamily":2,"index":"a15l","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2222222222222223}, + {"id":"ar-b1b2","type":"arrow","x":368,"y":1460,"width":104,"height":0,"strokeColor":"#5b21b6","strokeWidth":2,"roughness":0,"elbowed":true,"points":[[0,0],[104,0]],"endArrowhead":"arrow","boundElements":[{"id":"ar-b1b2-t","type":"text"}],"index":"a180","fillStyle":"solid"}, + {"id":"ar-b1b2-t","type":"text","x":380,"y":1446,"width":80,"height":13,"strokeColor":"#5b21b6","roughness":0,"text":"Choose your badge","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-b1b2","index":"a181","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"ar-b2b3","type":"arrow","x":788,"y":1460,"width":104,"height":0,"strokeColor":"#5b21b6","strokeWidth":2,"roughness":0,"elbowed":true,"points":[[0,0],[104,0]],"endArrowhead":"arrow","boundElements":[{"id":"ar-b2b3-t","type":"text"}],"index":"a182","fillStyle":"solid"}, + {"id":"ar-b2b3-t","type":"text","x":800,"y":1446,"width":80,"height":13,"strokeColor":"#5b21b6","roughness":0,"text":"Continue","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-b2b3","index":"a183","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"ar-b3b4","type":"arrow","x":1208,"y":1460,"width":104,"height":0,"strokeColor":"#5b21b6","strokeWidth":2,"roughness":0,"elbowed":true,"points":[[0,0],[104,0]],"endArrowhead":"arrow","boundElements":[{"id":"ar-b3b4-t","type":"text"}],"index":"a184","fillStyle":"solid"}, + {"id":"ar-b3b4-t","type":"text","x":1220,"y":1446,"width":80,"height":13,"strokeColor":"#5b21b6","roughness":0,"text":"Continue","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-b3b4","index":"a185","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"ar-b4o1","type":"arrow","x":1628,"y":1220,"width":104,"height":0,"strokeColor":"#5b21b6","strokeWidth":2,"roughness":0,"elbowed":true,"points":[[0,0],[104,0]],"endArrowhead":"arrow","boundElements":[{"id":"ar-b4o1-t","type":"text"}],"index":"a186","fillStyle":"solid"}, + {"id":"ar-b4o1-t","type":"text","x":1640,"y":1206,"width":80,"height":13,"strokeColor":"#5b21b6","roughness":0,"text":"verified","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-b4o1","index":"a187","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"ar-b4o2","type":"arrow","x":1628,"y":1489,"width":104,"height":0,"strokeColor":"#5b21b6","strokeWidth":2,"roughness":0,"elbowed":true,"points":[[0,0],[104,0]],"endArrowhead":"arrow","boundElements":[{"id":"ar-b4o2-t","type":"text"}],"index":"a188","fillStyle":"solid"}, + {"id":"ar-b4o2-t","type":"text","x":1640,"y":1475,"width":80,"height":13,"strokeColor":"#5b21b6","roughness":0,"text":"pending","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-b4o2","index":"a189","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"ar-b4o3","type":"arrow","x":1628,"y":1644,"width":124,"height":0,"strokeColor":"#9aa1ab","strokeWidth":2,"strokeStyle":"dashed","roughness":0,"elbowed":true,"points":[[0,0],[124,0]],"endArrowhead":"arrow","boundElements":[{"id":"ar-b4o3-t","type":"text"}],"index":"a18a","fillStyle":"solid"}, + {"id":"ar-b4o3-t","type":"text","x":1640,"y":1630,"width":100,"height":13,"strokeColor":"#6b7280","roughness":0,"text":"unverified","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-b4o3","index":"a18b","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"l3-band","type":"rectangle","x":20,"y":1930,"width":2460,"height":850,"strokeColor":"transparent","backgroundColor":"#fff6ef","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["lane3"],"index":"a200"}, + {"id":"l3-head","type":"text","x":60,"y":1958,"width":900,"height":22,"strokeColor":"#a15c1e","roughness":0,"groupIds":["lane3"],"text":"Desktop - where the deep link may not exist","fontSize":17,"fontFamily":2,"index":"a201","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2941176470588236}, + {"id":"l3-sub","type":"text","x":60,"y":1986,"width":1300,"height":14,"strokeColor":"#6b7280","roughness":0,"groupIds":["lane3"],"text":"the fallback is the shipped code flow with both halves opened at once, so nothing depends on a scheme handler that may not be there","fontSize":11,"fontFamily":2,"index":"a202","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"d1-panel","type":"rectangle","x":60,"y":2040,"width":300,"height":620,"strokeColor":"#8f97a3","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["D1","lane3"],"boundElements":[{"id":"ar-d1d2","type":"arrow"}],"index":"a210"}, + {"id":"d1-back","type":"text","x":76,"y":2058,"width":20,"height":14,"strokeColor":"#a15c1e","roughness":0,"groupIds":["D1","lane3"],"text":"<","fontSize":11,"fontFamily":2,"autoResize":false,"index":"a211","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"d1-title","type":"text","x":80,"y":2086,"width":260,"height":24,"strokeColor":"#a15c1e","roughness":0,"groupIds":["D1","lane3"],"text":"Redeem code","fontSize":19,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a212","fillStyle":"solid","strokeWidth":2,"lineHeight":1.263157894736842}, + {"id":"d1-body","type":"text","x":80,"y":2128,"width":260,"height":13,"strokeColor":"#1c1e26","roughness":0,"groupIds":["D1","lane3"],"text":"Paste the code you received.","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a213","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"d1-field","type":"rectangle","x":76,"y":2160,"width":268,"height":40,"strokeColor":"transparent","backgroundColor":"#eceef1","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["D1","lane3"],"index":"a214"}, + {"id":"d1-fieldt","type":"text","x":80,"y":2174,"width":260,"height":13,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["D1","lane3"],"text":"SB-XXXXX-XXXXX-XXXXX-XXXXX","fontSize":10,"fontFamily":3,"textAlign":"center","autoResize":false,"index":"a215","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"d1-paste","type":"text","x":80,"y":2216,"width":260,"height":13,"strokeColor":"#a15c1e","roughness":0,"groupIds":["D1","lane3"],"text":"Paste","fontSize":10,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a216","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3}, + {"id":"d1-scan","type":"rectangle","x":126,"y":2254,"width":168,"height":168,"strokeColor":"#d6dae0","backgroundColor":"#f2f3f5","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["D1","lane3"],"index":"a217"}, + {"id":"d1-scant","type":"text","x":126,"y":2332,"width":168,"height":12,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["D1","lane3"],"text":"QR scanner","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a218","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"d1-btn","type":"rectangle","x":90,"y":2510,"width":240,"height":38,"strokeColor":"transparent","backgroundColor":"#dcc9b4","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["D1","lane3"],"boundElements":[{"id":"d1-btnt","type":"text"}],"index":"a219"}, + {"id":"d1-btnt","type":"text","x":100,"y":2522,"width":220,"height":14,"strokeColor":"#ffffff","roughness":0,"groupIds":["D1","lane3"],"text":"Redeem","fontSize":11,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"d1-btn","index":"a21a","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"d1-note","type":"text","x":80,"y":2566,"width":260,"height":24,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["D1","lane3"],"text":"opened by Buy in browser at the same\nmoment as the browser, and waiting","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a21b","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"d1-capt","type":"text","x":60,"y":2680,"width":300,"height":14,"strokeColor":"#1c1e26","roughness":0,"groupIds":["D1","lane3"],"text":"D1. Both halves at once","fontSize":11,"fontFamily":2,"index":"a21c","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"d1-capb","type":"text","x":60,"y":2700,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["D1","lane3"],"text":"On desktop, Buy in browser opens the page and this screen\ntogether, so the code has somewhere to go the moment it\nappears. No new screen, no deep link, no A6 - the shipped\nflow, with one extra window. It is also the honest fallback for\nany platform where the scheme turns out not to work.","fontSize":9,"fontFamily":2,"index":"a21d","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4666666666666666}, + {"id":"d2-panel","type":"rectangle","x":480,"y":2040,"width":300,"height":620,"strokeColor":"#8f97a3","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["D2","lane3"],"boundElements":[{"id":"ar-d1d2","type":"arrow"}],"index":"a220"}, + {"id":"d2-url","type":"rectangle","x":480,"y":2040,"width":300,"height":26,"strokeColor":"transparent","backgroundColor":"#eceef1","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["D2","lane3"],"index":"a221"}, + {"id":"d2-urlt","type":"text","x":496,"y":2048,"width":268,"height":12,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["D2","lane3"],"text":"badges.simplex.chat/#/tier?app=desktop","fontSize":9,"fontFamily":2,"autoResize":false,"index":"a222","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"d2-title","type":"text","x":496,"y":2090,"width":268,"height":22,"strokeColor":"#1c1e26","roughness":0,"groupIds":["D2","lane3"],"text":"Paid. Here is your code.","fontSize":16,"fontFamily":2,"autoResize":false,"index":"a223","fillStyle":"solid","strokeWidth":2,"lineHeight":1.375}, + {"id":"d2-code","type":"rectangle","x":496,"y":2128,"width":268,"height":36,"strokeColor":"#d6dae0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["D2","lane3"],"index":"a224"}, + {"id":"d2-codet","type":"text","x":500,"y":2140,"width":260,"height":14,"strokeColor":"#1c1e26","roughness":0,"groupIds":["D2","lane3"],"text":"SB-4K2M9-XQ7VT-H3BNP-R8WLC","fontSize":10,"fontFamily":3,"textAlign":"center","autoResize":false,"index":"a225","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4}, + {"id":"d2-btn","type":"rectangle","x":496,"y":2180,"width":268,"height":34,"strokeColor":"#0053d0","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["D2","lane3"],"boundElements":[{"id":"d2-btnt","type":"text"}],"index":"a226"}, + {"id":"d2-btnt","type":"text","x":506,"y":2190,"width":248,"height":14,"strokeColor":"#0053d0","roughness":0,"groupIds":["D2","lane3"],"text":"Copy code","fontSize":11,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"d2-btn","index":"a227","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"d2-qr","type":"rectangle","x":496,"y":2236,"width":110,"height":110,"strokeColor":"#d6dae0","backgroundColor":"#f7f8fa","fillStyle":"solid","strokeWidth":1,"roughness":0,"groupIds":["D2","lane3"],"index":"a228"}, + {"id":"d2-qrt","type":"text","x":496,"y":2352,"width":110,"height":24,"strokeColor":"#9aa1ab","roughness":0,"groupIds":["D2","lane3"],"text":"scan to carry it\nto your phone","fontSize":9,"fontFamily":2,"textAlign":"center","autoResize":false,"index":"a229","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"d2-redeem","type":"text","x":622,"y":2236,"width":142,"height":36,"strokeColor":"#1c1e26","roughness":0,"groupIds":["D2","lane3"],"text":"REDEEM IT IN THE APP\nThe Redeem code screen\nis already open.","fontSize":8.5,"fontFamily":2,"autoResize":false,"index":"a22a","fillStyle":"solid","strokeWidth":2,"lineHeight":1.411764705882353}, + {"id":"d2-warn","type":"rectangle","x":622,"y":2288,"width":142,"height":58,"strokeColor":"transparent","backgroundColor":"#fdf3e7","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["D2","lane3"],"index":"a22b"}, + {"id":"d2-warnt","type":"text","x":632,"y":2298,"width":122,"height":38,"strokeColor":"#8a5a1e","roughness":0,"groupIds":["D2","lane3"],"text":"This is the only copy.\nSaved in this browser\nand nowhere else.","fontSize":8.5,"fontFamily":2,"autoResize":false,"index":"a22c","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4901960784313726}, + {"id":"d2-capt","type":"text","x":480,"y":2680,"width":300,"height":14,"strokeColor":"#1c1e26","roughness":0,"groupIds":["D2","lane3"],"text":"D2. The page, told which app it is","fontSize":11,"fontFamily":2,"index":"a22d","fillStyle":"solid","strokeWidth":2,"lineHeight":1.2727272727272727}, + {"id":"d2-capb","type":"text","x":480,"y":2700,"width":340,"height":66,"strokeColor":"#6b7280","roughness":0,"groupIds":["D2","lane3"],"text":"codeIssued as it ships, with one line changed. The app builds\nthe URL, so ?app=desktop is a fact rather than a guess -\nbetter than sniffing the user agent, which cannot tell a\ndesktop browser opened by SimpleX from any other. Mobile\ngets ?app=true and the A5 screen instead.","fontSize":9,"fontFamily":2,"index":"a22e","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4666666666666666}, + {"id":"q-box","type":"rectangle","x":900,"y":2040,"width":1540,"height":260,"strokeColor":"#e0a672","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":2,"strokeStyle":"dashed","roughness":0,"roundness":{"type":3},"groupIds":["Q","lane3"],"index":"a230"}, + {"id":"q-head","type":"text","x":924,"y":2064,"width":900,"height":20,"strokeColor":"#a15c1e","roughness":0,"groupIds":["Q","lane3"],"text":"QUESTIONS - deep links, and whether the desktop can have them at all","fontSize":15,"fontFamily":2,"autoResize":false,"index":"a231","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"q-body","type":"text","x":924,"y":2098,"width":1490,"height":130,"strokeColor":"#4b5563","roughness":0,"groupIds":["Q","lane3"],"text":"1. Desktop has no scheme handler today. Nothing in the desktop module registers one and nothing handles it: appOpenUrl is wired in commonMain but has no desktop plumbing, and\n desktop/build.gradle.kts declares only Deb, Dmg, Msi and Exe with no protocol entry. Adding one is per-OS work - CFBundleURLTypes plus setOpenURIHandler on macOS, registry keys\n the MSI would have to write on Windows, a .desktop file with x-scheme-handler/simplexchat on Linux - and it would still not cover an unpackaged run. Hence D1: desktop does not wait for it.\n\n2. Will a browser follow it without a tap? The attempt is made from a hidden frame, so a refusal stays inside the frame rather than replacing the screen with an error page that would\n put the code into history. Expect nothing to happen on iOS Safari, which has ignored custom schemes in frames for years, nor on Chrome, which blocks a gestureless external-protocol\n launch - and a payment settling minutes after the last tap has no gesture. So Return to SimpleX is the real path. What is left is to try it on devices once the app registers the scheme.","fontSize":10,"fontFamily":2,"autoResize":false,"index":"a232","fillStyle":"solid","strokeWidth":2,"lineHeight":1.4444444444444444}, + {"id":"n-box","type":"rectangle","x":900,"y":2340,"width":1540,"height":300,"strokeColor":"#c9ced6","backgroundColor":"#ffffff","fillStyle":"solid","strokeWidth":1,"roughness":0,"roundness":{"type":3},"groupIds":["N","lane3"],"index":"a233"}, + {"id":"n-head","type":"text","x":924,"y":2364,"width":900,"height":20,"strokeColor":"#1c1e26","roughness":0,"groupIds":["N","lane3"],"text":"What has to be built, and what it costs","fontSize":15,"fontFamily":2,"autoResize":false,"index":"a234","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3333333333333333}, + {"id":"n-body","type":"text","x":924,"y":2398,"width":1490,"height":220,"strokeColor":"#4b5563","roughness":0,"groupIds":["N","lane3"],"text":"The browser lane needs nothing from the service: the code purchase runs exactly as it ships, the browser mints the code and sends only its SHA-256, and the only reason the buyer\nnever sees one is that the link carries it instead of the screen. The store lane is the part that does need service work - purchaseBadge has to accept a store receipt and verify it,\nand no provider adapter for that exists today.\n\nThe page needs three things: read the app flag from the fragment and start at Choose your badge; at the end, try the deep link and offer Return to SimpleX with Show code under it;\nand for ?app=desktop, keep showing codeIssued as it does now.\n\nThe app needs: Buy in browser without its confirm alert; a handler for the new link; A6, a spinner around the existing apiRedeemBadgeCode; on desktop, opening Redeem code alongside\nthe browser; and for the store lane, B4's checkout and the two BadgeState outcomes behind B5.\n\nWhat it costs: the app cannot show a price before sending the buyer out, because it has no catalog - Buy in browser is a leap into a page. And the code still exists, so it can be\nintercepted, screenshotted from the backup button, or pasted somewhere else. Hidden is not the same as absent.","fontSize":10,"fontFamily":2,"autoResize":false,"index":"a235","fillStyle":"solid","strokeWidth":2,"lineHeight":2}, + {"id":"ar-d1d2","type":"arrow","x":368,"y":2350,"width":104,"height":0,"strokeColor":"#a15c1e","strokeWidth":2,"strokeStyle":"dashed","roughness":0,"elbowed":true,"points":[[0,0],[104,0]],"startArrowhead":"arrow","endArrowhead":"arrow","boundElements":[{"id":"ar-d1d2-t","type":"text"}],"index":"a250","fillStyle":"solid"}, + {"id":"ar-d1d2-t","type":"text","x":370.23193359375,"y":2337,"width":99.5361328125,"height":26,"strokeColor":"#a15c1e","roughness":0,"text":"opened together, code\ncarried by hand","fontSize":10,"fontFamily":2,"textAlign":"center","verticalAlign":"middle","containerId":"ar-d1d2","index":"a251","fillStyle":"solid","strokeWidth":2,"originalText":"opened together, code carried by hand","lineHeight":1.3}, + {"id":"ft-note","type":"text","x":60,"y":2830,"width":2400,"height":26,"strokeColor":"#6b7280","roughness":0,"groupIds":["footer"],"text":"Copy is quoted from the app and the page. The app's screens take the page's names: Your level becomes Choose your badge, the level name becomes How long?, and Check your order is shared already.\nStore prices are illustrative and come from the storefront; the page's prices are the shipped catalog. Not drawn: the page's refusals - no active price, a provider unavailable, too many attempts - which are unchanged and already built.","fontSize":10,"fontFamily":2,"index":"a300","fillStyle":"solid","strokeWidth":2,"lineHeight":1.3} ], - "appState": { - "gridSize": 20, - "gridStep": 5, - "gridModeEnabled": false, - "viewBackgroundColor": "#ffffff" - }, + "appState": {"gridSize": 20, "gridStep": 5, "gridModeEnabled": false, "viewBackgroundColor": "#ffffff"}, "files": {} -} \ No newline at end of file +}