@designliquido/delegua 1.26.2 → 1.27.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -3
- package/avaliador-sintatico/avaliador-sintatico.d.ts +25 -0
- package/avaliador-sintatico/avaliador-sintatico.d.ts.map +1 -1
- package/avaliador-sintatico/avaliador-sintatico.js +95 -6
- package/avaliador-sintatico/avaliador-sintatico.js.map +1 -1
- package/bin/package.json +1 -1
- package/interfaces/simbolo-interface.d.ts +1 -0
- package/interfaces/simbolo-interface.d.ts.map +1 -1
- package/interpretador/interpretador.d.ts +1 -1
- package/interpretador/interpretador.d.ts.map +1 -1
- package/interpretador/interpretador.js +12 -3
- package/interpretador/interpretador.js.map +1 -1
- package/lexador/lexador-base.d.ts +1 -1
- package/lexador/lexador-base.d.ts.map +1 -1
- package/lexador/lexador-base.js +2 -2
- package/lexador/lexador-base.js.map +1 -1
- package/lexador/lexador.d.ts +1 -1
- package/lexador/lexador.d.ts.map +1 -1
- package/lexador/lexador.js +3 -3
- package/lexador/lexador.js.map +1 -1
- package/lexador/simbolo.d.ts +2 -1
- package/lexador/simbolo.d.ts.map +1 -1
- package/lexador/simbolo.js +2 -1
- package/lexador/simbolo.js.map +1 -1
- package/package.json +1 -1
- package/tradutores/index.d.ts +0 -4
- package/tradutores/index.d.ts.map +1 -1
- package/tradutores/index.js +0 -4
- package/tradutores/index.js.map +1 -1
- package/tradutores/tradutor-elixir.d.ts +17 -0
- package/tradutores/tradutor-elixir.d.ts.map +1 -1
- package/tradutores/tradutor-elixir.js +82 -2
- package/tradutores/tradutor-elixir.js.map +1 -1
- package/tradutores/tradutor-javascript.d.ts.map +1 -1
- package/tradutores/tradutor-javascript.js +5 -0
- package/tradutores/tradutor-javascript.js.map +1 -1
- package/tradutores/tradutor-python.d.ts.map +1 -1
- package/tradutores/tradutor-python.js +5 -0
- package/tradutores/tradutor-python.js.map +1 -1
- package/tradutores/tradutor-ruby.d.ts.map +1 -1
- package/tradutores/tradutor-ruby.js +5 -0
- package/tradutores/tradutor-ruby.js.map +1 -1
- package/umd/delegua.js +457 -4800
- package/tradutores/tradutor-assembly-arm.d.ts +0 -98
- package/tradutores/tradutor-assembly-arm.d.ts.map +0 -1
- package/tradutores/tradutor-assembly-arm.js +0 -711
- package/tradutores/tradutor-assembly-arm.js.map +0 -1
- package/tradutores/tradutor-assembly-risc-v.d.ts +0 -100
- package/tradutores/tradutor-assembly-risc-v.d.ts.map +0 -1
- package/tradutores/tradutor-assembly-risc-v.js +0 -688
- package/tradutores/tradutor-assembly-risc-v.js.map +0 -1
- package/tradutores/tradutor-assembly-x64.d.ts +0 -17
- package/tradutores/tradutor-assembly-x64.d.ts.map +0 -1
- package/tradutores/tradutor-assembly-x64.js +0 -38
- package/tradutores/tradutor-assembly-x64.js.map +0 -1
- package/tradutores/tradutor-webassembly.d.ts +0 -159
- package/tradutores/tradutor-webassembly.d.ts.map +0 -1
- package/tradutores/tradutor-webassembly.js +0 -886
- package/tradutores/tradutor-webassembly.js.map +0 -1
- package/tradutores/x64/alocador-registradores.d.ts +0 -29
- package/tradutores/x64/alocador-registradores.d.ts.map +0 -1
- package/tradutores/x64/alocador-registradores.js +0 -192
- package/tradutores/x64/alocador-registradores.js.map +0 -1
- package/tradutores/x64/codegen.d.ts +0 -43
- package/tradutores/x64/codegen.d.ts.map +0 -1
- package/tradutores/x64/codegen.js +0 -416
- package/tradutores/x64/codegen.js.map +0 -1
- package/tradutores/x64/dessa.d.ts +0 -9
- package/tradutores/x64/dessa.d.ts.map +0 -1
- package/tradutores/x64/dessa.js +0 -124
- package/tradutores/x64/dessa.js.map +0 -1
- package/tradutores/x64/dominancia.d.ts +0 -25
- package/tradutores/x64/dominancia.d.ts.map +0 -1
- package/tradutores/x64/dominancia.js +0 -129
- package/tradutores/x64/dominancia.js.map +0 -1
- package/tradutores/x64/ir.d.ts +0 -144
- package/tradutores/x64/ir.d.ts.map +0 -1
- package/tradutores/x64/ir.js +0 -44
- package/tradutores/x64/ir.js.map +0 -1
- package/tradutores/x64/liveness.d.ts +0 -12
- package/tradutores/x64/liveness.d.ts.map +0 -1
- package/tradutores/x64/liveness.js +0 -159
- package/tradutores/x64/liveness.js.map +0 -1
- package/tradutores/x64/lowering.d.ts +0 -7
- package/tradutores/x64/lowering.d.ts.map +0 -1
- package/tradutores/x64/lowering.js +0 -904
- package/tradutores/x64/lowering.js.map +0 -1
- package/tradutores/x64/ssa.d.ts +0 -9
- package/tradutores/x64/ssa.d.ts.map +0 -1
- package/tradutores/x64/ssa.js +0 -170
- package/tradutores/x64/ssa.js.map +0 -1
- package/tradutores/x64/tipos-x64.d.ts +0 -12
- package/tradutores/x64/tipos-x64.d.ts.map +0 -1
- package/tradutores/x64/tipos-x64.js +0 -59
- package/tradutores/x64/tipos-x64.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tradutor-webassembly.js","sourceRoot":"","sources":["../../fontes/tradutores/tradutor-webassembly.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { IRFuncao } from './ir';
|
|
2
|
-
export type Alocacao = {
|
|
3
|
-
tipo: 'registrador';
|
|
4
|
-
fisico: string;
|
|
5
|
-
} | {
|
|
6
|
-
tipo: 'pilha';
|
|
7
|
-
offsetBytes: number;
|
|
8
|
-
};
|
|
9
|
-
export interface ResultadoAlocacao {
|
|
10
|
-
alocacao: Map<string, Alocacao>;
|
|
11
|
-
/** Bytes de pilha reservados só para slots de spill (função ainda soma vetores locais por cima). */
|
|
12
|
-
tamanhoSpillBytes: number;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Aloca registradores por coloração de grafo (Chaitin: simplifica removendo nós de grau
|
|
16
|
-
* < k, desempata heurística de spill pelo maior grau, depois seleciona cores na ordem
|
|
17
|
-
* inversa da pilha de simplificação).
|
|
18
|
-
*
|
|
19
|
-
* Simplificação deliberada em relação ao Chaitin-Briggs "clássico": um nó que não
|
|
20
|
-
* consegue cor na seleção não gera reescrita do IR com nova ronda de vivacidade — ele é
|
|
21
|
-
* marcado como residente em memória (`pilha`) permanentemente. Como valores em memória
|
|
22
|
-
* nunca ocupam a paleta, eles não geram pressão de registrador nenhuma, e o
|
|
23
|
-
* carregamento/gravação em torno de cada uso/definição é sintetizado depois, direto no
|
|
24
|
-
* codegen, usando os escradores rax/rdx (sempre reservados, fora da paleta). Isso evita
|
|
25
|
-
* o laço iterativo clássico de reescrita+recoloração mantendo a alocação corretamente
|
|
26
|
-
* livre de conflitos.
|
|
27
|
-
*/
|
|
28
|
-
export declare function alocarRegistradores(funcao: IRFuncao, paleta: string[]): ResultadoAlocacao;
|
|
29
|
-
//# sourceMappingURL=alocador-registradores.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"alocador-registradores.d.ts","sourceRoot":"","sources":["../../../fontes/tradutores/x64/alocador-registradores.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAW,MAAM,MAAM,CAAC;AAEzC,MAAM,MAAM,QAAQ,GACd;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC;AAE7C,MAAM,WAAW,iBAAiB;IAC9B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAChC,oGAAoG;IACpG,iBAAiB,EAAE,MAAM,CAAC;CAC7B;AAuGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,iBAAiB,CA4EzF"}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.alocarRegistradores = alocarRegistradores;
|
|
4
|
-
const liveness_1 = require("./liveness");
|
|
5
|
-
function usosEDstDoValor(valor, saida) {
|
|
6
|
-
if (valor.classe === 'registrador')
|
|
7
|
-
saida.add(valor.nome);
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Constrói o grafo de interferência de `funcao` (já em SSA) varrendo cada bloco de trás
|
|
11
|
-
* para frente a partir de liveOut, no estilo clássico (Appel, "Modern Compiler
|
|
12
|
-
* Implementation"). Phis são tratados como definições paralelas no topo do bloco: cada
|
|
13
|
-
* phi.dst interfere com liveIn(bloco) e com os demais phis do mesmo bloco.
|
|
14
|
-
*/
|
|
15
|
-
function construirGrafoInterferencia(funcao) {
|
|
16
|
-
const vivacidade = (0, liveness_1.analisarVivacidade)(funcao);
|
|
17
|
-
const grafo = new Map();
|
|
18
|
-
function no(nome) {
|
|
19
|
-
if (!grafo.has(nome))
|
|
20
|
-
grafo.set(nome, new Set());
|
|
21
|
-
return grafo.get(nome);
|
|
22
|
-
}
|
|
23
|
-
function ligar(a, b) {
|
|
24
|
-
if (a === b)
|
|
25
|
-
return;
|
|
26
|
-
no(a).add(b);
|
|
27
|
-
no(b).add(a);
|
|
28
|
-
}
|
|
29
|
-
for (const [blocoId, bloco] of funcao.blocos) {
|
|
30
|
-
const vivacidadeBloco = vivacidade.get(blocoId);
|
|
31
|
-
const live = new Set(vivacidadeBloco.liveOut);
|
|
32
|
-
for (let i = bloco.instrucoes.length - 1; i >= 0; i--) {
|
|
33
|
-
const instrucao = bloco.instrucoes[i];
|
|
34
|
-
let dst = null;
|
|
35
|
-
if (instrucao.op === 'const' ||
|
|
36
|
-
instrucao.op === 'copia' ||
|
|
37
|
-
instrucao.op === 'bin' ||
|
|
38
|
-
instrucao.op === 'neg' ||
|
|
39
|
-
instrucao.op === 'nao' ||
|
|
40
|
-
instrucao.op === 'enderecoRotulo' ||
|
|
41
|
-
instrucao.op === 'carregarGlobal' ||
|
|
42
|
-
instrucao.op === 'indiceLer') {
|
|
43
|
-
dst = instrucao.dst;
|
|
44
|
-
}
|
|
45
|
-
else if (instrucao.op === 'chamada') {
|
|
46
|
-
dst = instrucao.dst;
|
|
47
|
-
}
|
|
48
|
-
if (dst) {
|
|
49
|
-
no(dst);
|
|
50
|
-
for (const outro of live)
|
|
51
|
-
ligar(dst, outro);
|
|
52
|
-
live.delete(dst);
|
|
53
|
-
}
|
|
54
|
-
const usos = new Set();
|
|
55
|
-
switch (instrucao.op) {
|
|
56
|
-
case 'copia':
|
|
57
|
-
usosEDstDoValor(instrucao.src, usos);
|
|
58
|
-
break;
|
|
59
|
-
case 'bin':
|
|
60
|
-
usosEDstDoValor(instrucao.esquerda, usos);
|
|
61
|
-
usosEDstDoValor(instrucao.direita, usos);
|
|
62
|
-
break;
|
|
63
|
-
case 'neg':
|
|
64
|
-
case 'nao':
|
|
65
|
-
usosEDstDoValor(instrucao.src, usos);
|
|
66
|
-
break;
|
|
67
|
-
case 'indiceLer':
|
|
68
|
-
usosEDstDoValor(instrucao.indice, usos);
|
|
69
|
-
break;
|
|
70
|
-
case 'indiceEscrever':
|
|
71
|
-
usosEDstDoValor(instrucao.indice, usos);
|
|
72
|
-
usosEDstDoValor(instrucao.valor, usos);
|
|
73
|
-
break;
|
|
74
|
-
case 'armazenarGlobal':
|
|
75
|
-
usosEDstDoValor(instrucao.valor, usos);
|
|
76
|
-
break;
|
|
77
|
-
case 'chamada':
|
|
78
|
-
for (const argumento of instrucao.argumentos)
|
|
79
|
-
usosEDstDoValor(argumento, usos);
|
|
80
|
-
break;
|
|
81
|
-
case 'imprimirNumero':
|
|
82
|
-
usosEDstDoValor(instrucao.valor, usos);
|
|
83
|
-
break;
|
|
84
|
-
default:
|
|
85
|
-
break;
|
|
86
|
-
}
|
|
87
|
-
for (const reg of usos)
|
|
88
|
-
live.add(reg);
|
|
89
|
-
}
|
|
90
|
-
for (let i = 0; i < bloco.phis.length; i++) {
|
|
91
|
-
const phi = bloco.phis[i];
|
|
92
|
-
no(phi.dst);
|
|
93
|
-
for (const outro of live)
|
|
94
|
-
ligar(phi.dst, outro);
|
|
95
|
-
for (let j = 0; j < bloco.phis.length; j++) {
|
|
96
|
-
if (i !== j)
|
|
97
|
-
ligar(phi.dst, bloco.phis[j].dst);
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return grafo;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Aloca registradores por coloração de grafo (Chaitin: simplifica removendo nós de grau
|
|
105
|
-
* < k, desempata heurística de spill pelo maior grau, depois seleciona cores na ordem
|
|
106
|
-
* inversa da pilha de simplificação).
|
|
107
|
-
*
|
|
108
|
-
* Simplificação deliberada em relação ao Chaitin-Briggs "clássico": um nó que não
|
|
109
|
-
* consegue cor na seleção não gera reescrita do IR com nova ronda de vivacidade — ele é
|
|
110
|
-
* marcado como residente em memória (`pilha`) permanentemente. Como valores em memória
|
|
111
|
-
* nunca ocupam a paleta, eles não geram pressão de registrador nenhuma, e o
|
|
112
|
-
* carregamento/gravação em torno de cada uso/definição é sintetizado depois, direto no
|
|
113
|
-
* codegen, usando os escradores rax/rdx (sempre reservados, fora da paleta). Isso evita
|
|
114
|
-
* o laço iterativo clássico de reescrita+recoloração mantendo a alocação corretamente
|
|
115
|
-
* livre de conflitos.
|
|
116
|
-
*/
|
|
117
|
-
function alocarRegistradores(funcao, paleta) {
|
|
118
|
-
const grafo = construirGrafoInterferencia(funcao);
|
|
119
|
-
const grauAtual = new Map();
|
|
120
|
-
for (const [no, vizinhos] of grafo)
|
|
121
|
-
grauAtual.set(no, vizinhos.size);
|
|
122
|
-
const removidos = new Set();
|
|
123
|
-
const pilha = [];
|
|
124
|
-
const todosOsNos = [...grafo.keys()];
|
|
125
|
-
function grauEfetivo(no) {
|
|
126
|
-
let grau = 0;
|
|
127
|
-
for (const vizinho of grafo.get(no)) {
|
|
128
|
-
if (!removidos.has(vizinho))
|
|
129
|
-
grau++;
|
|
130
|
-
}
|
|
131
|
-
return grau;
|
|
132
|
-
}
|
|
133
|
-
while (removidos.size < todosOsNos.length) {
|
|
134
|
-
let escolhido = null;
|
|
135
|
-
for (const no of todosOsNos) {
|
|
136
|
-
if (removidos.has(no))
|
|
137
|
-
continue;
|
|
138
|
-
if (grauEfetivo(no) < paleta.length) {
|
|
139
|
-
escolhido = no;
|
|
140
|
-
break;
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
if (!escolhido) {
|
|
144
|
-
let maiorGrau = -1;
|
|
145
|
-
for (const no of todosOsNos) {
|
|
146
|
-
if (removidos.has(no))
|
|
147
|
-
continue;
|
|
148
|
-
const grau = grauEfetivo(no);
|
|
149
|
-
if (grau > maiorGrau) {
|
|
150
|
-
maiorGrau = grau;
|
|
151
|
-
escolhido = no;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
if (!escolhido)
|
|
156
|
-
break;
|
|
157
|
-
pilha.push(escolhido);
|
|
158
|
-
removidos.add(escolhido);
|
|
159
|
-
}
|
|
160
|
-
const corPorNo = new Map();
|
|
161
|
-
const spilled = new Set();
|
|
162
|
-
while (pilha.length > 0) {
|
|
163
|
-
const no = pilha.pop();
|
|
164
|
-
const coresVizinhas = new Set();
|
|
165
|
-
for (const vizinho of grafo.get(no)) {
|
|
166
|
-
const cor = corPorNo.get(vizinho);
|
|
167
|
-
if (cor)
|
|
168
|
-
coresVizinhas.add(cor);
|
|
169
|
-
}
|
|
170
|
-
const disponivel = paleta.find((cor) => !coresVizinhas.has(cor));
|
|
171
|
-
if (disponivel) {
|
|
172
|
-
corPorNo.set(no, disponivel);
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
spilled.add(no);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
const alocacao = new Map();
|
|
179
|
-
let proximoSlot = 0;
|
|
180
|
-
for (const no of todosOsNos) {
|
|
181
|
-
const cor = corPorNo.get(no);
|
|
182
|
-
if (cor) {
|
|
183
|
-
alocacao.set(no, { tipo: 'registrador', fisico: cor });
|
|
184
|
-
}
|
|
185
|
-
else {
|
|
186
|
-
proximoSlot++;
|
|
187
|
-
alocacao.set(no, { tipo: 'pilha', offsetBytes: -8 * proximoSlot });
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
return { alocacao, tamanhoSpillBytes: 8 * proximoSlot };
|
|
191
|
-
}
|
|
192
|
-
//# sourceMappingURL=alocador-registradores.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"alocador-registradores.js","sourceRoot":"","sources":["../../../fontes/tradutores/x64/alocador-registradores.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { Alocacao } from './alocador-registradores';
|
|
2
|
-
import { IRFuncao, IRPrograma } from './ir';
|
|
3
|
-
export type PlataformaAlvo = 'linux' | 'windows';
|
|
4
|
-
export interface FuncaoProcessada {
|
|
5
|
-
funcao: IRFuncao;
|
|
6
|
-
alocacao: Map<string, Alocacao>;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Gera NASM a partir do IR já processado (SSA destruída, com alocação de registradores).
|
|
10
|
-
* Quadro de pilha de cada função real, de cima (perto de rbp) para baixo:
|
|
11
|
-
* 1) área de salvamento dos registradores callee-saved usados pela paleta (a função,
|
|
12
|
-
* como "callee", é responsável por preservá-los perante quem a chamou);
|
|
13
|
-
* 2) slots de spill decididos pelo alocador de registradores;
|
|
14
|
-
* 3) vetores de tamanho fixo locais à função.
|
|
15
|
-
* `_start`/`main` (o "principal" implícito) não tem quem preservar registradores para —
|
|
16
|
-
* ninguém retorna para ele — então pula a área (1).
|
|
17
|
-
*/
|
|
18
|
-
export declare class CodegenX64 {
|
|
19
|
-
private alvo;
|
|
20
|
-
private paleta;
|
|
21
|
-
private linhas;
|
|
22
|
-
/** Deslocamento (negativo) onde começam spills/vetores da função atual, abaixo da área de registradores salvos. */
|
|
23
|
-
private deslocamentoBase;
|
|
24
|
-
constructor(alvo: PlataformaAlvo, paleta: string[]);
|
|
25
|
-
gerar(programa: IRPrograma, funcoes: FuncaoProcessada[]): string;
|
|
26
|
-
private rotuloDoBloco;
|
|
27
|
-
private resolverOperando;
|
|
28
|
-
private armazenar;
|
|
29
|
-
private enderecoBaseArranjo;
|
|
30
|
-
private gerarInstrucao;
|
|
31
|
-
private gerarBinario;
|
|
32
|
-
private gerarEnderecoIndice;
|
|
33
|
-
private gerarTerminador;
|
|
34
|
-
private gerarSaidaDoPrograma;
|
|
35
|
-
/** Offsets (relativos a rbp) dos vetores locais, logo abaixo dos slots de spill (que começam em `deslocamentoBase`). */
|
|
36
|
-
private calcularOffsetsArranjosLocais;
|
|
37
|
-
private gerarFuncaoPrincipal;
|
|
38
|
-
private gerarFuncao;
|
|
39
|
-
private tamanhoSpillBytes;
|
|
40
|
-
private gerarBlocosSemRotuloEntrada;
|
|
41
|
-
private gerarHelperImprimirNumero;
|
|
42
|
-
}
|
|
43
|
-
//# sourceMappingURL=codegen.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.d.ts","sourceRoot":"","sources":["../../../fontes/tradutores/x64/codegen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEpD,OAAO,EAAW,QAAQ,EAAe,UAAU,EAAW,MAAM,MAAM,CAAC;AAE3E,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACnC;AAmBD;;;;;;;;;GASG;AACH,qBAAa,UAAU;IAMf,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,MAAM;IANlB,OAAO,CAAC,MAAM,CAAgB;IAC9B,mHAAmH;IACnH,OAAO,CAAC,gBAAgB,CAAK;gBAGjB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EAAE;IAG5B,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,gBAAgB,EAAE,GAAG,MAAM;IA8ChE,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,cAAc;IAmGtB,OAAO,CAAC,YAAY;IA0DpB,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,oBAAoB;IAW5B,wHAAwH;IACxH,OAAO,CAAC,6BAA6B;IAUrC,OAAO,CAAC,oBAAoB;IAY5B,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,2BAA2B;IAiBnC,OAAO,CAAC,yBAAyB;CA8BpC"}
|