arkanalyzer 1.0.12 → 1.0.13
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/lib/callgraph/algorithm/AbstractAnalysis.js +1 -1
- package/lib/callgraph/pointerAnalysis/Pag.js +1 -1
- package/lib/core/base/Ref.js +1 -1
- package/lib/core/common/ArkIRTransformer.d.ts +2 -1
- package/lib/core/common/ArkIRTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkIRTransformer.js +82 -58
- package/lib/core/common/ArkValueTransformer.d.ts +6 -1
- package/lib/core/common/ArkValueTransformer.d.ts.map +1 -1
- package/lib/core/common/ArkValueTransformer.js +228 -152
- package/lib/core/common/Builtin.d.ts +3 -1
- package/lib/core/common/Builtin.d.ts.map +1 -1
- package/lib/core/common/Builtin.js +3 -0
- package/lib/core/common/CfgBuilder.js +8 -8
- package/lib/core/common/ValueUtil.d.ts +2 -2
- package/lib/core/common/ValueUtil.d.ts.map +1 -1
- package/lib/core/graph/BasicBlock.js +1 -1
- package/lib/core/model/ArkMethod.js +2 -2
- package/lib/core/model/builder/ArkClassBuilder.js +6 -6
- package/lib/save/source/SourceMethod.js +1 -1
- package/lib/utils/CfgStructualAnalysis.js +1 -1
- package/lib/utils/SparseBitVector.d.ts +3 -0
- package/lib/utils/SparseBitVector.d.ts.map +1 -1
- package/lib/utils/SparseBitVector.js +3 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ClassSignature, FileSignature } from '../model/ArkSignature';
|
|
1
|
+
import { ClassSignature, FileSignature, MethodSignature } from '../model/ArkSignature';
|
|
2
2
|
import { ClassType } from '../base/Type';
|
|
3
3
|
export declare class Builtin {
|
|
4
4
|
static OBJECT: string;
|
|
@@ -27,6 +27,8 @@ export declare class Builtin {
|
|
|
27
27
|
static ITERATOR_RESULT_CLASS_SIGNATURE: ClassSignature;
|
|
28
28
|
static ITERATOR_CLASS_TYPE: ClassType;
|
|
29
29
|
static ITERATOR_RESULT_CLASS_TYPE: ClassType;
|
|
30
|
+
static TO_STRING: string;
|
|
31
|
+
static TO_STRING_METHOD_SIGNATURE: MethodSignature;
|
|
30
32
|
private static buildBuiltInClasses;
|
|
31
33
|
private static buildBuiltInClassesFileSignature;
|
|
32
34
|
static buildBuiltInClassSignature(className: string): ClassSignature;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Builtin.d.ts","sourceRoot":"","sources":["../../../src/core/common/Builtin.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"Builtin.d.ts","sourceRoot":"","sources":["../../../src/core/common/Builtin.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAsB,MAAM,uBAAuB,CAAC;AAC3G,OAAO,EAAE,SAAS,EAAc,MAAM,cAAc,CAAC;AAErD,qBAAa,OAAO;IAGhB,OAAc,MAAM,SAAY;IAChC,OAAc,KAAK,SAAW;IAC9B,OAAc,GAAG,SAAS;IAC1B,OAAc,GAAG,SAAS;IAC1B,OAAc,MAAM,SAAY;IAEhC,OAAc,gBAAgB,cAA8B;IAG5D,OAAc,kBAAkB,SAAY;IAC5C,OAAc,eAAe,SAAkB;IAE/C,OAAc,+BAA+B,gBAA8C;IAC3F,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,qBAAqB,iBAA+C;IAClF,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,mBAAmB,iBAA6C;IAC9E,OAAc,sBAAsB,iBAAgD;IACpF,OAAc,iBAAiB,YAA8C;IAC7E,OAAc,4BAA4B,8BAAwC;IAGlF,OAAc,iBAAiB,SAAc;IAC7C,OAAc,QAAQ,SAAc;IACpC,OAAc,aAAa,SAAU;IACrC,OAAc,eAAe,SAAoB;IACjD,OAAc,oBAAoB,SAAU;IAC5C,OAAc,qBAAqB,SAAW;IAE9C,OAAc,wBAAwB,iBAAkD;IACxF,OAAc,+BAA+B,iBAAyD;IACtG,OAAc,mBAAmB,YAAgD;IACjF,OAAc,0BAA0B,YAAuD;IAG/F,OAAc,SAAS,SAAc;IACrC,OAAc,0BAA0B,kBACyC;IAEjF,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAUlC,OAAO,CAAC,MAAM,CAAC,gCAAgC;WAIjC,0BAA0B,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc;IAI3E,OAAO,CAAC,MAAM,CAAC,6BAA6B;CAS/C"}
|
|
@@ -76,3 +76,6 @@ Builtin.ITERATOR_CLASS_SIGNATURE = _a.buildBuiltInClassSignature(_a.ITERATOR);
|
|
|
76
76
|
Builtin.ITERATOR_RESULT_CLASS_SIGNATURE = _a.buildBuiltInClassSignature(_a.ITERATOR_RESULT);
|
|
77
77
|
Builtin.ITERATOR_CLASS_TYPE = new Type_1.ClassType(_a.ITERATOR_CLASS_SIGNATURE);
|
|
78
78
|
Builtin.ITERATOR_RESULT_CLASS_TYPE = new Type_1.ClassType(_a.ITERATOR_RESULT_CLASS_SIGNATURE);
|
|
79
|
+
// constants for string
|
|
80
|
+
Builtin.TO_STRING = 'toString';
|
|
81
|
+
Builtin.TO_STRING_METHOD_SIGNATURE = new ArkSignature_1.MethodSignature(ArkSignature_1.ClassSignature.DEFAULT, new ArkSignature_1.MethodSubSignature(_a.TO_STRING, [], Type_1.StringType.getInstance(), false));
|
|
@@ -1049,24 +1049,24 @@ class CfgBuilder {
|
|
|
1049
1049
|
buildCfgAndOriginalCfgForSimpleArrowFunction() {
|
|
1050
1050
|
const stmts = [];
|
|
1051
1051
|
const arkIRTransformer = new ArkIRTransformer_1.ArkIRTransformer(this.sourceFile, this.declaringMethod);
|
|
1052
|
-
|
|
1052
|
+
arkIRTransformer.prebuildStmts().forEach(stmt => stmts.push(stmt));
|
|
1053
1053
|
const expressionBodyNode = this.astRoot.body;
|
|
1054
1054
|
const expressionBodyStmts = [];
|
|
1055
1055
|
let { value: expressionBodyValue, valueOriginalPositions: expressionBodyPositions, stmts: tempStmts, } = arkIRTransformer.tsNodeToValueAndStmts(expressionBodyNode);
|
|
1056
|
-
expressionBodyStmts.push(
|
|
1056
|
+
tempStmts.forEach(stmt => expressionBodyStmts.push(stmt));
|
|
1057
1057
|
if (IRUtils_1.IRUtils.moreThanOneAddress(expressionBodyValue)) {
|
|
1058
1058
|
({
|
|
1059
1059
|
value: expressionBodyValue,
|
|
1060
1060
|
valueOriginalPositions: expressionBodyPositions,
|
|
1061
1061
|
stmts: tempStmts,
|
|
1062
1062
|
} = arkIRTransformer.generateAssignStmtForValue(expressionBodyValue, expressionBodyPositions));
|
|
1063
|
-
expressionBodyStmts.push(
|
|
1063
|
+
tempStmts.forEach(stmt => expressionBodyStmts.push(stmt));
|
|
1064
1064
|
}
|
|
1065
1065
|
const returnStmt = new Stmt_1.ArkReturnStmt(expressionBodyValue);
|
|
1066
1066
|
returnStmt.setOperandOriginalPositions([expressionBodyPositions[0], ...expressionBodyPositions]);
|
|
1067
1067
|
expressionBodyStmts.push(returnStmt);
|
|
1068
1068
|
arkIRTransformer.mapStmtsToTsStmt(expressionBodyStmts, expressionBodyNode);
|
|
1069
|
-
stmts.push(
|
|
1069
|
+
expressionBodyStmts.forEach(stmt => stmts.push(stmt));
|
|
1070
1070
|
const cfg = new Cfg_1.Cfg();
|
|
1071
1071
|
const blockInCfg = new BasicBlock_1.BasicBlock();
|
|
1072
1072
|
blockInCfg.setId(0);
|
|
@@ -1096,7 +1096,7 @@ class CfgBuilder {
|
|
|
1096
1096
|
// build block in Cfg
|
|
1097
1097
|
const stmtsInBlock = [];
|
|
1098
1098
|
if (i === 0) {
|
|
1099
|
-
|
|
1099
|
+
arkIRTransformer.prebuildStmts().forEach(stmt => stmtsInBlock.push(stmt));
|
|
1100
1100
|
}
|
|
1101
1101
|
const stmtsCnt = this.blocks[i].stmts.length;
|
|
1102
1102
|
if (this.blocks[i].stmts[stmtsCnt - 1].type === 'tryStatement') {
|
|
@@ -1419,7 +1419,7 @@ class CfgBuilder {
|
|
|
1419
1419
|
else {
|
|
1420
1420
|
const blockBuilderBeforeCondition = blockBuilder.lasts[0];
|
|
1421
1421
|
const blockBeforeCondition = blockBuilderToCfgBlock.get(blockBuilderBeforeCondition);
|
|
1422
|
-
blockBeforeCondition === null || blockBeforeCondition === void 0 ? void 0 : blockBeforeCondition.getStmts().push(
|
|
1422
|
+
stmtsInsertBeforeCondition.forEach(stmt => blockBeforeCondition === null || blockBeforeCondition === void 0 ? void 0 : blockBeforeCondition.getStmts().push(stmt));
|
|
1423
1423
|
}
|
|
1424
1424
|
if (dummyInitializerStmtIdx !== -1 && ifStmtIdx !== stmtsCnt - 1) {
|
|
1425
1425
|
// put incrementor statements into block which reenters condition
|
|
@@ -1481,7 +1481,7 @@ class CfgBuilder {
|
|
|
1481
1481
|
blockBuilderInsertBeforeCondition.lasts.push(...collectedBlockBuilders);
|
|
1482
1482
|
blockBuilderInsertBeforeCondition.nexts.push(conditionBlockBuilder);
|
|
1483
1483
|
const blockInsertBeforeCondition = new BasicBlock_1.BasicBlock();
|
|
1484
|
-
blockInsertBeforeCondition.getStmts().push(
|
|
1484
|
+
stmtsInsertBeforeCondition.forEach(stmt => blockInsertBeforeCondition.getStmts().push(stmt));
|
|
1485
1485
|
blockInsertBeforeCondition.getPredecessors().push(...collectedBlocks);
|
|
1486
1486
|
blockInsertBeforeCondition.addSuccessorBlock(block);
|
|
1487
1487
|
for (const prevBlockBuilder of collectedBlockBuilders) {
|
|
@@ -1557,7 +1557,7 @@ class CfgBuilder {
|
|
|
1557
1557
|
else {
|
|
1558
1558
|
// put incrementor statements into prev reenter block
|
|
1559
1559
|
const blockReenterCondition = blockBuilderToCfgBlock.get(blockBuildersReenterCondition[0]);
|
|
1560
|
-
blockReenterCondition === null || blockReenterCondition === void 0 ? void 0 : blockReenterCondition.getStmts().push(
|
|
1560
|
+
stmtsReenterCondition.forEach(stmt => blockReenterCondition === null || blockReenterCondition === void 0 ? void 0 : blockReenterCondition.getStmts().push(stmt));
|
|
1561
1561
|
}
|
|
1562
1562
|
}
|
|
1563
1563
|
buildTraps(blockBuilderToCfgBlock, blockBuildersBeforeTry, arkIRTransformer, basicBlockSet) {
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { Constant } from '../base/Constant';
|
|
1
|
+
import { Constant, StringConstant } from '../base/Constant';
|
|
2
2
|
export declare const EMPTY_STRING = "";
|
|
3
3
|
export declare class ValueUtil {
|
|
4
4
|
private static readonly NumberConstantCache;
|
|
5
|
-
|
|
5
|
+
static readonly EMPTY_STRING_CONSTANT: StringConstant;
|
|
6
6
|
static getOrCreateNumberConst(n: number): Constant;
|
|
7
7
|
static createStringConst(str: string): Constant;
|
|
8
8
|
static createConst(str: string): Constant;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValueUtil.d.ts","sourceRoot":"","sources":["../../../src/core/common/ValueUtil.ts"],"names":[],"mappings":"AAeA,OAAO,EAEH,QAAQ,
|
|
1
|
+
{"version":3,"file":"ValueUtil.d.ts","sourceRoot":"","sources":["../../../src/core/common/ValueUtil.ts"],"names":[],"mappings":"AAeA,OAAO,EAEH,QAAQ,EAGR,cAAc,EAEjB,MAAM,kBAAkB,CAAC;AAE1B,eAAO,MAAM,YAAY,KAAK,CAAC;AAE/B,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAoC;IAC/E,gBAAuB,qBAAqB,iBAAoC;WAElE,sBAAsB,CAAC,CAAC,EAAE,MAAM,GAAG,QAAQ;WAS3C,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;WAOxC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ;WAQlC,iBAAiB,IAAI,QAAQ;WAI7B,eAAe,IAAI,QAAQ;WAI3B,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ;CAG7D"}
|
|
@@ -397,7 +397,7 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
|
|
|
397
397
|
let stmts = [];
|
|
398
398
|
if (this.getCfg()) {
|
|
399
399
|
const cfg = this.getCfg();
|
|
400
|
-
|
|
400
|
+
cfg.getStmts().forEach(stmt => stmts.push(stmt));
|
|
401
401
|
}
|
|
402
402
|
let results = [];
|
|
403
403
|
for (let stmt of stmts) {
|
|
@@ -417,7 +417,7 @@ class ArkMethod extends ArkBaseModel_1.ArkBaseModel {
|
|
|
417
417
|
let stmts = [];
|
|
418
418
|
if (this.getCfg()) {
|
|
419
419
|
const cfg = this.getCfg();
|
|
420
|
-
|
|
420
|
+
cfg.getStmts().forEach(stmt => stmts.push(stmt));
|
|
421
421
|
}
|
|
422
422
|
for (let stmt of stmts) {
|
|
423
423
|
if (stmt instanceof Stmt_1.ArkAssignStmt) {
|
|
@@ -291,7 +291,7 @@ function buildObjectLiteralExpression2ArkClass(clsNode, cls, sourceFile, declari
|
|
|
291
291
|
const arkField = (0, ArkFieldBuilder_1.buildProperty2ArkField)(property, sourceFile, cls);
|
|
292
292
|
if (ohos_typescript_1.default.isPropertyAssignment(property)) {
|
|
293
293
|
getInitStmts(instanceIRTransformer, arkField, property.initializer);
|
|
294
|
-
|
|
294
|
+
arkField.getInitializer().forEach(stmt => instanceFieldInitializerStmts.push(stmt));
|
|
295
295
|
}
|
|
296
296
|
}
|
|
297
297
|
else {
|
|
@@ -344,20 +344,20 @@ function buildArkClassMembers(clsNode, cls, sourceFile) {
|
|
|
344
344
|
if (ohos_typescript_1.default.isClassDeclaration(clsNode) || ohos_typescript_1.default.isClassExpression(clsNode) || ohos_typescript_1.default.isStructDeclaration(clsNode)) {
|
|
345
345
|
if (arkField.isStatic()) {
|
|
346
346
|
getInitStmts(staticIRTransformer, arkField, member.initializer);
|
|
347
|
-
|
|
347
|
+
arkField.getInitializer().forEach(stmt => staticFieldInitializerStmts.push(stmt));
|
|
348
348
|
}
|
|
349
349
|
else {
|
|
350
350
|
if (!instanceIRTransformer)
|
|
351
351
|
console.log(clsNode.getText(sourceFile));
|
|
352
352
|
getInitStmts(instanceIRTransformer, arkField, member.initializer);
|
|
353
|
-
|
|
353
|
+
arkField.getInitializer().forEach(stmt => instanceFieldInitializerStmts.push(stmt));
|
|
354
354
|
}
|
|
355
355
|
}
|
|
356
356
|
}
|
|
357
357
|
else if (ohos_typescript_1.default.isEnumMember(member)) {
|
|
358
358
|
const arkField = (0, ArkFieldBuilder_1.buildProperty2ArkField)(member, sourceFile, cls);
|
|
359
359
|
getInitStmts(staticIRTransformer, arkField, member.initializer);
|
|
360
|
-
|
|
360
|
+
arkField.getInitializer().forEach(stmt => staticFieldInitializerStmts.push(stmt));
|
|
361
361
|
}
|
|
362
362
|
else if (ohos_typescript_1.default.isIndexSignatureDeclaration(member)) {
|
|
363
363
|
(0, ArkFieldBuilder_1.buildIndexSignature2ArkField)(member, sourceFile, cls);
|
|
@@ -397,11 +397,11 @@ function getInitStmts(transformer, field, initNode) {
|
|
|
397
397
|
if (initNode) {
|
|
398
398
|
const stmts = [];
|
|
399
399
|
let { value: initValue, valueOriginalPositions: initPositions, stmts: initStmts, } = transformer.tsNodeToValueAndStmts(initNode);
|
|
400
|
-
stmts.push(
|
|
400
|
+
initStmts.forEach(stmt => stmts.push(stmt));
|
|
401
401
|
if (IRUtils_1.IRUtils.moreThanOneAddress(initValue)) {
|
|
402
402
|
({ value: initValue, valueOriginalPositions: initPositions, stmts: initStmts } =
|
|
403
403
|
transformer.generateAssignStmtForValue(initValue, initPositions));
|
|
404
|
-
stmts.push(
|
|
404
|
+
initStmts.forEach(stmt => stmts.push(stmt));
|
|
405
405
|
}
|
|
406
406
|
const fieldRef = new Ref_1.ArkInstanceFieldRef(transformer.getThisLocal(), field.getSignature());
|
|
407
407
|
const fieldRefPositions = [Position_1.FullPosition.DEFAULT, Position_1.FullPosition.DEFAULT];
|
|
@@ -62,7 +62,7 @@ class SourceMethod extends SourceBase_1.SourceBase {
|
|
|
62
62
|
const stmts = [];
|
|
63
63
|
const cfg = this.method.getCfg();
|
|
64
64
|
if (cfg) {
|
|
65
|
-
|
|
65
|
+
cfg.getStmts().reverse().forEach(stmt => stmts.push(stmt));
|
|
66
66
|
}
|
|
67
67
|
for (const stmt of stmts) {
|
|
68
68
|
if (stmt.getOriginPositionInfo().getLineNo() > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SparseBitVector.d.ts","sourceRoot":"","sources":["../../src/utils/SparseBitVector.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,MAAM,IAAI,GAAG,WAAW,CAAC;AAE/B,cAAM,sBAAsB;IACxB,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,IAAI,CAAO;gBAEP,WAAW,GAAE,MAAY;IAMrC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIzB,IAAI,WAAW,IAAI,MAAM,CAExB;IAGD,OAAO,IAAI,OAAO;IAKlB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOzB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO3B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAO7B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAUrC,KAAK,IAAI,MAAM;IASf,SAAS,IAAI,MAAM;IAUnB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAuBhC,MAAM,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO;IAW5C,SAAS,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAajD,aAAa,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAarD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAUjC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAgB/B,MAAM,IAAI,OAAO;IAUjB,OAAO,CAAC,kBAAkB;CAwB7B;AAED,qBAAa,eAAe;IACxB,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,QAAQ,CAAkD;gBAEtD,YAAY,GAAE,MAAY;IAGtC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAE/C;IAGD,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWzB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAO7B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAUnC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAY3B,SAAS,IAAI,MAAM;IAYnB,KAAK,IAAI,MAAM;IASf,OAAO,IAAI,OAAO;IAIlB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;IAgCrC;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO;IAcrC;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO;IAwBxC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"SparseBitVector.d.ts","sourceRoot":"","sources":["../../src/utils/SparseBitVector.ts"],"names":[],"mappings":"AAeA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,MAAM,IAAI,GAAG,WAAW,CAAC;AAE/B,cAAM,sBAAsB;IACxB,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,YAAY,CAAC;IACrB,OAAO,CAAC,IAAI,CAAO;gBAEP,WAAW,GAAE,MAAY;IAMrC,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAIzB,IAAI,WAAW,IAAI,MAAM,CAExB;IAGD,OAAO,IAAI,OAAO;IAKlB,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOzB,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO3B,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAO7B,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAUrC,KAAK,IAAI,MAAM;IASf,SAAS,IAAI,MAAM;IAUnB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAuBhC,MAAM,CAAC,GAAG,EAAE,sBAAsB,GAAG,OAAO;IAW5C,SAAS,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAajD,aAAa,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;IAarD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAUjC,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAgB/B,MAAM,IAAI,OAAO;IAUjB,OAAO,CAAC,kBAAkB;CAwB7B;AAED,qBAAa,eAAe;IACxB,OAAO,CAAC,YAAY,CAAS;IAG7B,OAAO,CAAC,QAAQ,CAAkD;gBAEtD,YAAY,GAAE,MAAY;IAGtC,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAE/C;IAGD,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWzB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAO7B,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAUnC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAY3B,SAAS,IAAI,MAAM;IAYnB,KAAK,IAAI,MAAM;IASf,OAAO,IAAI,OAAO;IAIlB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC;IAgCrC;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO;IAcrC;;;OAGG;IACH,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO;IAwBxC;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO;IAoC5C;;OAEG;IACH,QAAQ,IAAI,MAAM;CAIrB"}
|