@silvana-one/mina-utils 1.0.29 → 1.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/node/index.cjs +29 -10
- package/dist/node/networks.d.ts +5 -3
- package/dist/node/networks.js +22 -6
- package/dist/node/networks.js.map +1 -1
- package/dist/node/utils/mina.d.ts +1 -1
- package/dist/node/utils/mina.js +7 -11
- package/dist/node/utils/mina.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/tsconfig.web.tsbuildinfo +1 -1
- package/dist/web/networks.d.ts +5 -3
- package/dist/web/networks.js +22 -6
- package/dist/web/networks.js.map +1 -1
- package/dist/web/utils/mina.d.ts +1 -1
- package/dist/web/utils/mina.js +7 -11
- package/dist/web/utils/mina.js.map +1 -1
- package/package.json +4 -4
- package/src/networks.ts +35 -8
- package/src/utils/mina.ts +15 -11
package/dist/node/index.cjs
CHANGED
|
@@ -70,6 +70,7 @@ __export(index_exports, {
|
|
|
70
70
|
formatTime: () => formatTime,
|
|
71
71
|
fromBase: () => fromBase,
|
|
72
72
|
getAccountNonce: () => getAccountNonce,
|
|
73
|
+
getCanonicalBlockchain: () => getCanonicalBlockchain,
|
|
73
74
|
getCurrentNetwork: () => getCurrentNetwork,
|
|
74
75
|
getDeployer: () => getDeployer,
|
|
75
76
|
getNetworkIdHash: () => getNetworkIdHash,
|
|
@@ -377,6 +378,22 @@ async function fee() {
|
|
|
377
378
|
var import_o1js5 = require("o1js");
|
|
378
379
|
|
|
379
380
|
// dist/node/networks.js
|
|
381
|
+
function getCanonicalBlockchain(chain) {
|
|
382
|
+
switch (chain) {
|
|
383
|
+
case "local":
|
|
384
|
+
return "mina:local";
|
|
385
|
+
case "devnet":
|
|
386
|
+
return "mina:devnet";
|
|
387
|
+
case "lightnet":
|
|
388
|
+
return "mina:lightnet";
|
|
389
|
+
case "mainnet":
|
|
390
|
+
return "mina:mainnet";
|
|
391
|
+
case "zeko":
|
|
392
|
+
return "zeko:testnet";
|
|
393
|
+
default:
|
|
394
|
+
return chain;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
380
397
|
var Mainnet = {
|
|
381
398
|
mina: [
|
|
382
399
|
//"https://proxy.devnet.minaexplorer.com/graphql",
|
|
@@ -388,13 +405,13 @@ var Mainnet = {
|
|
|
388
405
|
],
|
|
389
406
|
explorerAccountUrl: "https://minascan.io/mainnet/account/",
|
|
390
407
|
explorerTransactionUrl: "https://minascan.io/mainnet/tx/",
|
|
391
|
-
chainId: "mainnet",
|
|
408
|
+
chainId: "mina:mainnet",
|
|
392
409
|
name: "Mainnet"
|
|
393
410
|
};
|
|
394
411
|
var Local = {
|
|
395
412
|
mina: [],
|
|
396
413
|
archive: [],
|
|
397
|
-
chainId: "local"
|
|
414
|
+
chainId: "mina:local"
|
|
398
415
|
};
|
|
399
416
|
var Devnet = {
|
|
400
417
|
mina: [
|
|
@@ -407,7 +424,7 @@ var Devnet = {
|
|
|
407
424
|
],
|
|
408
425
|
explorerAccountUrl: "https://minascan.io/devnet/account/",
|
|
409
426
|
explorerTransactionUrl: "https://minascan.io/devnet/tx/",
|
|
410
|
-
chainId: "devnet",
|
|
427
|
+
chainId: "mina:devnet",
|
|
411
428
|
name: "Devnet",
|
|
412
429
|
faucet: "https://faucet.minaprotocol.com"
|
|
413
430
|
};
|
|
@@ -416,7 +433,7 @@ var Zeko = {
|
|
|
416
433
|
archive: ["https://devnet.zeko.io/graphql"],
|
|
417
434
|
explorerAccountUrl: "https://zekoscan.io/devnet/account/",
|
|
418
435
|
explorerTransactionUrl: "https://zekoscan.io/devnet/tx/",
|
|
419
|
-
chainId: "zeko",
|
|
436
|
+
chainId: "zeko:testnet",
|
|
420
437
|
name: "Zeko",
|
|
421
438
|
faucet: "https://zeko.io/faucet"
|
|
422
439
|
};
|
|
@@ -433,7 +450,7 @@ var Lightnet = {
|
|
|
433
450
|
mina: ["http://localhost:8080/graphql"],
|
|
434
451
|
archive: ["http://localhost:8282"],
|
|
435
452
|
accountManager: "http://localhost:8181",
|
|
436
|
-
chainId: "lightnet",
|
|
453
|
+
chainId: "mina:lightnet",
|
|
437
454
|
name: "Lightnet"
|
|
438
455
|
};
|
|
439
456
|
var networks = [Mainnet, Local, Devnet, Zeko, Lightnet];
|
|
@@ -460,7 +477,8 @@ function getDeployer() {
|
|
|
460
477
|
return void 0;
|
|
461
478
|
return currentNetwork.keys[0];
|
|
462
479
|
}
|
|
463
|
-
async function initBlockchain(
|
|
480
|
+
async function initBlockchain(chain, deployersNumber = 0, proofsEnabled = true, customMinaNodeUrl = void 0, customMinaArchiveNodeUrl = void 0) {
|
|
481
|
+
const instance = getCanonicalBlockchain(chain);
|
|
464
482
|
if (currentNetwork !== void 0) {
|
|
465
483
|
if (currentNetwork?.network.chainId === instance) {
|
|
466
484
|
return currentNetwork;
|
|
@@ -469,7 +487,7 @@ async function initBlockchain(instance, deployersNumber = 0, proofsEnabled = tru
|
|
|
469
487
|
}
|
|
470
488
|
}
|
|
471
489
|
const networkIdHash = import_o1js5.CircuitString.fromString(instance).hash();
|
|
472
|
-
if (instance === "local") {
|
|
490
|
+
if (instance === "mina:local") {
|
|
473
491
|
const local = await import_o1js5.Mina.LocalBlockchain({
|
|
474
492
|
proofsEnabled
|
|
475
493
|
});
|
|
@@ -491,13 +509,13 @@ async function initBlockchain(instance, deployersNumber = 0, proofsEnabled = tru
|
|
|
491
509
|
mina: process.env.MINA_NODE_URL ?? process.env.NEXT_PUBLIC_MINA_NODE_URL ?? customMinaNodeUrl ?? network.mina,
|
|
492
510
|
archive: process.env.MINA_ARCHIVE_NODE_URL ?? process.env.NEXT_PUBLIC_MINA_ARCHIVE_NODE_URL ?? customMinaArchiveNodeUrl ?? network.archive,
|
|
493
511
|
lightnetAccountManager: network.accountManager,
|
|
494
|
-
networkId: instance === "mainnet" ? "mainnet" : "testnet",
|
|
495
|
-
bypassTransactionLimits: instance === "zeko"
|
|
512
|
+
networkId: instance === "mina:mainnet" ? "mainnet" : "testnet",
|
|
513
|
+
bypassTransactionLimits: instance === "zeko:testnet" || instance === "zeko:alphanet"
|
|
496
514
|
});
|
|
497
515
|
import_o1js5.Mina.setActiveInstance(networkInstance);
|
|
498
516
|
const keys = [];
|
|
499
517
|
if (deployersNumber > 0) {
|
|
500
|
-
if (instance === "lightnet") {
|
|
518
|
+
if (instance === "mina:lightnet") {
|
|
501
519
|
for (let i = 0; i < deployersNumber; i++) {
|
|
502
520
|
const keyPair = await import_o1js5.Lightnet.acquireKeyPair();
|
|
503
521
|
const key = import_o1js5.Mina.TestPublicKey(keyPair.privateKey);
|
|
@@ -13816,6 +13834,7 @@ function update(oldTableCommitment, oldStructDigest, newStructDigest, index) {
|
|
|
13816
13834
|
formatTime,
|
|
13817
13835
|
fromBase,
|
|
13818
13836
|
getAccountNonce,
|
|
13837
|
+
getCanonicalBlockchain,
|
|
13819
13838
|
getCurrentNetwork,
|
|
13820
13839
|
getDeployer,
|
|
13821
13840
|
getNetworkIdHash,
|
package/dist/node/networks.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
export { blockchain, MinaNetwork, networks, Mainnet, Devnet, Zeko, ZekoAlphaNet, Lightnet, Local, };
|
|
1
|
+
export { CanonicalBlockchain, blockchain, getCanonicalBlockchain, MinaNetwork, networks, Mainnet, Devnet, Zeko, ZekoAlphaNet, Lightnet, Local, };
|
|
2
|
+
type CanonicalBlockchain = "mina:local" | "mina:lightnet" | "mina:devnet" | "mina:mainnet" | "zeko:testnet" | "zeko:alphanet";
|
|
2
3
|
/**
|
|
3
4
|
* blockchain is the type for the chain ID.
|
|
4
5
|
*/
|
|
5
|
-
type blockchain = "local" | "devnet" | "lightnet" | "mainnet" | "zeko"
|
|
6
|
+
type blockchain = CanonicalBlockchain | "local" | "devnet" | "lightnet" | "mainnet" | "zeko";
|
|
7
|
+
declare function getCanonicalBlockchain(chain: blockchain): CanonicalBlockchain;
|
|
6
8
|
/**
|
|
7
9
|
* MinaNetwork is the data structure for a Mina network, keeping track of the Mina and archive endpoints, chain ID, name, account manager, explorer account URL, explorer transaction URL, and faucet.
|
|
8
10
|
*/
|
|
@@ -12,7 +14,7 @@ interface MinaNetwork {
|
|
|
12
14
|
/** The archive endpoints */
|
|
13
15
|
archive: string[];
|
|
14
16
|
/** The chain ID */
|
|
15
|
-
chainId:
|
|
17
|
+
chainId: CanonicalBlockchain;
|
|
16
18
|
/** The name of the network (optional) */
|
|
17
19
|
name?: string;
|
|
18
20
|
/** The account manager for Lightnet (optional) */
|
package/dist/node/networks.js
CHANGED
|
@@ -1,4 +1,20 @@
|
|
|
1
|
-
export { networks, Mainnet, Devnet, Zeko, ZekoAlphaNet, Lightnet, Local, };
|
|
1
|
+
export { getCanonicalBlockchain, networks, Mainnet, Devnet, Zeko, ZekoAlphaNet, Lightnet, Local, };
|
|
2
|
+
function getCanonicalBlockchain(chain) {
|
|
3
|
+
switch (chain) {
|
|
4
|
+
case "local":
|
|
5
|
+
return "mina:local";
|
|
6
|
+
case "devnet":
|
|
7
|
+
return "mina:devnet";
|
|
8
|
+
case "lightnet":
|
|
9
|
+
return "mina:lightnet";
|
|
10
|
+
case "mainnet":
|
|
11
|
+
return "mina:mainnet";
|
|
12
|
+
case "zeko":
|
|
13
|
+
return "zeko:testnet";
|
|
14
|
+
default:
|
|
15
|
+
return chain;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
2
18
|
const Mainnet = {
|
|
3
19
|
mina: [
|
|
4
20
|
//"https://proxy.devnet.minaexplorer.com/graphql",
|
|
@@ -10,13 +26,13 @@ const Mainnet = {
|
|
|
10
26
|
],
|
|
11
27
|
explorerAccountUrl: "https://minascan.io/mainnet/account/",
|
|
12
28
|
explorerTransactionUrl: "https://minascan.io/mainnet/tx/",
|
|
13
|
-
chainId: "mainnet",
|
|
29
|
+
chainId: "mina:mainnet",
|
|
14
30
|
name: "Mainnet",
|
|
15
31
|
};
|
|
16
32
|
const Local = {
|
|
17
33
|
mina: [],
|
|
18
34
|
archive: [],
|
|
19
|
-
chainId: "local",
|
|
35
|
+
chainId: "mina:local",
|
|
20
36
|
};
|
|
21
37
|
const Devnet = {
|
|
22
38
|
mina: [
|
|
@@ -29,7 +45,7 @@ const Devnet = {
|
|
|
29
45
|
],
|
|
30
46
|
explorerAccountUrl: "https://minascan.io/devnet/account/",
|
|
31
47
|
explorerTransactionUrl: "https://minascan.io/devnet/tx/",
|
|
32
|
-
chainId: "devnet",
|
|
48
|
+
chainId: "mina:devnet",
|
|
33
49
|
name: "Devnet",
|
|
34
50
|
faucet: "https://faucet.minaprotocol.com",
|
|
35
51
|
};
|
|
@@ -38,7 +54,7 @@ const Zeko = {
|
|
|
38
54
|
archive: ["https://devnet.zeko.io/graphql"],
|
|
39
55
|
explorerAccountUrl: "https://zekoscan.io/devnet/account/",
|
|
40
56
|
explorerTransactionUrl: "https://zekoscan.io/devnet/tx/",
|
|
41
|
-
chainId: "zeko",
|
|
57
|
+
chainId: "zeko:testnet",
|
|
42
58
|
name: "Zeko",
|
|
43
59
|
faucet: "https://zeko.io/faucet",
|
|
44
60
|
};
|
|
@@ -55,7 +71,7 @@ const Lightnet = {
|
|
|
55
71
|
mina: ["http://localhost:8080/graphql"],
|
|
56
72
|
archive: ["http://localhost:8282"],
|
|
57
73
|
accountManager: "http://localhost:8181",
|
|
58
|
-
chainId: "lightnet",
|
|
74
|
+
chainId: "mina:lightnet",
|
|
59
75
|
name: "Lightnet",
|
|
60
76
|
};
|
|
61
77
|
const networks = [Mainnet, Local, Devnet, Zeko, Lightnet];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"networks.js","sourceRoot":"","sources":["../../src/networks.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,KAAK,GACN,CAAC;
|
|
1
|
+
{"version":3,"file":"networks.js","sourceRoot":"","sources":["../../src/networks.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,sBAAsB,EAEtB,QAAQ,EACR,OAAO,EACP,MAAM,EACN,IAAI,EACJ,YAAY,EACZ,QAAQ,EACR,KAAK,GACN,CAAC;AAqBF,SAAS,sBAAsB,CAAC,KAAiB;IAC/C,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO;YACV,OAAO,YAAY,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;QACvB,KAAK,UAAU;YACb,OAAO,eAAe,CAAC;QACzB,KAAK,SAAS;YACZ,OAAO,cAAc,CAAC;QACxB,KAAK,MAAM;YACT,OAAO,cAAc,CAAC;QACxB;YACE,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AA+BD,MAAM,OAAO,GAAgB;IAC3B,IAAI,EAAE;QACJ,kDAAkD;QAClD,iDAAiD;KAClD;IACD,OAAO,EAAE;QACP,oDAAoD;QACpD,4CAA4C;KAC7C;IACD,kBAAkB,EAAE,sCAAsC;IAC1D,sBAAsB,EAAE,iCAAiC;IACzD,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,KAAK,GAAgB;IACzB,IAAI,EAAE,EAAE;IACR,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,YAAY;CACtB,CAAC;AAEF,MAAM,MAAM,GAAgB;IAC1B,IAAI,EAAE;QACJ,gDAAgD;QAChD,kDAAkD;KACnD;IACD,OAAO,EAAE;QACP,mDAAmD;QACnD,4CAA4C;KAC7C;IACD,kBAAkB,EAAE,qCAAqC;IACzD,sBAAsB,EAAE,gCAAgC;IACxD,OAAO,EAAE,aAAa;IACtB,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,iCAAiC;CAC1C,CAAC;AAEF,MAAM,IAAI,GAAgB;IACxB,IAAI,EAAE,CAAC,gCAAgC,CAAC;IACxC,OAAO,EAAE,CAAC,gCAAgC,CAAC;IAC3C,kBAAkB,EAAE,qCAAqC;IACzD,sBAAsB,EAAE,gCAAgC;IACxD,OAAO,EAAE,cAAc;IACvB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,wBAAwB;CACjC,CAAC;AAEF,MAAM,YAAY,GAAgB;IAChC,IAAI,EAAE,CAAC,2BAA2B,CAAC;IACnC,OAAO,EAAE,CAAC,2BAA2B,CAAC;IACtC,kBAAkB,EAAE,EAAE;IACtB,sBAAsB,EAAE,EAAE;IAC1B,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,eAAe;IACrB,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,MAAM,QAAQ,GAAgB;IAC5B,IAAI,EAAE,CAAC,+BAA+B,CAAC;IACvC,OAAO,EAAE,CAAC,uBAAuB,CAAC;IAClC,cAAc,EAAE,uBAAuB;IACvC,OAAO,EAAE,eAAe;IACxB,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,MAAM,QAAQ,GAAkB,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BE"}
|
|
@@ -24,7 +24,7 @@ declare function getDeployer(): Mina.TestPublicKey | undefined;
|
|
|
24
24
|
* @param deployersNumber the number of deployers to use for the network (only for local and lightnet networks)
|
|
25
25
|
* @returns the Mina network instance
|
|
26
26
|
*/
|
|
27
|
-
declare function initBlockchain(
|
|
27
|
+
declare function initBlockchain(chain: blockchain, deployersNumber?: number, proofsEnabled?: boolean, customMinaNodeUrl?: string | undefined, customMinaArchiveNodeUrl?: string | undefined): Promise<MinaNetworkInstance>;
|
|
28
28
|
/**
|
|
29
29
|
* Fetches the account balance for a given public key
|
|
30
30
|
* @param address the public key
|
package/dist/node/utils/mina.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { initBlockchain, accountBalance, accountBalanceMina, currentNetwork, getNetworkIdHash, getCurrentNetwork, getDeployer, };
|
|
2
2
|
import { Mina, PrivateKey, UInt64, fetchAccount, Lightnet, CircuitString, } from "o1js";
|
|
3
|
-
import { networks, Local } from "../networks.js";
|
|
3
|
+
import { networks, Local, getCanonicalBlockchain, } from "../networks.js";
|
|
4
4
|
let currentNetwork = undefined;
|
|
5
5
|
function getNetworkIdHash() {
|
|
6
6
|
if (currentNetwork === undefined) {
|
|
@@ -30,12 +30,8 @@ function getDeployer() {
|
|
|
30
30
|
* @param deployersNumber the number of deployers to use for the network (only for local and lightnet networks)
|
|
31
31
|
* @returns the Mina network instance
|
|
32
32
|
*/
|
|
33
|
-
async function initBlockchain(
|
|
34
|
-
|
|
35
|
-
if (instance === "mainnet") {
|
|
36
|
-
throw new Error("Mainnet is not supported yet by zkApps");
|
|
37
|
-
}
|
|
38
|
-
*/
|
|
33
|
+
async function initBlockchain(chain, deployersNumber = 0, proofsEnabled = true, customMinaNodeUrl = undefined, customMinaArchiveNodeUrl = undefined) {
|
|
34
|
+
const instance = getCanonicalBlockchain(chain);
|
|
39
35
|
if (currentNetwork !== undefined) {
|
|
40
36
|
if (currentNetwork?.network.chainId === instance) {
|
|
41
37
|
return currentNetwork;
|
|
@@ -46,7 +42,7 @@ async function initBlockchain(instance, deployersNumber = 0, proofsEnabled = tru
|
|
|
46
42
|
}
|
|
47
43
|
const networkIdHash = CircuitString.fromString(instance).hash();
|
|
48
44
|
// await used for compatibility with future versions of o1js
|
|
49
|
-
if (instance === "local") {
|
|
45
|
+
if (instance === "mina:local") {
|
|
50
46
|
const local = await Mina.LocalBlockchain({
|
|
51
47
|
proofsEnabled,
|
|
52
48
|
});
|
|
@@ -74,13 +70,13 @@ async function initBlockchain(instance, deployersNumber = 0, proofsEnabled = tru
|
|
|
74
70
|
customMinaArchiveNodeUrl ??
|
|
75
71
|
network.archive,
|
|
76
72
|
lightnetAccountManager: network.accountManager,
|
|
77
|
-
networkId: instance === "mainnet" ? "mainnet" : "testnet",
|
|
78
|
-
bypassTransactionLimits: instance === "zeko",
|
|
73
|
+
networkId: instance === "mina:mainnet" ? "mainnet" : "testnet",
|
|
74
|
+
bypassTransactionLimits: instance === "zeko:testnet" || instance === "zeko:alphanet",
|
|
79
75
|
});
|
|
80
76
|
Mina.setActiveInstance(networkInstance);
|
|
81
77
|
const keys = [];
|
|
82
78
|
if (deployersNumber > 0) {
|
|
83
|
-
if (instance === "lightnet") {
|
|
79
|
+
if (instance === "mina:lightnet") {
|
|
84
80
|
for (let i = 0; i < deployersNumber; i++) {
|
|
85
81
|
const keyPair = await Lightnet.acquireKeyPair();
|
|
86
82
|
const key = Mina.TestPublicKey(keyPair.privateKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mina.js","sourceRoot":"","sources":["../../../src/utils/mina.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAElB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,CAAC;AAEF,OAAO,EACL,IAAI,EAEJ,UAAU,EACV,MAAM,EACN,YAAY,EAEZ,QAAQ,EACR,aAAa,GACd,MAAM,MAAM,CAAC;AACd,OAAO,
|
|
1
|
+
{"version":3,"file":"mina.js","sourceRoot":"","sources":["../../../src/utils/mina.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,kBAAkB,EAElB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,GACZ,CAAC;AAEF,OAAO,EACL,IAAI,EAEJ,UAAU,EACV,MAAM,EACN,YAAY,EAEZ,QAAQ,EACR,aAAa,GACd,MAAM,MAAM,CAAC;AACd,OAAO,EACL,QAAQ,EAGR,KAAK,EACL,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AAgBxB,IAAI,cAAc,GAAoC,SAAS,CAAC;AAEhE,SAAS,gBAAgB;IACvB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,cAAc,CAAC,aAAa,CAAC;AACtC,CAAC;AAED,SAAS,iBAAiB;IACxB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,SAAS,WAAW;IAClB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,cAAc,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACrD,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;GAOG;AACH,KAAK,UAAU,cAAc,CAC3B,KAAiB,EACjB,kBAA0B,CAAC,EAC3B,gBAAyB,IAAI,EAC7B,oBAAwC,SAAS,EACjD,2BAA+C,SAAS;IAExD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAE/C,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,cAAc,EAAE,OAAO,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACjD,OAAO,cAAc,CAAC;QACxB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CACb,qDAAqD,cAAc,CAAC,OAAO,CAAC,OAAO,0BAA0B,QAAQ,EAAE,CACxH,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,aAAa,GAAG,aAAa,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAEhE,4DAA4D;IAC5D,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC;YACvC,aAAa;SACd,CAAC,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,eAAe,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM;YAC7C,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9C,cAAc,GAAG;YACf,IAAI,EAAE,KAAK,CAAC,YAAY;YACxB,OAAO,EAAE,KAAK;YACd,aAAa;SACd,CAAC;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC;IAC7D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC;QACnC,IAAI,EACF,OAAO,CAAC,GAAG,CAAC,aAAa;YACzB,OAAO,CAAC,GAAG,CAAC,yBAAyB;YACrC,iBAAiB;YACjB,OAAO,CAAC,IAAI;QACd,OAAO,EACL,OAAO,CAAC,GAAG,CAAC,qBAAqB;YACjC,OAAO,CAAC,GAAG,CAAC,iCAAiC;YAC7C,wBAAwB;YACxB,OAAO,CAAC,OAAO;QACjB,sBAAsB,EAAE,OAAO,CAAC,cAAc;QAC9C,SAAS,EAAE,QAAQ,KAAK,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;QAC9D,uBAAuB,EACrB,QAAQ,KAAK,cAAc,IAAI,QAAQ,KAAK,eAAe;KAC9D,CAAC,CAAC;IACH,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAExC,MAAM,IAAI,GAAyB,EAAE,CAAC;IAEtC,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,QAAQ,KAAK,eAAe,EAAE,CAAC;YACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,cAAc,EAAE,CAAC;gBAChD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;YACxC,IACE,SAAS,KAAK,SAAS;gBACvB,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,KAAK;gBAClC,SAAS,CAAC,MAAM,GAAG,eAAe;gBAElC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAC3C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;gBACvD,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;gBAC3C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,cAAc,GAAG;QACf,IAAI;QACJ,OAAO;QACP,aAAa;KACd,CAAC;IACF,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,cAAc,CAAC,OAAkB;IAC9C,MAAM,YAAY,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;;QACzD,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,kBAAkB,CAAC,OAAkB;IAClD,OAAO,MAAM,CAAC,CAAC,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,GAAG,CAAC;AAClE,CAAC"}
|