{"version":3,"sources":["webpack://javascript-obfuscator/./index.ts","webpack://javascript-obfuscator/./src/ASTParserFacade.ts","webpack://javascript-obfuscator/./src/JavaScriptObfuscator.ts","webpack://javascript-obfuscator/./src/JavaScriptObfuscatorFacade.ts","webpack://javascript-obfuscator/./src/analyzers/calls-graph-analyzer/CallsGraphAnalyzer.ts","webpack://javascript-obfuscator/./src/analyzers/calls-graph-analyzer/callee-data-extractors/AbstractCalleeDataExtractor.ts","webpack://javascript-obfuscator/./src/analyzers/calls-graph-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor.ts","webpack://javascript-obfuscator/./src/analyzers/calls-graph-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor.ts","webpack://javascript-obfuscator/./src/analyzers/calls-graph-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor.ts","webpack://javascript-obfuscator/./src/analyzers/number-numerical-expression-analyzer/NumberNumericalExpressionAnalyzer.ts","webpack://javascript-obfuscator/./src/analyzers/prevailing-kind-of-variables-analyzer/PrevailingKindOfVariablesAnalyzer.ts","webpack://javascript-obfuscator/./src/analyzers/scope-analyzer/ScopeAnalyzer.ts","webpack://javascript-obfuscator/./src/analyzers/string-array-storage-analyzer/StringArrayStorageAnalyzer.ts","webpack://javascript-obfuscator/./src/code-transformers/AbstractCodeTransformer.ts","webpack://javascript-obfuscator/./src/code-transformers/CodeTransformerNamesGroupsBuilder.ts","webpack://javascript-obfuscator/./src/code-transformers/CodeTransformersRunner.ts","webpack://javascript-obfuscator/./src/code-transformers/preparing-transformers/HashbangOperatorTransformer.ts","webpack://javascript-obfuscator/./src/constants/AlphabetString.ts","webpack://javascript-obfuscator/./src/constants/AlphabetStringUppercase.ts","webpack://javascript-obfuscator/./src/constants/Base64Alphabet.ts","webpack://javascript-obfuscator/./src/constants/Base64AlphabetSwapped.ts","webpack://javascript-obfuscator/./src/constants/EcmaVersion.ts","webpack://javascript-obfuscator/./src/constants/NumbersString.ts","webpack://javascript-obfuscator/./src/container/InversifyContainerFacade.ts","webpack://javascript-obfuscator/./src/container/ServiceIdentifiers.ts","webpack://javascript-obfuscator/./src/container/modules/analyzers/AnalyzersModule.ts","webpack://javascript-obfuscator/./src/container/modules/code-transformers/CodeTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/custom-code-helpers/CustomCodeHelpersModule.ts","webpack://javascript-obfuscator/./src/container/modules/custom-nodes/CustomNodesModule.ts","webpack://javascript-obfuscator/./src/container/modules/generators/GeneratorsModule.ts","webpack://javascript-obfuscator/./src/container/modules/node-transformers/ControlFlowTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/node-transformers/ConvertingTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/node-transformers/DeadCodeInjectionTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/node-transformers/FinalizingTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/node-transformers/InitializingTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/node-transformers/NodeTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/node-transformers/PreparingTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/node-transformers/RenameIdentifiersTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/node-transformers/RenamePropertiesTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/node-transformers/SimplifyingTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/node-transformers/StringArrayTransformersModule.ts","webpack://javascript-obfuscator/./src/container/modules/node/NodeModule.ts","webpack://javascript-obfuscator/./src/container/modules/options/OptionsModule.ts","webpack://javascript-obfuscator/./src/container/modules/storages/StoragesModule.ts","webpack://javascript-obfuscator/./src/container/modules/utils/UtilsModule.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/AbstractCustomCodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/AbstractCustomCodeHelperGroup.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/CustomCodeHelperFormatter.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/CustomCodeHelperObfuscator.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/calls-controller/CallsControllerFunctionCodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/common/templates/GlobalVariableNoEvalTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/common/templates/GlobalVariableTemplate1.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/common/templates/GlobalVariableTemplate2.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/common/templates/SingleCallControllerTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/console-output/ConsoleOutputDisableCodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/console-output/group/ConsoleOutputCodeHelperGroup.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/console-output/templates/ConsoleOutputDisableTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/debug-protection/DebugProtectionFunctionCallCodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/debug-protection/DebugProtectionFunctionCodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/debug-protection/DebugProtectionFunctionIntervalCodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/debug-protection/group/DebugProtectionCodeHelperGroup.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/debug-protection/templates/debug-protection-function-call/DebugProtectionFunctionCallTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/debug-protection/templates/debug-protection-function-interval/DebugProtectionFunctionIntervalTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/debug-protection/templates/debug-protection-function/DebugProtectionFunctionTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/debug-protection/templates/debug-protection-function/DebuggerTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/debug-protection/templates/debug-protection-function/DebuggerTemplateNoEval.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/domain-lock/DomainLockCodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/domain-lock/group/DomainLockCustomCodeHelperGroup.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/domain-lock/templates/DomainLockTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/self-defending/SelfDefendingUnicodeCodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/self-defending/group/SelfDefendingCodeHelperGroup.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/self-defending/templates/SelfDefendingNoEvalTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/self-defending/templates/SelfDefendingTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/StringArrayCallsWrapperBase64CodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/StringArrayCallsWrapperCodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/StringArrayCallsWrapperRc4CodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/StringArrayCodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/StringArrayRotateFunctionCodeHelper.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/group/StringArrayCodeHelperGroup.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/AtobTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/Rc4Template.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/SelfDefendingTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/StringArrayBase64DecodeTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/StringArrayCallsWrapperTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/StringArrayRC4DecodeTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/templates/string-array-rotate-function/SelfDefendingTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/templates/string-array-rotate-function/StringArrayRotateFunctionTemplate.ts","webpack://javascript-obfuscator/./src/custom-code-helpers/string-array/templates/string-array/StringArrayTemplate.ts","webpack://javascript-obfuscator/./src/custom-nodes/AbstractCustomNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/control-flow-flattening-nodes/StringLiteralNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/CallExpressionControlFlowStorageCallNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ExpressionWithOperatorControlFlowStorageCallNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/StringLiteralControlFlowStorageCallNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/object-expression-keys-transformer-nodes/ObjectExpressionVariableDeclarationHostNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/string-array-nodes/AbstractStringArrayCallNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/string-array-nodes/StringArrayCallNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/string-array-nodes/StringArrayScopeCallsWrapperFunctionNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/string-array-nodes/StringArrayScopeCallsWrapperVariableNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/string-array-nodes/string-array-index-nodes/AbstractStringArrayIndexNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/string-array-nodes/string-array-index-nodes/StringArrayHexadecimalNumberIndexNode.ts","webpack://javascript-obfuscator/./src/custom-nodes/string-array-nodes/string-array-index-nodes/StringArrayHexadecimalNumericStringIndexNode.ts","webpack://javascript-obfuscator/./src/decorators/Initializable.ts","webpack://javascript-obfuscator/./src/enums/ObfuscationTarget.ts","webpack://javascript-obfuscator/./src/enums/StringSeparator.ts","webpack://javascript-obfuscator/./src/enums/analyzers/calls-graph-analyzer/CalleeDataExtractor.ts","webpack://javascript-obfuscator/./src/enums/code-transformers/CodeTransformationStage.ts","webpack://javascript-obfuscator/./src/enums/code-transformers/CodeTransformer.ts","webpack://javascript-obfuscator/./src/enums/custom-code-helpers/CustomCodeHelper.ts","webpack://javascript-obfuscator/./src/enums/custom-code-helpers/CustomCodeHelperGroup.ts","webpack://javascript-obfuscator/./src/enums/custom-nodes/ControlFlowCustomNode.ts","webpack://javascript-obfuscator/./src/enums/custom-nodes/DeadCodeInjectionCustomNode.ts","webpack://javascript-obfuscator/./src/enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode.ts","webpack://javascript-obfuscator/./src/enums/custom-nodes/StringArrayCustomNode.ts","webpack://javascript-obfuscator/./src/enums/custom-nodes/string-array-index-nodes/StringArrayIndexNode.ts","webpack://javascript-obfuscator/./src/enums/event-emitters/ObfuscationEvent.ts","webpack://javascript-obfuscator/./src/enums/generators/identifier-names-generators/IdentifierNamesGenerator.ts","webpack://javascript-obfuscator/./src/enums/logger/LoggingMessage.ts","webpack://javascript-obfuscator/./src/enums/logger/LoggingPrefix.ts","webpack://javascript-obfuscator/./src/enums/node-transformers/NodeTransformationStage.ts","webpack://javascript-obfuscator/./src/enums/node-transformers/NodeTransformer.ts","webpack://javascript-obfuscator/./src/enums/node-transformers/VisitorDirection.ts","webpack://javascript-obfuscator/./src/enums/node-transformers/control-flow-transformers/control-flow-replacers/ControlFlowReplacer.ts","webpack://javascript-obfuscator/./src/enums/node-transformers/converting-transformers/properties-extractors/ObjectExpressionExtractor.ts","webpack://javascript-obfuscator/./src/enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard.ts","webpack://javascript-obfuscator/./src/enums/node-transformers/string-array-transformers/StringArrayEncoding.ts","webpack://javascript-obfuscator/./src/enums/node-transformers/string-array-transformers/StringArrayIndexesType.ts","webpack://javascript-obfuscator/./src/enums/node-transformers/string-array-transformers/StringArrayWrappersType.ts","webpack://javascript-obfuscator/./src/enums/node/NodeType.ts","webpack://javascript-obfuscator/./src/enums/node/ObfuscatingGuardResult.ts","webpack://javascript-obfuscator/./src/enums/options/presets/OptionsPreset.ts","webpack://javascript-obfuscator/./src/enums/source-map/SourceMapMode.ts","webpack://javascript-obfuscator/./src/event-emitters/ObfuscationEventEmitter.ts","webpack://javascript-obfuscator/./src/generators/identifier-names-generators/AbstractIdentifierNamesGenerator.ts","webpack://javascript-obfuscator/./src/generators/identifier-names-generators/DictionaryIdentifierNamesGenerator.ts","webpack://javascript-obfuscator/./src/generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator.ts","webpack://javascript-obfuscator/./src/generators/identifier-names-generators/MangledIdentifierNamesGenerator.ts","webpack://javascript-obfuscator/./src/generators/identifier-names-generators/MangledShuffledIdentifierNamesGenerator.ts","webpack://javascript-obfuscator/./src/interfaces/analyzers/calls-graph-analyzer/ICallsGraphAnalyzer.ts","webpack://javascript-obfuscator/./src/interfaces/analyzers/calls-graph-analyzer/IPrevailingKindOfVariablesAnalyzer.ts","webpack://javascript-obfuscator/./src/interfaces/analyzers/number-numerical-expression-analyzer/INumberNumericalExpressionAnalyzer.ts","webpack://javascript-obfuscator/./src/interfaces/analyzers/scope-analyzer/IScopeAnalyzer.ts","webpack://javascript-obfuscator/./src/interfaces/analyzers/string-array-storage-analyzer/IStringArrayStorageAnalyzer.ts","webpack://javascript-obfuscator/./src/interfaces/code-transformers/ICodeTransformersRunner.ts","webpack://javascript-obfuscator/./src/interfaces/custom-code-helpers/ICustomCodeHelperFormatter.ts","webpack://javascript-obfuscator/./src/interfaces/custom-code-helpers/ICustomCodeHelperObfuscator.ts","webpack://javascript-obfuscator/./src/interfaces/event-emitters/IObfuscationEventEmitter.ts","webpack://javascript-obfuscator/./src/interfaces/logger/ILogger.ts","webpack://javascript-obfuscator/./src/interfaces/node-transformers/INodeTransformersRunner.ts","webpack://javascript-obfuscator/./src/interfaces/node-transformers/rename-identifiers-transformers/replacer/IIdentifierReplacer.ts","webpack://javascript-obfuscator/./src/interfaces/node-transformers/rename-properties-transformers/replacer/IRenamePropertiesReplacer.ts","webpack://javascript-obfuscator/./src/interfaces/node/IScopeIdentifiersTraverser.ts","webpack://javascript-obfuscator/./src/interfaces/options/IOptions.ts","webpack://javascript-obfuscator/./src/interfaces/options/IOptionsNormalizer.ts","webpack://javascript-obfuscator/./src/interfaces/source-code/ISourceCode.ts","webpack://javascript-obfuscator/./src/interfaces/storages/string-array-transformers/ILiteralNodesCacheStorage.ts","webpack://javascript-obfuscator/./src/interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrapperLexicalScopeDataStorage.ts","webpack://javascript-obfuscator/./src/interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrapperNamesDataStorage.ts","webpack://javascript-obfuscator/./src/interfaces/storages/string-array-transformers/IStringArrayStorage.ts","webpack://javascript-obfuscator/./src/interfaces/storages/string-array-transformers/IVisitedLexicalScopeNodesStackStorage.ts","webpack://javascript-obfuscator/./src/interfaces/utils/IArrayUtils.ts","webpack://javascript-obfuscator/./src/interfaces/utils/ICryptUtils.ts","webpack://javascript-obfuscator/./src/interfaces/utils/ICryptUtilsSwappedAlphabet.ts","webpack://javascript-obfuscator/./src/interfaces/utils/IEscapeSequenceEncoder.ts","webpack://javascript-obfuscator/./src/interfaces/utils/ILevelledTopologicalSorter.ts","webpack://javascript-obfuscator/./src/interfaces/utils/IRandomGenerator.ts","webpack://javascript-obfuscator/./src/interfaces/utils/ITransformerNamesGroupsBuilder.ts","webpack://javascript-obfuscator/./src/logger/Logger.ts","webpack://javascript-obfuscator/./src/node-transformers/AbstractNodeTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/NodeTransformerNamesGroupsBuilder.ts","webpack://javascript-obfuscator/./src/node-transformers/NodeTransformersRunner.ts","webpack://javascript-obfuscator/./src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/AbstractControlFlowReplacer.ts","webpack://javascript-obfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer.ts","webpack://javascript-obfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/CallExpressionControlFlowReplacer.ts","webpack://javascript-obfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/ExpressionWithOperatorControlFlowReplacer.ts","webpack://javascript-obfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/LogicalExpressionControlFlowReplacer.ts","webpack://javascript-obfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/StringLiteralControlFlowReplacer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/BooleanLiteralTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/ExportSpecifierTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/MemberExpressionTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/NumberLiteralTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/NumberToNumericalExpressionTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/ObjectExpressionTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/ObjectPatternPropertiesTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/SplitStringTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/object-expression-extractors/BasePropertiesExtractor.ts","webpack://javascript-obfuscator/./src/node-transformers/converting-transformers/object-expression-extractors/ObjectExpressionToVariableDeclarationExtractor.ts","webpack://javascript-obfuscator/./src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/finalizing-transformers/EscapeSequenceTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/initializing-transformers/CommentsTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/preparing-transformers/CustomCodeHelpersTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/preparing-transformers/EvalCallExpressionTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/preparing-transformers/MetadataTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/preparing-transformers/ParentificationTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/preparing-transformers/VariablePreserveTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/preparing-transformers/obfuscating-guards/BlackListObfuscatingGuard.ts","webpack://javascript-obfuscator/./src/node-transformers/preparing-transformers/obfuscating-guards/ConditionalCommentObfuscatingGuard.ts","webpack://javascript-obfuscator/./src/node-transformers/preparing-transformers/obfuscating-guards/ForceTransformStringObfuscatingGuard.ts","webpack://javascript-obfuscator/./src/node-transformers/preparing-transformers/obfuscating-guards/IgnoredRequireImportObfuscatingGuard.ts","webpack://javascript-obfuscator/./src/node-transformers/preparing-transformers/obfuscating-guards/ReservedStringObfuscatingGuard.ts","webpack://javascript-obfuscator/./src/node-transformers/rename-identifiers-transformers/LabeledStatementTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/rename-identifiers-transformers/ScopeIdentifiersTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/rename-identifiers-transformers/ScopeThroughIdentifiersTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/rename-identifiers-transformers/replacer/IdentifierReplacer.ts","webpack://javascript-obfuscator/./src/node-transformers/rename-properties-transformers/RenamePropertiesTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/rename-properties-transformers/replacer/RenamePropertiesReplacer.ts","webpack://javascript-obfuscator/./src/node-transformers/simplifying-transformers/AbstractStatementSimplifyTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/simplifying-transformers/BlockStatementSimplifyTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/simplifying-transformers/ExpressionStatementsMergeTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/simplifying-transformers/IfStatementSimplifyTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/simplifying-transformers/VariableDeclarationsMergeTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/string-array-transformers/StringArrayScopeCallsWrapperTransformer.ts","webpack://javascript-obfuscator/./src/node-transformers/string-array-transformers/StringArrayTransformer.ts","webpack://javascript-obfuscator/./src/node/NodeAppender.ts","webpack://javascript-obfuscator/./src/node/NodeFactory.ts","webpack://javascript-obfuscator/./src/node/NodeGuards.ts","webpack://javascript-obfuscator/./src/node/NodeLexicalScopeUtils.ts","webpack://javascript-obfuscator/./src/node/NodeLiteralUtils.ts","webpack://javascript-obfuscator/./src/node/NodeMetadata.ts","webpack://javascript-obfuscator/./src/node/NodeStatementUtils.ts","webpack://javascript-obfuscator/./src/node/NodeUtils.ts","webpack://javascript-obfuscator/./src/node/ScopeIdentifiersTraverser.ts","webpack://javascript-obfuscator/./src/options/Options.ts","webpack://javascript-obfuscator/./src/options/OptionsNormalizer.ts","webpack://javascript-obfuscator/./src/options/ValidationErrorsFormatter.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/ControlFlowFlatteningThresholdRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/DeadCodeInjectionRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/DeadCodeInjectionThresholdRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/DomainLockRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/InputFileNameRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/SeedRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/SelfDefendingRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/SourceMapBaseUrlRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/SourceMapFileNameRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/SplitStringsChunkLengthRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/StringArrayEncodingRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/StringArrayRule.ts","webpack://javascript-obfuscator/./src/options/normalizer-rules/StringArrayWappersChainedCalls.ts","webpack://javascript-obfuscator/./src/options/presets/Default.ts","webpack://javascript-obfuscator/./src/options/presets/HighObfuscation.ts","webpack://javascript-obfuscator/./src/options/presets/LowObfuscation.ts","webpack://javascript-obfuscator/./src/options/presets/MediumObfuscation.ts","webpack://javascript-obfuscator/./src/options/presets/NoCustomNodes.ts","webpack://javascript-obfuscator/./src/options/validators/IsAllowedForObfuscationTargets.ts","webpack://javascript-obfuscator/./src/source-code/ObfuscatedCode.ts","webpack://javascript-obfuscator/./src/source-code/SourceCode.ts","webpack://javascript-obfuscator/./src/storages/ArrayStorage.ts","webpack://javascript-obfuscator/./src/storages/MapStorage.ts","webpack://javascript-obfuscator/./src/storages/custom-code-helpers/CustomCodeHelperGroupStorage.ts","webpack://javascript-obfuscator/./src/storages/custom-nodes/ControlFlowStorage.ts","webpack://javascript-obfuscator/./src/storages/string-array-transformers/LiteralNodesCacheStorage.ts","webpack://javascript-obfuscator/./src/storages/string-array-transformers/StringArrayScopeCallsWrapperLexicalScopeDataStorage.ts","webpack://javascript-obfuscator/./src/storages/string-array-transformers/StringArrayScopeCallsWrapperNamesDataStorage.ts","webpack://javascript-obfuscator/./src/storages/string-array-transformers/StringArrayStorage.ts","webpack://javascript-obfuscator/./src/storages/string-array-transformers/VisitedLexicalScopeNodesStackStorage.ts","webpack://javascript-obfuscator/./src/types/container/calls-graph-analyzer/TCalleeDataExtractorFactory.ts","webpack://javascript-obfuscator/./src/types/container/code-transformers/TCodeTransformerFactory.ts","webpack://javascript-obfuscator/./src/types/container/custom-code-helpers/TCustomCodeHelperFactory.ts","webpack://javascript-obfuscator/./src/types/container/custom-code-helpers/TCustomCodeHelperGroupFactory.ts","webpack://javascript-obfuscator/./src/types/container/custom-nodes/TControlFlowCustomNodeFactory.ts","webpack://javascript-obfuscator/./src/types/container/custom-nodes/TDeadNodeInjectionCustomNodeFactory.ts","webpack://javascript-obfuscator/./src/types/container/custom-nodes/TObjectExpressionKeysTransformerCustomNodeFactory.ts","webpack://javascript-obfuscator/./src/types/container/custom-nodes/TStringArrayCustomNodeFactory.ts","webpack://javascript-obfuscator/./src/types/container/custom-nodes/string-array-index-nodes/TStringArrayIndexNodeFactory.ts","webpack://javascript-obfuscator/./src/types/container/generators/TIdentifierNamesGeneratorFactory.ts","webpack://javascript-obfuscator/./src/types/container/node-transformers/TControlFlowReplacerFactory.ts","webpack://javascript-obfuscator/./src/types/container/node-transformers/TControlFlowStorageFactory.ts","webpack://javascript-obfuscator/./src/types/container/node-transformers/TNodeTransformerFactory.ts","webpack://javascript-obfuscator/./src/types/container/node-transformers/TObfuscatingGuardFactory.ts","webpack://javascript-obfuscator/./src/types/container/node-transformers/TObjectExpressionExtractorFactory.ts","webpack://javascript-obfuscator/./src/types/container/source-code/TObfuscatedCodeFactory.ts","webpack://javascript-obfuscator/./src/types/options/TInputOptions.ts","webpack://javascript-obfuscator/./src/types/options/TOptionsPreset.ts","webpack://javascript-obfuscator/./src/types/options/TStringArrayWrappersType.ts","webpack://javascript-obfuscator/./src/types/storages/TControlFlowStorage.ts","webpack://javascript-obfuscator/./src/types/storages/TCustomCodeHelperGroupStorage.ts","webpack://javascript-obfuscator/./src/types/utils/TTypeFromEnum.ts","webpack://javascript-obfuscator/./src/utils/AbstractTransformerNamesGroupsBuilder.ts","webpack://javascript-obfuscator/./src/utils/ArrayUtils.ts","webpack://javascript-obfuscator/./src/utils/CryptUtils.ts","webpack://javascript-obfuscator/./src/utils/CryptUtilsSwappedAlphabet.ts","webpack://javascript-obfuscator/./src/utils/EscapeSequenceEncoder.ts","webpack://javascript-obfuscator/./src/utils/LevelledTopologicalSorter.ts","webpack://javascript-obfuscator/./src/utils/NumberUtils.ts","webpack://javascript-obfuscator/./src/utils/RandomGenerator.ts","webpack://javascript-obfuscator/./src/utils/StringUtils.ts","webpack://javascript-obfuscator/./src/utils/Utils.ts","webpack://javascript-obfuscator/external \"@javascript-obfuscator/escodegen\"","webpack://javascript-obfuscator/external \"acorn\"","webpack://javascript-obfuscator/external \"chalk\"","webpack://javascript-obfuscator/external \"chance\"","webpack://javascript-obfuscator/external \"class-validator\"","webpack://javascript-obfuscator/external \"eslint-scope\"","webpack://javascript-obfuscator/external \"estraverse\"","webpack://javascript-obfuscator/external \"eventemitter3\"","webpack://javascript-obfuscator/external \"fast-deep-equal\"","webpack://javascript-obfuscator/external \"inversify\"","webpack://javascript-obfuscator/external \"js-string-escape\"","webpack://javascript-obfuscator/external \"md5\"","webpack://javascript-obfuscator/external \"reflect-metadata\"","webpack://javascript-obfuscator/external \"string-template\"","webpack://javascript-obfuscator/external \"stringz\"","webpack://javascript-obfuscator/webpack/bootstrap","webpack://javascript-obfuscator/webpack/startup"],"names":["Object","defineProperty","exports","value","JavaScriptObfuscatorFacade_1","module","JavaScriptObfuscator","__createBinding","this","create","o","m","k","k2","undefined","enumerable","get","__setModuleDefault","v","__importStar","mod","__esModule","result","prototype","hasOwnProperty","call","__importDefault","ASTParserFacade","acorn","chalk_1","sourceCode","config","sourceTypeLength","sourceTypes","length","i","parseType","error","Error","processParsingError","message","loc","inputConfig","sourceType","comments","assign","onComment","program","parse","errorMessage","position","line","column","errorLine","split","startErrorIndex","Math","max","nearestSymbolsCount","endErrorIndex","min","formattedPointer","colorError","formattedCodeSlice","slice","replace","default","red","JavaScriptObfuscator_1","_a","_b","_c","_d","_e","_f","__decorate","decorators","target","key","desc","d","c","arguments","r","getOwnPropertyDescriptor","Reflect","decorate","__metadata","metadata","__param","paramIndex","decorator","inversify_1","ServiceIdentifiers_1","escodegen","TObfuscatedCodeFactory_1","ICodeTransformersRunner_1","ILogger_1","IOptions_1","IRandomGenerator_1","INodeTransformersRunner_1","CodeTransformer_1","CodeTransformationStage_1","LoggingMessage_1","NodeTransformer_1","NodeTransformationStage_1","EcmaVersion_1","ASTParserFacade_1","NodeGuards_1","Utils_1","codeTransformersRunner","nodeTransformersRunner","randomGenerator","obfuscatedCodeFactory","logger","options","timeStart","Date","now","info","LoggingMessage","Version","Utils","buildVersionMessage","ObfuscationStarted","RandomGeneratorSeed","getInputSeed","runCodeTransformationStage","CodeTransformationStage","PreparingTransformers","astTree","parseCode","obfuscatedAstTree","transformAstTree","generatorOutput","generateCode","code","FinalizingTransformers","obfuscationTime","success","ObfuscationCompleted","getObfuscatedCode","parseOptions","runNodeTransformationStage","NodeTransformationStage","Initializing","NodeGuards","isProgramNode","body","leadingComments","trailingComments","Preparing","deadCodeInjection","DeadCodeInjection","controlFlowFlattening","ControlFlowFlattening","renameProperties","RenameProperties","Converting","RenameIdentifiers","StringArray","simplify","Simplifying","Finalizing","warn","EmptySourceCode","escodegenParams","sourceMap","inputFileName","sourceContent","generate","format","compact","map","toString","codeTransformationStage","transform","codeTransformersList","nodeTransformationStage","nodeTransformersList","ecmaVersion","allowHashBang","allowImportExportEverywhere","allowReturnOutsideFunction","locations","ranges","comment","verbatim","sourceMapWithCode","CodeTransformer","HashbangOperatorTransformer","NodeTransformer","BooleanLiteralTransformer","BlockStatementControlFlowTransformer","BlockStatementSimplifyTransformer","CommentsTransformer","CustomCodeHelpersTransformer","DeadCodeInjectionTransformer","EscapeSequenceTransformer","EvalCallExpressionTransformer","ExportSpecifierTransformer","ExpressionStatementsMergeTransformer","FunctionControlFlowTransformer","IfStatementSimplifyTransformer","LabeledStatementTransformer","RenamePropertiesTransformer","MemberExpressionTransformer","MetadataTransformer","MethodDefinitionTransformer","NumberLiteralTransformer","NumberToNumericalExpressionTransformer","ObfuscatingGuardsTransformer","ObjectExpressionKeysTransformer","ObjectExpressionTransformer","ObjectPatternPropertiesTransformer","ParentificationTransformer","ScopeIdentifiersTransformer","SplitStringTransformer","StringArrayScopeCallsWrapperTransformer","StringArrayTransformer","TemplateLiteralTransformer","VariableDeclarationsMergeTransformer","VariablePreserveTransformer","injectable","inject","ServiceIdentifiers","ICodeTransformersRunner","INodeTransformersRunner","IRandomGenerator","Factory__IObfuscatedCode","ILogger","IOptions","TObfuscatedCodeFactory","InversifyContainerFacade_1","Options_1","JavaScriptObfuscatorFacade","inputOptions","inversifyContainerFacade","InversifyContainerFacade","load","obfuscatedCode","IJavaScriptObfuscator","obfuscate","unload","sourceCodesObject","keys","reduce","acc","sourceCodeIdentifier","index","identifiersPrefix","getIdentifiersPrefixForMultipleSources","sourceCodeOptions","optionsPreset","Options","getOptionsByPreset","version","CallsGraphAnalyzer_1","CallsGraphAnalyzer","estraverse","TCalleeDataExtractorFactory_1","CalleeDataExtractor_1","NodeStatementUtils_1","calleeDataExtractorFactory","blockScopeBodyLength","lastIndex","limitThresholdActivationIndex","limitThresholdActivationLength","limitIndex","round","limitThreshold","analyzeRecursive","blockScopeBody","getLimitIndex","callsGraphData","blockScopeBodyNode","traverse","enter","node","isCallExpressionNode","parentNode","NodeStatementUtils","getParentNodeWithStatements","VisitorOption","Skip","analyzeCallExpressionNode","callExpressionNode","calleeDataExtractorsList","forEach","calleeDataExtractorName","calleeData","extract","callee","push","callsGraph","CalleeDataExtractor","FunctionDeclarationCalleeDataExtractor","FunctionExpressionCalleeDataExtractor","ObjectExpressionCalleeDataExtractor","Factory__ICalleeDataExtractor","TCalleeDataExtractorFactory","AbstractCalleeDataExtractor","AbstractCalleeDataExtractor_1","isIdentifierNode","calleeBlockStatement","getCalleeBlockStatement","name","targetNode","isFunctionDeclarationNode","id","Break","calleeName","isFunctionExpressionNode","isVariableDeclaratorNode","ObjectExpressionCalleeDataExtractor_1","propertyNode","nextItemInCallsChain","isTargetPropertyNodeWithIdentifierKey","isTargetPropertyNodeWithLiteralKey","isLiteralNode","Boolean","isMemberExpressionNode","objectMembersCallsChain","createObjectMembersCallsChain","functionExpressionName","currentChain","memberExpression","property","computed","unshift","object","objectName","shift","init","isObjectExpressionNode","findCalleeBlockStatement","properties","objectExpressionProperties","isPropertyNode","isValidTargetPropertyNode","NumberNumericalExpressionAnalyzer_1","NumberNumericalExpressionAnalyzer","NumberUtils_1","numberFactorsMap","Map","number","isNaN","NumberUtils","isUnsafeNumber","generateAdditionParts","addition","mixWithMultiplyParts","additionParts","upperNumberLimit","abs","Number","MAX_SAFE_INTEGER","from","to","temporarySum","additionalParts","getRandomInteger","combination","getMathRandom","factors","getFactors","set","factor","PrevailingKindOfVariablesAnalyzer_1","PrevailingKindOfVariablesAnalyzer","IArrayUtils_1","arrayUtils","prevailingKindOfVariables","defaultKindOfVariables","variableKinds","isVariableDeclarationNode","kind","findMostOccurringElement","IArrayUtils","ScopeAnalyzer_1","ScopeAnalyzer","eslintScope","scopeManager","range","emptyRangeValue","attachMissingRanges","analyze","eslintScopeOptions","scope","acquire","isRootNode","sanitizeScopes","childScopes","childScope","type","upper","variables","classNameVariable","upperVariable","find","variable","defs","some","definition","references","optimistic","StringArrayStorageAnalyzer_1","StringArrayStorageAnalyzer","IStringArrayStorage_1","NodeLiteralUtils_1","NodeMetadata_1","stringArrayStorage","stringArrayStorageData","stringArray","NodeMetadata","isIgnoredNode","analyzeLiteralNode","literalNode","NodeLiteralUtils","isStringLiteralNode","isProhibitedLiteralNode","shouldAddValueToStringArray","getOrThrow","isForceTransformNode","minimumLengthForStringArray","stringArrayThreshold","IStringArrayStorage","AbstractCodeTransformer","CodeTransformerNamesGroupsBuilder","AbstractTransformerNamesGroupsBuilder_1","AbstractTransformerNamesGroupsBuilder","CodeTransformersRunner","TCodeTransformerFactory_1","ITransformerNamesGroupsBuilder_1","codeTransformerFactory","codeTransformerNamesGroupsBuilder","codeTransformerNames","normalizedCodeTransformers","buildNormalizedCodeTransformers","codeTransformerNamesGroups","build","nodeTransformerNamesGroup","nodeTransformerName","transformCode","codeTransformerName","codeTransformer","Factory__ICodeTransformer","ICodeTransformerNamesGroupsBuilder","TCodeTransformerFactory","ITransformerNamesGroupsBuilder","AbstractCodeTransformer_1","super","hashbangOperatorLine","removeAndSaveHashbangOperatorLine","appendSavedHashbangOperatorLine","substring","trim","alphabetString","alphabetStringUppercase","AlphabetString_1","toUpperCase","base64alphabet","AlphabetStringUppercase_1","NumbersString_1","numbersString","base64alphabetSwapped","AnalyzersModule_1","CodeTransformersModule_1","ControlFlowTransformersModule_1","ConvertingTransformersModule_1","CustomCodeHelpersModule_1","CustomNodesModule_1","DeadCodeInjectionTransformersModule_1","FinalizingTransformersModule_1","GeneratorsModule_1","InitializingTransformersModule_1","NodeModule_1","NodeTransformersModule_1","OptionsModule_1","PreparingTransformersModule_1","RenameIdentifiersTransformersModule_1","RenamePropertiesTransformersModule_1","SimplifyingTransformersModule_1","StoragesModule_1","StringArrayTransformersModule_1","UtilsModule_1","CodeTransformersRunner_1","Logger_1","NodeTransformersRunner_1","ObfuscationEventEmitter_1","ObfuscatedCode_1","SourceCode_1","container","Container","serviceIdentifier","context","bindingName","getNamed","cache","has","dependencies","cachedDependencies","dependency","constructor","named","bind","ISourceCode","toDynamicValue","SourceCode","inSingletonScope","TInputOptions","Logger","NodeTransformersRunner","IObfuscatedCode","ObfuscatedCode","toFactory","obfuscatedCodeAsString","sourceMapAsString","initialize","IObfuscationEventEmitter","ObfuscationEventEmitter","analyzersModule","codeTransformersModule","controlFlowTransformersModule","convertingTransformersModule","customCodeHelpersModule","customNodesModule","deadCodeInjectionTransformersModule","finalizingTransformersModule","generatorsModule","initializingTransformersModule","nodeModule","nodeTransformersModule","optionsModule","preparingTransformersModule","renameIdentifiersTransformersModule","renamePropertiesTransformersModule","simplifyingTransformersModule","storagesModule","stringArrayTransformersModule","utilsModule","unbindAll","FunctionDeclarationCalleeDataExtractor_1","FunctionExpressionCalleeDataExtractor_1","ContainerModule","ICallsGraphAnalyzer","INumberNumericalExpressionAnalyzer","IPrevailingKindOfVariablesAnalyzer","IScopeAnalyzer","IStringArrayStorageAnalyzer","ICalleeDataExtractor","whenTargetNamed","getCacheFactory","CodeTransformerNamesGroupsBuilder_1","HashbangOperatorTransformer_1","ICodeTransformer","CustomCodeHelper_1","CustomCodeHelperGroup_1","ConsoleOutputCodeHelperGroup_1","DebugProtectionCodeHelperGroup_1","DomainLockCustomCodeHelperGroup_1","SelfDefendingCodeHelperGroup_1","StringArrayCodeHelperGroup_1","ConsoleOutputDisableCodeHelper_1","CustomCodeHelperFormatter_1","CustomCodeHelperObfuscator_1","DebugProtectionFunctionCallCodeHelper_1","DebugProtectionFunctionIntervalCodeHelper_1","DebugProtectionFunctionCodeHelper_1","DomainLockCodeHelper_1","CallsControllerFunctionCodeHelper_1","SelfDefendingUnicodeCodeHelper_1","StringArrayCallsWrapperCodeHelper_1","StringArrayCallsWrapperBase64CodeHelper_1","StringArrayCallsWrapperRc4CodeHelper_1","StringArrayCodeHelper_1","StringArrayRotateFunctionCodeHelper_1","ICustomCodeHelper","ConsoleOutputDisableCodeHelper","CustomCodeHelper","ConsoleOutputDisable","DebugProtectionFunctionCallCodeHelper","DebugProtectionFunctionCall","DebugProtectionFunctionIntervalCodeHelper","DebugProtectionFunctionInterval","DebugProtectionFunctionCodeHelper","DebugProtectionFunction","DomainLockCodeHelper","DomainLock","CallsControllerFunctionCodeHelper","CallsControllerFunction","SelfDefendingUnicodeCodeHelper","SelfDefendingUnicode","StringArrayCallsWrapperCodeHelper","StringArrayCallsWrapper","StringArrayCallsWrapperBase64CodeHelper","StringArrayCallsWrapperBase64","StringArrayCallsWrapperRc4CodeHelper","StringArrayCallsWrapperRc4","StringArrayCodeHelper","StringArrayRotateFunctionCodeHelper","StringArrayRotateFunction","ICustomCodeHelperGroup","ConsoleOutputCodeHelperGroup","CustomCodeHelperGroup","ConsoleOutput","DebugProtectionCodeHelperGroup","DebugProtection","DomainLockCustomCodeHelperGroup","SelfDefendingCodeHelperGroup","SelfDefending","StringArrayCodeHelperGroup","Factory__ICustomCodeHelper","getFactory","Factory__ICustomCodeHelperGroup","ICustomCodeHelperFormatter","CustomCodeHelperFormatter","ICustomCodeHelperObfuscator","CustomCodeHelperObfuscator","ControlFlowCustomNode_1","DeadCodeInjectionCustomNode_1","ObjectExpressionKeysTransformerCustomNode_1","StringArrayCustomNode_1","BinaryExpressionFunctionNode_1","BlockStatementControlFlowFlatteningNode_1","BlockStatementDeadCodeInjectionNode_1","CallExpressionControlFlowStorageCallNode_1","CallExpressionFunctionNode_1","ControlFlowStorageNode_1","ExpressionWithOperatorControlFlowStorageCallNode_1","LogicalExpressionFunctionNode_1","ObjectExpressionVariableDeclarationHostNode_1","StringArrayCallNode_1","StringArrayHexadecimalNumberIndexNode_1","StringArrayHexadecimalNumericStringIndexNode_1","StringArrayIndexNode_1","StringArrayScopeCallsWrapperFunctionNode_1","StringArrayScopeCallsWrapperVariableNode_1","StringLiteralControlFlowStorageCallNode_1","StringLiteralNode_1","Newable__ICustomNode","toConstructor","BinaryExpressionFunctionNode","ControlFlowCustomNode","BlockStatementControlFlowFlatteningNode","CallExpressionControlFlowStorageCallNode","CallExpressionFunctionNode","ControlFlowStorageNode","ExpressionWithOperatorControlFlowStorageCallNode","LogicalExpressionFunctionNode","StringLiteralNode","StringLiteralControlFlowStorageCallNode","BlockStatementDeadCodeInjectionNode","DeadCodeInjectionCustomNode","ObjectExpressionVariableDeclarationHostNode","ObjectExpressionKeysTransformerCustomNode","StringArrayCallNode","StringArrayCustomNode","StringArrayScopeCallsWrapperFunctionNode","StringArrayScopeCallsWrapperVariableNode","IStringArrayIndexNode","StringArrayHexadecimalNumberIndexNode","StringArrayIndexNode","StringArrayHexadecimalNumericStringIndexNode","Factory__IControlFlowCustomNode","getConstructorFactory","Factory__IIdentifierNamesGenerator","Factory__IDeadCodeInjectionCustomNode","Factory__IObjectExpressionKeysTransformerCustomNode","Factory__IStringArrayCustomNode","Factory__IStringArrayIndexNode","IdentifierNamesGenerator_1","DictionaryIdentifierNamesGenerator_1","HexadecimalIdentifierNamesGenerator_1","MangledIdentifierNamesGenerator_1","MangledShuffledIdentifierNamesGenerator_1","IIdentifierNamesGenerator","DictionaryIdentifierNamesGenerator","IdentifierNamesGenerator","HexadecimalIdentifierNamesGenerator","MangledIdentifierNamesGenerator","MangledShuffledIdentifierNamesGenerator","cachedIdentifierNamesGenerator","identifierNamesGenerator","identifierNameGeneratorFactory","ControlFlowReplacer_1","BinaryExpressionControlFlowReplacer_1","BlockStatementControlFlowTransformer_1","CallExpressionControlFlowReplacer_1","FunctionControlFlowTransformer_1","LogicalExpressionControlFlowReplacer_1","StringLiteralControlFlowReplacer_1","INodeTransformer","IControlFlowReplacer","BinaryExpressionControlFlowReplacer","ControlFlowReplacer","CallExpressionControlFlowReplacer","LogicalExpressionControlFlowReplacer","StringLiteralControlFlowReplacer","Factory__IControlFlowReplacer","ObjectExpressionExtractor_1","BasePropertiesExtractor_1","BooleanLiteralTransformer_1","ExportSpecifierTransformer_1","MemberExpressionTransformer_1","MethodDefinitionTransformer_1","NumberLiteralTransformer_1","NumberToNumericalExpressionTransformer_1","ObjectExpressionKeysTransformer_1","ObjectExpressionToVariableDeclarationExtractor_1","ObjectExpressionTransformer_1","ObjectPatternPropertiesTransformer_1","SplitStringTransformer_1","TemplateLiteralTransformer_1","IObjectExpressionExtractor","ObjectExpressionToVariableDeclarationExtractor","ObjectExpressionExtractor","BasePropertiesExtractor","Factory__IObjectExpressionExtractor","DeadCodeInjectionTransformer_1","EscapeSequenceTransformer_1","CommentsTransformer_1","NodeTransformerNamesGroupsBuilder_1","Factory__INodeTransformer","INodeTransformerNamesGroupsBuilder","NodeTransformerNamesGroupsBuilder","ObfuscatingGuard_1","BlackListObfuscatingGuard_1","ConditionalCommentObfuscatingGuard_1","CustomCodeHelpersTransformer_1","EvalCallExpressionTransformer_1","ForceTransformStringObfuscatingGuard_1","IgnoredRequireImportObfuscatingGuard_1","MetadataTransformer_1","ObfuscatingGuardsTransformer_1","ParentificationTransformer_1","ReservedStringObfuscatingGuard_1","VariablePreserveTransformer_1","INodeGuard","BlackListObfuscatingGuard","ObfuscatingGuard","ConditionalCommentObfuscatingGuard","ForceTransformStringObfuscatingGuard","IgnoredRequireImportObfuscatingGuard","ReservedStringObfuscatingGuard","Factory__INodeGuard","IdentifierReplacer_1","LabeledStatementTransformer_1","ScopeIdentifiersTransformer_1","ScopeThroughIdentifiersTransformer_1","ScopeThroughIdentifiersTransformer","IIdentifierReplacer","IdentifierReplacer","RenamePropertiesReplacer_1","RenamePropertiesTransformer_1","IRenamePropertiesReplacer","RenamePropertiesReplacer","BlockStatementSimplifyTransformer_1","ExpressionStatementsMergeTransformer_1","IfStatementSimplifyTransformer_1","VariableDeclarationsMergeTransformer_1","StringArrayScopeCallsWrapperTransformer_1","StringArrayTransformer_1","ScopeIdentifiersTraverser_1","IScopeIdentifiersTraverser","ScopeIdentifiersTraverser","OptionsNormalizer_1","IOptionsNormalizer","OptionsNormalizer","ControlFlowStorage_1","CustomCodeHelperGroupStorage_1","LiteralNodesCacheStorage_1","StringArrayScopeCallsWrapperLexicalScopeDataStorage_1","StringArrayScopeCallsWrapperNamesDataStorage_1","StringArrayStorage_1","VisitedLexicalScopeNodesStackStorage_1","TCustomNodeGroupStorage","CustomCodeHelperGroupStorage","ILiteralNodesCacheStorage","LiteralNodesCacheStorage","StringArrayStorage","IStringArrayScopeCallsWrapperLexicalScopeDataStorage","StringArrayScopeCallsWrapperLexicalScopeDataStorage","IStringArrayScopeCallsWrapperNamesDataStorage","StringArrayScopeCallsWrapperNamesDataStorage","IVisitedLexicalScopeNodesStackStorage","VisitedLexicalScopeNodesStackStorage","Newable__TControlFlowStorage","ControlFlowStorage","Factory__TControlFlowStorage","storage","ArrayUtils_1","CryptUtils_1","CryptUtilsSwappedAlphabet_1","EscapeSequenceEncoder_1","LevelledTopologicalSorter_1","RandomGenerator_1","ArrayUtils","RandomGenerator","ICryptUtils","CryptUtils","ICryptUtilsSwappedAlphabet","CryptUtilsSwappedAlphabet","IEscapeSequenceEncoder","EscapeSequenceEncoder","ILevelledTopologicalSorter","LevelledTopologicalSorter","AbstractCustomCodeHelper_1","AbstractCustomCodeHelper","TIdentifierNamesGeneratorFactory_1","ICustomCodeHelperFormatter_1","ICustomCodeHelperObfuscator_1","GlobalVariableTemplate1_1","GlobalVariableTemplate2_1","identifierNamesGeneratorFactory","customCodeHelperFormatter","customCodeHelperObfuscator","cachedNode","codeHelperTemplate","getCodeHelperTemplate","formatStructure","getNodeStructure","getRandomGenerator","pickone","globalVariableTemplateFunctions","GlobalVariableTemplate1","GlobalVariableTemplate2","TIdentifierNamesGeneratorFactory","AbstractCustomCodeHelperGroup","appendEvent","customCodeHelpers","customCodeHelperName","callback","customCodeHelper","callsGraphLength","string_template_1","IPrevailingKindOfVariablesAnalyzer_1","prevailingKindOfVariablesAnalyzer","getPrevailingKind","template","mapping","statements","statement","NoCustomNodes_1","additionalOptions","NO_ADDITIONAL_NODES_PRESET","identifiersDictionary","numbersToExpressions","seed","getRawSeed","ObfuscationEvent_1","Initializable_1","SingleCallControllerTemplate_1","NodeUtils_1","callsControllerFunctionName","NodeUtils","convertCodeToStructure","ObfuscationEvent","AfterObfuscation","obfuscateTemplate","formatTemplate","SingleCallControllerTemplate","callControllerFunctionName","initializable","String","GlobalVariableNoEvalTemplate","ObfuscationTarget_1","ConsoleOutputDisableTemplate_1","GlobalVariableNoEvalTemplate_1","consoleOutputDisableFunctionName","globalVariableTemplate","ObfuscationTarget","BrowserNoEval","getGlobalVariableTemplate","ConsoleOutputDisableTemplate","consoleLogDisableFunctionName","TCustomCodeHelperFactory_1","AbstractCustomCodeHelperGroup_1","NodeAppender_1","NodeLexicalScopeUtils_1","customCodeHelperFactory","BeforeObfuscation","nodeWithStatements","disableConsoleOutput","randomCallsGraphIndex","getRandomCallsGraphIndex","consoleOutputDisableHostNode","NodeAppender","getOptimalBlockScope","callsControllerHostNode","consoleOutputDisableLexicalScopeNode","NodeLexicalScopeUtils","getLexicalScope","generateNext","appendCustomNodeIfExist","prepend","getNode","consoleOutputDisableExpressionCodeHelper","callsControllerFunctionCodeHelper","TCustomCodeHelperFactory","DebugProtectionFunctionCallTemplate_1","debugProtectionFunctionName","DebugProtectionFunctionCallTemplate","DebuggerTemplate_1","DebuggerTemplateNoEval_1","DebugProtectionFunctionTemplate_1","debuggerTemplate","DebuggerTemplate","DebuggerTemplateNoEval","DebugProtectionFunctionTemplate","DebugProtectionFunctionIntervalTemplate_1","DebugProtectionFunctionIntervalTemplate","debugProtection","debugProtectionFunctionCallHostNode","debugProtectionFunctionCallScopeNode","append","programBodyLength","isSwitchCaseNode","consequent","randomIndex","insertAtIndex","debugProtectionFunctionCodeHelper","debugProtectionFunctionCallCodeHelper","debugProtectionFunctionIntervalCodeHelper","debugProtectionInterval","ICryptUtils_1","DomainLockTemplate_1","cryptUtils","domainLockFunctionName","domainsString","domainLock","join","hiddenDomainsString","diff","hideString","DomainLockTemplate","domains","domainLockFunctionHostNode","domainLockFunctionLexicalScopeNode","domainLockCodeHelper","SelfDefendingTemplate_1","SelfDefendingNoEvalTemplate_1","selfDefendingFunctionName","selfDefendingTemplate","SelfDefendingTemplate","SelfDefendingNoEvalTemplate","selfDefending","selfDefendingFunctionHostNode","selfDefendingFunctionLexicalScopeNode","selfDefendingUnicodeCodeHelper","AtobTemplate_1","StringArrayBase64DecodeTemplate_1","atobFunctionName","getRandomString","atobPolyfill","AtobTemplate","selfDefendingCode","getSelfDefendingTemplate","StringArrayBase64DecodeTemplate","stringArrayCallsWrapperName","IEscapeSequenceEncoder_1","StringArrayCallsWrapperTemplate_1","escapeSequenceEncoder","stringArrayName","indexShiftAmount","decodeCodeHelperTemplate","getDecodeStringArrayTemplate","preservedNames","StringArrayCallsWrapperTemplate","reservedNames","Rc4Template_1","StringArrayRC4DecodeTemplate_1","rc4Polyfill","Rc4Template","StringArrayRC4DecodeTemplate","StringArrayTemplate_1","StringUtils_1","StringArrayTemplate","stringArrayStorageItems","getEncodedStringArrayStorageItems","Array","getStorage","values","stringArrayStorageItemData","StringUtils","escapeJsString","encodedValue","StringArrayRotateFunctionTemplate_1","stringArrayRotationAmount","timesName","whileFunctionName","StringArrayRotateFunctionTemplate","toHex","StringArrayEncoding_1","getLength","stringArrayEncodingsLength","stringArrayEncoding","stringArrayCallsWrapperCodeHelperName","getStringArrayCallsWrapperCodeHelperName","stringArrayCodeHelper","getStorageName","stringArrayCallsWrapperCodeHelper","getStorageCallsWrapperName","getIndexShiftAmount","stringArrayRotateFunctionCodeHelper","getRotationAmount","rotateStringArray","stringArrayCallsWrapperCodeHelperMap","StringArrayEncoding","None","Base64","Rc4","Base64AlphabetSwapped_1","rc4BytesIdentifier","statesIdentifier","newStateIdentifier","firstStateIdentifier","secondStateIdentifier","checkStateIdentifier","runStateIdentifier","getStateIdentifier","stateResultIdentifier","encode","initializedIdentifier","base64DecodeFunctionIdentifier","dataIdentifier","rc4Identifier","onceIdentifier","AbstractCustomNode","AbstractCustomNode_1","NodeFactory_1","operator","structure","NodeFactory","expressionStatementNode","functionExpressionNode","identifierNode","blockStatementNode","returnStatementNode","binaryExpressionNode","parentizeAst","StringSeparator_1","blockStatementBody","shuffledKeys","originalKeysIndexesInShuffledArray","controllerIdentifierName","indexIdentifierName","variableDeclarationNode","variableDeclaratorNode","memberExpressionNode","StringSeparator","VerticalLine","whileStatementNode","switchStatementNode","updateExpressionNode","isReturnStatementNode","continueStatement","switchCaseNode","breakStatement","expressionArguments","calleeIdentifier","params","argumentsLength","logicalExpressionNode","literalValue","controlFlowStorageName","controlFlowStorageKey","ESTree","Expression","TControlFlowStorage_1","controlFlowStorage","propertyNodes","isExpressionStatementNode","expression","getStorageId","objectExpressionNode","TControlFlowStorage","leftValue","rightValue","deadCodeInjectionRootAstHostNode","random1","random2","leftString","rightString","alternate","ifStatementNode","lexicalScopeNode","variableDeclarationName","generateForGlobalScope","generateForLexicalScope","AbstractStringArrayCallNode_1","_g","AbstractStringArrayCallNode","TStringArrayIndexNodeFactory_1","StringArrayIndexesType_1","stringArrayIndexNodeFactory","isPositive","normalizedIndex","stringArrayCallsIndexType","stringArrayIndexesType","stringArrayIndexNodeName","stringArrayIndexNodesMap","stringArrayCallIndexNode","replacedLiteral","hexadecimalNode","unaryExpressionNode","decodeKey","rc4KeyLiteralNode","stringArrayRootCallsWrapperParametersCount","StringArrayIndexesType","HexadecimalNumber","HexadecimalNumericString","TStringArrayIndexNodeFactory","_h","stringArrayCallsWrapperParameterIndexesData","resultIndex","indexNode","getStringArrayIndexNode","getRc4KeyLiteralNode","callExpressionArgs","fillWithRange","stringArrayWrappersParametersMaxCount","getFakeStringArrayIndexNode","splice","valueIndexParameterIndex","decodeKeyParameterIndex","actualIndex","getFakeStringArrayIndex","fakeIndexOffset","minimumIndex","maximumIndex","_j","stringArrayScopeCallsWrapperName","stringArrayScopeCallsWrapperParameterIndexesData","upperStringArrayCallsWrapperName","upperStringArrayCallsWrapperParameterIndexesData","shiftedIndex","stringArrayCallIdentifierNode","decodeKeyIdentifierNode","stringArrayCallNode","getUpperStringArrayCallNode","parameters","getFakeParameterNode","getFakeUpperStringArrayIndexNode","parameter","indexParameterIdentifierNode","indexShiftNode","AbstractStringArrayIndexNode","AbstractStringArrayIndexNode_1","hexadecimalIndex","defaultDescriptor","configurable","initializedTargetMetadataKey","initializablePropertiesSetMetadataKey","wrappedMethodsSetMetadataKey","initializeTargetMetadata","metadataKey","metadataValue","hasMetadata","defineMetadata","initializeMethodName","decoratorName","propertyKey","initializeMethod","Set","ownPropertyNames","getOwnPropertyNames","prohibitedPropertyNames","propertyName","initializablePropertiesSet","getMetadata","wrappedMethodsSet","methodDescriptor","originalMethod","apply","add","wrapTargetMethodsInInitializedCheck","wrapInitializeMethodInInitializeCheck","initializablePropertyMetadataKey","propertyDescriptor","newVal","wrapInitializableProperty","makeEnum","Browser","Node","LoggingPrefix","VisitorDirection","StringArrayWrappersType","Variable","Function","NodeType","ObfuscatingGuardResult","OptionsPreset","Default","LowObfuscation","MediumObfuscation","HighObfuscation","SourceMapMode","Inline","Separate","eventemitter3_1","AbstractIdentifierNamesGenerator","preservedNamesSet","lexicalScopesPreservedNamesMap","nameLength","preservedNamesForLexicalScopeSet","notReservedName","lexicalScopeNodes","isValidIdentifierName","lexicalScope","reservedName","RegExp","exec","AbstractIdentifierNamesGenerator_1","identifierNamesSet","getInitialIdentifierNames","identifiersIterator","identifierName","newIdentifierName","isSuccess","character","toLowerCase","generateNewDictionaryName","preserveName","identifierNameWithPrefix","lexicalScopes","getLexicalScopes","isValidIdentifierNameInLexicalScopes","preserveNameForLexicalScope","size","iteratorResult","next","done","getIncrementedIdentifierNames","identifierNames","formattedIdentifierNames","filter","shuffle","incrementIdentifierName","randomInteger","hexadecimalNumber","prefixLength","hexadecimalPrefix","baseNameLength","baseIdentifierNameLength","previousMangledName","initMangledNameCharacter","generateNewMangledName","updatePreviousMangledName","prefix","getLastMangledNameForScopes","lastMangledNameInScopeMap","nextName","prevName","nextNameLength","prevNameLength","nameSequence","getNameSequence","nextNameCharacter","prevNameCharacter","indexOf","mangledName","reservedNamesSet","isIncrementedMangledName","newMangledName","nameSequenceLength","zeroSequence","num","repeat","indexInSequence","lastMangledName","WeakMap","initializeNameSequence","shuffledNameSequence","postConstruct","LoggingPrefix_1","loggingLevelColor","loggingPrefix","loggingMessage","processedMessage","console","log","colorInfo","Base","colorSuccess","colorWarn","cyan","green","yellow","AbstractNodeTransformer","TNodeTransformerFactory_1","VisitorDirection_1","nodeTransformerFactory","nodeTransformerNamesGroupsBuilder","nodeTransformerNames","normalizedNodeTransformers","buildNormalizedNodeTransformers","nodeTransformerNamesGroups","enterVisitors","leaveVisitors","visitor","getVisitor","leave","mergeVisitorsForDirection","Enter","Leave","nodeTransformer","visitors","direction","visitorsLength","visitorFunction","visitorResult","isNode","TNodeTransformerFactory","TControlFlowCustomNodeFactory_1","AbstractNodeTransformer_1","controlFlowCustomNodeFactory","isBreakOrContinueStatement","isBreakStatementNode","isContinueStatementNode","isVariableDeclarationWithLetOrConstKind","isClassDeclaration","isClassDeclarationNode","canTransform","isWhileStatementNode","isProhibitedStatementNode","isBlockStatementNode","transformNode","controlFlowFlatteningThreshold","canTransformBlockStatementNode","originalKeys","createWithRange","blockStatementControlFlowFlatteningCustomNode","newBlockStatementNode","parentizeNode","TControlFlowCustomNodeFactory","TControlFlowReplacerFactory_1","TControlFlowStorageFactory_1","NodeType_1","controlFlowStorageFactory","controlFlowReplacerFactory","controlFlowData","visitedFunctionNodes","hostNodesWithControlFlowNode","isArrowFunctionExpressionNode","functionNode","hostNode","getHostNode","getControlFlowStorage","transformFunctionBody","controlFlowStorageCustomNode","hostControlFlowStorage","mergeWith","functionNodeBody","blockScopesOfNode","getParentNodesWithStatements","pop","hostNodeSearchMinDepth","hostNodeSearchMaxDepth","isVisitedFunctionNode","controlFlowReplacersMap","controlFlowReplacerName","BinaryExpression","CallExpression","LogicalExpression","Literal","TControlFlowStorageFactory","TControlFlowReplacerFactory","AbstractControlFlowReplacer_1","AbstractControlFlowReplacer","replacerDataByControlFlowStorageId","identifierDataByControlFlowStorageId","controlFlowStorageId","storageKeysById","customNode","replacerId","usingExistingIdentifierChance","getStorageKeysByIdForCurrentStorage","storageKeysForCurrentId","generateStorageKey","storageKey","ExpressionWithOperatorControlFlowReplacer_1","ExpressionWithOperatorControlFlowReplacer","binaryExpressionFunctionCustomNode","insertCustomNodeToControlFlowStorage","getControlFlowStorageCallNode","left","right","callExpressionFunctionCustomNode","controlFlowStorageCallCustomNode","statementNode","leftExpression","rightExpression","checkForProhibitedExpressions","logicalExpressionFunctionCustomNode","expressionNode","nodeForCheck","isUnaryExpressionNode","getUnaryExpressionArgumentNode","literalFunctionCustomNode","getTrueUnaryExpressionNode","getFalseUnaryExpressionNode","arrayExpressionNode","isExportSpecifierNode","exportSpecifierNode","local","exported","clone","isMethodDefinitionNode","methodDefinitionNode","replaceIdentifierKey","replaceLiteralKey","keyNode","ignoredNames","includes","runAfter","numberLiteralCache","rawValue","isCeil","INumberNumericalExpressionAnalyzer_1","numberNumericalExpressionAnalyzer","numberNumericalExpressionData","convertNumericalExpressionDataToNode","numberNumericalExpressionDataLength","leftParts","rightParts","convertPartsToBinaryExpression","firstLeftPartOrNumber","isArray","convertPartOrNumberToLiteralNode","rightPartOrNumber","partOrNumber","isPositiveNumber","TObjectExpressionExtractorFactory_1","objectExpressionExtractorFactory","objectExpressionParentNode","objectExpressionHostStatement","isReferencedIdentifierName","isProhibitedArrowFunctionExpression","isProhibitedSequenceExpression","objectExpressionHostNode","isCurrentNode","objectExpressionNodeParentNode","isSequenceExpressionNode","expressions","isSuperNode","transformObjectKeys","hostStatement","getRootStatementOfNode","isProhibitedObjectExpressionNode","applyObjectExpressionKeysExtractorsRecursive","objectExpressionExtractorNames","newObjectExpressionExtractorNames","objectExpressionExtractor","nodeToReplace","newObjectExpressionHostStatement","newObjectExpressionNode","TObjectExpressionExtractorFactory","transformComputedProperty","transformBaseProperty","shorthand","isObjectPatternNode","renameGlobals","stringz","string","stringLength","chunkSize","chunksCount","ceil","chunks","nextChunkStartIndex","chunkIndex","substr","splitStrings","firstPassChunksNode","transformLiteralNodeByChunkLength","firstPassChunkLength","splitStringsChunkLength","chunkLength","valueLength","stringChunks","chunkString","transformStringChunksToBinaryExpressionNode","firstChunk","secondChunk","initialBinaryExpressionNode","chunk","chunkLiteralNode","isTemplateLiteralNode","templateLiteralNode","isTaggedTemplateExpressionNode","transformTemplateLiteralNode","templateLiteralExpressions","transformedNode","nodes","quasis","templateElement","cooked","isLiteralNodeWithStringValue","root","propertyKeyNode","isArrayPatternNode","isAssignmentPatternNode","isRestElementNode","transformObjectExpressionNode","memberExpressionHostNode","expressionStatements","removablePropertyIds","extractPropertiesToExpressionStatements","hostNodeWithStatements","getScopeOfNode","filterExtractedObjectExpressionProperties","insertAfter","isSpreadElementNode","isProhibitedPropertyNode","propertyValue","isProhibitedPattern","propertyKeyName","getPropertyNodeKeyName","memberExpressionProperty","shouldCreateLiteralNode","assignmentExpressionNode","TObjectExpressionKeysTransformerCustomNodeFactory_1","objectExpressionKeysTransformerCustomNodeFactory","transformObjectExpressionToVariableDeclaration","isNodeWithLexicalScope","getObjectExpressionHostNode","statementsToInsert","insertBefore","getObjectExpressionIdentifierNode","getObjectExpressionNode","variableDeclarationHostNodeCustomNode","newObjectExpressionIdentifierNode","declarations","TObjectExpressionKeysTransformerCustomNodeFactory","TDeadNodeInjectionCustomNodeFactory_1","deadCodeInjectionCustomNodeFactory","transformersRunner","deadCodeInjectionRootAstHostNodeSet","collectedBlockStatements","collectedBlockStatementsTotalLength","isAwaitExpressionNode","isYieldExpressionNode","isForOfStatementNode","await","scopeNode","scopeBody","indexInScope","slicedBody","hostBlockStatementNode","functionDeclarationName","isScopeHoistedFunctionDeclaration","nestedBlockStatementsCount","isValidBlockStatementNode","maxNestedBlockStatementsCount","isProhibitedNodeInsideCollectedBlockStatement","isScopeHoistingFunctionDeclaration","Program","prepareNode","isDeadCodeInjectionRootAstHostNode","restoreNode","programNode","clonedBlockStatementNode","isValidCollectedBlockStatementNode","transformedBlockStatementNode","makeClonedBlockStatementNodeUnique","minCollectedBlockStatementsCount","deadCodeInjectionThreshold","isValidWrappedBlockStatementNode","maxInteger","randomBlockStatementNode","replaceBlockStatementNode","hostNodeFirstStatement","transformersToRenameBlockScopeIdentifiers","functionDeclarationNode","deadCodeInjectionRootAstHostNodeName","blockStatementDeadCodeInjectionCustomNode","TDeadNodeInjectionCustomNodeFactory","unicodeEscapeSequence","newLiteralNode","filterCommentsOnFinalizingTraverse","rootNode","filterCommentsOnPrimaryTraverse","reverse","isFirstNode","commentIdx","findIndex","filterComment","keepConditionalComment","isConditionalComment","preservedWords","preservedWord","TCustomCodeHelperGroupStorage_1","IObfuscationEventEmitter_1","ICallsGraphAnalyzer_1","callsGraphAnalyzer","obfuscationEventEmitter","customCodeHelperGroupStorage","appendCustomNodesBeforeObfuscation","appendCustomNodesAfterObfuscation","customCodeHelperGroup","once","getAppendEvent","appendNodes","emit","TCustomCodeHelperGroupStorage","evalRootAstHostNodeSet","extractEvalStringFromLiteralNode","extractEvalStringFromTemplateLiteralNode","isEvalRootAstHostNode","callExpressionFirstArgument","evalString","extractEvalStringFromCallExpressionArgument","ast","evalRootAstHostNode","targetAst","convertStructureToCode","ignoredNode","TObfuscatingGuardFactory_1","ObfuscatingGuardResult_1","obfuscatingGuardFactory","obfuscatingGuards","obfuscatingGuardsList","obfuscatingGuardResults","obfuscatingGuard","check","setNodeMetadata","every","obfuscatingGuardResult","Transform","ForceTransform","Ignore","forceTransformNode","TObfuscatingGuardFactory","IIdentifierReplacer_1","IScopeIdentifiersTraverser_1","identifierReplacer","scopeIdentifiersTraverser","preserveScopeVariableIdentifiers","traverseScopeIdentifiers","data","isGlobalDeclaration","isBubblingDeclaration","variableScope","identifier","identifiers","preserveIdentifierNameForRootLexicalScope","preserveIdentifierNameForLexicalScope","block","blackListGuardsLength","blackListGuards","isUseStrictOperator","obfuscationAllowed","obfuscationEnableCommentRegExp","test","obfuscationDisableCommentRegExp","isNodeWithComments","checkComments","commentsLength","forceTransformStrings","isForceTransformString","forceTransformString","ignoreRequireImports","reservedStrings","isReservedString","reservedString","isLabeledStatementNode","labeledStatementNode","storeLabeledStatementName","replaceLabeledStatementName","storeLocalName","label","isLabelIdentifierNode","newIdentifier","lexicalScopesWithObjectPatternWithoutDeclarationMap","variableLexicalScopeNode","transformScopeVariableIdentifiers","firstIdentifier","isReplaceableIdentifierNode","storeIdentifierName","replaceIdentifierName","storeGlobalName","reference","isProhibitedPropertyIdentifierNode","isProhibitedPropertyAssignmentPatternIdentifierNode","isProhibitedClassDeclarationNameIdentifierNode","isProhibitedExportNamedClassDeclarationIdentifierNode","isProhibitedExportNamedFunctionDeclarationIdentifierNode","isProhibitedExportNamedVariableDeclarationIdentifierNode","isProhibitedImportSpecifierNode","isProhibitedVariableNameUsedInObjectPatternNode","isExportNamedDeclarationNode","isImportSpecifierNode","imported","isLexicalScopeHasObjectPatternWithoutDeclaration","isProhibitedVariableDeclaration","isAssignmentExpressionNode","traverseScopeThroughIdentifiers","transformScopeThroughIdentifiers","resolved","blockScopesMap","isReservedName","namesMap","IRenamePropertiesReplacer_1","renamePropertiesReplacer","transformPropertyNode","transformMemberExpressionNode","transformMethodDefinitionNode","isValidPropertyNode","ReservedDomProperties_json_1","propertyNamesMap","reservedDomPropertiesList","replacePropertyName","renamedPropertyName","isReservedOptionName","isReservedDomPropertyName","AbstractStatementSimplifyTransformer","leadingStatements","trailingStatement","hasReturnStatement","hasSingleExpression","startIndex","unwrappedExpressions","collectIteratedStatementsSimplifyData","getLeadingStatements","sequenceExpressionNode","statementBodyStatementNode","argument","statementSimplifyData","AbstractStatementSimplifyTransformer_1","simplifyData","getStatementSimplifyData","partialStatementNode","getPartialStatement","isNodeWithStatements","prevStatement","getPreviousSiblingStatement","Remove","isIfStatementNode","consequentSimplifyData","alternateSimplifyData","getConsequentAndAlternateNode","getConsequentNode","conditionalExpressionNode","partialStatement","isProhibitedSingleStatementForIfStatementBranch","TStringArrayCustomNodeFactory_1","IStringArrayScopeCallsWrapperLexicalScopeDataStorage_1","IStringArrayScopeCallsWrapperNamesDataStorage_1","IVisitedLexicalScopeNodesStackStorage_1","StringArrayWrappersType_1","visitedLexicalScopeNodesStackStorage","stringArrayScopeCallsWrapperNamesDataStorage","stringArrayScopeCallsWrapperLexicalScopeDataStorage","stringArrayTransformerCustomNodeFactory","stringArrayWrappersCount","isNodeWithLexicalScopeStatements","onLexicalScopeNodeEnter","onLexicalScopeNodeLeave","lexicalScopeBodyNode","stringArrayScopeCallsWrapperNamesDataByEncoding","stringArrayScopeCallsWrapperLexicalScopeData","callsWrappersParameterIndexesData","stringArrayScopeCallsWrapperParameterIndexes","stringArrayScopeCallsWrapperNamesDataList","stringArrayScopeCallsWrapperNamesData","names","upperStringArrayCallsWrapperShiftedIndex","parameterIndexesData","upperStringArrayCallsWrapperParameterIndexes","getUpperStringArrayCallsWrapperData","stringArrayScopeCallsWrapperNode","getStringArrayScopeCallsWrapperNode","encoding","resultShiftedIndex","scopeShiftedIndex","rootStringArrayCallsWrapperData","getRootStringArrayCallsWrapperData","stringArrayWrappersChainedCalls","parentLexicalScopeBodyNode","getLastElement","parentLexicalScopeNamesDataByEncoding","parentScopeCallsWrapperLexicalScopeData","parentLexicalScopeNames","stringArrayScopeCallsWrapperShiftedIndex","stringArrayWrappersType","getStringArrayScopeCallsWrapperFunctionNode","getStringArrayScopeCallsWrapperVariableNode","stringArrayScopeCallsWrapperVariableNode","stringArrayScopeCallsWrapperFunctionNode","TStringArrayCustomNodeFactory","_k","ILiteralNodesCacheStorage_1","IStringArrayStorageAnalyzer_1","literalNodesCacheStorage","stringArrayStorageAnalyzer","isReplacedLiteral","shuffleStringArray","shuffleStorage","rotateStorage","getItemDataForLiteralNode","cacheKey","buildKey","shouldUseCachedValue","resultNode","getStringArrayCallNode","getStringArrayCallsWrapperData","stringArrayCallCustomNode","currentLexicalScopeBodyNode","getPenultimateElement","getAndUpdateStringArrayScopeCallsWrapperNamesDataByEncoding","getAndUpdateStringArrayScopeCallsWrapperLexicalScopeData","stringArrayScopeCallsWrapperNames","nextScopeCallsWrapperName","storedLexicalScopeData","parentLexicalScopeData","getStringArrayCallsWrapperParameterIndexesData","minShiftedIndexValue","maxShiftedIndexValue","lexicalScopeData","maxIndexValue","getRandomIntegerExcluding","parentizeScopeStatementsBeforeAppend","setScopeStatements","getScopeStatements","bodyStatements","targetBlockScope","deep","Infinity","firstCall","indexInScopeStatement","elements","ArrayExpression","ArrowFunctionExpression","AssignmentExpression","BlockStatement","BreakStatement","args","optional","ConditionalExpression","ContinueStatement","directive","ExpressionStatement","source","ExportAllDeclaration","specifiers","ExportNamedDeclaration","functionName","FunctionDeclaration","generator","FunctionExpression","IfStatement","Identifier","ImportDeclaration","raw","content","precedence","Precedence","Primary","MemberExpression","ObjectExpression","Property","method","ReturnStatement","SequenceExpression","discriminant","cases","SwitchStatement","SwitchCase","UnaryExpression","argumentExpr","UpdateExpression","tail","TemplateElement","TemplateLiteral","VariableDeclaration","VariableDeclarator","WhileStatement","ArrayPattern","AssignmentPattern","AwaitExpression","bigint","ClassDeclaration","ExportSpecifier","ForOfStatement","ImportSpecifier","parentNodeIsLabeledStatementNode","parentNodeIsContinueStatementNode","parentNodeIsBreakStatementNode","LabeledStatement","MethodDefinition","isFunctionNode","nodesWithLexicalStatements","ObjectPattern","RestElement","SpreadElement","Super","TaggedTemplateExpression","isDirectiveNode","YieldExpression","getLexicalScopesRecursive","maxSize","nodesWithLexicalScope","depth","ReferenceError","isImportDeclarationNode","isExportAllDeclarationNode","getParentNodesWithStatementsRecursive","getSiblingStatementByOffset","nodesWithStatements","offset","cloneRecursive","addXVerbatimPropertyTo","copy","clonedValue","IScopeAnalyzer_1","scopeAnalyzer","globalScope","acquireScope","traverseScopeIdentifiersRecursive","traverseScopeThroughIdentifiersRecursive","rootScope","currentScope","isNodeWithBlockLexicalScope","globalScopeNames","argumentsVariableName","through","class_validator_1","TInputOptions_1","TOptionsPreset_1","TStringArrayWrappersType_1","TTypeFromEnum_1","IOptionsNormalizer_1","OptionsPreset_1","SourceMapMode_1","Default_1","LowObfuscation_1","MediumObfuscation_1","HighObfuscation_1","ValidationErrorsFormatter_1","IsAllowedForObfuscationTargets_1","optionsNormalizer","errors","validateSync","validatorOptions","ValidationErrorsFormatter","normalize","optionPresetsMap","DEFAULT_PRESET","LOW_OBFUSCATION_PRESET","MEDIUM_OBFUSCATION_PRESET","HIGH_OBFUSCATION_PRESET","validationError","IsBoolean","IsNumber","Min","Max","IsArray","ArrayUnique","IsString","each","IsAllowedForObfuscationTargets","IsIn","TTypeFromEnum","ValidateIf","ArrayNotEmpty","TOptionsPreset","sourceMapBaseUrl","IsUrl","require_protocol","require_tld","require_valid_protocol","TStringArrayWrappersType","ControlFlowFlatteningThresholdRule_1","DeadCodeInjectionRule_1","DeadCodeInjectionThresholdRule_1","DomainLockRule_1","InputFileNameRule_1","SeedRule_1","SelfDefendingRule_1","SourceMapBaseUrlRule_1","SourceMapFileNameRule_1","SplitStringsChunkLengthRule_1","StringArrayRule_1","StringArrayEncodingRule_1","StringArrayWappersChainedCalls_1","normalizedOptions","normalizerRule","normalizerRules","ControlFlowFlatteningThresholdRule","DeadCodeInjectionRule","DeadCodeInjectionThresholdRule","DomainLockRule","InputFileNameRule","SeedRule","SelfDefendingRule","SourceMapBaseUrlRule","SourceMapFileNameRule","SplitStringsChunkLengthRule","StringArrayRule","StringArrayEncodingRule","StringArrayWrappersChainedCallsRule","errorMessages","formatWithNestedConstraints","constraints","constraint","normalizedDomains","domain","extractDomainFrom","Dot","floor","random","sourceMapFileName","endsWith","sourceMapFileNameParts","sourceMapFileNamePartsCount","lastPart","stringArrayIndexShift","freeze","exclude","sourceMapMode","fast_deep_equal_1","obfuscationTargets","validationOptions","optionsObject","registerDecorator","validator","validationArguments","defaultValue","defaultMessage","Comma","correctObfuscatedCode","sourceMapUrl","sourceMappingUrl","btoa","ArrayStorage","storageLength","storageId","deletedElement","mergeId","MapStorage","storageValue","TCustomCodeHelperGroupFactory_1","MapStorage_1","customCodeHelperGroupFactory","customCodeHelperGroupsList","customCodeHelperGroupName","TCustomCodeHelperGroupFactory","ICryptUtilsSwappedAlphabet_1","cryptUtilsSwappedAlphabet","rc4EncodedValuesSourcesCache","rotationAmount","stringArrayStorageCallsWrapperNamesMap","rc4Keys","n","rc4KeyLength","rc4KeysCount","minimumIndexShiftAmount","maximumIndexShiftAmount","minimumRotationAmount","maximumRotationAmount","getOrSetIfDoesNotExist","stringArrayStorageName","stringArrayNameLength","storageCallsWrapperName","newStorageCallsWrapperName","rotate","entries","sort","stringArrayStorageItemDataA","stringArrayStorageItemDataB","getEncodedValue","storedStringArrayStorageItemData","rc4","encodedValueSources","encodedValueSourcesLength","ArrayStorage_1","nodeWithLexicalScopeStatements","delete","ILevelledTopologicalSorter_1","levelledTopologicalSorter","normalizedTransformers","transformerNames","relationEdges","buildTransformersRelationEdges","precedent","sortByGroups","transformerName","runAfterRelations","runAfterRelation","valueFunction","array","elementsMap","mostOccurringElement","mostOccurringElementCount","element","updatedElementCount","times","newArray","temp","shuffledArray","j","Base64Alphabet_1","base64Alphabet","chars","output","encodeURIComponent","match","p1","fromCharCode","parseInt","charCode","idx","charAt","charCodeAt","str","randomStringDiff","pool","randomGeneratorPool","s","randomStringDiffArray","s1","s2","i1","i2","randomMerge","x","y","stringsCache","encodeAllSymbols","replaceRegExp","forceEscapeCharactersRegExp","ASCIICharactersRegExp","graph","link","register","consequents","results","marks","visit","resultItemsGroups","hasNodes","rootNodes","findRootNodes","getPrecedents","precedentsGroups","precedentsGroup","hasPrecedents","precedents","mark","basePart","POSITIVE_INFINITY","MIN_SAFE_INTEGER","sqrt","incrementValue","currentFactor","compliment","a","b","md5_1","chance_1","ISourceCode_1","Chance","integer","valuesToExclude","valuesToPickArray","inputSeed","getSourceCode","js_string_escape_1","buildTimestamp","toISOString","url","sourceCodeIndex","baseMultipleSourcesIdentifiersPrefix","enumLikeObject","require","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__"],"mappings":"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","file":"index.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst JavaScriptObfuscatorFacade_1 = require(\"./src/JavaScriptObfuscatorFacade\");\nmodule.exports = JavaScriptObfuscatorFacade_1.JavaScriptObfuscator;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ASTParserFacade = void 0;\nconst acorn = __importStar(require(\"acorn\"));\nconst chalk_1 = __importDefault(require(\"chalk\"));\nclass ASTParserFacade {\n static parse(sourceCode, config) {\n const sourceTypeLength = ASTParserFacade.sourceTypes.length;\n for (let i = 0; i < sourceTypeLength; i++) {\n try {\n return ASTParserFacade.parseType(sourceCode, config, ASTParserFacade.sourceTypes[i]);\n }\n catch (error) {\n if (i < sourceTypeLength - 1) {\n continue;\n }\n throw new Error(ASTParserFacade.processParsingError(sourceCode, error.message, error.loc));\n }\n }\n throw new Error('Acorn parsing error');\n }\n static parseType(sourceCode, inputConfig, sourceType) {\n const comments = [];\n const config = Object.assign(Object.assign({}, inputConfig), { onComment: comments, sourceType });\n const program = acorn\n .parse(sourceCode, config);\n if (comments.length) {\n program.comments = comments;\n }\n return program;\n }\n static processParsingError(sourceCode, errorMessage, position) {\n if (!position || !position.line || !position.column) {\n throw new Error(errorMessage);\n }\n const sourceCodeLines = sourceCode.split(/\\r?\\n/);\n const errorLine = sourceCodeLines[position.line - 1];\n if (!errorLine) {\n throw new Error(errorMessage);\n }\n const startErrorIndex = Math.max(0, position.column - ASTParserFacade.nearestSymbolsCount);\n const endErrorIndex = Math.min(errorLine.length, position.column + ASTParserFacade.nearestSymbolsCount);\n const formattedPointer = ASTParserFacade.colorError('>');\n const formattedCodeSlice = `...${errorLine.slice(startErrorIndex, endErrorIndex).replace(/^\\s+/, '')}...`;\n throw new Error(`ERROR at line ${position.line}: ${errorMessage}\\n${formattedPointer} ${formattedCodeSlice}`);\n }\n}\nexports.ASTParserFacade = ASTParserFacade;\nASTParserFacade.colorError = chalk_1.default.red;\nASTParserFacade.nearestSymbolsCount = 15;\nASTParserFacade.sourceTypes = [\n 'script',\n 'module'\n];\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar JavaScriptObfuscator_1, _a, _b, _c, _d, _e, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JavaScriptObfuscator = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"./container/ServiceIdentifiers\");\nconst escodegen = __importStar(require(\"@javascript-obfuscator/escodegen\"));\nconst TObfuscatedCodeFactory_1 = require(\"./types/container/source-code/TObfuscatedCodeFactory\");\nconst ICodeTransformersRunner_1 = require(\"./interfaces/code-transformers/ICodeTransformersRunner\");\nconst ILogger_1 = require(\"./interfaces/logger/ILogger\");\nconst IOptions_1 = require(\"./interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"./interfaces/utils/IRandomGenerator\");\nconst INodeTransformersRunner_1 = require(\"./interfaces/node-transformers/INodeTransformersRunner\");\nconst CodeTransformer_1 = require(\"./enums/code-transformers/CodeTransformer\");\nconst CodeTransformationStage_1 = require(\"./enums/code-transformers/CodeTransformationStage\");\nconst LoggingMessage_1 = require(\"./enums/logger/LoggingMessage\");\nconst NodeTransformer_1 = require(\"./enums/node-transformers/NodeTransformer\");\nconst NodeTransformationStage_1 = require(\"./enums/node-transformers/NodeTransformationStage\");\nconst EcmaVersion_1 = require(\"./constants/EcmaVersion\");\nconst ASTParserFacade_1 = require(\"./ASTParserFacade\");\nconst NodeGuards_1 = require(\"./node/NodeGuards\");\nconst Utils_1 = require(\"./utils/Utils\");\nlet JavaScriptObfuscator = JavaScriptObfuscator_1 = class JavaScriptObfuscator {\n constructor(codeTransformersRunner, nodeTransformersRunner, randomGenerator, obfuscatedCodeFactory, logger, options) {\n this.codeTransformersRunner = codeTransformersRunner;\n this.nodeTransformersRunner = nodeTransformersRunner;\n this.randomGenerator = randomGenerator;\n this.obfuscatedCodeFactory = obfuscatedCodeFactory;\n this.logger = logger;\n this.options = options;\n }\n obfuscate(sourceCode) {\n if (typeof sourceCode !== 'string') {\n sourceCode = '';\n }\n const timeStart = Date.now();\n this.logger.info(LoggingMessage_1.LoggingMessage.Version, Utils_1.Utils.buildVersionMessage(process.env.VERSION, process.env.BUILD_TIMESTAMP));\n this.logger.info(LoggingMessage_1.LoggingMessage.ObfuscationStarted);\n this.logger.info(LoggingMessage_1.LoggingMessage.RandomGeneratorSeed, this.randomGenerator.getInputSeed());\n sourceCode = this.runCodeTransformationStage(sourceCode, CodeTransformationStage_1.CodeTransformationStage.PreparingTransformers);\n const astTree = this.parseCode(sourceCode);\n const obfuscatedAstTree = this.transformAstTree(astTree);\n const generatorOutput = this.generateCode(sourceCode, obfuscatedAstTree);\n generatorOutput.code = this.runCodeTransformationStage(generatorOutput.code, CodeTransformationStage_1.CodeTransformationStage.FinalizingTransformers);\n const obfuscationTime = (Date.now() - timeStart) / 1000;\n this.logger.success(LoggingMessage_1.LoggingMessage.ObfuscationCompleted, obfuscationTime);\n return this.getObfuscatedCode(generatorOutput);\n }\n parseCode(sourceCode) {\n return ASTParserFacade_1.ASTParserFacade.parse(sourceCode, JavaScriptObfuscator_1.parseOptions);\n }\n transformAstTree(astTree) {\n astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.Initializing);\n const isEmptyAstTree = NodeGuards_1.NodeGuards.isProgramNode(astTree)\n && !astTree.body.length\n && !astTree.leadingComments\n && !astTree.trailingComments;\n if (isEmptyAstTree) {\n this.logger.warn(LoggingMessage_1.LoggingMessage.EmptySourceCode);\n return astTree;\n }\n astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.Preparing);\n if (this.options.deadCodeInjection) {\n astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.DeadCodeInjection);\n }\n if (this.options.controlFlowFlattening) {\n astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.ControlFlowFlattening);\n }\n if (this.options.renameProperties) {\n astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.RenameProperties);\n }\n astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.Converting);\n astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.RenameIdentifiers);\n astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.StringArray);\n if (this.options.simplify) {\n astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.Simplifying);\n }\n astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.Finalizing);\n return astTree;\n }\n generateCode(sourceCode, astTree) {\n const escodegenParams = Object.assign({}, JavaScriptObfuscator_1.escodegenParams);\n if (this.options.sourceMap) {\n escodegenParams.sourceMap = this.options.inputFileName || 'sourceMap';\n escodegenParams.sourceContent = sourceCode;\n }\n const generatorOutput = escodegen.generate(astTree, Object.assign(Object.assign({}, escodegenParams), { format: {\n compact: this.options.compact\n } }));\n generatorOutput.map = generatorOutput.map ? generatorOutput.map.toString() : '';\n return generatorOutput;\n }\n getObfuscatedCode(generatorOutput) {\n return this.obfuscatedCodeFactory(generatorOutput.code, generatorOutput.map);\n }\n runCodeTransformationStage(code, codeTransformationStage) {\n this.logger.info(LoggingMessage_1.LoggingMessage.CodeTransformationStage, codeTransformationStage);\n return this.codeTransformersRunner.transform(code, JavaScriptObfuscator_1.codeTransformersList, codeTransformationStage);\n }\n runNodeTransformationStage(astTree, nodeTransformationStage) {\n this.logger.info(LoggingMessage_1.LoggingMessage.NodeTransformationStage, nodeTransformationStage);\n return this.nodeTransformersRunner.transform(astTree, JavaScriptObfuscator_1.nodeTransformersList, nodeTransformationStage);\n }\n};\nJavaScriptObfuscator.parseOptions = {\n ecmaVersion: EcmaVersion_1.ecmaVersion,\n allowHashBang: true,\n allowImportExportEverywhere: true,\n allowReturnOutsideFunction: true,\n locations: true,\n ranges: true\n};\nJavaScriptObfuscator.escodegenParams = {\n comment: true,\n verbatim: 'x-verbatim-property',\n sourceMapWithCode: true\n};\nJavaScriptObfuscator.codeTransformersList = [\n CodeTransformer_1.CodeTransformer.HashbangOperatorTransformer\n];\nJavaScriptObfuscator.nodeTransformersList = [\n NodeTransformer_1.NodeTransformer.BooleanLiteralTransformer,\n NodeTransformer_1.NodeTransformer.BlockStatementControlFlowTransformer,\n NodeTransformer_1.NodeTransformer.BlockStatementSimplifyTransformer,\n NodeTransformer_1.NodeTransformer.CommentsTransformer,\n NodeTransformer_1.NodeTransformer.CustomCodeHelpersTransformer,\n NodeTransformer_1.NodeTransformer.DeadCodeInjectionTransformer,\n NodeTransformer_1.NodeTransformer.EscapeSequenceTransformer,\n NodeTransformer_1.NodeTransformer.EvalCallExpressionTransformer,\n NodeTransformer_1.NodeTransformer.ExportSpecifierTransformer,\n NodeTransformer_1.NodeTransformer.ExpressionStatementsMergeTransformer,\n NodeTransformer_1.NodeTransformer.FunctionControlFlowTransformer,\n NodeTransformer_1.NodeTransformer.IfStatementSimplifyTransformer,\n NodeTransformer_1.NodeTransformer.LabeledStatementTransformer,\n NodeTransformer_1.NodeTransformer.RenamePropertiesTransformer,\n NodeTransformer_1.NodeTransformer.MemberExpressionTransformer,\n NodeTransformer_1.NodeTransformer.MetadataTransformer,\n NodeTransformer_1.NodeTransformer.MethodDefinitionTransformer,\n NodeTransformer_1.NodeTransformer.NumberLiteralTransformer,\n NodeTransformer_1.NodeTransformer.NumberToNumericalExpressionTransformer,\n NodeTransformer_1.NodeTransformer.ObfuscatingGuardsTransformer,\n NodeTransformer_1.NodeTransformer.ObjectExpressionKeysTransformer,\n NodeTransformer_1.NodeTransformer.ObjectExpressionTransformer,\n NodeTransformer_1.NodeTransformer.ObjectPatternPropertiesTransformer,\n NodeTransformer_1.NodeTransformer.ParentificationTransformer,\n NodeTransformer_1.NodeTransformer.ScopeIdentifiersTransformer,\n NodeTransformer_1.NodeTransformer.SplitStringTransformer,\n NodeTransformer_1.NodeTransformer.StringArrayScopeCallsWrapperTransformer,\n NodeTransformer_1.NodeTransformer.StringArrayTransformer,\n NodeTransformer_1.NodeTransformer.TemplateLiteralTransformer,\n NodeTransformer_1.NodeTransformer.VariableDeclarationsMergeTransformer,\n NodeTransformer_1.NodeTransformer.VariablePreserveTransformer\n];\nJavaScriptObfuscator = JavaScriptObfuscator_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICodeTransformersRunner)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformersRunner)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatedCode)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ILogger)),\n __param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof ICodeTransformersRunner_1.ICodeTransformersRunner !== \"undefined\" && ICodeTransformersRunner_1.ICodeTransformersRunner) === \"function\" ? _a : Object, typeof (_b = typeof INodeTransformersRunner_1.INodeTransformersRunner !== \"undefined\" && INodeTransformersRunner_1.INodeTransformersRunner) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof TObfuscatedCodeFactory_1.TObfuscatedCodeFactory !== \"undefined\" && TObfuscatedCodeFactory_1.TObfuscatedCodeFactory) === \"function\" ? _d : Object, typeof (_e = typeof ILogger_1.ILogger !== \"undefined\" && ILogger_1.ILogger) === \"function\" ? _e : Object, typeof (_f = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _f : Object])\n], JavaScriptObfuscator);\nexports.JavaScriptObfuscator = JavaScriptObfuscator;\n","\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JavaScriptObfuscator = void 0;\nrequire(\"reflect-metadata\");\nconst ServiceIdentifiers_1 = require(\"./container/ServiceIdentifiers\");\nconst InversifyContainerFacade_1 = require(\"./container/InversifyContainerFacade\");\nconst Options_1 = require(\"./options/Options\");\nconst Utils_1 = require(\"./utils/Utils\");\nclass JavaScriptObfuscatorFacade {\n static obfuscate(sourceCode, inputOptions = {}) {\n const inversifyContainerFacade = new InversifyContainerFacade_1.InversifyContainerFacade();\n inversifyContainerFacade.load(sourceCode, '', inputOptions);\n const javaScriptObfuscator = inversifyContainerFacade\n .get(ServiceIdentifiers_1.ServiceIdentifiers.IJavaScriptObfuscator);\n const obfuscatedCode = javaScriptObfuscator.obfuscate(sourceCode);\n inversifyContainerFacade.unload();\n return obfuscatedCode;\n }\n static obfuscateMultiple(sourceCodesObject, inputOptions = {}) {\n if (typeof sourceCodesObject !== 'object') {\n throw new Error('Source codes object should be a plain object');\n }\n return Object\n .keys(sourceCodesObject)\n .reduce((acc, sourceCodeIdentifier, index) => {\n const identifiersPrefix = Utils_1.Utils.getIdentifiersPrefixForMultipleSources(inputOptions.identifiersPrefix, index);\n const sourceCode = sourceCodesObject[sourceCodeIdentifier];\n const sourceCodeOptions = Object.assign(Object.assign({}, inputOptions), { identifiersPrefix });\n return Object.assign(Object.assign({}, acc), { [sourceCodeIdentifier]: JavaScriptObfuscatorFacade.obfuscate(sourceCode, sourceCodeOptions) });\n }, {});\n }\n static getOptionsByPreset(optionsPreset) {\n return Options_1.Options.getOptionsByPreset(optionsPreset);\n }\n}\nexports.JavaScriptObfuscator = JavaScriptObfuscatorFacade;\nJavaScriptObfuscatorFacade.version = (_a = process.env.VERSION) !== null && _a !== void 0 ? _a : 'unknown';\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar CallsGraphAnalyzer_1, _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallsGraphAnalyzer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst TCalleeDataExtractorFactory_1 = require(\"../../types/container/calls-graph-analyzer/TCalleeDataExtractorFactory\");\nconst CalleeDataExtractor_1 = require(\"../../enums/analyzers/calls-graph-analyzer/CalleeDataExtractor\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeStatementUtils_1 = require(\"../../node/NodeStatementUtils\");\nlet CallsGraphAnalyzer = CallsGraphAnalyzer_1 = class CallsGraphAnalyzer {\n constructor(calleeDataExtractorFactory) {\n this.calleeDataExtractorFactory = calleeDataExtractorFactory;\n }\n static getLimitIndex(blockScopeBodyLength) {\n const lastIndex = blockScopeBodyLength - 1;\n const limitThresholdActivationIndex = CallsGraphAnalyzer_1.limitThresholdActivationLength - 1;\n let limitIndex = lastIndex;\n if (lastIndex > limitThresholdActivationIndex) {\n limitIndex = Math.round(limitThresholdActivationIndex + (lastIndex * CallsGraphAnalyzer_1.limitThreshold));\n if (limitIndex > lastIndex) {\n limitIndex = lastIndex;\n }\n }\n return limitIndex;\n }\n analyze(astTree) {\n return this.analyzeRecursive(astTree.body);\n }\n analyzeRecursive(blockScopeBody) {\n const limitIndex = CallsGraphAnalyzer_1.getLimitIndex(blockScopeBody.length);\n const callsGraphData = [];\n const blockScopeBodyLength = blockScopeBody.length;\n for (let index = 0; index < blockScopeBodyLength; index++) {\n if (index > limitIndex) {\n break;\n }\n const blockScopeBodyNode = blockScopeBody[index];\n estraverse.traverse(blockScopeBodyNode, {\n enter: (node) => {\n if (!NodeGuards_1.NodeGuards.isCallExpressionNode(node)) {\n return;\n }\n if (blockScopeBodyNode.parentNode !== NodeStatementUtils_1.NodeStatementUtils.getParentNodeWithStatements(node)) {\n return estraverse.VisitorOption.Skip;\n }\n this.analyzeCallExpressionNode(callsGraphData, blockScopeBody, node);\n }\n });\n }\n return callsGraphData;\n }\n analyzeCallExpressionNode(callsGraphData, blockScopeBody, callExpressionNode) {\n CallsGraphAnalyzer_1.calleeDataExtractorsList.forEach((calleeDataExtractorName) => {\n const calleeData = this.calleeDataExtractorFactory(calleeDataExtractorName)\n .extract(blockScopeBody, callExpressionNode.callee);\n if (!calleeData) {\n return;\n }\n callsGraphData.push(Object.assign(Object.assign({}, calleeData), { callsGraph: this.analyzeRecursive(calleeData.callee.body) }));\n });\n }\n};\nCallsGraphAnalyzer.calleeDataExtractorsList = [\n CalleeDataExtractor_1.CalleeDataExtractor.FunctionDeclarationCalleeDataExtractor,\n CalleeDataExtractor_1.CalleeDataExtractor.FunctionExpressionCalleeDataExtractor,\n CalleeDataExtractor_1.CalleeDataExtractor.ObjectExpressionCalleeDataExtractor\n];\nCallsGraphAnalyzer.limitThresholdActivationLength = 25;\nCallsGraphAnalyzer.limitThreshold = 0.002;\nCallsGraphAnalyzer = CallsGraphAnalyzer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICalleeDataExtractor)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TCalleeDataExtractorFactory_1.TCalleeDataExtractorFactory !== \"undefined\" && TCalleeDataExtractorFactory_1.TCalleeDataExtractorFactory) === \"function\" ? _a : Object])\n], CallsGraphAnalyzer);\nexports.CallsGraphAnalyzer = CallsGraphAnalyzer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractCalleeDataExtractor = void 0;\nconst inversify_1 = require(\"inversify\");\nlet AbstractCalleeDataExtractor = class AbstractCalleeDataExtractor {\n};\nAbstractCalleeDataExtractor = __decorate([\n inversify_1.injectable()\n], AbstractCalleeDataExtractor);\nexports.AbstractCalleeDataExtractor = AbstractCalleeDataExtractor;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FunctionDeclarationCalleeDataExtractor = void 0;\nconst inversify_1 = require(\"inversify\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst AbstractCalleeDataExtractor_1 = require(\"./AbstractCalleeDataExtractor\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nconst NodeStatementUtils_1 = require(\"../../../node/NodeStatementUtils\");\nlet FunctionDeclarationCalleeDataExtractor = class FunctionDeclarationCalleeDataExtractor extends AbstractCalleeDataExtractor_1.AbstractCalleeDataExtractor {\n extract(blockScopeBody, callee) {\n if (!NodeGuards_1.NodeGuards.isIdentifierNode(callee)) {\n return null;\n }\n const calleeBlockStatement = this.getCalleeBlockStatement(NodeStatementUtils_1.NodeStatementUtils.getParentNodeWithStatements(blockScopeBody[0]), callee.name);\n if (!calleeBlockStatement) {\n return null;\n }\n return {\n callee: calleeBlockStatement,\n name: callee.name\n };\n }\n getCalleeBlockStatement(targetNode, name) {\n let calleeBlockStatement = null;\n estraverse.traverse(targetNode, {\n enter: (node) => {\n if (NodeGuards_1.NodeGuards.isFunctionDeclarationNode(node) && node.id.name === name) {\n calleeBlockStatement = node.body;\n return estraverse.VisitorOption.Break;\n }\n }\n });\n return calleeBlockStatement;\n }\n};\nFunctionDeclarationCalleeDataExtractor = __decorate([\n inversify_1.injectable()\n], FunctionDeclarationCalleeDataExtractor);\nexports.FunctionDeclarationCalleeDataExtractor = FunctionDeclarationCalleeDataExtractor;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FunctionExpressionCalleeDataExtractor = void 0;\nconst inversify_1 = require(\"inversify\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst AbstractCalleeDataExtractor_1 = require(\"./AbstractCalleeDataExtractor\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nconst NodeStatementUtils_1 = require(\"../../../node/NodeStatementUtils\");\nlet FunctionExpressionCalleeDataExtractor = class FunctionExpressionCalleeDataExtractor extends AbstractCalleeDataExtractor_1.AbstractCalleeDataExtractor {\n extract(blockScopeBody, callee) {\n let calleeName = null;\n let calleeBlockStatement = null;\n if (NodeGuards_1.NodeGuards.isIdentifierNode(callee)) {\n calleeName = callee.name;\n calleeBlockStatement = this.getCalleeBlockStatement(NodeStatementUtils_1.NodeStatementUtils.getParentNodeWithStatements(blockScopeBody[0]), callee.name);\n }\n else if (NodeGuards_1.NodeGuards.isFunctionExpressionNode(callee)) {\n calleeName = null;\n calleeBlockStatement = callee.body;\n }\n if (!calleeBlockStatement) {\n return null;\n }\n return {\n callee: calleeBlockStatement,\n name: calleeName\n };\n }\n getCalleeBlockStatement(targetNode, name) {\n let calleeBlockStatement = null;\n estraverse.traverse(targetNode, {\n enter: (node, parentNode) => {\n if (NodeGuards_1.NodeGuards.isFunctionExpressionNode(node) &&\n parentNode &&\n NodeGuards_1.NodeGuards.isVariableDeclaratorNode(parentNode) &&\n NodeGuards_1.NodeGuards.isIdentifierNode(parentNode.id) &&\n parentNode.id.name === name) {\n calleeBlockStatement = node.body;\n return estraverse.VisitorOption.Break;\n }\n }\n });\n return calleeBlockStatement;\n }\n};\nFunctionExpressionCalleeDataExtractor = __decorate([\n inversify_1.injectable()\n], FunctionExpressionCalleeDataExtractor);\nexports.FunctionExpressionCalleeDataExtractor = FunctionExpressionCalleeDataExtractor;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar ObjectExpressionCalleeDataExtractor_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectExpressionCalleeDataExtractor = void 0;\nconst inversify_1 = require(\"inversify\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst AbstractCalleeDataExtractor_1 = require(\"./AbstractCalleeDataExtractor\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nconst NodeStatementUtils_1 = require(\"../../../node/NodeStatementUtils\");\nlet ObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor_1 = class ObjectExpressionCalleeDataExtractor extends AbstractCalleeDataExtractor_1.AbstractCalleeDataExtractor {\n static isValidTargetPropertyNode(propertyNode, nextItemInCallsChain) {\n if (!propertyNode.key) {\n return false;\n }\n const isTargetPropertyNodeWithIdentifierKey = NodeGuards_1.NodeGuards.isIdentifierNode(propertyNode.key) && propertyNode.key.name === nextItemInCallsChain;\n const isTargetPropertyNodeWithLiteralKey = NodeGuards_1.NodeGuards.isLiteralNode(propertyNode.key) &&\n Boolean(propertyNode.key.value) &&\n propertyNode.key.value === nextItemInCallsChain;\n return isTargetPropertyNodeWithIdentifierKey || isTargetPropertyNodeWithLiteralKey;\n }\n extract(blockScopeBody, callee) {\n if (!NodeGuards_1.NodeGuards.isMemberExpressionNode(callee)) {\n return null;\n }\n const objectMembersCallsChain = this.createObjectMembersCallsChain([], callee);\n if (!objectMembersCallsChain.length) {\n return null;\n }\n const functionExpressionName = objectMembersCallsChain[objectMembersCallsChain.length - 1];\n const calleeBlockStatement = this.getCalleeBlockStatement(NodeStatementUtils_1.NodeStatementUtils.getParentNodeWithStatements(blockScopeBody[0]), objectMembersCallsChain);\n if (!calleeBlockStatement) {\n return null;\n }\n return {\n callee: calleeBlockStatement,\n name: functionExpressionName\n };\n }\n createObjectMembersCallsChain(currentChain, memberExpression) {\n if (NodeGuards_1.NodeGuards.isIdentifierNode(memberExpression.property) && !memberExpression.computed) {\n currentChain.unshift(memberExpression.property.name);\n }\n else if (NodeGuards_1.NodeGuards.isLiteralNode(memberExpression.property) &&\n (typeof memberExpression.property.value === 'string' ||\n typeof memberExpression.property.value === 'number')) {\n currentChain.unshift(memberExpression.property.value);\n }\n else {\n return currentChain;\n }\n if (NodeGuards_1.NodeGuards.isMemberExpressionNode(memberExpression.object)) {\n return this.createObjectMembersCallsChain(currentChain, memberExpression.object);\n }\n else if (NodeGuards_1.NodeGuards.isIdentifierNode(memberExpression.object)) {\n currentChain.unshift(memberExpression.object.name);\n }\n return currentChain;\n }\n getCalleeBlockStatement(targetNode, objectMembersCallsChain) {\n const objectName = objectMembersCallsChain.shift();\n if (!objectName) {\n return null;\n }\n let calleeBlockStatement = null;\n estraverse.traverse(targetNode, {\n enter: (node) => {\n if (NodeGuards_1.NodeGuards.isVariableDeclaratorNode(node) &&\n NodeGuards_1.NodeGuards.isIdentifierNode(node.id) &&\n node.init &&\n NodeGuards_1.NodeGuards.isObjectExpressionNode(node.init) &&\n node.id.name === objectName) {\n calleeBlockStatement = this.findCalleeBlockStatement(node.init.properties, objectMembersCallsChain);\n return estraverse.VisitorOption.Break;\n }\n }\n });\n return calleeBlockStatement;\n }\n findCalleeBlockStatement(objectExpressionProperties, objectMembersCallsChain) {\n const nextItemInCallsChain = objectMembersCallsChain.shift();\n if (!nextItemInCallsChain) {\n return null;\n }\n for (const propertyNode of objectExpressionProperties) {\n if (!NodeGuards_1.NodeGuards.isPropertyNode(propertyNode)) {\n continue;\n }\n if (!ObjectExpressionCalleeDataExtractor_1.isValidTargetPropertyNode(propertyNode, nextItemInCallsChain)) {\n continue;\n }\n if (NodeGuards_1.NodeGuards.isObjectExpressionNode(propertyNode.value)) {\n return this.findCalleeBlockStatement(propertyNode.value.properties, objectMembersCallsChain);\n }\n if (NodeGuards_1.NodeGuards.isFunctionExpressionNode(propertyNode.value)) {\n return propertyNode.value.body;\n }\n }\n return null;\n }\n};\nObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor_1 = __decorate([\n inversify_1.injectable()\n], ObjectExpressionCalleeDataExtractor);\nexports.ObjectExpressionCalleeDataExtractor = ObjectExpressionCalleeDataExtractor;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar NumberNumericalExpressionAnalyzer_1, _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NumberNumericalExpressionAnalyzer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst NumberUtils_1 = require(\"../../utils/NumberUtils\");\nlet NumberNumericalExpressionAnalyzer = NumberNumericalExpressionAnalyzer_1 = class NumberNumericalExpressionAnalyzer {\n constructor(randomGenerator) {\n this.numberFactorsMap = new Map();\n this.randomGenerator = randomGenerator;\n }\n analyze(number) {\n if (isNaN(number)) {\n throw new Error('Given value is NaN');\n }\n if (NumberUtils_1.NumberUtils.isUnsafeNumber(number)) {\n return [number];\n }\n const additionParts = this.generateAdditionParts(number);\n return additionParts.map((addition) => this.mixWithMultiplyParts(addition));\n }\n generateAdditionParts(number) {\n const additionParts = [];\n const upperNumberLimit = Math.min(Math.abs(number * 2), Number.MAX_SAFE_INTEGER);\n const from = Math.min(-10000, -upperNumberLimit);\n const to = Math.max(10000, upperNumberLimit);\n let temporarySum = 0;\n for (let i = 0; i < NumberNumericalExpressionAnalyzer_1.additionalParts; i++) {\n if (i < NumberNumericalExpressionAnalyzer_1.additionalParts - 1) {\n let addition = this.randomGenerator.getRandomInteger(from, to);\n const isUnsafeCombination = NumberUtils_1.NumberUtils.isUnsafeNumber(temporarySum + addition);\n if (isUnsafeCombination) {\n addition = -addition;\n }\n additionParts.push(addition);\n temporarySum += addition;\n }\n else {\n const combination = number - temporarySum;\n const isUnsafeCombination = NumberUtils_1.NumberUtils.isUnsafeNumber(combination);\n if (isUnsafeCombination) {\n additionParts.push(0 - temporarySum);\n additionParts.push(number);\n }\n else {\n additionParts.push(combination);\n }\n }\n }\n return additionParts;\n }\n mixWithMultiplyParts(number) {\n var _a;\n const shouldMixWithMultiplyParts = this.randomGenerator.getMathRandom() > 0.5;\n if (!shouldMixWithMultiplyParts || number === 0) {\n return number;\n }\n let factors = (_a = this.numberFactorsMap.get(number)) !== null && _a !== void 0 ? _a : null;\n if (!factors) {\n factors = NumberUtils_1.NumberUtils.getFactors(number);\n this.numberFactorsMap.set(number, factors);\n }\n if (!factors.length) {\n return number;\n }\n const factor = factors[this.randomGenerator.getRandomInteger(0, factors.length - 1)];\n return [factor, number / factor];\n }\n};\nNumberNumericalExpressionAnalyzer.additionalParts = 3;\nNumberNumericalExpressionAnalyzer = NumberNumericalExpressionAnalyzer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object])\n], NumberNumericalExpressionAnalyzer);\nexports.NumberNumericalExpressionAnalyzer = NumberNumericalExpressionAnalyzer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar PrevailingKindOfVariablesAnalyzer_1, _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PrevailingKindOfVariablesAnalyzer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst IArrayUtils_1 = require(\"../../interfaces/utils/IArrayUtils\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet PrevailingKindOfVariablesAnalyzer = PrevailingKindOfVariablesAnalyzer_1 = class PrevailingKindOfVariablesAnalyzer {\n constructor(arrayUtils) {\n this.prevailingKindOfVariables = PrevailingKindOfVariablesAnalyzer_1.defaultKindOfVariables;\n this.arrayUtils = arrayUtils;\n }\n analyze(astTree) {\n var _a;\n const variableKinds = [];\n estraverse.traverse(astTree, {\n enter: (node) => {\n if (!NodeGuards_1.NodeGuards.isVariableDeclarationNode(node)) {\n return;\n }\n variableKinds.push(node.kind);\n }\n });\n this.prevailingKindOfVariables = (_a = this.arrayUtils.findMostOccurringElement(variableKinds)) !== null && _a !== void 0 ? _a : PrevailingKindOfVariablesAnalyzer_1.defaultKindOfVariables;\n }\n getPrevailingKind() {\n return this.prevailingKindOfVariables;\n }\n};\nPrevailingKindOfVariablesAnalyzer.defaultKindOfVariables = 'var';\nPrevailingKindOfVariablesAnalyzer = PrevailingKindOfVariablesAnalyzer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IArrayUtils_1.IArrayUtils !== \"undefined\" && IArrayUtils_1.IArrayUtils) === \"function\" ? _a : Object])\n], PrevailingKindOfVariablesAnalyzer);\nexports.PrevailingKindOfVariablesAnalyzer = PrevailingKindOfVariablesAnalyzer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar ScopeAnalyzer_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopeAnalyzer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst eslintScope = __importStar(require(\"eslint-scope\"));\nconst estraverse = __importStar(require(\"estraverse\"));\nconst EcmaVersion_1 = require(\"../../constants/EcmaVersion\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet ScopeAnalyzer = ScopeAnalyzer_1 = class ScopeAnalyzer {\n constructor() {\n this.scopeManager = null;\n }\n static attachMissingRanges(astTree) {\n estraverse.replace(astTree, {\n enter: (node, parentNode) => {\n var _a, _b, _c, _d;\n if (!node.range) {\n node.range = [\n (_b = (_a = parentNode === null || parentNode === void 0 ? void 0 : parentNode.range) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : ScopeAnalyzer_1.emptyRangeValue,\n (_d = (_c = parentNode === null || parentNode === void 0 ? void 0 : parentNode.range) === null || _c === void 0 ? void 0 : _c[1]) !== null && _d !== void 0 ? _d : ScopeAnalyzer_1.emptyRangeValue\n ];\n }\n return node;\n }\n });\n }\n static isRootNode(node) {\n return NodeGuards_1.NodeGuards.isProgramNode(node) || node.parentNode === node;\n }\n analyze(astTree) {\n const sourceTypeLength = ScopeAnalyzer_1.sourceTypes.length;\n ScopeAnalyzer_1.attachMissingRanges(astTree);\n for (let i = 0; i < sourceTypeLength; i++) {\n try {\n this.scopeManager = eslintScope.analyze(astTree, Object.assign(Object.assign({}, ScopeAnalyzer_1.eslintScopeOptions), { sourceType: ScopeAnalyzer_1.sourceTypes[i] }));\n return;\n }\n catch (error) {\n if (i < sourceTypeLength - 1) {\n continue;\n }\n throw new Error(error);\n }\n }\n throw new Error('Scope analyzing error');\n }\n acquireScope(node) {\n if (!this.scopeManager) {\n throw new Error('Scope manager is not defined');\n }\n const scope = this.scopeManager.acquire(node, ScopeAnalyzer_1.isRootNode(node));\n if (!scope) {\n throw new Error('Cannot acquire scope for node');\n }\n this.sanitizeScopes(scope);\n return scope;\n }\n sanitizeScopes(scope) {\n scope.childScopes.forEach((childScope) => {\n if (childScope.type === 'class' && childScope.upper) {\n if (!childScope.variables.length) {\n return;\n }\n const classNameVariable = childScope.variables[0];\n const upperVariable = childScope.upper.variables\n .find((variable) => {\n const isValidClassNameVariable = classNameVariable.defs\n .some((definition) => definition.type === 'ClassName');\n return isValidClassNameVariable && variable.name === classNameVariable.name;\n });\n upperVariable === null || upperVariable === void 0 ? void 0 : upperVariable.references.push(...childScope.variables[0].references);\n }\n });\n for (const childScope of scope.childScopes) {\n this.sanitizeScopes(childScope);\n }\n }\n};\nScopeAnalyzer.eslintScopeOptions = {\n ecmaVersion: EcmaVersion_1.ecmaVersion,\n optimistic: true\n};\nScopeAnalyzer.sourceTypes = [\n 'script',\n 'module'\n];\nScopeAnalyzer.emptyRangeValue = 0;\nScopeAnalyzer = ScopeAnalyzer_1 = __decorate([\n inversify_1.injectable()\n], ScopeAnalyzer);\nexports.ScopeAnalyzer = ScopeAnalyzer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar StringArrayStorageAnalyzer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayStorageAnalyzer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IStringArrayStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayStorage\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeLiteralUtils_1 = require(\"../../node/NodeLiteralUtils\");\nconst NodeMetadata_1 = require(\"../../node/NodeMetadata\");\nlet StringArrayStorageAnalyzer = StringArrayStorageAnalyzer_1 = class StringArrayStorageAnalyzer {\n constructor(stringArrayStorage, randomGenerator, options) {\n this.stringArrayStorageData = new Map();\n this.stringArrayStorage = stringArrayStorage;\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n analyze(astTree) {\n if (!this.options.stringArray) {\n return;\n }\n estraverse.traverse(astTree, {\n enter: (node, parentNode) => {\n if (!parentNode) {\n return;\n }\n if (NodeMetadata_1.NodeMetadata.isIgnoredNode(node)) {\n return estraverse.VisitorOption.Skip;\n }\n if (!NodeGuards_1.NodeGuards.isLiteralNode(node)) {\n return;\n }\n this.analyzeLiteralNode(node, parentNode);\n }\n });\n }\n getItemDataForLiteralNode(literalNode) {\n return this.stringArrayStorageData.get(literalNode);\n }\n analyzeLiteralNode(literalNode, parentNode) {\n if (!NodeLiteralUtils_1.NodeLiteralUtils.isStringLiteralNode(literalNode)) {\n return;\n }\n if (NodeLiteralUtils_1.NodeLiteralUtils.isProhibitedLiteralNode(literalNode, parentNode)) {\n return;\n }\n if (!this.shouldAddValueToStringArray(literalNode)) {\n return;\n }\n this.stringArrayStorageData.set(literalNode, this.stringArrayStorage.getOrThrow(literalNode.value));\n }\n shouldAddValueToStringArray(literalNode) {\n const isForceTransformNode = NodeMetadata_1.NodeMetadata.isForceTransformNode(literalNode);\n if (isForceTransformNode) {\n return true;\n }\n return literalNode.value.length >= StringArrayStorageAnalyzer_1.minimumLengthForStringArray\n && this.randomGenerator.getMathRandom() <= this.options.stringArrayThreshold;\n }\n};\nStringArrayStorageAnalyzer.minimumLengthForStringArray = 3;\nStringArrayStorageAnalyzer = StringArrayStorageAnalyzer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorage)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IStringArrayStorage_1.IStringArrayStorage !== \"undefined\" && IStringArrayStorage_1.IStringArrayStorage) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], StringArrayStorageAnalyzer);\nexports.StringArrayStorageAnalyzer = StringArrayStorageAnalyzer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractCodeTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nlet AbstractCodeTransformer = class AbstractCodeTransformer {\n constructor(randomGenerator, options) {\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n};\nAbstractCodeTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], AbstractCodeTransformer);\nexports.AbstractCodeTransformer = AbstractCodeTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeTransformerNamesGroupsBuilder = void 0;\nconst inversify_1 = require(\"inversify\");\nconst AbstractTransformerNamesGroupsBuilder_1 = require(\"../utils/AbstractTransformerNamesGroupsBuilder\");\nlet CodeTransformerNamesGroupsBuilder = class CodeTransformerNamesGroupsBuilder extends AbstractTransformerNamesGroupsBuilder_1.AbstractTransformerNamesGroupsBuilder {\n};\nCodeTransformerNamesGroupsBuilder = __decorate([\n inversify_1.injectable()\n], CodeTransformerNamesGroupsBuilder);\nexports.CodeTransformerNamesGroupsBuilder = CodeTransformerNamesGroupsBuilder;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeTransformersRunner = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst TCodeTransformerFactory_1 = require(\"../types/container/code-transformers/TCodeTransformerFactory\");\nconst ITransformerNamesGroupsBuilder_1 = require(\"../interfaces/utils/ITransformerNamesGroupsBuilder\");\nlet CodeTransformersRunner = class CodeTransformersRunner {\n constructor(codeTransformerFactory, codeTransformerNamesGroupsBuilder) {\n this.codeTransformerFactory = codeTransformerFactory;\n this.codeTransformerNamesGroupsBuilder = codeTransformerNamesGroupsBuilder;\n }\n transform(code, codeTransformerNames, codeTransformationStage) {\n if (!codeTransformerNames.length) {\n return code;\n }\n const normalizedCodeTransformers = this.buildNormalizedCodeTransformers(codeTransformerNames, codeTransformationStage);\n const codeTransformerNamesGroups = this.codeTransformerNamesGroupsBuilder.build(normalizedCodeTransformers);\n for (const nodeTransformerNamesGroup of codeTransformerNamesGroups) {\n for (const nodeTransformerName of nodeTransformerNamesGroup) {\n const codeTransformer = normalizedCodeTransformers[nodeTransformerName];\n code = codeTransformer.transformCode(code, codeTransformationStage);\n }\n }\n return code;\n }\n buildNormalizedCodeTransformers(codeTransformerNames, codeTransformationStage) {\n return codeTransformerNames\n .reduce((acc, codeTransformerName) => {\n const codeTransformer = this.codeTransformerFactory(codeTransformerName);\n return Object.assign(Object.assign({}, acc), { [codeTransformerName]: codeTransformer });\n }, {});\n }\n};\nCodeTransformersRunner = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICodeTransformer)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICodeTransformerNamesGroupsBuilder)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TCodeTransformerFactory_1.TCodeTransformerFactory !== \"undefined\" && TCodeTransformerFactory_1.TCodeTransformerFactory) === \"function\" ? _a : Object, typeof (_b = typeof ITransformerNamesGroupsBuilder_1.ITransformerNamesGroupsBuilder !== \"undefined\" && ITransformerNamesGroupsBuilder_1.ITransformerNamesGroupsBuilder) === \"function\" ? _b : Object])\n], CodeTransformersRunner);\nexports.CodeTransformersRunner = CodeTransformersRunner;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HashbangOperatorTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst CodeTransformationStage_1 = require(\"../../enums/code-transformers/CodeTransformationStage\");\nconst AbstractCodeTransformer_1 = require(\"../AbstractCodeTransformer\");\nlet HashbangOperatorTransformer = class HashbangOperatorTransformer extends AbstractCodeTransformer_1.AbstractCodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n this.hashbangOperatorLine = null;\n }\n transformCode(code, codeTransformationStage) {\n switch (codeTransformationStage) {\n case CodeTransformationStage_1.CodeTransformationStage.PreparingTransformers:\n return this.removeAndSaveHashbangOperatorLine(code);\n case CodeTransformationStage_1.CodeTransformationStage.FinalizingTransformers:\n return this.appendSavedHashbangOperatorLine(code);\n default:\n return code;\n }\n }\n removeAndSaveHashbangOperatorLine(code) {\n return code\n .replace(/^#!.*$(\\r?\\n)*/m, (substring) => {\n if (substring) {\n this.hashbangOperatorLine = substring;\n }\n return '';\n })\n .trim();\n }\n appendSavedHashbangOperatorLine(code) {\n var _a;\n return `${(_a = this.hashbangOperatorLine) !== null && _a !== void 0 ? _a : ''}${code}`;\n }\n};\nHashbangOperatorTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], HashbangOperatorTransformer);\nexports.HashbangOperatorTransformer = HashbangOperatorTransformer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alphabetString = void 0;\nexports.alphabetString = 'abcdefghijklmnopqrstuvwxyz';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alphabetStringUppercase = void 0;\nconst AlphabetString_1 = require(\"./AlphabetString\");\nexports.alphabetStringUppercase = AlphabetString_1.alphabetString.toUpperCase();\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.base64alphabet = void 0;\nconst AlphabetStringUppercase_1 = require(\"./AlphabetStringUppercase\");\nconst AlphabetString_1 = require(\"./AlphabetString\");\nconst NumbersString_1 = require(\"./NumbersString\");\nexports.base64alphabet = `${AlphabetStringUppercase_1.alphabetStringUppercase}${AlphabetString_1.alphabetString}${NumbersString_1.numbersString}+/=`;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.base64alphabetSwapped = void 0;\nconst AlphabetStringUppercase_1 = require(\"./AlphabetStringUppercase\");\nconst AlphabetString_1 = require(\"./AlphabetString\");\nconst NumbersString_1 = require(\"./NumbersString\");\nexports.base64alphabetSwapped = `${AlphabetString_1.alphabetString}${AlphabetStringUppercase_1.alphabetStringUppercase}${NumbersString_1.numbersString}+/=`;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ecmaVersion = void 0;\nexports.ecmaVersion = 12;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.numbersString = void 0;\nexports.numbersString = '0123456789';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InversifyContainerFacade = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"./ServiceIdentifiers\");\nconst AnalyzersModule_1 = require(\"./modules/analyzers/AnalyzersModule\");\nconst CodeTransformersModule_1 = require(\"./modules/code-transformers/CodeTransformersModule\");\nconst ControlFlowTransformersModule_1 = require(\"./modules/node-transformers/ControlFlowTransformersModule\");\nconst ConvertingTransformersModule_1 = require(\"./modules/node-transformers/ConvertingTransformersModule\");\nconst CustomCodeHelpersModule_1 = require(\"./modules/custom-code-helpers/CustomCodeHelpersModule\");\nconst CustomNodesModule_1 = require(\"./modules/custom-nodes/CustomNodesModule\");\nconst DeadCodeInjectionTransformersModule_1 = require(\"./modules/node-transformers/DeadCodeInjectionTransformersModule\");\nconst FinalizingTransformersModule_1 = require(\"./modules/node-transformers/FinalizingTransformersModule\");\nconst GeneratorsModule_1 = require(\"./modules/generators/GeneratorsModule\");\nconst InitializingTransformersModule_1 = require(\"./modules/node-transformers/InitializingTransformersModule\");\nconst NodeModule_1 = require(\"./modules/node/NodeModule\");\nconst NodeTransformersModule_1 = require(\"./modules/node-transformers/NodeTransformersModule\");\nconst OptionsModule_1 = require(\"./modules/options/OptionsModule\");\nconst PreparingTransformersModule_1 = require(\"./modules/node-transformers/PreparingTransformersModule\");\nconst RenameIdentifiersTransformersModule_1 = require(\"./modules/node-transformers/RenameIdentifiersTransformersModule\");\nconst RenamePropertiesTransformersModule_1 = require(\"./modules/node-transformers/RenamePropertiesTransformersModule\");\nconst SimplifyingTransformersModule_1 = require(\"./modules/node-transformers/SimplifyingTransformersModule\");\nconst StoragesModule_1 = require(\"./modules/storages/StoragesModule\");\nconst StringArrayTransformersModule_1 = require(\"./modules/node-transformers/StringArrayTransformersModule\");\nconst UtilsModule_1 = require(\"./modules/utils/UtilsModule\");\nconst CodeTransformersRunner_1 = require(\"../code-transformers/CodeTransformersRunner\");\nconst JavaScriptObfuscator_1 = require(\"../JavaScriptObfuscator\");\nconst Logger_1 = require(\"../logger/Logger\");\nconst NodeTransformersRunner_1 = require(\"../node-transformers/NodeTransformersRunner\");\nconst ObfuscationEventEmitter_1 = require(\"../event-emitters/ObfuscationEventEmitter\");\nconst ObfuscatedCode_1 = require(\"../source-code/ObfuscatedCode\");\nconst SourceCode_1 = require(\"../source-code/SourceCode\");\nclass InversifyContainerFacade {\n constructor() {\n this.container = new inversify_1.Container();\n }\n static getFactory(serviceIdentifier) {\n return (context) => {\n return (bindingName) => {\n return context.container.getNamed(serviceIdentifier, bindingName);\n };\n };\n }\n static getCacheFactory(serviceIdentifier) {\n return (context) => {\n const cache = new Map();\n return (bindingName) => {\n if (cache.has(bindingName)) {\n return cache.get(bindingName);\n }\n const object = context.container.getNamed(serviceIdentifier, bindingName);\n cache.set(bindingName, object);\n return object;\n };\n };\n }\n static getConstructorFactory(serviceIdentifier, ...dependencies) {\n return (context) => {\n const cache = new Map();\n const cachedDependencies = [];\n return (bindingName) => {\n dependencies.forEach((dependency, index) => {\n if (!cachedDependencies[index]) {\n cachedDependencies[index] = context.container.get(dependency);\n }\n });\n if (cache.has(bindingName)) {\n return new (cache.get(bindingName))(...cachedDependencies);\n }\n const constructor = context.container\n .getNamed(serviceIdentifier, bindingName);\n cache.set(bindingName, constructor);\n return new constructor(...cachedDependencies);\n };\n };\n }\n get(serviceIdentifier) {\n return this.container.get(serviceIdentifier);\n }\n getNamed(serviceIdentifier, named) {\n return this.container.getNamed(serviceIdentifier, named);\n }\n load(sourceCode, sourceMap, options) {\n this.container\n .bind(ServiceIdentifiers_1.ServiceIdentifiers.ISourceCode)\n .toDynamicValue(() => new SourceCode_1.SourceCode(sourceCode, sourceMap))\n .inSingletonScope();\n this.container\n .bind(ServiceIdentifiers_1.ServiceIdentifiers.TInputOptions)\n .toDynamicValue(() => options)\n .inSingletonScope();\n this.container\n .bind(ServiceIdentifiers_1.ServiceIdentifiers.ILogger)\n .to(Logger_1.Logger)\n .inSingletonScope();\n this.container\n .bind(ServiceIdentifiers_1.ServiceIdentifiers.IJavaScriptObfuscator)\n .to(JavaScriptObfuscator_1.JavaScriptObfuscator)\n .inSingletonScope();\n this.container\n .bind(ServiceIdentifiers_1.ServiceIdentifiers.ICodeTransformersRunner)\n .to(CodeTransformersRunner_1.CodeTransformersRunner)\n .inSingletonScope();\n this.container\n .bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformersRunner)\n .to(NodeTransformersRunner_1.NodeTransformersRunner)\n .inSingletonScope();\n this.container\n .bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatedCode)\n .to(ObfuscatedCode_1.ObfuscatedCode);\n this.container\n .bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatedCode)\n .toFactory((context) => {\n return (obfuscatedCodeAsString, sourceMapAsString) => {\n const obfuscatedCode = context.container\n .get(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatedCode);\n obfuscatedCode.initialize(obfuscatedCodeAsString, sourceMapAsString);\n return obfuscatedCode;\n };\n });\n this.container\n .bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)\n .to(ObfuscationEventEmitter_1.ObfuscationEventEmitter)\n .inSingletonScope();\n this.container.load(AnalyzersModule_1.analyzersModule);\n this.container.load(CodeTransformersModule_1.codeTransformersModule);\n this.container.load(ControlFlowTransformersModule_1.controlFlowTransformersModule);\n this.container.load(ConvertingTransformersModule_1.convertingTransformersModule);\n this.container.load(CustomCodeHelpersModule_1.customCodeHelpersModule);\n this.container.load(CustomNodesModule_1.customNodesModule);\n this.container.load(DeadCodeInjectionTransformersModule_1.deadCodeInjectionTransformersModule);\n this.container.load(FinalizingTransformersModule_1.finalizingTransformersModule);\n this.container.load(GeneratorsModule_1.generatorsModule);\n this.container.load(InitializingTransformersModule_1.initializingTransformersModule);\n this.container.load(NodeModule_1.nodeModule);\n this.container.load(NodeTransformersModule_1.nodeTransformersModule);\n this.container.load(OptionsModule_1.optionsModule);\n this.container.load(PreparingTransformersModule_1.preparingTransformersModule);\n this.container.load(RenameIdentifiersTransformersModule_1.renameIdentifiersTransformersModule);\n this.container.load(RenamePropertiesTransformersModule_1.renamePropertiesTransformersModule);\n this.container.load(SimplifyingTransformersModule_1.simplifyingTransformersModule);\n this.container.load(StoragesModule_1.storagesModule);\n this.container.load(StringArrayTransformersModule_1.stringArrayTransformersModule);\n this.container.load(UtilsModule_1.utilsModule);\n }\n unload() {\n this.container.unbindAll();\n }\n}\nexports.InversifyContainerFacade = InversifyContainerFacade;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ServiceIdentifiers = void 0;\nvar ServiceIdentifiers;\n(function (ServiceIdentifiers) {\n ServiceIdentifiers[\"Factory__ICalleeDataExtractor\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__ICodeTransformer\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__IControlFlowCustomNode\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__IControlFlowReplacer\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__ICustomCodeHelper\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__ICustomCodeHelperGroup\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__IDeadCodeInjectionCustomNode\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__IIdentifierNamesGenerator\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__INodeGuard\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__INodeTransformer\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__IObfuscatedCode\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__IObjectExpressionKeysTransformerCustomNode\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__IObjectExpressionExtractor\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__IStringArrayCustomNode\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__IStringArrayIndexNode\"] = \"Factory\";\n ServiceIdentifiers[\"Factory__TControlFlowStorage\"] = \"Factory\";\n ServiceIdentifiers[\"IArrayUtils\"] = \"IArrayUtils\";\n ServiceIdentifiers[\"ICalleeDataExtractor\"] = \"ICalleeDataExtractor\";\n ServiceIdentifiers[\"ICallsGraphAnalyzer\"] = \"ICallsGraphAnalyzer\";\n ServiceIdentifiers[\"ICodeTransformer\"] = \"ICodeTransformer\";\n ServiceIdentifiers[\"ICodeTransformerNamesGroupsBuilder\"] = \"ICodeTransformerNamesGroupsBuilder\";\n ServiceIdentifiers[\"ICodeTransformersRunner\"] = \"ICodeTransformersRunner\";\n ServiceIdentifiers[\"ICryptUtils\"] = \"ICryptUtils\";\n ServiceIdentifiers[\"ICryptUtilsSwappedAlphabet\"] = \"ICryptUtilsSwappedAlphabet\";\n ServiceIdentifiers[\"ICustomCodeHelper\"] = \"ICustomCodeHelper\";\n ServiceIdentifiers[\"ICustomCodeHelperGroup\"] = \"ICustomCodeHelperGroup\";\n ServiceIdentifiers[\"IControlFlowReplacer\"] = \"IControlFlowReplacer\";\n ServiceIdentifiers[\"ICustomCodeHelperFormatter\"] = \"ICustomCodeHelperFormatter\";\n ServiceIdentifiers[\"ICustomCodeHelperObfuscator\"] = \"ICustomCodeHelperObfuscator\";\n ServiceIdentifiers[\"IEscapeSequenceEncoder\"] = \"IEscapeSequenceEncoder\";\n ServiceIdentifiers[\"IIdentifierNamesGenerator\"] = \"IIdentifierNamesGenerator\";\n ServiceIdentifiers[\"IIdentifierReplacer\"] = \"IIdentifierReplacer\";\n ServiceIdentifiers[\"IJavaScriptObfuscator\"] = \"IJavaScriptObfuscator\";\n ServiceIdentifiers[\"ILevelledTopologicalSorter\"] = \"ILevelledTopologicalSorter\";\n ServiceIdentifiers[\"ILiteralNodesCacheStorage\"] = \"ILiteralNodesCacheStorage\";\n ServiceIdentifiers[\"ILogger\"] = \"ILogger\";\n ServiceIdentifiers[\"INodeGuard\"] = \"INodeGuard\";\n ServiceIdentifiers[\"INodeTransformer\"] = \"INodeTransformer\";\n ServiceIdentifiers[\"INodeTransformerNamesGroupsBuilder\"] = \"INodeTransformerNamesGroupsBuilder\";\n ServiceIdentifiers[\"INodeTransformersRunner\"] = \"INodeTransformersRunner\";\n ServiceIdentifiers[\"INumberNumericalExpressionAnalyzer\"] = \"INumberNumericalExpressionAnalyzer\";\n ServiceIdentifiers[\"IObfuscationEventEmitter\"] = \"IObfuscationEventEmitter\";\n ServiceIdentifiers[\"IObfuscatedCode\"] = \"IObfuscatedCode\";\n ServiceIdentifiers[\"IOptions\"] = \"IOptions\";\n ServiceIdentifiers[\"IOptionsNormalizer\"] = \"IOptionsNormalizer\";\n ServiceIdentifiers[\"IPrevailingKindOfVariablesAnalyzer\"] = \"IPrevailingKindOfVariablesAnalyzer\";\n ServiceIdentifiers[\"IObjectExpressionExtractor\"] = \"IObjectExpressionExtractor\";\n ServiceIdentifiers[\"IRandomGenerator\"] = \"IRandomGenerator\";\n ServiceIdentifiers[\"IRenamePropertiesReplacer\"] = \"IRenamePropertiesReplacer\";\n ServiceIdentifiers[\"IScopeIdentifiersTraverser\"] = \"IScopeIdentifiersTraverser\";\n ServiceIdentifiers[\"ISourceCode\"] = \"ISourceCode\";\n ServiceIdentifiers[\"IScopeAnalyzer\"] = \"IScopeAnalyzer\";\n ServiceIdentifiers[\"IStringArrayIndexNode\"] = \"IStringArrayIndexNode\";\n ServiceIdentifiers[\"IStringArrayScopeCallsWrapperLexicalScopeDataStorage\"] = \"IStringArrayScopeCallsWrapperLexicalScopeDataStorage\";\n ServiceIdentifiers[\"IStringArrayScopeCallsWrapperNamesDataStorage\"] = \"IStringArrayScopeCallsWrapperNamesDataStorage\";\n ServiceIdentifiers[\"IStringArrayStorage\"] = \"IStringArrayStorage\";\n ServiceIdentifiers[\"IStringArrayStorageAnalyzer\"] = \"IStringArrayStorageAnalyzer\";\n ServiceIdentifiers[\"IVisitedLexicalScopeNodesStackStorage\"] = \"IVisitedLexicalScopeNodesStackStorage\";\n ServiceIdentifiers[\"Newable__ICustomNode\"] = \"Newable\";\n ServiceIdentifiers[\"Newable__TControlFlowStorage\"] = \"Newable\";\n ServiceIdentifiers[\"TCustomNodeGroupStorage\"] = \"TCustomNodeGroupStorage\";\n ServiceIdentifiers[\"TInputOptions\"] = \"TInputOptions\";\n})(ServiceIdentifiers = exports.ServiceIdentifiers || (exports.ServiceIdentifiers = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.analyzersModule = void 0;\nconst InversifyContainerFacade_1 = require(\"../../InversifyContainerFacade\");\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst CalleeDataExtractor_1 = require(\"../../../enums/analyzers/calls-graph-analyzer/CalleeDataExtractor\");\nconst CallsGraphAnalyzer_1 = require(\"../../../analyzers/calls-graph-analyzer/CallsGraphAnalyzer\");\nconst FunctionDeclarationCalleeDataExtractor_1 = require(\"../../../analyzers/calls-graph-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor\");\nconst FunctionExpressionCalleeDataExtractor_1 = require(\"../../../analyzers/calls-graph-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor\");\nconst NumberNumericalExpressionAnalyzer_1 = require(\"../../../analyzers/number-numerical-expression-analyzer/NumberNumericalExpressionAnalyzer\");\nconst ObjectExpressionCalleeDataExtractor_1 = require(\"../../../analyzers/calls-graph-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor\");\nconst PrevailingKindOfVariablesAnalyzer_1 = require(\"../../../analyzers/prevailing-kind-of-variables-analyzer/PrevailingKindOfVariablesAnalyzer\");\nconst ScopeAnalyzer_1 = require(\"../../../analyzers/scope-analyzer/ScopeAnalyzer\");\nconst StringArrayStorageAnalyzer_1 = require(\"../../../analyzers/string-array-storage-analyzer/StringArrayStorageAnalyzer\");\nexports.analyzersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICallsGraphAnalyzer)\n .to(CallsGraphAnalyzer_1.CallsGraphAnalyzer)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INumberNumericalExpressionAnalyzer)\n .to(NumberNumericalExpressionAnalyzer_1.NumberNumericalExpressionAnalyzer)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer)\n .to(PrevailingKindOfVariablesAnalyzer_1.PrevailingKindOfVariablesAnalyzer)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IScopeAnalyzer)\n .to(ScopeAnalyzer_1.ScopeAnalyzer)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorageAnalyzer)\n .to(StringArrayStorageAnalyzer_1.StringArrayStorageAnalyzer)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor)\n .to(FunctionDeclarationCalleeDataExtractor_1.FunctionDeclarationCalleeDataExtractor)\n .whenTargetNamed(CalleeDataExtractor_1.CalleeDataExtractor.FunctionDeclarationCalleeDataExtractor);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor)\n .to(FunctionExpressionCalleeDataExtractor_1.FunctionExpressionCalleeDataExtractor)\n .whenTargetNamed(CalleeDataExtractor_1.CalleeDataExtractor.FunctionExpressionCalleeDataExtractor);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor)\n .to(ObjectExpressionCalleeDataExtractor_1.ObjectExpressionCalleeDataExtractor)\n .whenTargetNamed(CalleeDataExtractor_1.CalleeDataExtractor.ObjectExpressionCalleeDataExtractor);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICalleeDataExtractor)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.ICalleeDataExtractor));\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.codeTransformersModule = void 0;\nconst InversifyContainerFacade_1 = require(\"../../InversifyContainerFacade\");\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst CodeTransformer_1 = require(\"../../../enums/code-transformers/CodeTransformer\");\nconst CodeTransformerNamesGroupsBuilder_1 = require(\"../../../code-transformers/CodeTransformerNamesGroupsBuilder\");\nconst HashbangOperatorTransformer_1 = require(\"../../../code-transformers/preparing-transformers/HashbangOperatorTransformer\");\nexports.codeTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICodeTransformer)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.ICodeTransformer));\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICodeTransformerNamesGroupsBuilder)\n .to(CodeTransformerNamesGroupsBuilder_1.CodeTransformerNamesGroupsBuilder)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICodeTransformer)\n .to(HashbangOperatorTransformer_1.HashbangOperatorTransformer)\n .whenTargetNamed(CodeTransformer_1.CodeTransformer.HashbangOperatorTransformer);\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.customCodeHelpersModule = void 0;\nconst InversifyContainerFacade_1 = require(\"../../InversifyContainerFacade\");\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst CustomCodeHelper_1 = require(\"../../../enums/custom-code-helpers/CustomCodeHelper\");\nconst CustomCodeHelperGroup_1 = require(\"../../../enums/custom-code-helpers/CustomCodeHelperGroup\");\nconst ConsoleOutputCodeHelperGroup_1 = require(\"../../../custom-code-helpers/console-output/group/ConsoleOutputCodeHelperGroup\");\nconst DebugProtectionCodeHelperGroup_1 = require(\"../../../custom-code-helpers/debug-protection/group/DebugProtectionCodeHelperGroup\");\nconst DomainLockCustomCodeHelperGroup_1 = require(\"../../../custom-code-helpers/domain-lock/group/DomainLockCustomCodeHelperGroup\");\nconst SelfDefendingCodeHelperGroup_1 = require(\"../../../custom-code-helpers/self-defending/group/SelfDefendingCodeHelperGroup\");\nconst StringArrayCodeHelperGroup_1 = require(\"../../../custom-code-helpers/string-array/group/StringArrayCodeHelperGroup\");\nconst ConsoleOutputDisableCodeHelper_1 = require(\"../../../custom-code-helpers/console-output/ConsoleOutputDisableCodeHelper\");\nconst CustomCodeHelperFormatter_1 = require(\"../../../custom-code-helpers/CustomCodeHelperFormatter\");\nconst CustomCodeHelperObfuscator_1 = require(\"../../../custom-code-helpers/CustomCodeHelperObfuscator\");\nconst DebugProtectionFunctionCallCodeHelper_1 = require(\"../../../custom-code-helpers/debug-protection/DebugProtectionFunctionCallCodeHelper\");\nconst DebugProtectionFunctionIntervalCodeHelper_1 = require(\"../../../custom-code-helpers/debug-protection/DebugProtectionFunctionIntervalCodeHelper\");\nconst DebugProtectionFunctionCodeHelper_1 = require(\"../../../custom-code-helpers/debug-protection/DebugProtectionFunctionCodeHelper\");\nconst DomainLockCodeHelper_1 = require(\"../../../custom-code-helpers/domain-lock/DomainLockCodeHelper\");\nconst CallsControllerFunctionCodeHelper_1 = require(\"../../../custom-code-helpers/calls-controller/CallsControllerFunctionCodeHelper\");\nconst SelfDefendingUnicodeCodeHelper_1 = require(\"../../../custom-code-helpers/self-defending/SelfDefendingUnicodeCodeHelper\");\nconst StringArrayCallsWrapperCodeHelper_1 = require(\"../../../custom-code-helpers/string-array/StringArrayCallsWrapperCodeHelper\");\nconst StringArrayCallsWrapperBase64CodeHelper_1 = require(\"../../../custom-code-helpers/string-array/StringArrayCallsWrapperBase64CodeHelper\");\nconst StringArrayCallsWrapperRc4CodeHelper_1 = require(\"../../../custom-code-helpers/string-array/StringArrayCallsWrapperRc4CodeHelper\");\nconst StringArrayCodeHelper_1 = require(\"../../../custom-code-helpers/string-array/StringArrayCodeHelper\");\nconst StringArrayRotateFunctionCodeHelper_1 = require(\"../../../custom-code-helpers/string-array/StringArrayRotateFunctionCodeHelper\");\nexports.customCodeHelpersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(ConsoleOutputDisableCodeHelper_1.ConsoleOutputDisableCodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.ConsoleOutputDisable);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(DebugProtectionFunctionCallCodeHelper_1.DebugProtectionFunctionCallCodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunctionCall);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(DebugProtectionFunctionIntervalCodeHelper_1.DebugProtectionFunctionIntervalCodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunctionInterval);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(DebugProtectionFunctionCodeHelper_1.DebugProtectionFunctionCodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunction);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(DomainLockCodeHelper_1.DomainLockCodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.DomainLock);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(CallsControllerFunctionCodeHelper_1.CallsControllerFunctionCodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(SelfDefendingUnicodeCodeHelper_1.SelfDefendingUnicodeCodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.SelfDefendingUnicode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(StringArrayCallsWrapperCodeHelper_1.StringArrayCallsWrapperCodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.StringArrayCallsWrapper);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(StringArrayCallsWrapperBase64CodeHelper_1.StringArrayCallsWrapperBase64CodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.StringArrayCallsWrapperBase64);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(StringArrayCallsWrapperRc4CodeHelper_1.StringArrayCallsWrapperRc4CodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.StringArrayCallsWrapperRc4);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(StringArrayCodeHelper_1.StringArrayCodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.StringArray);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper)\n .to(StringArrayRotateFunctionCodeHelper_1.StringArrayRotateFunctionCodeHelper)\n .whenTargetNamed(CustomCodeHelper_1.CustomCodeHelper.StringArrayRotateFunction);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperGroup)\n .to(ConsoleOutputCodeHelperGroup_1.ConsoleOutputCodeHelperGroup)\n .whenTargetNamed(CustomCodeHelperGroup_1.CustomCodeHelperGroup.ConsoleOutput);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperGroup)\n .to(DebugProtectionCodeHelperGroup_1.DebugProtectionCodeHelperGroup)\n .whenTargetNamed(CustomCodeHelperGroup_1.CustomCodeHelperGroup.DebugProtection);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperGroup)\n .to(DomainLockCustomCodeHelperGroup_1.DomainLockCustomCodeHelperGroup)\n .whenTargetNamed(CustomCodeHelperGroup_1.CustomCodeHelperGroup.DomainLock);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperGroup)\n .to(SelfDefendingCodeHelperGroup_1.SelfDefendingCodeHelperGroup)\n .whenTargetNamed(CustomCodeHelperGroup_1.CustomCodeHelperGroup.SelfDefending);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperGroup)\n .to(StringArrayCodeHelperGroup_1.StringArrayCodeHelperGroup)\n .whenTargetNamed(CustomCodeHelperGroup_1.CustomCodeHelperGroup.StringArray);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomCodeHelper)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getFactory(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelper));\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomCodeHelperGroup)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getFactory(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperGroup));\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)\n .to(CustomCodeHelperFormatter_1.CustomCodeHelperFormatter)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)\n .to(CustomCodeHelperObfuscator_1.CustomCodeHelperObfuscator)\n .inSingletonScope();\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.customNodesModule = void 0;\nconst InversifyContainerFacade_1 = require(\"../../InversifyContainerFacade\");\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst ControlFlowCustomNode_1 = require(\"../../../enums/custom-nodes/ControlFlowCustomNode\");\nconst DeadCodeInjectionCustomNode_1 = require(\"../../../enums/custom-nodes/DeadCodeInjectionCustomNode\");\nconst ObjectExpressionKeysTransformerCustomNode_1 = require(\"../../../enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode\");\nconst StringArrayCustomNode_1 = require(\"../../../enums/custom-nodes/StringArrayCustomNode\");\nconst BinaryExpressionFunctionNode_1 = require(\"../../../custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode\");\nconst BlockStatementControlFlowFlatteningNode_1 = require(\"../../../custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode\");\nconst BlockStatementDeadCodeInjectionNode_1 = require(\"../../../custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode\");\nconst CallExpressionControlFlowStorageCallNode_1 = require(\"../../../custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/CallExpressionControlFlowStorageCallNode\");\nconst CallExpressionFunctionNode_1 = require(\"../../../custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode\");\nconst ControlFlowStorageNode_1 = require(\"../../../custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ControlFlowStorageNode\");\nconst ExpressionWithOperatorControlFlowStorageCallNode_1 = require(\"../../../custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ExpressionWithOperatorControlFlowStorageCallNode\");\nconst LogicalExpressionFunctionNode_1 = require(\"../../../custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode\");\nconst ObjectExpressionVariableDeclarationHostNode_1 = require(\"../../../custom-nodes/object-expression-keys-transformer-nodes/ObjectExpressionVariableDeclarationHostNode\");\nconst StringArrayCallNode_1 = require(\"../../../custom-nodes/string-array-nodes/StringArrayCallNode\");\nconst StringArrayHexadecimalNumberIndexNode_1 = require(\"../../../custom-nodes/string-array-nodes/string-array-index-nodes/StringArrayHexadecimalNumberIndexNode\");\nconst StringArrayHexadecimalNumericStringIndexNode_1 = require(\"../../../custom-nodes/string-array-nodes/string-array-index-nodes/StringArrayHexadecimalNumericStringIndexNode\");\nconst StringArrayIndexNode_1 = require(\"../../../enums/custom-nodes/string-array-index-nodes/StringArrayIndexNode\");\nconst StringArrayScopeCallsWrapperFunctionNode_1 = require(\"../../../custom-nodes/string-array-nodes/StringArrayScopeCallsWrapperFunctionNode\");\nconst StringArrayScopeCallsWrapperVariableNode_1 = require(\"../../../custom-nodes/string-array-nodes/StringArrayScopeCallsWrapperVariableNode\");\nconst StringLiteralControlFlowStorageCallNode_1 = require(\"../../../custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/StringLiteralControlFlowStorageCallNode\");\nconst StringLiteralNode_1 = require(\"../../../custom-nodes/control-flow-flattening-nodes/StringLiteralNode\");\nexports.customNodesModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(BinaryExpressionFunctionNode_1.BinaryExpressionFunctionNode)\n .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.BinaryExpressionFunctionNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(BlockStatementControlFlowFlatteningNode_1.BlockStatementControlFlowFlatteningNode)\n .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.BlockStatementControlFlowFlatteningNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(CallExpressionControlFlowStorageCallNode_1.CallExpressionControlFlowStorageCallNode)\n .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.CallExpressionControlFlowStorageCallNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(CallExpressionFunctionNode_1.CallExpressionFunctionNode)\n .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.CallExpressionFunctionNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(ControlFlowStorageNode_1.ControlFlowStorageNode)\n .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.ControlFlowStorageNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(ExpressionWithOperatorControlFlowStorageCallNode_1.ExpressionWithOperatorControlFlowStorageCallNode)\n .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.ExpressionWithOperatorControlFlowStorageCallNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(LogicalExpressionFunctionNode_1.LogicalExpressionFunctionNode)\n .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.LogicalExpressionFunctionNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(StringLiteralNode_1.StringLiteralNode)\n .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.StringLiteralNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(StringLiteralControlFlowStorageCallNode_1.StringLiteralControlFlowStorageCallNode)\n .whenTargetNamed(ControlFlowCustomNode_1.ControlFlowCustomNode.StringLiteralControlFlowStorageCallNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(BlockStatementDeadCodeInjectionNode_1.BlockStatementDeadCodeInjectionNode)\n .whenTargetNamed(DeadCodeInjectionCustomNode_1.DeadCodeInjectionCustomNode.BlockStatementDeadCodeInjectionNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(ObjectExpressionVariableDeclarationHostNode_1.ObjectExpressionVariableDeclarationHostNode)\n .whenTargetNamed(ObjectExpressionKeysTransformerCustomNode_1.ObjectExpressionKeysTransformerCustomNode.ObjectExpressionVariableDeclarationHostNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(StringArrayCallNode_1.StringArrayCallNode)\n .whenTargetNamed(StringArrayCustomNode_1.StringArrayCustomNode.StringArrayCallNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(StringArrayScopeCallsWrapperFunctionNode_1.StringArrayScopeCallsWrapperFunctionNode)\n .whenTargetNamed(StringArrayCustomNode_1.StringArrayCustomNode.StringArrayScopeCallsWrapperFunctionNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode)\n .toConstructor(StringArrayScopeCallsWrapperVariableNode_1.StringArrayScopeCallsWrapperVariableNode)\n .whenTargetNamed(StringArrayCustomNode_1.StringArrayCustomNode.StringArrayScopeCallsWrapperVariableNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayIndexNode)\n .to(StringArrayHexadecimalNumberIndexNode_1.StringArrayHexadecimalNumberIndexNode)\n .inSingletonScope()\n .whenTargetNamed(StringArrayIndexNode_1.StringArrayIndexNode.StringArrayHexadecimalNumberIndexNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayIndexNode)\n .to(StringArrayHexadecimalNumericStringIndexNode_1.StringArrayHexadecimalNumericStringIndexNode)\n .inSingletonScope()\n .whenTargetNamed(StringArrayIndexNode_1.StringArrayIndexNode.StringArrayHexadecimalNumericStringIndexNode);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getConstructorFactory(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode, ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator, ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter, ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator, ServiceIdentifiers_1.ServiceIdentifiers.IOptions));\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IDeadCodeInjectionCustomNode)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getConstructorFactory(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode, ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator, ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter, ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator, ServiceIdentifiers_1.ServiceIdentifiers.IOptions));\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObjectExpressionKeysTransformerCustomNode)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getConstructorFactory(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode, ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator, ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter, ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator, ServiceIdentifiers_1.ServiceIdentifiers.IOptions));\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IStringArrayCustomNode)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getConstructorFactory(ServiceIdentifiers_1.ServiceIdentifiers.Newable__ICustomNode, ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator, ServiceIdentifiers_1.ServiceIdentifiers.Factory__IStringArrayIndexNode, ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter, ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorage, ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils, ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator, ServiceIdentifiers_1.ServiceIdentifiers.IOptions));\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IStringArrayIndexNode)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayIndexNode));\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.generatorsModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst IdentifierNamesGenerator_1 = require(\"../../../enums/generators/identifier-names-generators/IdentifierNamesGenerator\");\nconst DictionaryIdentifierNamesGenerator_1 = require(\"../../../generators/identifier-names-generators/DictionaryIdentifierNamesGenerator\");\nconst HexadecimalIdentifierNamesGenerator_1 = require(\"../../../generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator\");\nconst MangledIdentifierNamesGenerator_1 = require(\"../../../generators/identifier-names-generators/MangledIdentifierNamesGenerator\");\nconst MangledShuffledIdentifierNamesGenerator_1 = require(\"../../../generators/identifier-names-generators/MangledShuffledIdentifierNamesGenerator\");\nexports.generatorsModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator)\n .to(DictionaryIdentifierNamesGenerator_1.DictionaryIdentifierNamesGenerator)\n .inSingletonScope()\n .whenTargetNamed(IdentifierNamesGenerator_1.IdentifierNamesGenerator.DictionaryIdentifierNamesGenerator);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator)\n .to(HexadecimalIdentifierNamesGenerator_1.HexadecimalIdentifierNamesGenerator)\n .inSingletonScope()\n .whenTargetNamed(IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator)\n .to(MangledIdentifierNamesGenerator_1.MangledIdentifierNamesGenerator)\n .inSingletonScope()\n .whenTargetNamed(IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledIdentifierNamesGenerator);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator)\n .to(MangledShuffledIdentifierNamesGenerator_1.MangledShuffledIdentifierNamesGenerator)\n .inSingletonScope()\n .whenTargetNamed(IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledShuffledIdentifierNamesGenerator);\n function identifierNameGeneratorFactory() {\n let cachedIdentifierNamesGenerator = null;\n return (context) => (options) => {\n if (cachedIdentifierNamesGenerator) {\n return cachedIdentifierNamesGenerator;\n }\n let identifierNamesGenerator;\n switch (options.identifierNamesGenerator) {\n case IdentifierNamesGenerator_1.IdentifierNamesGenerator.DictionaryIdentifierNamesGenerator:\n identifierNamesGenerator = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator, IdentifierNamesGenerator_1.IdentifierNamesGenerator.DictionaryIdentifierNamesGenerator);\n break;\n case IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledIdentifierNamesGenerator:\n identifierNamesGenerator = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator, IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledIdentifierNamesGenerator);\n break;\n case IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledShuffledIdentifierNamesGenerator:\n identifierNamesGenerator = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator, IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledShuffledIdentifierNamesGenerator);\n break;\n case IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator:\n default:\n identifierNamesGenerator = context.container.getNamed(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierNamesGenerator, IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator);\n }\n cachedIdentifierNamesGenerator = identifierNamesGenerator;\n return identifierNamesGenerator;\n };\n }\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)\n .toFactory(identifierNameGeneratorFactory());\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.controlFlowTransformersModule = void 0;\nconst InversifyContainerFacade_1 = require(\"../../InversifyContainerFacade\");\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst ControlFlowReplacer_1 = require(\"../../../enums/node-transformers/control-flow-transformers/control-flow-replacers/ControlFlowReplacer\");\nconst NodeTransformer_1 = require(\"../../../enums/node-transformers/NodeTransformer\");\nconst BinaryExpressionControlFlowReplacer_1 = require(\"../../../node-transformers/control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer\");\nconst BlockStatementControlFlowTransformer_1 = require(\"../../../node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer\");\nconst CallExpressionControlFlowReplacer_1 = require(\"../../../node-transformers/control-flow-transformers/control-flow-replacers/CallExpressionControlFlowReplacer\");\nconst FunctionControlFlowTransformer_1 = require(\"../../../node-transformers/control-flow-transformers/FunctionControlFlowTransformer\");\nconst LogicalExpressionControlFlowReplacer_1 = require(\"../../../node-transformers/control-flow-transformers/control-flow-replacers/LogicalExpressionControlFlowReplacer\");\nconst StringLiteralControlFlowReplacer_1 = require(\"../../../node-transformers/control-flow-transformers/control-flow-replacers/StringLiteralControlFlowReplacer\");\nexports.controlFlowTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(BlockStatementControlFlowTransformer_1.BlockStatementControlFlowTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.BlockStatementControlFlowTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(FunctionControlFlowTransformer_1.FunctionControlFlowTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.FunctionControlFlowTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer)\n .to(BinaryExpressionControlFlowReplacer_1.BinaryExpressionControlFlowReplacer)\n .whenTargetNamed(ControlFlowReplacer_1.ControlFlowReplacer.BinaryExpressionControlFlowReplacer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer)\n .to(CallExpressionControlFlowReplacer_1.CallExpressionControlFlowReplacer)\n .whenTargetNamed(ControlFlowReplacer_1.ControlFlowReplacer.CallExpressionControlFlowReplacer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer)\n .to(LogicalExpressionControlFlowReplacer_1.LogicalExpressionControlFlowReplacer)\n .whenTargetNamed(ControlFlowReplacer_1.ControlFlowReplacer.LogicalExpressionControlFlowReplacer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer)\n .to(StringLiteralControlFlowReplacer_1.StringLiteralControlFlowReplacer)\n .whenTargetNamed(ControlFlowReplacer_1.ControlFlowReplacer.StringLiteralControlFlowReplacer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowReplacer)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.IControlFlowReplacer));\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.convertingTransformersModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst InversifyContainerFacade_1 = require(\"../../InversifyContainerFacade\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst NodeTransformer_1 = require(\"../../../enums/node-transformers/NodeTransformer\");\nconst ObjectExpressionExtractor_1 = require(\"../../../enums/node-transformers/converting-transformers/properties-extractors/ObjectExpressionExtractor\");\nconst BasePropertiesExtractor_1 = require(\"../../../node-transformers/converting-transformers/object-expression-extractors/BasePropertiesExtractor\");\nconst BooleanLiteralTransformer_1 = require(\"../../../node-transformers/converting-transformers/BooleanLiteralTransformer\");\nconst ExportSpecifierTransformer_1 = require(\"../../../node-transformers/converting-transformers/ExportSpecifierTransformer\");\nconst MemberExpressionTransformer_1 = require(\"../../../node-transformers/converting-transformers/MemberExpressionTransformer\");\nconst MethodDefinitionTransformer_1 = require(\"../../../node-transformers/converting-transformers/MethodDefinitionTransformer\");\nconst NumberLiteralTransformer_1 = require(\"../../../node-transformers/converting-transformers/NumberLiteralTransformer\");\nconst NumberToNumericalExpressionTransformer_1 = require(\"../../../node-transformers/converting-transformers/NumberToNumericalExpressionTransformer\");\nconst ObjectExpressionKeysTransformer_1 = require(\"../../../node-transformers/converting-transformers/ObjectExpressionKeysTransformer\");\nconst ObjectExpressionToVariableDeclarationExtractor_1 = require(\"../../../node-transformers/converting-transformers/object-expression-extractors/ObjectExpressionToVariableDeclarationExtractor\");\nconst ObjectExpressionTransformer_1 = require(\"../../../node-transformers/converting-transformers/ObjectExpressionTransformer\");\nconst ObjectPatternPropertiesTransformer_1 = require(\"../../../node-transformers/converting-transformers/ObjectPatternPropertiesTransformer\");\nconst SplitStringTransformer_1 = require(\"../../../node-transformers/converting-transformers/SplitStringTransformer\");\nconst TemplateLiteralTransformer_1 = require(\"../../../node-transformers/converting-transformers/TemplateLiteralTransformer\");\nexports.convertingTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(BooleanLiteralTransformer_1.BooleanLiteralTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.BooleanLiteralTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(ExportSpecifierTransformer_1.ExportSpecifierTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.ExportSpecifierTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(MemberExpressionTransformer_1.MemberExpressionTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.MemberExpressionTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(MethodDefinitionTransformer_1.MethodDefinitionTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.MethodDefinitionTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(NumberLiteralTransformer_1.NumberLiteralTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.NumberLiteralTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(NumberToNumericalExpressionTransformer_1.NumberToNumericalExpressionTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.NumberToNumericalExpressionTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(ObjectExpressionKeysTransformer_1.ObjectExpressionKeysTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.ObjectExpressionKeysTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(ObjectExpressionTransformer_1.ObjectExpressionTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.ObjectExpressionTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(ObjectPatternPropertiesTransformer_1.ObjectPatternPropertiesTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.ObjectPatternPropertiesTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(SplitStringTransformer_1.SplitStringTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.SplitStringTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(TemplateLiteralTransformer_1.TemplateLiteralTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.TemplateLiteralTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IObjectExpressionExtractor)\n .to(ObjectExpressionToVariableDeclarationExtractor_1.ObjectExpressionToVariableDeclarationExtractor)\n .whenTargetNamed(ObjectExpressionExtractor_1.ObjectExpressionExtractor.ObjectExpressionToVariableDeclarationExtractor);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IObjectExpressionExtractor)\n .to(BasePropertiesExtractor_1.BasePropertiesExtractor)\n .whenTargetNamed(ObjectExpressionExtractor_1.ObjectExpressionExtractor.BasePropertiesExtractor);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObjectExpressionExtractor)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.IObjectExpressionExtractor));\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deadCodeInjectionTransformersModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst NodeTransformer_1 = require(\"../../../enums/node-transformers/NodeTransformer\");\nconst DeadCodeInjectionTransformer_1 = require(\"../../../node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer\");\nexports.deadCodeInjectionTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(DeadCodeInjectionTransformer_1.DeadCodeInjectionTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.DeadCodeInjectionTransformer);\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.finalizingTransformersModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst NodeTransformer_1 = require(\"../../../enums/node-transformers/NodeTransformer\");\nconst EscapeSequenceTransformer_1 = require(\"../../../node-transformers/finalizing-transformers/EscapeSequenceTransformer\");\nexports.finalizingTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(EscapeSequenceTransformer_1.EscapeSequenceTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.EscapeSequenceTransformer);\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.initializingTransformersModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst NodeTransformer_1 = require(\"../../../enums/node-transformers/NodeTransformer\");\nconst CommentsTransformer_1 = require(\"../../../node-transformers/initializing-transformers/CommentsTransformer\");\nexports.initializingTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(CommentsTransformer_1.CommentsTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.CommentsTransformer);\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.nodeTransformersModule = void 0;\nconst InversifyContainerFacade_1 = require(\"../../InversifyContainerFacade\");\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst NodeTransformerNamesGroupsBuilder_1 = require(\"../../../node-transformers/NodeTransformerNamesGroupsBuilder\");\nexports.nodeTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeTransformer)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer));\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformerNamesGroupsBuilder)\n .to(NodeTransformerNamesGroupsBuilder_1.NodeTransformerNamesGroupsBuilder)\n .inSingletonScope();\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.preparingTransformersModule = void 0;\nconst InversifyContainerFacade_1 = require(\"../../InversifyContainerFacade\");\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst NodeTransformer_1 = require(\"../../../enums/node-transformers/NodeTransformer\");\nconst ObfuscatingGuard_1 = require(\"../../../enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard\");\nconst BlackListObfuscatingGuard_1 = require(\"../../../node-transformers/preparing-transformers/obfuscating-guards/BlackListObfuscatingGuard\");\nconst ConditionalCommentObfuscatingGuard_1 = require(\"../../../node-transformers/preparing-transformers/obfuscating-guards/ConditionalCommentObfuscatingGuard\");\nconst CustomCodeHelpersTransformer_1 = require(\"../../../node-transformers/preparing-transformers/CustomCodeHelpersTransformer\");\nconst EvalCallExpressionTransformer_1 = require(\"../../../node-transformers/preparing-transformers/EvalCallExpressionTransformer\");\nconst ForceTransformStringObfuscatingGuard_1 = require(\"../../../node-transformers/preparing-transformers/obfuscating-guards/ForceTransformStringObfuscatingGuard\");\nconst IgnoredRequireImportObfuscatingGuard_1 = require(\"../../../node-transformers/preparing-transformers/obfuscating-guards/IgnoredRequireImportObfuscatingGuard\");\nconst MetadataTransformer_1 = require(\"../../../node-transformers/preparing-transformers/MetadataTransformer\");\nconst ObfuscatingGuardsTransformer_1 = require(\"../../../node-transformers/preparing-transformers/ObfuscatingGuardsTransformer\");\nconst ParentificationTransformer_1 = require(\"../../../node-transformers/preparing-transformers/ParentificationTransformer\");\nconst ReservedStringObfuscatingGuard_1 = require(\"../../../node-transformers/preparing-transformers/obfuscating-guards/ReservedStringObfuscatingGuard\");\nconst VariablePreserveTransformer_1 = require(\"../../../node-transformers/preparing-transformers/VariablePreserveTransformer\");\nexports.preparingTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(CustomCodeHelpersTransformer_1.CustomCodeHelpersTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.CustomCodeHelpersTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(EvalCallExpressionTransformer_1.EvalCallExpressionTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.EvalCallExpressionTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(MetadataTransformer_1.MetadataTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.MetadataTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(ObfuscatingGuardsTransformer_1.ObfuscatingGuardsTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.ObfuscatingGuardsTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(ParentificationTransformer_1.ParentificationTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.ParentificationTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(VariablePreserveTransformer_1.VariablePreserveTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.VariablePreserveTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeGuard)\n .to(BlackListObfuscatingGuard_1.BlackListObfuscatingGuard)\n .inSingletonScope()\n .whenTargetNamed(ObfuscatingGuard_1.ObfuscatingGuard.BlackListObfuscatingGuard);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeGuard)\n .to(ConditionalCommentObfuscatingGuard_1.ConditionalCommentObfuscatingGuard)\n .inSingletonScope()\n .whenTargetNamed(ObfuscatingGuard_1.ObfuscatingGuard.ConditionalCommentObfuscatingGuard);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeGuard)\n .to(ForceTransformStringObfuscatingGuard_1.ForceTransformStringObfuscatingGuard)\n .inSingletonScope()\n .whenTargetNamed(ObfuscatingGuard_1.ObfuscatingGuard.ForceTransformStringObfuscatingGuard);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeGuard)\n .to(IgnoredRequireImportObfuscatingGuard_1.IgnoredRequireImportObfuscatingGuard)\n .inSingletonScope()\n .whenTargetNamed(ObfuscatingGuard_1.ObfuscatingGuard.IgnoredRequireImportObfuscatingGuard);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeGuard)\n .to(ReservedStringObfuscatingGuard_1.ReservedStringObfuscatingGuard)\n .inSingletonScope()\n .whenTargetNamed(ObfuscatingGuard_1.ObfuscatingGuard.ReservedStringObfuscatingGuard);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeGuard)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.INodeGuard));\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.renameIdentifiersTransformersModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst NodeTransformer_1 = require(\"../../../enums/node-transformers/NodeTransformer\");\nconst IdentifierReplacer_1 = require(\"../../../node-transformers/rename-identifiers-transformers/replacer/IdentifierReplacer\");\nconst LabeledStatementTransformer_1 = require(\"../../../node-transformers/rename-identifiers-transformers/LabeledStatementTransformer\");\nconst ScopeIdentifiersTransformer_1 = require(\"../../../node-transformers/rename-identifiers-transformers/ScopeIdentifiersTransformer\");\nconst ScopeThroughIdentifiersTransformer_1 = require(\"../../../node-transformers/rename-identifiers-transformers/ScopeThroughIdentifiersTransformer\");\nexports.renameIdentifiersTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(LabeledStatementTransformer_1.LabeledStatementTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.LabeledStatementTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(ScopeIdentifiersTransformer_1.ScopeIdentifiersTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.ScopeIdentifiersTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(ScopeThroughIdentifiersTransformer_1.ScopeThroughIdentifiersTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.ScopeThroughIdentifiersTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierReplacer)\n .to(IdentifierReplacer_1.IdentifierReplacer)\n .inSingletonScope();\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.renamePropertiesTransformersModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst NodeTransformer_1 = require(\"../../../enums/node-transformers/NodeTransformer\");\nconst RenamePropertiesReplacer_1 = require(\"../../../node-transformers/rename-properties-transformers/replacer/RenamePropertiesReplacer\");\nconst RenamePropertiesTransformer_1 = require(\"../../../node-transformers/rename-properties-transformers/RenamePropertiesTransformer\");\nexports.renamePropertiesTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(RenamePropertiesTransformer_1.RenamePropertiesTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.RenamePropertiesTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IRenamePropertiesReplacer)\n .to(RenamePropertiesReplacer_1.RenamePropertiesReplacer);\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.simplifyingTransformersModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst NodeTransformer_1 = require(\"../../../enums/node-transformers/NodeTransformer\");\nconst BlockStatementSimplifyTransformer_1 = require(\"../../../node-transformers/simplifying-transformers/BlockStatementSimplifyTransformer\");\nconst ExpressionStatementsMergeTransformer_1 = require(\"../../../node-transformers/simplifying-transformers/ExpressionStatementsMergeTransformer\");\nconst IfStatementSimplifyTransformer_1 = require(\"../../../node-transformers/simplifying-transformers/IfStatementSimplifyTransformer\");\nconst VariableDeclarationsMergeTransformer_1 = require(\"../../../node-transformers/simplifying-transformers/VariableDeclarationsMergeTransformer\");\nexports.simplifyingTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(BlockStatementSimplifyTransformer_1.BlockStatementSimplifyTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.BlockStatementSimplifyTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(ExpressionStatementsMergeTransformer_1.ExpressionStatementsMergeTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.ExpressionStatementsMergeTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(IfStatementSimplifyTransformer_1.IfStatementSimplifyTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.IfStatementSimplifyTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(VariableDeclarationsMergeTransformer_1.VariableDeclarationsMergeTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.VariableDeclarationsMergeTransformer);\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringArrayTransformersModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst NodeTransformer_1 = require(\"../../../enums/node-transformers/NodeTransformer\");\nconst StringArrayScopeCallsWrapperTransformer_1 = require(\"../../../node-transformers/string-array-transformers/StringArrayScopeCallsWrapperTransformer\");\nconst StringArrayTransformer_1 = require(\"../../../node-transformers/string-array-transformers/StringArrayTransformer\");\nexports.stringArrayTransformersModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(StringArrayScopeCallsWrapperTransformer_1.StringArrayScopeCallsWrapperTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.StringArrayScopeCallsWrapperTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(StringArrayTransformer_1.StringArrayTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.StringArrayTransformer);\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.nodeModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst ScopeIdentifiersTraverser_1 = require(\"../../../node/ScopeIdentifiersTraverser\");\nexports.nodeModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IScopeIdentifiersTraverser)\n .to(ScopeIdentifiersTraverser_1.ScopeIdentifiersTraverser)\n .inSingletonScope();\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.optionsModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst Options_1 = require(\"../../../options/Options\");\nconst OptionsNormalizer_1 = require(\"../../../options/OptionsNormalizer\");\nexports.optionsModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)\n .to(Options_1.Options)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IOptionsNormalizer)\n .to(OptionsNormalizer_1.OptionsNormalizer)\n .inSingletonScope();\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.storagesModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst ControlFlowStorage_1 = require(\"../../../storages/custom-nodes/ControlFlowStorage\");\nconst CustomCodeHelperGroupStorage_1 = require(\"../../../storages/custom-code-helpers/CustomCodeHelperGroupStorage\");\nconst LiteralNodesCacheStorage_1 = require(\"../../../storages/string-array-transformers/LiteralNodesCacheStorage\");\nconst StringArrayScopeCallsWrapperLexicalScopeDataStorage_1 = require(\"../../../storages/string-array-transformers/StringArrayScopeCallsWrapperLexicalScopeDataStorage\");\nconst StringArrayScopeCallsWrapperNamesDataStorage_1 = require(\"../../../storages/string-array-transformers/StringArrayScopeCallsWrapperNamesDataStorage\");\nconst StringArrayStorage_1 = require(\"../../../storages/string-array-transformers/StringArrayStorage\");\nconst VisitedLexicalScopeNodesStackStorage_1 = require(\"../../../storages/string-array-transformers/VisitedLexicalScopeNodesStackStorage\");\nexports.storagesModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.TCustomNodeGroupStorage)\n .to(CustomCodeHelperGroupStorage_1.CustomCodeHelperGroupStorage)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ILiteralNodesCacheStorage)\n .to(LiteralNodesCacheStorage_1.LiteralNodesCacheStorage)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorage)\n .to(StringArrayStorage_1.StringArrayStorage)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayScopeCallsWrapperLexicalScopeDataStorage)\n .to(StringArrayScopeCallsWrapperLexicalScopeDataStorage_1.StringArrayScopeCallsWrapperLexicalScopeDataStorage)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayScopeCallsWrapperNamesDataStorage)\n .to(StringArrayScopeCallsWrapperNamesDataStorage_1.StringArrayScopeCallsWrapperNamesDataStorage)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IVisitedLexicalScopeNodesStackStorage)\n .to(VisitedLexicalScopeNodesStackStorage_1.VisitedLexicalScopeNodesStackStorage)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Newable__TControlFlowStorage)\n .toConstructor(ControlFlowStorage_1.ControlFlowStorage);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__TControlFlowStorage)\n .toFactory((context) => {\n return () => {\n const constructor = context.container\n .get(ServiceIdentifiers_1.ServiceIdentifiers.Newable__TControlFlowStorage);\n const randomGenerator = context.container\n .get(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator);\n const options = context.container\n .get(ServiceIdentifiers_1.ServiceIdentifiers.IOptions);\n const storage = new constructor(randomGenerator, options);\n storage.initialize();\n return storage;\n };\n });\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.utilsModule = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst ArrayUtils_1 = require(\"../../../utils/ArrayUtils\");\nconst CryptUtils_1 = require(\"../../../utils/CryptUtils\");\nconst CryptUtilsSwappedAlphabet_1 = require(\"../../../utils/CryptUtilsSwappedAlphabet\");\nconst EscapeSequenceEncoder_1 = require(\"../../../utils/EscapeSequenceEncoder\");\nconst LevelledTopologicalSorter_1 = require(\"../../../utils/LevelledTopologicalSorter\");\nconst RandomGenerator_1 = require(\"../../../utils/RandomGenerator\");\nexports.utilsModule = new inversify_1.ContainerModule((bind) => {\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)\n .to(ArrayUtils_1.ArrayUtils)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)\n .to(RandomGenerator_1.RandomGenerator)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICryptUtils)\n .to(CryptUtils_1.CryptUtils)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ICryptUtilsSwappedAlphabet)\n .to(CryptUtilsSwappedAlphabet_1.CryptUtilsSwappedAlphabet)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IEscapeSequenceEncoder)\n .to(EscapeSequenceEncoder_1.EscapeSequenceEncoder)\n .inSingletonScope();\n bind(ServiceIdentifiers_1.ServiceIdentifiers.ILevelledTopologicalSorter)\n .to(LevelledTopologicalSorter_1.LevelledTopologicalSorter);\n});\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar AbstractCustomCodeHelper_1, _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractCustomCodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst ICustomCodeHelperObfuscator_1 = require(\"../interfaces/custom-code-helpers/ICustomCodeHelperObfuscator\");\nconst IOptions_1 = require(\"../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nconst GlobalVariableTemplate1_1 = require(\"./common/templates/GlobalVariableTemplate1\");\nconst GlobalVariableTemplate2_1 = require(\"./common/templates/GlobalVariableTemplate2\");\nlet AbstractCustomCodeHelper = AbstractCustomCodeHelper_1 = class AbstractCustomCodeHelper {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options) {\n this.cachedNode = null;\n this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);\n this.customCodeHelperFormatter = customCodeHelperFormatter;\n this.customCodeHelperObfuscator = customCodeHelperObfuscator;\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n getNode() {\n if (!this.cachedNode) {\n const codeHelperTemplate = this.getCodeHelperTemplate();\n this.cachedNode = this.customCodeHelperFormatter.formatStructure(this.getNodeStructure(codeHelperTemplate));\n }\n return this.cachedNode;\n }\n getGlobalVariableTemplate() {\n return this.randomGenerator\n .getRandomGenerator()\n .pickone(AbstractCustomCodeHelper_1.globalVariableTemplateFunctions);\n }\n getCodeHelperTemplate() {\n return '';\n }\n};\nAbstractCustomCodeHelper.globalVariableTemplateFunctions = [\n GlobalVariableTemplate1_1.GlobalVariableTemplate1(),\n GlobalVariableTemplate2_1.GlobalVariableTemplate2()\n];\nAbstractCustomCodeHelper = AbstractCustomCodeHelper_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator !== \"undefined\" && ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], AbstractCustomCodeHelper);\nexports.AbstractCustomCodeHelper = AbstractCustomCodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractCustomCodeHelperGroup = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst IOptions_1 = require(\"../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nlet AbstractCustomCodeHelperGroup = class AbstractCustomCodeHelperGroup {\n constructor(identifierNamesGeneratorFactory, randomGenerator, options) {\n this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n getAppendEvent() {\n return this.appendEvent;\n }\n getCustomCodeHelpers() {\n return this.customCodeHelpers;\n }\n appendCustomNodeIfExist(customCodeHelperName, callback) {\n const customCodeHelper = this.customCodeHelpers.get(customCodeHelperName);\n if (!customCodeHelper) {\n return;\n }\n callback(customCodeHelper);\n }\n getRandomCallsGraphIndex(callsGraphLength) {\n return this.randomGenerator.getRandomInteger(0, Math.max(0, Math.round(callsGraphLength - 1)));\n }\n};\nAbstractCustomCodeHelperGroup = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], AbstractCustomCodeHelperGroup);\nexports.AbstractCustomCodeHelperGroup = AbstractCustomCodeHelperGroup;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CustomCodeHelperFormatter = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst string_template_1 = __importDefault(require(\"string-template\"));\nconst IPrevailingKindOfVariablesAnalyzer_1 = require(\"../interfaces/analyzers/calls-graph-analyzer/IPrevailingKindOfVariablesAnalyzer\");\nconst NodeGuards_1 = require(\"../node/NodeGuards\");\nlet CustomCodeHelperFormatter = class CustomCodeHelperFormatter {\n constructor(prevailingKindOfVariablesAnalyzer) {\n this.prevailingKindOfVariables = prevailingKindOfVariablesAnalyzer.getPrevailingKind();\n }\n formatTemplate(template, mapping) {\n return string_template_1.default(template, mapping);\n }\n formatStructure(statements) {\n for (const statement of statements) {\n estraverse.replace(statement, {\n enter: (node) => {\n if (!NodeGuards_1.NodeGuards.isVariableDeclarationNode(node)) {\n return;\n }\n if (this.prevailingKindOfVariables === 'var') {\n node.kind = 'var';\n }\n return node;\n }\n });\n }\n return statements;\n }\n};\nCustomCodeHelperFormatter = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IPrevailingKindOfVariablesAnalyzer_1.IPrevailingKindOfVariablesAnalyzer !== \"undefined\" && IPrevailingKindOfVariablesAnalyzer_1.IPrevailingKindOfVariablesAnalyzer) === \"function\" ? _a : Object])\n], CustomCodeHelperFormatter);\nexports.CustomCodeHelperFormatter = CustomCodeHelperFormatter;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CustomCodeHelperObfuscator = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nconst NoCustomNodes_1 = require(\"../options/presets/NoCustomNodes\");\nconst JavaScriptObfuscatorFacade_1 = require(\"../JavaScriptObfuscatorFacade\");\nlet CustomCodeHelperObfuscator = class CustomCodeHelperObfuscator {\n constructor(randomGenerator, options) {\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n obfuscateTemplate(template, additionalOptions = {}) {\n return JavaScriptObfuscatorFacade_1.JavaScriptObfuscator.obfuscate(template, Object.assign(Object.assign(Object.assign({}, NoCustomNodes_1.NO_ADDITIONAL_NODES_PRESET), { identifierNamesGenerator: this.options.identifierNamesGenerator, identifiersDictionary: this.options.identifiersDictionary, numbersToExpressions: this.options.numbersToExpressions, simplify: this.options.simplify, seed: this.randomGenerator.getRawSeed() }), additionalOptions)).getObfuscatedCode();\n }\n};\nCustomCodeHelperObfuscator = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], CustomCodeHelperObfuscator);\nexports.CustomCodeHelperObfuscator = CustomCodeHelperObfuscator;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallsControllerFunctionCodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperObfuscator_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperObfuscator\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst ObfuscationEvent_1 = require(\"../../enums/event-emitters/ObfuscationEvent\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst SingleCallControllerTemplate_1 = require(\"../common/templates/SingleCallControllerTemplate\");\nconst AbstractCustomCodeHelper_1 = require(\"../AbstractCustomCodeHelper\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet CallsControllerFunctionCodeHelper = class CallsControllerFunctionCodeHelper extends AbstractCustomCodeHelper_1.AbstractCustomCodeHelper {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options);\n }\n initialize(appendEvent, callsControllerFunctionName) {\n this.appendEvent = appendEvent;\n this.callsControllerFunctionName = callsControllerFunctionName;\n }\n getNodeStructure(codeHelperTemplate) {\n return NodeUtils_1.NodeUtils.convertCodeToStructure(codeHelperTemplate);\n }\n getCodeHelperTemplate() {\n if (this.appendEvent === ObfuscationEvent_1.ObfuscationEvent.AfterObfuscation) {\n return this.customCodeHelperObfuscator.obfuscateTemplate(this.customCodeHelperFormatter.formatTemplate(SingleCallControllerTemplate_1.SingleCallControllerTemplate(), {\n callControllerFunctionName: this.callsControllerFunctionName\n }));\n }\n return this.customCodeHelperFormatter.formatTemplate(SingleCallControllerTemplate_1.SingleCallControllerTemplate(), {\n callControllerFunctionName: this.callsControllerFunctionName\n });\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], CallsControllerFunctionCodeHelper.prototype, \"callsControllerFunctionName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof ObfuscationEvent_1.ObfuscationEvent !== \"undefined\" && ObfuscationEvent_1.ObfuscationEvent) === \"function\" ? _a : Object)\n], CallsControllerFunctionCodeHelper.prototype, \"appendEvent\", void 0);\nCallsControllerFunctionCodeHelper = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _c : Object, typeof (_d = typeof ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator !== \"undefined\" && ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator) === \"function\" ? _d : Object, typeof (_e = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _e : Object, typeof (_f = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _f : Object])\n], CallsControllerFunctionCodeHelper);\nexports.CallsControllerFunctionCodeHelper = CallsControllerFunctionCodeHelper;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GlobalVariableNoEvalTemplate = void 0;\nfunction GlobalVariableNoEvalTemplate() {\n return `\n const that = (typeof window !== 'undefined'\n ? window\n : (typeof process === 'object' &&\n typeof require === 'function' &&\n typeof global === 'object')\n ? global\n : this);\n `;\n}\nexports.GlobalVariableNoEvalTemplate = GlobalVariableNoEvalTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GlobalVariableTemplate1 = void 0;\nfunction GlobalVariableTemplate1() {\n return `\n let that;\n \n try {\n const getGlobal = Function('return (function() ' + '{}.constructor(\"return this\")( )' + ');');\n \n that = getGlobal();\n } catch (e) {\n that = window;\n }\n `;\n}\nexports.GlobalVariableTemplate1 = GlobalVariableTemplate1;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GlobalVariableTemplate2 = void 0;\nfunction GlobalVariableTemplate2() {\n return `\n const getGlobal = function () {\n let globalObject;\n \n try {\n globalObject = Function('return (function() ' + '{}.constructor(\"return this\")( )' + ');')();\n } catch (e) {\n globalObject = window;\n }\n \n return globalObject;\n };\n const that = getGlobal();\n `;\n}\nexports.GlobalVariableTemplate2 = GlobalVariableTemplate2;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SingleCallControllerTemplate = void 0;\nfunction SingleCallControllerTemplate() {\n return `\n const {callControllerFunctionName} = (function(){\n let firstCall = true;\n \n return function (context, fn){\n const rfn = firstCall ? function(){\n if(fn){\n const res = fn.apply(context, arguments);\n fn = null;\n return res;\n }\n } : function(){}\n \n firstCall = false;\n \n return rfn;\n }\n })();\n `;\n}\nexports.SingleCallControllerTemplate = SingleCallControllerTemplate;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsoleOutputDisableCodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst ICustomCodeHelperObfuscator_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperObfuscator\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst ObfuscationTarget_1 = require(\"../../enums/ObfuscationTarget\");\nconst ConsoleOutputDisableTemplate_1 = require(\"./templates/ConsoleOutputDisableTemplate\");\nconst GlobalVariableNoEvalTemplate_1 = require(\"../common/templates/GlobalVariableNoEvalTemplate\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst AbstractCustomCodeHelper_1 = require(\"../AbstractCustomCodeHelper\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet ConsoleOutputDisableCodeHelper = class ConsoleOutputDisableCodeHelper extends AbstractCustomCodeHelper_1.AbstractCustomCodeHelper {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options);\n }\n initialize(callsControllerFunctionName, consoleOutputDisableFunctionName) {\n this.callsControllerFunctionName = callsControllerFunctionName;\n this.consoleOutputDisableFunctionName = consoleOutputDisableFunctionName;\n }\n getNodeStructure(codeHelperTemplate) {\n return NodeUtils_1.NodeUtils.convertCodeToStructure(codeHelperTemplate);\n }\n getCodeHelperTemplate() {\n const globalVariableTemplate = this.options.target !== ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval\n ? this.getGlobalVariableTemplate()\n : GlobalVariableNoEvalTemplate_1.GlobalVariableNoEvalTemplate();\n return this.customCodeHelperFormatter.formatTemplate(ConsoleOutputDisableTemplate_1.ConsoleOutputDisableTemplate(), {\n callControllerFunctionName: this.callsControllerFunctionName,\n consoleLogDisableFunctionName: this.consoleOutputDisableFunctionName,\n globalVariableTemplate\n });\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], ConsoleOutputDisableCodeHelper.prototype, \"callsControllerFunctionName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], ConsoleOutputDisableCodeHelper.prototype, \"consoleOutputDisableFunctionName\", void 0);\nConsoleOutputDisableCodeHelper = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator !== \"undefined\" && ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], ConsoleOutputDisableCodeHelper);\nexports.ConsoleOutputDisableCodeHelper = ConsoleOutputDisableCodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsoleOutputCodeHelperGroup = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TCustomCodeHelperFactory_1 = require(\"../../../types/container/custom-code-helpers/TCustomCodeHelperFactory\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../../decorators/Initializable\");\nconst CustomCodeHelper_1 = require(\"../../../enums/custom-code-helpers/CustomCodeHelper\");\nconst ObfuscationEvent_1 = require(\"../../../enums/event-emitters/ObfuscationEvent\");\nconst AbstractCustomCodeHelperGroup_1 = require(\"../../AbstractCustomCodeHelperGroup\");\nconst NodeAppender_1 = require(\"../../../node/NodeAppender\");\nconst NodeLexicalScopeUtils_1 = require(\"../../../node/NodeLexicalScopeUtils\");\nlet ConsoleOutputCodeHelperGroup = class ConsoleOutputCodeHelperGroup extends AbstractCustomCodeHelperGroup_1.AbstractCustomCodeHelperGroup {\n constructor(customCodeHelperFactory, identifierNamesGeneratorFactory, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, randomGenerator, options);\n this.appendEvent = ObfuscationEvent_1.ObfuscationEvent.BeforeObfuscation;\n this.customCodeHelperFactory = customCodeHelperFactory;\n }\n appendNodes(nodeWithStatements, callsGraphData) {\n var _a;\n if (!this.options.disableConsoleOutput) {\n return;\n }\n const randomCallsGraphIndex = this.getRandomCallsGraphIndex(callsGraphData.length);\n const consoleOutputDisableHostNode = callsGraphData.length\n ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex)\n : nodeWithStatements;\n const callsControllerHostNode = callsGraphData.length\n ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex, 1)\n : nodeWithStatements;\n const consoleOutputDisableLexicalScopeNode = (_a = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils\n .getLexicalScope(consoleOutputDisableHostNode)) !== null && _a !== void 0 ? _a : null;\n const consoleOutputDisableFunctionName = consoleOutputDisableLexicalScopeNode\n ? this.identifierNamesGenerator.generate(consoleOutputDisableLexicalScopeNode)\n : this.identifierNamesGenerator.generateNext();\n const callsControllerFunctionName = consoleOutputDisableLexicalScopeNode\n ? this.identifierNamesGenerator.generate(consoleOutputDisableLexicalScopeNode)\n : this.identifierNamesGenerator.generateNext();\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.ConsoleOutputDisable, (customCodeHelper) => {\n customCodeHelper.initialize(callsControllerFunctionName, consoleOutputDisableFunctionName);\n NodeAppender_1.NodeAppender.prepend(consoleOutputDisableHostNode, customCodeHelper.getNode());\n });\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction, (customCodeHelper) => {\n customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName);\n NodeAppender_1.NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode());\n });\n }\n initialize() {\n this.customCodeHelpers = new Map();\n if (!this.options.disableConsoleOutput) {\n return;\n }\n const consoleOutputDisableExpressionCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.ConsoleOutputDisable);\n const callsControllerFunctionCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction);\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.ConsoleOutputDisable, consoleOutputDisableExpressionCodeHelper);\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction, callsControllerFunctionCodeHelper);\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof Map !== \"undefined\" && Map) === \"function\" ? _a : Object)\n], ConsoleOutputCodeHelperGroup.prototype, \"customCodeHelpers\", void 0);\nConsoleOutputCodeHelperGroup = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomCodeHelper)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof TCustomCodeHelperFactory_1.TCustomCodeHelperFactory !== \"undefined\" && TCustomCodeHelperFactory_1.TCustomCodeHelperFactory) === \"function\" ? _b : Object, typeof (_c = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], ConsoleOutputCodeHelperGroup);\nexports.ConsoleOutputCodeHelperGroup = ConsoleOutputCodeHelperGroup;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConsoleOutputDisableTemplate = void 0;\nfunction ConsoleOutputDisableTemplate() {\n return `\n const {consoleLogDisableFunctionName} = {callControllerFunctionName}(this, function () {\n {globalVariableTemplate}\n\n const consoleObject = (that.console = that.console || {});\n const methods = ['log', 'warn', 'info', 'error', 'exception', 'table', 'trace'];\n\n for (let index = 0; index < methods.length; index++){\n const func = {callControllerFunctionName}.constructor.prototype.bind({callControllerFunctionName});\n const methodName = methods[index];\n const originalFunction = consoleObject[methodName] || func;\n\n func.__proto__ = {callControllerFunctionName}.bind({callControllerFunctionName});\n func.toString = originalFunction.toString.bind(originalFunction);\n \n consoleObject[methodName] = func;\n }\n });\n\n {consoleLogDisableFunctionName}();\n `;\n}\nexports.ConsoleOutputDisableTemplate = ConsoleOutputDisableTemplate;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DebugProtectionFunctionCallCodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst ICustomCodeHelperObfuscator_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperObfuscator\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst DebugProtectionFunctionCallTemplate_1 = require(\"./templates/debug-protection-function-call/DebugProtectionFunctionCallTemplate\");\nconst AbstractCustomCodeHelper_1 = require(\"../AbstractCustomCodeHelper\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet DebugProtectionFunctionCallCodeHelper = class DebugProtectionFunctionCallCodeHelper extends AbstractCustomCodeHelper_1.AbstractCustomCodeHelper {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options);\n }\n initialize(debugProtectionFunctionName, callsControllerFunctionName) {\n this.debugProtectionFunctionName = debugProtectionFunctionName;\n this.callsControllerFunctionName = callsControllerFunctionName;\n }\n getNodeStructure(codeHelperTemplate) {\n return NodeUtils_1.NodeUtils.convertCodeToStructure(codeHelperTemplate);\n }\n getCodeHelperTemplate() {\n return this.customCodeHelperFormatter.formatTemplate(DebugProtectionFunctionCallTemplate_1.DebugProtectionFunctionCallTemplate(), {\n debugProtectionFunctionName: this.debugProtectionFunctionName,\n callControllerFunctionName: this.callsControllerFunctionName\n });\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], DebugProtectionFunctionCallCodeHelper.prototype, \"callsControllerFunctionName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], DebugProtectionFunctionCallCodeHelper.prototype, \"debugProtectionFunctionName\", void 0);\nDebugProtectionFunctionCallCodeHelper = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator !== \"undefined\" && ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], DebugProtectionFunctionCallCodeHelper);\nexports.DebugProtectionFunctionCallCodeHelper = DebugProtectionFunctionCallCodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DebugProtectionFunctionCodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst ICustomCodeHelperObfuscator_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperObfuscator\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst ObfuscationTarget_1 = require(\"../../enums/ObfuscationTarget\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst DebuggerTemplate_1 = require(\"./templates/debug-protection-function/DebuggerTemplate\");\nconst DebuggerTemplateNoEval_1 = require(\"./templates/debug-protection-function/DebuggerTemplateNoEval\");\nconst DebugProtectionFunctionTemplate_1 = require(\"./templates/debug-protection-function/DebugProtectionFunctionTemplate\");\nconst AbstractCustomCodeHelper_1 = require(\"../AbstractCustomCodeHelper\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet DebugProtectionFunctionCodeHelper = class DebugProtectionFunctionCodeHelper extends AbstractCustomCodeHelper_1.AbstractCustomCodeHelper {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options);\n }\n initialize(debugProtectionFunctionName) {\n this.debugProtectionFunctionName = debugProtectionFunctionName;\n }\n getNodeStructure(codeHelperTemplate) {\n return NodeUtils_1.NodeUtils.convertCodeToStructure(codeHelperTemplate);\n }\n getCodeHelperTemplate() {\n const debuggerTemplate = this.options.target !== ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval\n ? DebuggerTemplate_1.DebuggerTemplate()\n : DebuggerTemplateNoEval_1.DebuggerTemplateNoEval();\n return this.customCodeHelperFormatter.formatTemplate(DebugProtectionFunctionTemplate_1.DebugProtectionFunctionTemplate(), {\n debuggerTemplate,\n debugProtectionFunctionName: this.debugProtectionFunctionName\n });\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], DebugProtectionFunctionCodeHelper.prototype, \"debugProtectionFunctionName\", void 0);\nDebugProtectionFunctionCodeHelper = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator !== \"undefined\" && ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], DebugProtectionFunctionCodeHelper);\nexports.DebugProtectionFunctionCodeHelper = DebugProtectionFunctionCodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DebugProtectionFunctionIntervalCodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst ICustomCodeHelperObfuscator_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperObfuscator\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst DebugProtectionFunctionIntervalTemplate_1 = require(\"./templates/debug-protection-function-interval/DebugProtectionFunctionIntervalTemplate\");\nconst AbstractCustomCodeHelper_1 = require(\"../AbstractCustomCodeHelper\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet DebugProtectionFunctionIntervalCodeHelper = class DebugProtectionFunctionIntervalCodeHelper extends AbstractCustomCodeHelper_1.AbstractCustomCodeHelper {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options);\n }\n initialize(debugProtectionFunctionName) {\n this.debugProtectionFunctionName = debugProtectionFunctionName;\n }\n getNodeStructure(codeHelperTemplate) {\n return NodeUtils_1.NodeUtils.convertCodeToStructure(codeHelperTemplate);\n }\n getCodeHelperTemplate() {\n return this.customCodeHelperFormatter.formatTemplate(DebugProtectionFunctionIntervalTemplate_1.DebugProtectionFunctionIntervalTemplate(), {\n debugProtectionFunctionName: this.debugProtectionFunctionName\n });\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], DebugProtectionFunctionIntervalCodeHelper.prototype, \"debugProtectionFunctionName\", void 0);\nDebugProtectionFunctionIntervalCodeHelper = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator !== \"undefined\" && ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], DebugProtectionFunctionIntervalCodeHelper);\nexports.DebugProtectionFunctionIntervalCodeHelper = DebugProtectionFunctionIntervalCodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DebugProtectionCodeHelperGroup = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TCustomCodeHelperFactory_1 = require(\"../../../types/container/custom-code-helpers/TCustomCodeHelperFactory\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../../decorators/Initializable\");\nconst CustomCodeHelper_1 = require(\"../../../enums/custom-code-helpers/CustomCodeHelper\");\nconst ObfuscationEvent_1 = require(\"../../../enums/event-emitters/ObfuscationEvent\");\nconst AbstractCustomCodeHelperGroup_1 = require(\"../../AbstractCustomCodeHelperGroup\");\nconst NodeAppender_1 = require(\"../../../node/NodeAppender\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nconst NodeLexicalScopeUtils_1 = require(\"../../../node/NodeLexicalScopeUtils\");\nlet DebugProtectionCodeHelperGroup = class DebugProtectionCodeHelperGroup extends AbstractCustomCodeHelperGroup_1.AbstractCustomCodeHelperGroup {\n constructor(customCodeHelperFactory, identifierNamesGeneratorFactory, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, randomGenerator, options);\n this.appendEvent = ObfuscationEvent_1.ObfuscationEvent.BeforeObfuscation;\n this.customCodeHelperFactory = customCodeHelperFactory;\n }\n appendNodes(nodeWithStatements, callsGraphData) {\n var _a;\n if (!this.options.debugProtection) {\n return;\n }\n const randomCallsGraphIndex = this.getRandomCallsGraphIndex(callsGraphData.length);\n const debugProtectionFunctionCallHostNode = callsGraphData.length\n ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex)\n : nodeWithStatements;\n const callsControllerHostNode = callsGraphData.length\n ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex, 1)\n : nodeWithStatements;\n const debugProtectionFunctionCallScopeNode = (_a = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils\n .getLexicalScope(debugProtectionFunctionCallHostNode)) !== null && _a !== void 0 ? _a : null;\n const debugProtectionFunctionName = debugProtectionFunctionCallScopeNode\n ? this.identifierNamesGenerator.generate(debugProtectionFunctionCallScopeNode)\n : this.identifierNamesGenerator.generateNext();\n const callsControllerFunctionName = debugProtectionFunctionCallScopeNode\n ? this.identifierNamesGenerator.generate(debugProtectionFunctionCallScopeNode)\n : this.identifierNamesGenerator.generateNext();\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunctionCall, (customCodeHelper) => {\n customCodeHelper.initialize(debugProtectionFunctionName, callsControllerFunctionName);\n NodeAppender_1.NodeAppender.prepend(debugProtectionFunctionCallHostNode, customCodeHelper.getNode());\n });\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction, (customCodeHelper) => {\n customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName);\n NodeAppender_1.NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode());\n });\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunction, (customCodeHelper) => {\n customCodeHelper.initialize(debugProtectionFunctionName);\n NodeAppender_1.NodeAppender.append(nodeWithStatements, customCodeHelper.getNode());\n });\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunctionInterval, (customCodeHelper) => {\n const programBodyLength = NodeGuards_1.NodeGuards.isSwitchCaseNode(nodeWithStatements)\n ? nodeWithStatements.consequent.length\n : nodeWithStatements.body.length;\n const randomIndex = this.randomGenerator.getRandomInteger(0, programBodyLength);\n customCodeHelper.initialize(debugProtectionFunctionName);\n NodeAppender_1.NodeAppender.insertAtIndex(nodeWithStatements, customCodeHelper.getNode(), randomIndex);\n });\n }\n initialize() {\n this.customCodeHelpers = new Map();\n if (!this.options.debugProtection) {\n return;\n }\n const debugProtectionFunctionCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunction);\n const debugProtectionFunctionCallCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunctionCall);\n const debugProtectionFunctionIntervalCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunctionInterval);\n const callsControllerFunctionCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction);\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunction, debugProtectionFunctionCodeHelper);\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunctionCall, debugProtectionFunctionCallCodeHelper);\n if (this.options.debugProtectionInterval) {\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.DebugProtectionFunctionInterval, debugProtectionFunctionIntervalCodeHelper);\n }\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction, callsControllerFunctionCodeHelper);\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof Map !== \"undefined\" && Map) === \"function\" ? _a : Object)\n], DebugProtectionCodeHelperGroup.prototype, \"customCodeHelpers\", void 0);\nDebugProtectionCodeHelperGroup = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomCodeHelper)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof TCustomCodeHelperFactory_1.TCustomCodeHelperFactory !== \"undefined\" && TCustomCodeHelperFactory_1.TCustomCodeHelperFactory) === \"function\" ? _b : Object, typeof (_c = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], DebugProtectionCodeHelperGroup);\nexports.DebugProtectionCodeHelperGroup = DebugProtectionCodeHelperGroup;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DebugProtectionFunctionCallTemplate = void 0;\nfunction DebugProtectionFunctionCallTemplate() {\n return `\n (function () {\n {callControllerFunctionName}(\n this,\n function () {\n const regExp1 = new RegExp('function *\\\\\\\\( *\\\\\\\\)');\n const regExp2 = new RegExp('\\\\\\\\+\\\\\\\\+ *\\\\(?:[a-zA-Z_$][0-9a-zA-Z_$]*\\\\)', 'i');\n \n const result = {debugProtectionFunctionName}('init');\n \n if (!regExp1.test(result + 'chain') || !regExp2.test(result + 'input')) {\n result('0');\n } else {\n {debugProtectionFunctionName}();\n }\n }\n )();\n })();\n `;\n}\nexports.DebugProtectionFunctionCallTemplate = DebugProtectionFunctionCallTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DebugProtectionFunctionIntervalTemplate = void 0;\nfunction DebugProtectionFunctionIntervalTemplate() {\n return `\n setInterval(function () {\n {debugProtectionFunctionName}();\n }, 4000);\n `;\n}\nexports.DebugProtectionFunctionIntervalTemplate = DebugProtectionFunctionIntervalTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DebugProtectionFunctionTemplate = void 0;\nfunction DebugProtectionFunctionTemplate() {\n return `\n function {debugProtectionFunctionName} (ret) {\n function debuggerProtection (counter) {\n \n {debuggerTemplate}\n \n debuggerProtection(++counter);\n }\n \n try {\n if (ret) {\n return debuggerProtection;\n } else {\n debuggerProtection(0);\n }\n } catch (y) {}\n }\n `;\n}\nexports.DebugProtectionFunctionTemplate = DebugProtectionFunctionTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DebuggerTemplate = void 0;\nfunction DebuggerTemplate() {\n return `\n if (typeof counter === 'string') {\n return (function (arg) {}.constructor('while (true) {}').apply('counter'));\n } else {\n if (('' + counter / counter)['length'] !== 1 || counter % 20 === 0) {\n (function () {return true;}.constructor('debu' + 'gger').call('action'));\n } else {\n (function () {return false;}.constructor('debu' + 'gger').apply('stateObject'));\n }\n \n }\n `;\n}\nexports.DebuggerTemplate = DebuggerTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DebuggerTemplateNoEval = void 0;\nfunction DebuggerTemplateNoEval() {\n return `\n if (typeof counter === 'string') {\n const func = function () {\n while (true) {}\n };\n \n return func();\n } else {\n if (('' + counter / counter)['length'] !== 1 || counter % 20 === 0) {\n debugger;\n } else {\n debugger;\n }\n \n }\n `;\n}\nexports.DebuggerTemplateNoEval = DebuggerTemplateNoEval;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomainLockCodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst ICustomCodeHelperObfuscator_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperObfuscator\");\nconst ICryptUtils_1 = require(\"../../interfaces/utils/ICryptUtils\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst ObfuscationTarget_1 = require(\"../../enums/ObfuscationTarget\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst DomainLockTemplate_1 = require(\"./templates/DomainLockTemplate\");\nconst GlobalVariableNoEvalTemplate_1 = require(\"../common/templates/GlobalVariableNoEvalTemplate\");\nconst AbstractCustomCodeHelper_1 = require(\"../AbstractCustomCodeHelper\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet DomainLockCodeHelper = class DomainLockCodeHelper extends AbstractCustomCodeHelper_1.AbstractCustomCodeHelper {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options, cryptUtils) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options);\n this.cryptUtils = cryptUtils;\n }\n initialize(callsControllerFunctionName, domainLockFunctionName) {\n this.callsControllerFunctionName = callsControllerFunctionName;\n this.domainLockFunctionName = domainLockFunctionName;\n }\n getNodeStructure(codeHelperTemplate) {\n return NodeUtils_1.NodeUtils.convertCodeToStructure(codeHelperTemplate);\n }\n getCodeHelperTemplate() {\n const domainsString = this.options.domainLock.join(';');\n const [hiddenDomainsString, diff] = this.cryptUtils.hideString(domainsString, domainsString.length * 3);\n const globalVariableTemplate = this.options.target !== ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval\n ? this.getGlobalVariableTemplate()\n : GlobalVariableNoEvalTemplate_1.GlobalVariableNoEvalTemplate();\n return this.customCodeHelperFormatter.formatTemplate(DomainLockTemplate_1.DomainLockTemplate(), {\n callControllerFunctionName: this.callsControllerFunctionName,\n domainLockFunctionName: this.domainLockFunctionName,\n diff,\n domains: hiddenDomainsString,\n globalVariableTemplate\n });\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], DomainLockCodeHelper.prototype, \"callsControllerFunctionName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], DomainLockCodeHelper.prototype, \"domainLockFunctionName\", void 0);\nDomainLockCodeHelper = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICryptUtils)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator !== \"undefined\" && ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object, typeof (_f = typeof ICryptUtils_1.ICryptUtils !== \"undefined\" && ICryptUtils_1.ICryptUtils) === \"function\" ? _f : Object])\n], DomainLockCodeHelper);\nexports.DomainLockCodeHelper = DomainLockCodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomainLockCustomCodeHelperGroup = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TCustomCodeHelperFactory_1 = require(\"../../../types/container/custom-code-helpers/TCustomCodeHelperFactory\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../../decorators/Initializable\");\nconst CustomCodeHelper_1 = require(\"../../../enums/custom-code-helpers/CustomCodeHelper\");\nconst ObfuscationEvent_1 = require(\"../../../enums/event-emitters/ObfuscationEvent\");\nconst AbstractCustomCodeHelperGroup_1 = require(\"../../AbstractCustomCodeHelperGroup\");\nconst NodeAppender_1 = require(\"../../../node/NodeAppender\");\nconst NodeLexicalScopeUtils_1 = require(\"../../../node/NodeLexicalScopeUtils\");\nlet DomainLockCustomCodeHelperGroup = class DomainLockCustomCodeHelperGroup extends AbstractCustomCodeHelperGroup_1.AbstractCustomCodeHelperGroup {\n constructor(customCodeHelperFactory, identifierNamesGeneratorFactory, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, randomGenerator, options);\n this.appendEvent = ObfuscationEvent_1.ObfuscationEvent.BeforeObfuscation;\n this.customCodeHelperFactory = customCodeHelperFactory;\n }\n appendNodes(nodeWithStatements, callsGraphData) {\n var _a;\n if (!this.options.domainLock.length) {\n return;\n }\n const randomCallsGraphIndex = this.getRandomCallsGraphIndex(callsGraphData.length);\n const domainLockFunctionHostNode = callsGraphData.length\n ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex)\n : nodeWithStatements;\n const callsControllerHostNode = callsGraphData.length\n ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex, 1)\n : nodeWithStatements;\n const domainLockFunctionLexicalScopeNode = (_a = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils\n .getLexicalScope(domainLockFunctionHostNode)) !== null && _a !== void 0 ? _a : null;\n const domainLockFunctionName = domainLockFunctionLexicalScopeNode\n ? this.identifierNamesGenerator.generate(domainLockFunctionLexicalScopeNode)\n : this.identifierNamesGenerator.generateNext();\n const callsControllerFunctionName = domainLockFunctionLexicalScopeNode\n ? this.identifierNamesGenerator.generate(domainLockFunctionLexicalScopeNode)\n : this.identifierNamesGenerator.generateNext();\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.DomainLock, (customCodeHelper) => {\n customCodeHelper.initialize(callsControllerFunctionName, domainLockFunctionName);\n NodeAppender_1.NodeAppender.prepend(domainLockFunctionHostNode, customCodeHelper.getNode());\n });\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction, (customCodeHelper) => {\n customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName);\n NodeAppender_1.NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode());\n });\n }\n initialize() {\n this.customCodeHelpers = new Map();\n if (!this.options.domainLock.length) {\n return;\n }\n const domainLockCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.DomainLock);\n const callsControllerFunctionCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction);\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.DomainLock, domainLockCodeHelper);\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction, callsControllerFunctionCodeHelper);\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof Map !== \"undefined\" && Map) === \"function\" ? _a : Object)\n], DomainLockCustomCodeHelperGroup.prototype, \"customCodeHelpers\", void 0);\nDomainLockCustomCodeHelperGroup = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomCodeHelper)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof TCustomCodeHelperFactory_1.TCustomCodeHelperFactory !== \"undefined\" && TCustomCodeHelperFactory_1.TCustomCodeHelperFactory) === \"function\" ? _b : Object, typeof (_c = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], DomainLockCustomCodeHelperGroup);\nexports.DomainLockCustomCodeHelperGroup = DomainLockCustomCodeHelperGroup;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomainLockTemplate = void 0;\nfunction DomainLockTemplate() {\n return `\n const {domainLockFunctionName} = {callControllerFunctionName}(this, function () {\n \n {globalVariableTemplate}\n \n const func = function () {\n return {\n key: 'item',\n value: 'attribute',\n getAttribute: function () {\n for (let i = 0; i < 1000; i--) {\n const isPositive = i > 0;\n \n switch (isPositive) {\n case true:\n return this.item + '_' + this.value + '_' + i;\n default:\n this.item + '_' + this.value;\n }\n }\n }()\n };\n };\n \n const regExp = new RegExp(\"[{diff}]\", \"g\");\n const domains = \"{domains}\".replace(regExp, \"\").split(\";\");\n let document;\n let domain;\n let location;\n let hostname;\n\n for (let d in that) {\n if (d.length == 8 && d.charCodeAt(7) == 116 && d.charCodeAt(5) == 101 && d.charCodeAt(3) == 117 && d.charCodeAt(0) == 100) {\n document = d;\n \n break;\n }\n }\n\n for (let d1 in that[document]) {\n if (d1.length == 6 && d1.charCodeAt(5) == 110 && d1.charCodeAt(0) == 100) {\n domain = d1;\n \n break;\n }\n }\n\n if (!(\"~\" > domain)) {\n for (let d2 in that[document]) {\n if (d2.length == 8 && d2.charCodeAt(7) == 110 && d2.charCodeAt(0) == 108) {\n location = d2;\n \n break;\n }\n }\n\n for (let d3 in that[document][location]) {\n if (d3.length == 8 && d3.charCodeAt(7) == 101 && d3.charCodeAt(0) == 104) {\n hostname = d3;\n \n break;\n }\n }\n }\n \n if (!document || !that[document]) {\n return;\n }\n \n const documentDomain = that[document][domain];\n const documentLocationHostName = !!that[document][location] && that[document][location][hostname];\n const currentDomain = documentDomain || documentLocationHostName;\n \n if (!currentDomain) {\n return;\n }\n \n let ok = false;\n \n for (let i = 0; i < domains.length; i++) {\n const domain = domains[i];\n const domainNormalized = domain[0] === String.fromCharCode(46)\n ? domain.slice(1)\n : domain;\n const position = currentDomain.length - domainNormalized.length;\n const lastIndex = currentDomain.indexOf(domainNormalized, position);\n const endsWith = lastIndex !== -1 && lastIndex === position;\n \n if (endsWith) {\n if (currentDomain.length == domain.length || domain.indexOf(\".\") === 0) {\n ok = true;\n }\n }\n }\n \n if (!ok) {\n data;\n } else {\n return;\n }\n \n func();\n });\n\n {domainLockFunctionName}();\n `;\n}\nexports.DomainLockTemplate = DomainLockTemplate;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelfDefendingUnicodeCodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst ICustomCodeHelperObfuscator_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperObfuscator\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst ObfuscationTarget_1 = require(\"../../enums/ObfuscationTarget\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst SelfDefendingTemplate_1 = require(\"./templates/SelfDefendingTemplate\");\nconst SelfDefendingNoEvalTemplate_1 = require(\"./templates/SelfDefendingNoEvalTemplate\");\nconst AbstractCustomCodeHelper_1 = require(\"../AbstractCustomCodeHelper\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nconst GlobalVariableNoEvalTemplate_1 = require(\"../common/templates/GlobalVariableNoEvalTemplate\");\nlet SelfDefendingUnicodeCodeHelper = class SelfDefendingUnicodeCodeHelper extends AbstractCustomCodeHelper_1.AbstractCustomCodeHelper {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options);\n }\n initialize(callsControllerFunctionName, selfDefendingFunctionName) {\n this.callsControllerFunctionName = callsControllerFunctionName;\n this.selfDefendingFunctionName = selfDefendingFunctionName;\n }\n getNodeStructure(codeHelperTemplate) {\n return NodeUtils_1.NodeUtils.convertCodeToStructure(codeHelperTemplate);\n }\n getCodeHelperTemplate() {\n const globalVariableTemplate = this.options.target !== ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval\n ? this.getGlobalVariableTemplate()\n : GlobalVariableNoEvalTemplate_1.GlobalVariableNoEvalTemplate();\n const selfDefendingTemplate = this.options.target !== ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval\n ? SelfDefendingTemplate_1.SelfDefendingTemplate()\n : SelfDefendingNoEvalTemplate_1.SelfDefendingNoEvalTemplate();\n return this.customCodeHelperFormatter.formatTemplate(selfDefendingTemplate, {\n callControllerFunctionName: this.callsControllerFunctionName,\n selfDefendingFunctionName: this.selfDefendingFunctionName,\n globalVariableTemplate\n });\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], SelfDefendingUnicodeCodeHelper.prototype, \"callsControllerFunctionName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], SelfDefendingUnicodeCodeHelper.prototype, \"selfDefendingFunctionName\", void 0);\nSelfDefendingUnicodeCodeHelper = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator !== \"undefined\" && ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], SelfDefendingUnicodeCodeHelper);\nexports.SelfDefendingUnicodeCodeHelper = SelfDefendingUnicodeCodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelfDefendingCodeHelperGroup = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TCustomCodeHelperFactory_1 = require(\"../../../types/container/custom-code-helpers/TCustomCodeHelperFactory\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../../decorators/Initializable\");\nconst CustomCodeHelper_1 = require(\"../../../enums/custom-code-helpers/CustomCodeHelper\");\nconst ObfuscationEvent_1 = require(\"../../../enums/event-emitters/ObfuscationEvent\");\nconst AbstractCustomCodeHelperGroup_1 = require(\"../../AbstractCustomCodeHelperGroup\");\nconst NodeAppender_1 = require(\"../../../node/NodeAppender\");\nconst NodeLexicalScopeUtils_1 = require(\"../../../node/NodeLexicalScopeUtils\");\nlet SelfDefendingCodeHelperGroup = class SelfDefendingCodeHelperGroup extends AbstractCustomCodeHelperGroup_1.AbstractCustomCodeHelperGroup {\n constructor(customCodeHelperFactory, identifierNamesGeneratorFactory, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, randomGenerator, options);\n this.appendEvent = ObfuscationEvent_1.ObfuscationEvent.BeforeObfuscation;\n this.customCodeHelperFactory = customCodeHelperFactory;\n }\n appendNodes(nodeWithStatements, callsGraphData) {\n var _a;\n if (!this.options.selfDefending) {\n return;\n }\n const randomCallsGraphIndex = this.getRandomCallsGraphIndex(callsGraphData.length);\n const selfDefendingFunctionHostNode = callsGraphData.length\n ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex)\n : nodeWithStatements;\n const callsControllerHostNode = callsGraphData.length\n ? NodeAppender_1.NodeAppender.getOptimalBlockScope(callsGraphData, randomCallsGraphIndex, 1)\n : nodeWithStatements;\n const selfDefendingFunctionLexicalScopeNode = (_a = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils\n .getLexicalScope(selfDefendingFunctionHostNode)) !== null && _a !== void 0 ? _a : null;\n const selfDefendingFunctionName = selfDefendingFunctionLexicalScopeNode\n ? this.identifierNamesGenerator.generate(selfDefendingFunctionLexicalScopeNode)\n : this.identifierNamesGenerator.generateNext();\n const callsControllerFunctionName = selfDefendingFunctionLexicalScopeNode\n ? this.identifierNamesGenerator.generate(selfDefendingFunctionLexicalScopeNode)\n : this.identifierNamesGenerator.generateNext();\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.SelfDefendingUnicode, (customCodeHelper) => {\n customCodeHelper.initialize(callsControllerFunctionName, selfDefendingFunctionName);\n NodeAppender_1.NodeAppender.prepend(selfDefendingFunctionHostNode, customCodeHelper.getNode());\n });\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction, (customCodeHelper) => {\n customCodeHelper.initialize(this.appendEvent, callsControllerFunctionName);\n NodeAppender_1.NodeAppender.prepend(callsControllerHostNode, customCodeHelper.getNode());\n });\n }\n initialize() {\n this.customCodeHelpers = new Map();\n if (!this.options.selfDefending) {\n return;\n }\n const selfDefendingUnicodeCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.SelfDefendingUnicode);\n const callsControllerFunctionCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction);\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.SelfDefendingUnicode, selfDefendingUnicodeCodeHelper);\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.CallsControllerFunction, callsControllerFunctionCodeHelper);\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof Map !== \"undefined\" && Map) === \"function\" ? _a : Object)\n], SelfDefendingCodeHelperGroup.prototype, \"customCodeHelpers\", void 0);\nSelfDefendingCodeHelperGroup = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomCodeHelper)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof TCustomCodeHelperFactory_1.TCustomCodeHelperFactory !== \"undefined\" && TCustomCodeHelperFactory_1.TCustomCodeHelperFactory) === \"function\" ? _b : Object, typeof (_c = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], SelfDefendingCodeHelperGroup);\nexports.SelfDefendingCodeHelperGroup = SelfDefendingCodeHelperGroup;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelfDefendingNoEvalTemplate = void 0;\nfunction SelfDefendingNoEvalTemplate() {\n return `\n const {selfDefendingFunctionName} = {callControllerFunctionName}(this, function () {\n {globalVariableTemplate}\n \n const test = function () {\n const regExp = new that.RegExp('^([^ ]+( +[^ ]+)+)+[^ ]}');\n \n return !regExp.test({selfDefendingFunctionName});\n };\n \n return test();\n });\n \n {selfDefendingFunctionName}();\n `;\n}\nexports.SelfDefendingNoEvalTemplate = SelfDefendingNoEvalTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelfDefendingTemplate = void 0;\nfunction SelfDefendingTemplate() {\n return `\n const {selfDefendingFunctionName} = {callControllerFunctionName}(this, function () {\n const test = function () {\n const regExp = test\n .constructor('return /\" + this + \"/')()\n .constructor('^([^ ]+( +[^ ]+)+)+[^ ]}');\n \n return !regExp.test({selfDefendingFunctionName});\n };\n \n return test();\n });\n \n {selfDefendingFunctionName}();\n `;\n}\nexports.SelfDefendingTemplate = SelfDefendingTemplate;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayCallsWrapperBase64CodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst AtobTemplate_1 = require(\"./templates/string-array-calls-wrapper/AtobTemplate\");\nconst StringArrayBase64DecodeTemplate_1 = require(\"./templates/string-array-calls-wrapper/StringArrayBase64DecodeTemplate\");\nconst StringArrayCallsWrapperCodeHelper_1 = require(\"./StringArrayCallsWrapperCodeHelper\");\nlet StringArrayCallsWrapperBase64CodeHelper = class StringArrayCallsWrapperBase64CodeHelper extends StringArrayCallsWrapperCodeHelper_1.StringArrayCallsWrapperCodeHelper {\n getDecodeStringArrayTemplate() {\n const atobFunctionName = this.randomGenerator.getRandomString(6);\n const atobPolyfill = this.customCodeHelperFormatter.formatTemplate(AtobTemplate_1.AtobTemplate(), {\n atobFunctionName: atobFunctionName\n });\n const selfDefendingCode = this.getSelfDefendingTemplate();\n return this.customCodeHelperFormatter.formatTemplate(StringArrayBase64DecodeTemplate_1.StringArrayBase64DecodeTemplate(this.randomGenerator), {\n atobPolyfill,\n atobFunctionName,\n selfDefendingCode,\n stringArrayCallsWrapperName: this.stringArrayCallsWrapperName\n });\n }\n};\nStringArrayCallsWrapperBase64CodeHelper = __decorate([\n inversify_1.injectable()\n], StringArrayCallsWrapperBase64CodeHelper);\nexports.StringArrayCallsWrapperBase64CodeHelper = StringArrayCallsWrapperBase64CodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayCallsWrapperCodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst ICustomCodeHelperObfuscator_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperObfuscator\");\nconst IEscapeSequenceEncoder_1 = require(\"../../interfaces/utils/IEscapeSequenceEncoder\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst SelfDefendingTemplate_1 = require(\"./templates/string-array-calls-wrapper/SelfDefendingTemplate\");\nconst StringArrayCallsWrapperTemplate_1 = require(\"./templates/string-array-calls-wrapper/StringArrayCallsWrapperTemplate\");\nconst AbstractCustomCodeHelper_1 = require(\"../AbstractCustomCodeHelper\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet StringArrayCallsWrapperCodeHelper = class StringArrayCallsWrapperCodeHelper extends AbstractCustomCodeHelper_1.AbstractCustomCodeHelper {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options, escapeSequenceEncoder) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options);\n this.escapeSequenceEncoder = escapeSequenceEncoder;\n }\n initialize(stringArrayName, stringArrayCallsWrapperName, indexShiftAmount) {\n this.stringArrayName = stringArrayName;\n this.stringArrayCallsWrapperName = stringArrayCallsWrapperName;\n this.indexShiftAmount = indexShiftAmount;\n }\n getNodeStructure(codeHelperTemplate) {\n return NodeUtils_1.NodeUtils.convertCodeToStructure(codeHelperTemplate);\n }\n getCodeHelperTemplate() {\n const decodeCodeHelperTemplate = this.getDecodeStringArrayTemplate();\n const preservedNames = [`^${this.stringArrayName}$`];\n return this.customCodeHelperObfuscator.obfuscateTemplate(this.customCodeHelperFormatter.formatTemplate(StringArrayCallsWrapperTemplate_1.StringArrayCallsWrapperTemplate(), {\n decodeCodeHelperTemplate,\n stringArrayCallsWrapperName: this.stringArrayCallsWrapperName,\n stringArrayName: this.stringArrayName,\n indexShiftAmount: this.indexShiftAmount\n }), {\n reservedNames: preservedNames\n });\n }\n getDecodeStringArrayTemplate() {\n return '';\n }\n getSelfDefendingTemplate() {\n if (!this.options.selfDefending) {\n return '';\n }\n return this.customCodeHelperFormatter.formatTemplate(SelfDefendingTemplate_1.SelfDefendingTemplate(this.randomGenerator, this.escapeSequenceEncoder), {\n stringArrayCallsWrapperName: this.stringArrayCallsWrapperName,\n stringArrayName: this.stringArrayName\n });\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Number)\n], StringArrayCallsWrapperCodeHelper.prototype, \"indexShiftAmount\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringArrayCallsWrapperCodeHelper.prototype, \"stringArrayName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringArrayCallsWrapperCodeHelper.prototype, \"stringArrayCallsWrapperName\", void 0);\nStringArrayCallsWrapperCodeHelper = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IEscapeSequenceEncoder)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator !== \"undefined\" && ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object, typeof (_f = typeof IEscapeSequenceEncoder_1.IEscapeSequenceEncoder !== \"undefined\" && IEscapeSequenceEncoder_1.IEscapeSequenceEncoder) === \"function\" ? _f : Object])\n], StringArrayCallsWrapperCodeHelper);\nexports.StringArrayCallsWrapperCodeHelper = StringArrayCallsWrapperCodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayCallsWrapperRc4CodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst AtobTemplate_1 = require(\"./templates/string-array-calls-wrapper/AtobTemplate\");\nconst Rc4Template_1 = require(\"./templates/string-array-calls-wrapper/Rc4Template\");\nconst StringArrayRC4DecodeTemplate_1 = require(\"./templates/string-array-calls-wrapper/StringArrayRC4DecodeTemplate\");\nconst StringArrayCallsWrapperCodeHelper_1 = require(\"./StringArrayCallsWrapperCodeHelper\");\nlet StringArrayCallsWrapperRc4CodeHelper = class StringArrayCallsWrapperRc4CodeHelper extends StringArrayCallsWrapperCodeHelper_1.StringArrayCallsWrapperCodeHelper {\n getDecodeStringArrayTemplate() {\n const atobFunctionName = this.randomGenerator.getRandomString(6);\n const atobPolyfill = this.customCodeHelperFormatter.formatTemplate(AtobTemplate_1.AtobTemplate(), {\n atobFunctionName\n });\n const rc4Polyfill = this.customCodeHelperFormatter.formatTemplate(Rc4Template_1.Rc4Template(), {\n atobFunctionName\n });\n const selfDefendingCode = this.getSelfDefendingTemplate();\n return this.customCodeHelperFormatter.formatTemplate(StringArrayRC4DecodeTemplate_1.StringArrayRC4DecodeTemplate(this.randomGenerator), {\n atobPolyfill,\n rc4Polyfill,\n selfDefendingCode,\n stringArrayCallsWrapperName: this.stringArrayCallsWrapperName\n });\n }\n};\nStringArrayCallsWrapperRc4CodeHelper = __decorate([\n inversify_1.injectable()\n], StringArrayCallsWrapperRc4CodeHelper);\nexports.StringArrayCallsWrapperRc4CodeHelper = StringArrayCallsWrapperRc4CodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayCodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst ICustomCodeHelperObfuscator_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperObfuscator\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IStringArrayStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayStorage\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst StringArrayTemplate_1 = require(\"./templates/string-array/StringArrayTemplate\");\nconst AbstractCustomCodeHelper_1 = require(\"../AbstractCustomCodeHelper\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nconst StringUtils_1 = require(\"../../utils/StringUtils\");\nlet StringArrayCodeHelper = class StringArrayCodeHelper extends AbstractCustomCodeHelper_1.AbstractCustomCodeHelper {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options);\n }\n initialize(stringArrayStorage, stringArrayName) {\n this.stringArrayStorage = stringArrayStorage;\n this.stringArrayName = stringArrayName;\n }\n getNodeStructure(codeHelperTemplate) {\n return NodeUtils_1.NodeUtils.convertCodeToStructure(codeHelperTemplate);\n }\n getCodeHelperTemplate() {\n return this.customCodeHelperFormatter.formatTemplate(StringArrayTemplate_1.StringArrayTemplate(), {\n stringArrayName: this.stringArrayName,\n stringArrayStorageItems: this.getEncodedStringArrayStorageItems()\n });\n }\n getEncodedStringArrayStorageItems() {\n return Array\n .from(this.stringArrayStorage.getStorage().values())\n .map((stringArrayStorageItemData) => {\n const escapedEncodedValue = StringUtils_1.StringUtils.escapeJsString(stringArrayStorageItemData.encodedValue);\n return `'${escapedEncodedValue}'`;\n })\n .toString();\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof IStringArrayStorage_1.IStringArrayStorage !== \"undefined\" && IStringArrayStorage_1.IStringArrayStorage) === \"function\" ? _a : Object)\n], StringArrayCodeHelper.prototype, \"stringArrayStorage\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringArrayCodeHelper.prototype, \"stringArrayName\", void 0);\nStringArrayCodeHelper = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _c : Object, typeof (_d = typeof ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator !== \"undefined\" && ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator) === \"function\" ? _d : Object, typeof (_e = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _e : Object, typeof (_f = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _f : Object])\n], StringArrayCodeHelper);\nexports.StringArrayCodeHelper = StringArrayCodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayRotateFunctionCodeHelper = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst ICustomCodeHelperObfuscator_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperObfuscator\");\nconst IEscapeSequenceEncoder_1 = require(\"../../interfaces/utils/IEscapeSequenceEncoder\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst SelfDefendingTemplate_1 = require(\"./templates/string-array-rotate-function/SelfDefendingTemplate\");\nconst StringArrayRotateFunctionTemplate_1 = require(\"./templates/string-array-rotate-function/StringArrayRotateFunctionTemplate\");\nconst AbstractCustomCodeHelper_1 = require(\"../AbstractCustomCodeHelper\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nconst NumberUtils_1 = require(\"../../utils/NumberUtils\");\nlet StringArrayRotateFunctionCodeHelper = class StringArrayRotateFunctionCodeHelper extends AbstractCustomCodeHelper_1.AbstractCustomCodeHelper {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options, escapeSequenceEncoder) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, customCodeHelperObfuscator, randomGenerator, options);\n this.escapeSequenceEncoder = escapeSequenceEncoder;\n }\n initialize(stringArrayName, stringArrayRotationAmount) {\n this.stringArrayName = stringArrayName;\n this.stringArrayRotationAmount = stringArrayRotationAmount;\n }\n getNodeStructure(codeHelperTemplate) {\n return NodeUtils_1.NodeUtils.convertCodeToStructure(codeHelperTemplate);\n }\n getCodeHelperTemplate() {\n const timesName = this.identifierNamesGenerator.generateNext();\n const whileFunctionName = this.identifierNamesGenerator.generateNext();\n const preservedNames = [`^${this.stringArrayName}$`];\n let code = '';\n if (this.options.selfDefending) {\n code = this.customCodeHelperFormatter.formatTemplate(SelfDefendingTemplate_1.SelfDefendingTemplate(this.escapeSequenceEncoder), {\n timesName,\n whileFunctionName\n });\n }\n else {\n code = `${whileFunctionName}(++${timesName})`;\n }\n return this.customCodeHelperObfuscator.obfuscateTemplate(this.customCodeHelperFormatter.formatTemplate(StringArrayRotateFunctionTemplate_1.StringArrayRotateFunctionTemplate(), {\n code,\n timesName,\n whileFunctionName,\n stringArrayName: this.stringArrayName,\n stringArrayRotationAmount: NumberUtils_1.NumberUtils.toHex(this.stringArrayRotationAmount)\n }), {\n reservedNames: preservedNames\n });\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringArrayRotateFunctionCodeHelper.prototype, \"stringArrayName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Number)\n], StringArrayRotateFunctionCodeHelper.prototype, \"stringArrayRotationAmount\", void 0);\nStringArrayRotateFunctionCodeHelper = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperObfuscator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IEscapeSequenceEncoder)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator !== \"undefined\" && ICustomCodeHelperObfuscator_1.ICustomCodeHelperObfuscator) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object, typeof (_f = typeof IEscapeSequenceEncoder_1.IEscapeSequenceEncoder !== \"undefined\" && IEscapeSequenceEncoder_1.IEscapeSequenceEncoder) === \"function\" ? _f : Object])\n], StringArrayRotateFunctionCodeHelper);\nexports.StringArrayRotateFunctionCodeHelper = StringArrayRotateFunctionCodeHelper;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar StringArrayCodeHelperGroup_1, _a, _b, _c, _d, _e, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayCodeHelperGroup = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TCustomCodeHelperFactory_1 = require(\"../../../types/container/custom-code-helpers/TCustomCodeHelperFactory\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst IStringArrayStorage_1 = require(\"../../../interfaces/storages/string-array-transformers/IStringArrayStorage\");\nconst Initializable_1 = require(\"../../../decorators/Initializable\");\nconst CustomCodeHelper_1 = require(\"../../../enums/custom-code-helpers/CustomCodeHelper\");\nconst ObfuscationEvent_1 = require(\"../../../enums/event-emitters/ObfuscationEvent\");\nconst StringArrayEncoding_1 = require(\"../../../enums/node-transformers/string-array-transformers/StringArrayEncoding\");\nconst AbstractCustomCodeHelperGroup_1 = require(\"../../AbstractCustomCodeHelperGroup\");\nconst NodeAppender_1 = require(\"../../../node/NodeAppender\");\nlet StringArrayCodeHelperGroup = StringArrayCodeHelperGroup_1 = class StringArrayCodeHelperGroup extends AbstractCustomCodeHelperGroup_1.AbstractCustomCodeHelperGroup {\n constructor(customCodeHelperFactory, stringArrayStorage, identifierNamesGeneratorFactory, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, randomGenerator, options);\n this.appendEvent = ObfuscationEvent_1.ObfuscationEvent.AfterObfuscation;\n this.customCodeHelperFactory = customCodeHelperFactory;\n this.stringArrayStorage = stringArrayStorage;\n }\n appendNodes(nodeWithStatements, callsGraphData) {\n if (!this.stringArrayStorage.getLength()) {\n return;\n }\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.StringArray, (customCodeHelper) => {\n NodeAppender_1.NodeAppender.prepend(nodeWithStatements, customCodeHelper.getNode());\n });\n const stringArrayEncodingsLength = this.options.stringArrayEncoding.length;\n for (let i = 0; i < stringArrayEncodingsLength; i++) {\n const stringArrayEncoding = this.options.stringArrayEncoding[i];\n const stringArrayCallsWrapperCodeHelperName = this.getStringArrayCallsWrapperCodeHelperName(stringArrayEncoding);\n this.appendCustomNodeIfExist(stringArrayCallsWrapperCodeHelperName, (customCodeHelper) => {\n NodeAppender_1.NodeAppender.insertAtIndex(nodeWithStatements, customCodeHelper.getNode(), i + 1);\n });\n }\n this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.StringArrayRotateFunction, (customCodeHelper) => {\n NodeAppender_1.NodeAppender.insertAtIndex(nodeWithStatements, customCodeHelper.getNode(), 1);\n });\n }\n initialize() {\n this.customCodeHelpers = new Map();\n if (!this.options.stringArray) {\n return;\n }\n const stringArrayCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.StringArray);\n const stringArrayName = this.stringArrayStorage.getStorageName();\n stringArrayCodeHelper.initialize(this.stringArrayStorage, stringArrayName);\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.StringArray, stringArrayCodeHelper);\n for (const stringArrayEncoding of this.options.stringArrayEncoding) {\n const stringArrayCallsWrapperCodeHelperName = this.getStringArrayCallsWrapperCodeHelperName(stringArrayEncoding);\n const stringArrayCallsWrapperCodeHelper = this.customCodeHelperFactory(stringArrayCallsWrapperCodeHelperName);\n const stringArrayCallsWrapperName = this.stringArrayStorage.getStorageCallsWrapperName(stringArrayEncoding);\n stringArrayCallsWrapperCodeHelper.initialize(stringArrayName, stringArrayCallsWrapperName, this.stringArrayStorage.getIndexShiftAmount());\n this.customCodeHelpers.set(stringArrayCallsWrapperCodeHelperName, stringArrayCallsWrapperCodeHelper);\n }\n const stringArrayRotateFunctionCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.StringArrayRotateFunction);\n stringArrayRotateFunctionCodeHelper.initialize(stringArrayName, this.stringArrayStorage.getRotationAmount());\n if (this.options.rotateStringArray) {\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.StringArrayRotateFunction, stringArrayRotateFunctionCodeHelper);\n }\n }\n getStringArrayCallsWrapperCodeHelperName(stringArrayEncoding) {\n var _a;\n return (_a = StringArrayCodeHelperGroup_1\n .stringArrayCallsWrapperCodeHelperMap.get(stringArrayEncoding)) !== null && _a !== void 0 ? _a : CustomCodeHelper_1.CustomCodeHelper.StringArrayCallsWrapper;\n }\n};\nStringArrayCodeHelperGroup.stringArrayCallsWrapperCodeHelperMap = new Map([\n [StringArrayEncoding_1.StringArrayEncoding.None, CustomCodeHelper_1.CustomCodeHelper.StringArrayCallsWrapper],\n [StringArrayEncoding_1.StringArrayEncoding.Base64, CustomCodeHelper_1.CustomCodeHelper.StringArrayCallsWrapperBase64],\n [StringArrayEncoding_1.StringArrayEncoding.Rc4, CustomCodeHelper_1.CustomCodeHelper.StringArrayCallsWrapperRc4]\n]);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof Map !== \"undefined\" && Map) === \"function\" ? _a : Object)\n], StringArrayCodeHelperGroup.prototype, \"customCodeHelpers\", void 0);\nStringArrayCodeHelperGroup = StringArrayCodeHelperGroup_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomCodeHelper)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorage)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof TCustomCodeHelperFactory_1.TCustomCodeHelperFactory !== \"undefined\" && TCustomCodeHelperFactory_1.TCustomCodeHelperFactory) === \"function\" ? _b : Object, typeof (_c = typeof IStringArrayStorage_1.IStringArrayStorage !== \"undefined\" && IStringArrayStorage_1.IStringArrayStorage) === \"function\" ? _c : Object, typeof (_d = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _d : Object, typeof (_e = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _e : Object, typeof (_f = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _f : Object])\n], StringArrayCodeHelperGroup);\nexports.StringArrayCodeHelperGroup = StringArrayCodeHelperGroup;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AtobTemplate = void 0;\nconst Base64AlphabetSwapped_1 = require(\"../../../../constants/Base64AlphabetSwapped\");\nfunction AtobTemplate() {\n return `\n var {atobFunctionName} = function (input) {\n const chars = '${Base64AlphabetSwapped_1.base64alphabetSwapped}';\n\n const str = String(input).replace(/=+$/, '');\n let output = '';\n for (\n let bc = 0, bs, buffer, idx = 0;\n buffer = str.charAt(idx++);\n ~buffer && (bs = bc % 4 ? bs * 64 + buffer : buffer,\n bc++ % 4) ? output += String.fromCharCode(255 & bs >> (-2 * bc & 6)) : 0\n ) {\n buffer = chars.indexOf(buffer);\n }\n return output;\n };\n `;\n}\nexports.AtobTemplate = AtobTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Rc4Template = void 0;\nfunction Rc4Template() {\n return `\n const rc4 = function (str, key) {\n let s = [], j = 0, x, res = '', newStr = '';\n \n str = {atobFunctionName}(str);\n \n for (let k = 0, length = str.length; k < length; k++) {\n newStr += '%' + ('00' + str.charCodeAt(k).toString(16)).slice(-2);\n }\n \n str = decodeURIComponent(newStr);\n \t \n let i;\n \t \n for (i = 0; i < 256; i++) {\n s[i] = i;\n }\n \n for (i = 0; i < 256; i++) {\n j = (j + s[i] + key.charCodeAt(i % key.length)) % 256;\n x = s[i];\n s[i] = s[j];\n s[j] = x;\n }\n \n i = 0;\n j = 0;\n \n for (let y = 0; y < str.length; y++) {\n i = (i + 1) % 256;\n j = (j + s[i]) % 256;\n x = s[i];\n s[i] = s[j];\n s[j] = x;\n res += String.fromCharCode(str.charCodeAt(y) ^ s[(s[i] + s[j]) % 256]);\n }\n \n return res;\n }\n `;\n}\nexports.Rc4Template = Rc4Template;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelfDefendingTemplate = void 0;\nfunction SelfDefendingTemplate(randomGenerator, escapeSequenceEncoder) {\n const identifierLength = 6;\n const rc4BytesIdentifier = randomGenerator.getRandomString(identifierLength);\n const statesIdentifier = randomGenerator.getRandomString(identifierLength);\n const newStateIdentifier = randomGenerator.getRandomString(identifierLength);\n const firstStateIdentifier = randomGenerator.getRandomString(identifierLength);\n const secondStateIdentifier = randomGenerator.getRandomString(identifierLength);\n const checkStateIdentifier = randomGenerator.getRandomString(identifierLength);\n const runStateIdentifier = randomGenerator.getRandomString(identifierLength);\n const getStateIdentifier = randomGenerator.getRandomString(identifierLength);\n const stateResultIdentifier = randomGenerator.getRandomString(identifierLength);\n return `\n const StatesClass = function (${rc4BytesIdentifier}) {\n this.${rc4BytesIdentifier} = ${rc4BytesIdentifier};\n this.${statesIdentifier} = [1, 0, 0];\n this.${newStateIdentifier} = function(){return 'newState';};\n this.${firstStateIdentifier} = '${escapeSequenceEncoder.encode('\\\\w+ *\\\\(\\\\) *{\\\\w+ *', true)}';\n this.${secondStateIdentifier} = '${escapeSequenceEncoder.encode('[\\'|\"].+[\\'|\"];? *}', true)}';\n };\n \n StatesClass.prototype.${checkStateIdentifier} = function () {\n const regExp = new RegExp(this.${firstStateIdentifier} + this.${secondStateIdentifier});\n const expression = regExp.test(this.${newStateIdentifier}.toString())\n ? --this.${statesIdentifier}[1]\n : --this.${statesIdentifier}[0];\n \n return this.${runStateIdentifier}(expression);\n };\n \n StatesClass.prototype.${runStateIdentifier} = function (${stateResultIdentifier}) {\n if (!Boolean(~${stateResultIdentifier})) {\n return ${stateResultIdentifier};\n }\n \n return this.${getStateIdentifier}(this.${rc4BytesIdentifier});\n };\n\n StatesClass.prototype.${getStateIdentifier} = function (${rc4BytesIdentifier}) {\n for (let i = 0, len = this.${statesIdentifier}.length; i < len; i++) {\n this.${statesIdentifier}.push(Math.round(Math.random()));\n len = this.${statesIdentifier}.length;\n }\n \n return ${rc4BytesIdentifier}(this.${statesIdentifier}[0]);\n };\n\n new StatesClass({stringArrayCallsWrapperName}).${checkStateIdentifier}();\n `;\n}\nexports.SelfDefendingTemplate = SelfDefendingTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayBase64DecodeTemplate = void 0;\nfunction StringArrayBase64DecodeTemplate(randomGenerator) {\n const identifierLength = 6;\n const initializedIdentifier = randomGenerator.getRandomString(identifierLength);\n const base64DecodeFunctionIdentifier = randomGenerator.getRandomString(identifierLength);\n const dataIdentifier = randomGenerator.getRandomString(identifierLength);\n return `\n if ({stringArrayCallsWrapperName}.${initializedIdentifier} === undefined) {\n {atobPolyfill}\n \n {stringArrayCallsWrapperName}.${base64DecodeFunctionIdentifier} = function (str) {\n const string = {atobFunctionName}(str);\n let newStringChars = [];\n \n for (let i = 0, length = string.length; i < length; i++) {\n newStringChars += '%' + ('00' + string.charCodeAt(i).toString(16)).slice(-2);\n }\n \n return decodeURIComponent(newStringChars);\n };\n \n {stringArrayCallsWrapperName}.${dataIdentifier} = {};\n \n {stringArrayCallsWrapperName}.${initializedIdentifier} = true;\n }\n \n const cachedValue = {stringArrayCallsWrapperName}.${dataIdentifier}[index];\n \n if (cachedValue === undefined) {\n {selfDefendingCode}\n \n value = {stringArrayCallsWrapperName}.${base64DecodeFunctionIdentifier}(value);\n {stringArrayCallsWrapperName}.${dataIdentifier}[index] = value;\n } else {\n value = cachedValue;\n }\n `;\n}\nexports.StringArrayBase64DecodeTemplate = StringArrayBase64DecodeTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayCallsWrapperTemplate = void 0;\nfunction StringArrayCallsWrapperTemplate() {\n return `\n const {stringArrayCallsWrapperName} = function (index, key) {\n index = index - {indexShiftAmount};\n \n let value = {stringArrayName}[index];\n \n {decodeCodeHelperTemplate}\n \n return value;\n };\n `;\n}\nexports.StringArrayCallsWrapperTemplate = StringArrayCallsWrapperTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayRC4DecodeTemplate = void 0;\nfunction StringArrayRC4DecodeTemplate(randomGenerator) {\n const identifierLength = 6;\n const initializedIdentifier = randomGenerator.getRandomString(identifierLength);\n const rc4Identifier = randomGenerator.getRandomString(identifierLength);\n const dataIdentifier = randomGenerator.getRandomString(identifierLength);\n const onceIdentifier = randomGenerator.getRandomString(identifierLength);\n return `\n if ({stringArrayCallsWrapperName}.${initializedIdentifier} === undefined) {\n {atobPolyfill}\n \n {rc4Polyfill}\n {stringArrayCallsWrapperName}.${rc4Identifier} = rc4;\n \n {stringArrayCallsWrapperName}.${dataIdentifier} = {};\n \n {stringArrayCallsWrapperName}.${initializedIdentifier} = true;\n }\n \n const cachedValue = {stringArrayCallsWrapperName}.${dataIdentifier}[index];\n\n if (cachedValue === undefined) {\n if ({stringArrayCallsWrapperName}.${onceIdentifier} === undefined) {\n {selfDefendingCode}\n \n {stringArrayCallsWrapperName}.${onceIdentifier} = true;\n }\n \n value = {stringArrayCallsWrapperName}.${rc4Identifier}(value, key);\n {stringArrayCallsWrapperName}.${dataIdentifier}[index] = value;\n } else {\n value = cachedValue;\n }\n `;\n}\nexports.StringArrayRC4DecodeTemplate = StringArrayRC4DecodeTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelfDefendingTemplate = void 0;\nfunction SelfDefendingTemplate(escapeSequenceEncoder) {\n return `\n const selfDefendingFunc = function () {\n const object = {\n data: {\n key: 'cookie',\n value: 'timeout'\n },\n setCookie: function (options, name, value, document) {\n document = document || {};\n \n let updatedCookie = name + \"=\" + value;\n let i = 0;\n \n for (let i = 0, len = options.length; i < len; i++) {\n const propName = options[i];\n \n updatedCookie += \"; \" + propName;\n \n const propValue = options[propName];\n \n options.push(propValue);\n len = options.length;\n \n if (propValue !== true) {\n updatedCookie += \"=\" + propValue;\n }\n }\n\n document['cookie'] = updatedCookie;\n },\n removeCookie: function(){return 'dev';},\n getCookie: function (document, name) {\n document = document || function (value) { return value };\n const matches = document(new RegExp(\n \"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\n ));\n \n const func = function (param1, param2) {\n param1(++param2);\n };\n \n func({whileFunctionName}, {timesName});\n \n return matches ? decodeURIComponent(matches[1]) : undefined;\n }\n };\n \n const test1 = function () {\n const regExp = new RegExp('${escapeSequenceEncoder.encode('\\\\w+ *\\\\(\\\\) *{\\\\w+ *[\\'|\"].+[\\'|\"];? *}', true)}');\n \n return regExp.test(object.removeCookie.toString());\n };\n \n object['updateCookie'] = test1;\n \n let cookie = '';\n const result = object['updateCookie']();\n \n if (!result) {\n object['setCookie'](['*'], 'counter', 1);\n } else if (result) {\n cookie = object['getCookie'](null, 'counter');\n } else {\n object['removeCookie']();\n }\n };\n \n selfDefendingFunc();\n `;\n}\nexports.SelfDefendingTemplate = SelfDefendingTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayRotateFunctionTemplate = void 0;\nfunction StringArrayRotateFunctionTemplate() {\n return `\n (function (array, {timesName}) {\n const {whileFunctionName} = function (times) {\n while (--times) {\n array['push'](array['shift']());\n }\n };\n \n {code}\n })({stringArrayName}, {stringArrayRotationAmount});\n `;\n}\nexports.StringArrayRotateFunctionTemplate = StringArrayRotateFunctionTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayTemplate = void 0;\nfunction StringArrayTemplate() {\n return `\n const {stringArrayName} = [{stringArrayStorageItems}];\n `;\n}\nexports.StringArrayTemplate = StringArrayTemplate;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractCustomNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nlet AbstractCustomNode = class AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n this.cachedNode = null;\n this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);\n this.customCodeHelperFormatter = customCodeHelperFormatter;\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n getNode() {\n if (!this.cachedNode) {\n this.cachedNode = this.customCodeHelperFormatter.formatStructure(this.getNodeStructure());\n }\n return this.cachedNode;\n }\n};\nAbstractCustomNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], AbstractCustomNode);\nexports.AbstractCustomNode = AbstractCustomNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BinaryExpressionFunctionNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst AbstractCustomNode_1 = require(\"../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet BinaryExpressionFunctionNode = class BinaryExpressionFunctionNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n }\n initialize(operator) {\n this.operator = operator;\n }\n getNodeStructure() {\n const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.functionExpressionNode([\n NodeFactory_1.NodeFactory.identifierNode('x'),\n NodeFactory_1.NodeFactory.identifierNode('y')\n ], NodeFactory_1.NodeFactory.blockStatementNode([\n NodeFactory_1.NodeFactory.returnStatementNode(NodeFactory_1.NodeFactory.binaryExpressionNode(this.operator, NodeFactory_1.NodeFactory.identifierNode('x'), NodeFactory_1.NodeFactory.identifierNode('y')))\n ])));\n NodeUtils_1.NodeUtils.parentizeAst(structure);\n return [structure];\n }\n};\nBinaryExpressionFunctionNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], BinaryExpressionFunctionNode);\nexports.BinaryExpressionFunctionNode = BinaryExpressionFunctionNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlockStatementControlFlowFlatteningNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst StringSeparator_1 = require(\"../../enums/StringSeparator\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst AbstractCustomNode_1 = require(\"../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet BlockStatementControlFlowFlatteningNode = class BlockStatementControlFlowFlatteningNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n }\n initialize(blockStatementBody, shuffledKeys, originalKeysIndexesInShuffledArray) {\n this.blockStatementBody = blockStatementBody;\n this.shuffledKeys = shuffledKeys;\n this.originalKeysIndexesInShuffledArray = originalKeysIndexesInShuffledArray;\n }\n getNodeStructure() {\n const controllerIdentifierName = this.randomGenerator.getRandomString(6);\n const indexIdentifierName = this.randomGenerator.getRandomString(6);\n const structure = NodeFactory_1.NodeFactory.blockStatementNode([\n NodeFactory_1.NodeFactory.variableDeclarationNode([\n NodeFactory_1.NodeFactory.variableDeclaratorNode(NodeFactory_1.NodeFactory.identifierNode(controllerIdentifierName), NodeFactory_1.NodeFactory.callExpressionNode(NodeFactory_1.NodeFactory.memberExpressionNode(NodeFactory_1.NodeFactory.literalNode(this.originalKeysIndexesInShuffledArray.join(StringSeparator_1.StringSeparator.VerticalLine)), NodeFactory_1.NodeFactory.identifierNode('split')), [\n NodeFactory_1.NodeFactory.literalNode(StringSeparator_1.StringSeparator.VerticalLine)\n ]))\n ], 'const'),\n NodeFactory_1.NodeFactory.variableDeclarationNode([\n NodeFactory_1.NodeFactory.variableDeclaratorNode(NodeFactory_1.NodeFactory.identifierNode(indexIdentifierName), NodeFactory_1.NodeFactory.literalNode(0))\n ], 'let'),\n NodeFactory_1.NodeFactory.whileStatementNode(NodeFactory_1.NodeFactory.literalNode(true), NodeFactory_1.NodeFactory.blockStatementNode([\n NodeFactory_1.NodeFactory.switchStatementNode(NodeFactory_1.NodeFactory.memberExpressionNode(NodeFactory_1.NodeFactory.identifierNode(controllerIdentifierName), NodeFactory_1.NodeFactory.updateExpressionNode('++', NodeFactory_1.NodeFactory.identifierNode(indexIdentifierName)), true), this.shuffledKeys.map((key, index) => {\n const statement = this.blockStatementBody[key];\n const consequent = [statement];\n if (!NodeGuards_1.NodeGuards.isReturnStatementNode(statement)) {\n consequent.push(NodeFactory_1.NodeFactory.continueStatement());\n }\n return NodeFactory_1.NodeFactory.switchCaseNode(NodeFactory_1.NodeFactory.literalNode(String(index)), consequent);\n })),\n NodeFactory_1.NodeFactory.breakStatement()\n ]))\n ]);\n NodeUtils_1.NodeUtils.parentizeAst(structure);\n return [structure];\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Array)\n], BlockStatementControlFlowFlatteningNode.prototype, \"blockStatementBody\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Array)\n], BlockStatementControlFlowFlatteningNode.prototype, \"originalKeysIndexesInShuffledArray\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Array)\n], BlockStatementControlFlowFlatteningNode.prototype, \"shuffledKeys\", void 0);\nBlockStatementControlFlowFlatteningNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], BlockStatementControlFlowFlatteningNode);\nexports.BlockStatementControlFlowFlatteningNode = BlockStatementControlFlowFlatteningNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallExpressionFunctionNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst AbstractCustomNode_1 = require(\"../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet CallExpressionFunctionNode = class CallExpressionFunctionNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n }\n initialize(expressionArguments) {\n this.expressionArguments = expressionArguments;\n }\n getNodeStructure() {\n const calleeIdentifier = NodeFactory_1.NodeFactory.identifierNode('callee');\n const params = [];\n const argumentsLength = this.expressionArguments.length;\n for (let i = 0; i < argumentsLength; i++) {\n params.push(NodeFactory_1.NodeFactory.identifierNode(`param${i + 1}`));\n }\n const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.functionExpressionNode([\n calleeIdentifier,\n ...params\n ], NodeFactory_1.NodeFactory.blockStatementNode([\n NodeFactory_1.NodeFactory.returnStatementNode(NodeFactory_1.NodeFactory.callExpressionNode(calleeIdentifier, params))\n ])));\n NodeUtils_1.NodeUtils.parentizeAst(structure);\n return [structure];\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Array)\n], CallExpressionFunctionNode.prototype, \"expressionArguments\", void 0);\nCallExpressionFunctionNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], CallExpressionFunctionNode);\nexports.CallExpressionFunctionNode = CallExpressionFunctionNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogicalExpressionFunctionNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst AbstractCustomNode_1 = require(\"../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet LogicalExpressionFunctionNode = class LogicalExpressionFunctionNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n }\n initialize(operator) {\n this.operator = operator;\n }\n getNodeStructure() {\n const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.functionExpressionNode([\n NodeFactory_1.NodeFactory.identifierNode('x'),\n NodeFactory_1.NodeFactory.identifierNode('y')\n ], NodeFactory_1.NodeFactory.blockStatementNode([\n NodeFactory_1.NodeFactory.returnStatementNode(NodeFactory_1.NodeFactory.logicalExpressionNode(this.operator, NodeFactory_1.NodeFactory.identifierNode('x'), NodeFactory_1.NodeFactory.identifierNode('y')))\n ])));\n NodeUtils_1.NodeUtils.parentizeAst(structure);\n return [structure];\n }\n};\nLogicalExpressionFunctionNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], LogicalExpressionFunctionNode);\nexports.LogicalExpressionFunctionNode = LogicalExpressionFunctionNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringLiteralNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst AbstractCustomNode_1 = require(\"../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nlet StringLiteralNode = class StringLiteralNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n }\n initialize(literalValue) {\n this.literalValue = literalValue;\n }\n getNodeStructure() {\n const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.literalNode(this.literalValue));\n return [structure];\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringLiteralNode.prototype, \"literalValue\", void 0);\nStringLiteralNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], StringLiteralNode);\nexports.StringLiteralNode = StringLiteralNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallExpressionControlFlowStorageCallNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../../decorators/Initializable\");\nconst AbstractCustomNode_1 = require(\"../../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../../node/NodeUtils\");\nlet CallExpressionControlFlowStorageCallNode = class CallExpressionControlFlowStorageCallNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n }\n initialize(controlFlowStorageName, controlFlowStorageKey, callee, expressionArguments) {\n this.controlFlowStorageName = controlFlowStorageName;\n this.controlFlowStorageKey = controlFlowStorageKey;\n this.callee = callee;\n this.expressionArguments = expressionArguments;\n }\n getNodeStructure() {\n const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.callExpressionNode(NodeFactory_1.NodeFactory.memberExpressionNode(NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageName), NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageKey)), [\n this.callee,\n ...this.expressionArguments\n ]));\n NodeUtils_1.NodeUtils.parentizeAst(structure);\n return [structure];\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof ESTree !== \"undefined\" && ESTree.Expression) === \"function\" ? _a : Object)\n], CallExpressionControlFlowStorageCallNode.prototype, \"callee\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], CallExpressionControlFlowStorageCallNode.prototype, \"controlFlowStorageKey\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], CallExpressionControlFlowStorageCallNode.prototype, \"controlFlowStorageName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Array)\n], CallExpressionControlFlowStorageCallNode.prototype, \"expressionArguments\", void 0);\nCallExpressionControlFlowStorageCallNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], CallExpressionControlFlowStorageCallNode);\nexports.CallExpressionControlFlowStorageCallNode = CallExpressionControlFlowStorageCallNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ControlFlowStorageNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TControlFlowStorage_1 = require(\"../../../types/storages/TControlFlowStorage\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../../decorators/Initializable\");\nconst AbstractCustomNode_1 = require(\"../../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nconst NodeUtils_1 = require(\"../../../node/NodeUtils\");\nlet ControlFlowStorageNode = class ControlFlowStorageNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n }\n initialize(controlFlowStorage) {\n this.controlFlowStorage = controlFlowStorage;\n }\n getNodeStructure() {\n const propertyNodes = Array\n .from(this.controlFlowStorage.getStorage())\n .map(([key, value]) => {\n const node = value.getNode()[0];\n if (!NodeGuards_1.NodeGuards.isExpressionStatementNode(node)) {\n throw new Error('Function node for control flow storage object should be passed inside the `ExpressionStatement` node!');\n }\n return NodeFactory_1.NodeFactory.propertyNode(NodeFactory_1.NodeFactory.identifierNode(key), node.expression);\n });\n let structure = NodeFactory_1.NodeFactory.variableDeclarationNode([\n NodeFactory_1.NodeFactory.variableDeclaratorNode(NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorage.getStorageId()), NodeFactory_1.NodeFactory.objectExpressionNode(propertyNodes))\n ], 'const');\n structure = NodeUtils_1.NodeUtils.parentizeAst(structure);\n return [structure];\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof TControlFlowStorage_1.TControlFlowStorage !== \"undefined\" && TControlFlowStorage_1.TControlFlowStorage) === \"function\" ? _a : Object)\n], ControlFlowStorageNode.prototype, \"controlFlowStorage\", void 0);\nControlFlowStorageNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], ControlFlowStorageNode);\nexports.ControlFlowStorageNode = ControlFlowStorageNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExpressionWithOperatorControlFlowStorageCallNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../../decorators/Initializable\");\nconst AbstractCustomNode_1 = require(\"../../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../../node/NodeUtils\");\nlet ExpressionWithOperatorControlFlowStorageCallNode = class ExpressionWithOperatorControlFlowStorageCallNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n }\n initialize(controlFlowStorageName, controlFlowStorageKey, leftValue, rightValue) {\n this.controlFlowStorageName = controlFlowStorageName;\n this.controlFlowStorageKey = controlFlowStorageKey;\n this.leftValue = leftValue;\n this.rightValue = rightValue;\n }\n getNodeStructure() {\n const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.callExpressionNode(NodeFactory_1.NodeFactory.memberExpressionNode(NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageName), NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageKey)), [\n this.leftValue,\n this.rightValue\n ]));\n NodeUtils_1.NodeUtils.parentizeAst(structure);\n return [structure];\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], ExpressionWithOperatorControlFlowStorageCallNode.prototype, \"controlFlowStorageKey\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], ExpressionWithOperatorControlFlowStorageCallNode.prototype, \"controlFlowStorageName\", void 0);\nExpressionWithOperatorControlFlowStorageCallNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], ExpressionWithOperatorControlFlowStorageCallNode);\nexports.ExpressionWithOperatorControlFlowStorageCallNode = ExpressionWithOperatorControlFlowStorageCallNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringLiteralControlFlowStorageCallNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../../../decorators/Initializable\");\nconst AbstractCustomNode_1 = require(\"../../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../../node/NodeUtils\");\nlet StringLiteralControlFlowStorageCallNode = class StringLiteralControlFlowStorageCallNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n }\n initialize(controlFlowStorageName, controlFlowStorageKey) {\n this.controlFlowStorageName = controlFlowStorageName;\n this.controlFlowStorageKey = controlFlowStorageKey;\n }\n getNodeStructure() {\n const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.memberExpressionNode(NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageName), NodeFactory_1.NodeFactory.identifierNode(this.controlFlowStorageKey)));\n NodeUtils_1.NodeUtils.parentizeAst(structure);\n return [structure];\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringLiteralControlFlowStorageCallNode.prototype, \"controlFlowStorageKey\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringLiteralControlFlowStorageCallNode.prototype, \"controlFlowStorageName\", void 0);\nStringLiteralControlFlowStorageCallNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], StringLiteralControlFlowStorageCallNode);\nexports.StringLiteralControlFlowStorageCallNode = StringLiteralControlFlowStorageCallNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlockStatementDeadCodeInjectionNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst AbstractCustomNode_1 = require(\"../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet BlockStatementDeadCodeInjectionNode = class BlockStatementDeadCodeInjectionNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n }\n initialize(blockStatementNode, deadCodeInjectionRootAstHostNode) {\n this.blockStatementNode = blockStatementNode;\n this.deadCodeInjectionRootAstHostNode = deadCodeInjectionRootAstHostNode;\n }\n getNode() {\n return this.getNodeStructure();\n }\n getNodeStructure() {\n const random1 = this.randomGenerator.getMathRandom() > 0.5;\n const random2 = this.randomGenerator.getMathRandom() > 0.5;\n const operator = random1 ? '===' : '!==';\n const leftString = this.randomGenerator.getRandomString(5);\n const rightString = random2 ? leftString : this.randomGenerator.getRandomString(5);\n const [consequent, alternate] = random1 === random2\n ? [this.blockStatementNode, this.deadCodeInjectionRootAstHostNode]\n : [this.deadCodeInjectionRootAstHostNode, this.blockStatementNode];\n const structure = NodeFactory_1.NodeFactory.blockStatementNode([\n NodeFactory_1.NodeFactory.ifStatementNode(NodeFactory_1.NodeFactory.binaryExpressionNode(operator, NodeFactory_1.NodeFactory.literalNode(leftString), NodeFactory_1.NodeFactory.literalNode(rightString)), consequent, alternate)\n ]);\n NodeUtils_1.NodeUtils.parentizeAst(structure);\n return [structure];\n }\n};\nBlockStatementDeadCodeInjectionNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], BlockStatementDeadCodeInjectionNode);\nexports.BlockStatementDeadCodeInjectionNode = BlockStatementDeadCodeInjectionNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectExpressionVariableDeclarationHostNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst AbstractCustomNode_1 = require(\"../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet ObjectExpressionVariableDeclarationHostNode = class ObjectExpressionVariableDeclarationHostNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n }\n initialize(lexicalScopeNode, properties) {\n this.lexicalScopeNode = lexicalScopeNode;\n this.properties = properties;\n }\n getNodeStructure() {\n const variableDeclarationName = NodeGuards_1.NodeGuards.isProgramNode(this.lexicalScopeNode)\n ? this.identifierNamesGenerator.generateForGlobalScope()\n : this.identifierNamesGenerator.generateForLexicalScope(this.lexicalScopeNode);\n const structure = NodeFactory_1.NodeFactory.variableDeclarationNode([\n NodeFactory_1.NodeFactory.variableDeclaratorNode(NodeFactory_1.NodeFactory.identifierNode(variableDeclarationName), NodeFactory_1.NodeFactory.objectExpressionNode(this.properties))\n ], 'const');\n return [structure];\n }\n};\nObjectExpressionVariableDeclarationHostNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], ObjectExpressionVariableDeclarationHostNode);\nexports.ObjectExpressionVariableDeclarationHostNode = ObjectExpressionVariableDeclarationHostNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar AbstractStringArrayCallNode_1, _a, _b, _c, _d, _e, _f, _g;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractStringArrayCallNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst TStringArrayIndexNodeFactory_1 = require(\"../../types/container/custom-nodes/string-array-index-nodes/TStringArrayIndexNodeFactory\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IStringArrayStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayStorage\");\nconst StringArrayIndexesType_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayIndexesType\");\nconst StringArrayIndexNode_1 = require(\"../../enums/custom-nodes/string-array-index-nodes/StringArrayIndexNode\");\nconst AbstractCustomNode_1 = require(\"../AbstractCustomNode\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeMetadata_1 = require(\"../../node/NodeMetadata\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nconst IArrayUtils_1 = require(\"../../interfaces/utils/IArrayUtils\");\nlet AbstractStringArrayCallNode = AbstractStringArrayCallNode_1 = class AbstractStringArrayCallNode extends AbstractCustomNode_1.AbstractCustomNode {\n constructor(identifierNamesGeneratorFactory, stringArrayIndexNodeFactory, customCodeHelperFormatter, stringArrayStorage, arrayUtils, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, customCodeHelperFormatter, randomGenerator, options);\n this.stringArrayIndexNodeFactory = stringArrayIndexNodeFactory;\n this.stringArrayStorage = stringArrayStorage;\n this.arrayUtils = arrayUtils;\n }\n getStringArrayIndexNode(index) {\n var _a;\n const isPositive = index >= 0;\n const normalizedIndex = Math.abs(index);\n const stringArrayCallsIndexType = this.randomGenerator\n .getRandomGenerator()\n .pickone(this.options.stringArrayIndexesType);\n const stringArrayIndexNodeName = (_a = AbstractStringArrayCallNode_1.stringArrayIndexNodesMap.get(stringArrayCallsIndexType)) !== null && _a !== void 0 ? _a : null;\n if (!stringArrayIndexNodeName) {\n throw new Error('Invalid string array index node name');\n }\n const stringArrayCallIndexNode = this.stringArrayIndexNodeFactory(stringArrayIndexNodeName)\n .getNode(normalizedIndex);\n NodeMetadata_1.NodeMetadata.set(stringArrayCallIndexNode, { replacedLiteral: true });\n const hexadecimalNode = isPositive\n ? stringArrayCallIndexNode\n : NodeFactory_1.NodeFactory.unaryExpressionNode('-', stringArrayCallIndexNode);\n NodeUtils_1.NodeUtils.parentizeAst(hexadecimalNode);\n return hexadecimalNode;\n }\n getRc4KeyLiteralNode(decodeKey) {\n const rc4KeyLiteralNode = NodeFactory_1.NodeFactory.literalNode(decodeKey);\n NodeMetadata_1.NodeMetadata.set(rc4KeyLiteralNode, { replacedLiteral: true });\n return rc4KeyLiteralNode;\n }\n};\nAbstractStringArrayCallNode.stringArrayRootCallsWrapperParametersCount = 2;\nAbstractStringArrayCallNode.stringArrayIndexNodesMap = new Map([\n [StringArrayIndexesType_1.StringArrayIndexesType.HexadecimalNumber, StringArrayIndexNode_1.StringArrayIndexNode.StringArrayHexadecimalNumberIndexNode],\n [StringArrayIndexesType_1.StringArrayIndexesType.HexadecimalNumericString, StringArrayIndexNode_1.StringArrayIndexNode.StringArrayHexadecimalNumericStringIndexNode]\n]);\nAbstractStringArrayCallNode = AbstractStringArrayCallNode_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IStringArrayIndexNode)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorage)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),\n __param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(6, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof TStringArrayIndexNodeFactory_1.TStringArrayIndexNodeFactory !== \"undefined\" && TStringArrayIndexNodeFactory_1.TStringArrayIndexNodeFactory) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _c : Object, typeof (_d = typeof IStringArrayStorage_1.IStringArrayStorage !== \"undefined\" && IStringArrayStorage_1.IStringArrayStorage) === \"function\" ? _d : Object, typeof (_e = typeof IArrayUtils_1.IArrayUtils !== \"undefined\" && IArrayUtils_1.IArrayUtils) === \"function\" ? _e : Object, typeof (_f = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _f : Object, typeof (_g = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _g : Object])\n], AbstractStringArrayCallNode);\nexports.AbstractStringArrayCallNode = AbstractStringArrayCallNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e, _f, _g, _h;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayCallNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst TStringArrayIndexNodeFactory_1 = require(\"../../types/container/custom-nodes/string-array-index-nodes/TStringArrayIndexNodeFactory\");\nconst IArrayUtils_1 = require(\"../../interfaces/utils/IArrayUtils\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IStringArrayStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayStorage\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst AbstractStringArrayCallNode_1 = require(\"./AbstractStringArrayCallNode\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet StringArrayCallNode = class StringArrayCallNode extends AbstractStringArrayCallNode_1.AbstractStringArrayCallNode {\n constructor(identifierNamesGeneratorFactory, stringArrayIndexNodeFactory, customCodeHelperFormatter, stringArrayStorage, arrayUtils, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, stringArrayIndexNodeFactory, customCodeHelperFormatter, stringArrayStorage, arrayUtils, randomGenerator, options);\n }\n initialize(stringArrayCallsWrapperName, stringArrayCallsWrapperParameterIndexesData, index, indexShiftAmount, decodeKey) {\n this.stringArrayCallsWrapperName = stringArrayCallsWrapperName;\n this.stringArrayCallsWrapperParameterIndexesData = stringArrayCallsWrapperParameterIndexesData;\n this.index = index;\n this.indexShiftAmount = indexShiftAmount;\n this.decodeKey = decodeKey;\n }\n getNodeStructure() {\n var _a, _b;\n const resultIndex = this.indexShiftAmount + this.index;\n const indexNode = this.getStringArrayIndexNode(resultIndex);\n const rc4KeyLiteralNode = this.decodeKey\n ? this.getRc4KeyLiteralNode(this.decodeKey)\n : null;\n const callExpressionArgs = this.arrayUtils.fillWithRange(!this.stringArrayCallsWrapperParameterIndexesData\n ? AbstractStringArrayCallNode_1.AbstractStringArrayCallNode.stringArrayRootCallsWrapperParametersCount\n : this.options.stringArrayWrappersParametersMaxCount, () => this.getFakeStringArrayIndexNode(resultIndex));\n callExpressionArgs.splice((_b = (_a = this.stringArrayCallsWrapperParameterIndexesData) === null || _a === void 0 ? void 0 : _a.valueIndexParameterIndex) !== null && _b !== void 0 ? _b : 0, 1, indexNode);\n if (this.stringArrayCallsWrapperParameterIndexesData) {\n callExpressionArgs.splice(this.stringArrayCallsWrapperParameterIndexesData.decodeKeyParameterIndex, 1, rc4KeyLiteralNode !== null && rc4KeyLiteralNode !== void 0 ? rc4KeyLiteralNode : this.getFakeStringArrayIndexNode(resultIndex));\n }\n else if (rc4KeyLiteralNode) {\n callExpressionArgs.splice(1, 1, rc4KeyLiteralNode);\n }\n else {\n callExpressionArgs.splice(1, 1);\n }\n const structure = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.callExpressionNode(NodeFactory_1.NodeFactory.identifierNode(this.stringArrayCallsWrapperName), callExpressionArgs));\n NodeUtils_1.NodeUtils.parentizeAst(structure);\n return [structure];\n }\n getFakeStringArrayIndexNode(actualIndex) {\n return this.getStringArrayIndexNode(this.getFakeStringArrayIndex(actualIndex));\n }\n getFakeStringArrayIndex(actualIndex) {\n const stringArrayStorageLength = this.stringArrayStorage.getLength();\n const fakeIndexOffset = stringArrayStorageLength / 2;\n const minimumIndex = actualIndex - fakeIndexOffset;\n const maximumIndex = actualIndex + fakeIndexOffset;\n return this.randomGenerator.getRandomInteger(minimumIndex, maximumIndex);\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Object)\n], StringArrayCallNode.prototype, \"decodeKey\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Number)\n], StringArrayCallNode.prototype, \"index\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Number)\n], StringArrayCallNode.prototype, \"indexShiftAmount\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringArrayCallNode.prototype, \"stringArrayCallsWrapperName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Object)\n], StringArrayCallNode.prototype, \"stringArrayCallsWrapperParameterIndexesData\", void 0);\nStringArrayCallNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IStringArrayIndexNode)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorage)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),\n __param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(6, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _b : Object, typeof (_c = typeof TStringArrayIndexNodeFactory_1.TStringArrayIndexNodeFactory !== \"undefined\" && TStringArrayIndexNodeFactory_1.TStringArrayIndexNodeFactory) === \"function\" ? _c : Object, typeof (_d = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _d : Object, typeof (_e = typeof IStringArrayStorage_1.IStringArrayStorage !== \"undefined\" && IStringArrayStorage_1.IStringArrayStorage) === \"function\" ? _e : Object, typeof (_f = typeof IArrayUtils_1.IArrayUtils !== \"undefined\" && IArrayUtils_1.IArrayUtils) === \"function\" ? _f : Object, typeof (_g = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _g : Object, typeof (_h = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _h : Object])\n], StringArrayCallNode);\nexports.StringArrayCallNode = StringArrayCallNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e, _f, _g, _h, _j;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayScopeCallsWrapperFunctionNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst TStringArrayIndexNodeFactory_1 = require(\"../../types/container/custom-nodes/string-array-index-nodes/TStringArrayIndexNodeFactory\");\nconst IArrayUtils_1 = require(\"../../interfaces/utils/IArrayUtils\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IStringArrayStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayStorage\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst AbstractStringArrayCallNode_1 = require(\"./AbstractStringArrayCallNode\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet StringArrayScopeCallsWrapperFunctionNode = class StringArrayScopeCallsWrapperFunctionNode extends AbstractStringArrayCallNode_1.AbstractStringArrayCallNode {\n constructor(identifierNamesGeneratorFactory, stringArrayIndexNodeFactory, customCodeHelperFormatter, stringArrayStorage, arrayUtils, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, stringArrayIndexNodeFactory, customCodeHelperFormatter, stringArrayStorage, arrayUtils, randomGenerator, options);\n }\n initialize(stringArrayScopeCallsWrapperName, stringArrayScopeCallsWrapperParameterIndexesData, upperStringArrayCallsWrapperName, upperStringArrayCallsWrapperParameterIndexesData, shiftedIndex) {\n this.stringArrayScopeCallsWrapperName = stringArrayScopeCallsWrapperName;\n this.stringArrayScopeCallsWrapperParameterIndexesData = stringArrayScopeCallsWrapperParameterIndexesData;\n this.upperStringArrayCallsWrapperName = upperStringArrayCallsWrapperName;\n this.upperStringArrayCallsWrapperParameterIndexesData = upperStringArrayCallsWrapperParameterIndexesData;\n this.shiftedIndex = shiftedIndex;\n }\n getNodeStructure() {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n const stringArrayCallIdentifierNode = NodeFactory_1.NodeFactory.identifierNode(this.randomGenerator.getRandomString(6));\n const decodeKeyIdentifierNode = NodeFactory_1.NodeFactory.identifierNode(this.randomGenerator.getRandomString(6));\n const stringArrayCallNode = this.getUpperStringArrayCallNode(stringArrayCallIdentifierNode, this.getStringArrayIndexNode(this.shiftedIndex));\n const parameters = this.arrayUtils.fillWithRange(!this.stringArrayScopeCallsWrapperParameterIndexesData\n ? AbstractStringArrayCallNode_1.AbstractStringArrayCallNode.stringArrayRootCallsWrapperParametersCount\n : this.options.stringArrayWrappersParametersMaxCount, () => this.getFakeParameterNode());\n parameters.splice((_b = (_a = this.stringArrayScopeCallsWrapperParameterIndexesData) === null || _a === void 0 ? void 0 : _a.valueIndexParameterIndex) !== null && _b !== void 0 ? _b : 0, 1, stringArrayCallIdentifierNode);\n parameters.splice((_d = (_c = this.stringArrayScopeCallsWrapperParameterIndexesData) === null || _c === void 0 ? void 0 : _c.decodeKeyParameterIndex) !== null && _d !== void 0 ? _d : 1, 1, decodeKeyIdentifierNode);\n const callExpressionArgs = this.arrayUtils.fillWithRange(!this.upperStringArrayCallsWrapperParameterIndexesData\n ? AbstractStringArrayCallNode_1.AbstractStringArrayCallNode.stringArrayRootCallsWrapperParametersCount\n : this.options.stringArrayWrappersParametersMaxCount, (index) => this.getUpperStringArrayCallNode(parameters[index], this.getFakeUpperStringArrayIndexNode()));\n callExpressionArgs.splice((_f = (_e = this.upperStringArrayCallsWrapperParameterIndexesData) === null || _e === void 0 ? void 0 : _e.valueIndexParameterIndex) !== null && _f !== void 0 ? _f : 0, 1, stringArrayCallNode);\n callExpressionArgs.splice((_h = (_g = this.upperStringArrayCallsWrapperParameterIndexesData) === null || _g === void 0 ? void 0 : _g.decodeKeyParameterIndex) !== null && _h !== void 0 ? _h : 1, 1, decodeKeyIdentifierNode);\n const functionExpressionNode = NodeFactory_1.NodeFactory.functionExpressionNode(parameters, NodeFactory_1.NodeFactory.blockStatementNode([\n NodeFactory_1.NodeFactory.returnStatementNode(NodeFactory_1.NodeFactory.callExpressionNode(NodeFactory_1.NodeFactory.identifierNode(this.upperStringArrayCallsWrapperName), callExpressionArgs))\n ]));\n const structure = NodeFactory_1.NodeFactory.variableDeclarationNode([\n NodeFactory_1.NodeFactory.variableDeclaratorNode(NodeFactory_1.NodeFactory.identifierNode(this.stringArrayScopeCallsWrapperName), functionExpressionNode)\n ], 'const');\n NodeUtils_1.NodeUtils.parentizeAst(structure);\n for (const parameter of parameters) {\n parameter.name = this.identifierNamesGenerator.generateForLexicalScope(functionExpressionNode);\n }\n return [structure];\n }\n getUpperStringArrayCallNode(indexParameterIdentifierNode, indexShiftNode) {\n return NodeFactory_1.NodeFactory.binaryExpressionNode('-', indexParameterIdentifierNode, indexShiftNode);\n }\n getFakeParameterNode() {\n return NodeFactory_1.NodeFactory.identifierNode(this.randomGenerator.getRandomString(6));\n }\n getFakeUpperStringArrayIndexNode() {\n return this.getStringArrayIndexNode(this.randomGenerator.getRandomInteger(0, 500));\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Number)\n], StringArrayScopeCallsWrapperFunctionNode.prototype, \"shiftedIndex\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringArrayScopeCallsWrapperFunctionNode.prototype, \"upperStringArrayCallsWrapperName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Object)\n], StringArrayScopeCallsWrapperFunctionNode.prototype, \"upperStringArrayCallsWrapperParameterIndexesData\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringArrayScopeCallsWrapperFunctionNode.prototype, \"stringArrayScopeCallsWrapperName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Object)\n], StringArrayScopeCallsWrapperFunctionNode.prototype, \"stringArrayScopeCallsWrapperParameterIndexesData\", void 0);\nStringArrayScopeCallsWrapperFunctionNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IStringArrayIndexNode)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorage)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),\n __param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(6, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_c = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _c : Object, typeof (_d = typeof TStringArrayIndexNodeFactory_1.TStringArrayIndexNodeFactory !== \"undefined\" && TStringArrayIndexNodeFactory_1.TStringArrayIndexNodeFactory) === \"function\" ? _d : Object, typeof (_e = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _e : Object, typeof (_f = typeof IStringArrayStorage_1.IStringArrayStorage !== \"undefined\" && IStringArrayStorage_1.IStringArrayStorage) === \"function\" ? _f : Object, typeof (_g = typeof IArrayUtils_1.IArrayUtils !== \"undefined\" && IArrayUtils_1.IArrayUtils) === \"function\" ? _g : Object, typeof (_h = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _h : Object, typeof (_j = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _j : Object])\n], StringArrayScopeCallsWrapperFunctionNode);\nexports.StringArrayScopeCallsWrapperFunctionNode = StringArrayScopeCallsWrapperFunctionNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e, _f, _g;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayScopeCallsWrapperVariableNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst TStringArrayIndexNodeFactory_1 = require(\"../../types/container/custom-nodes/string-array-index-nodes/TStringArrayIndexNodeFactory\");\nconst IArrayUtils_1 = require(\"../../interfaces/utils/IArrayUtils\");\nconst ICustomCodeHelperFormatter_1 = require(\"../../interfaces/custom-code-helpers/ICustomCodeHelperFormatter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IStringArrayStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayStorage\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst AbstractStringArrayCallNode_1 = require(\"./AbstractStringArrayCallNode\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet StringArrayScopeCallsWrapperVariableNode = class StringArrayScopeCallsWrapperVariableNode extends AbstractStringArrayCallNode_1.AbstractStringArrayCallNode {\n constructor(identifierNamesGeneratorFactory, stringArrayIndexNodeFactory, customCodeHelperFormatter, stringArrayStorage, arrayUtils, randomGenerator, options) {\n super(identifierNamesGeneratorFactory, stringArrayIndexNodeFactory, customCodeHelperFormatter, stringArrayStorage, arrayUtils, randomGenerator, options);\n }\n initialize(stringArrayScopeCallsWrapperName, stringArrayCallsWrapperName) {\n this.stringArrayScopeCallsWrapperName = stringArrayScopeCallsWrapperName;\n this.stringArrayCallsWrapperName = stringArrayCallsWrapperName;\n }\n getNodeStructure() {\n const structure = NodeFactory_1.NodeFactory.variableDeclarationNode([\n NodeFactory_1.NodeFactory.variableDeclaratorNode(NodeFactory_1.NodeFactory.identifierNode(this.stringArrayScopeCallsWrapperName), NodeFactory_1.NodeFactory.identifierNode(this.stringArrayCallsWrapperName))\n ], 'const');\n NodeUtils_1.NodeUtils.parentizeAst(structure);\n return [structure];\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringArrayScopeCallsWrapperVariableNode.prototype, \"stringArrayCallsWrapperName\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], StringArrayScopeCallsWrapperVariableNode.prototype, \"stringArrayScopeCallsWrapperName\", void 0);\nStringArrayScopeCallsWrapperVariableNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IStringArrayIndexNode)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICustomCodeHelperFormatter)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorage)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),\n __param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(6, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof TStringArrayIndexNodeFactory_1.TStringArrayIndexNodeFactory !== \"undefined\" && TStringArrayIndexNodeFactory_1.TStringArrayIndexNodeFactory) === \"function\" ? _b : Object, typeof (_c = typeof ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter !== \"undefined\" && ICustomCodeHelperFormatter_1.ICustomCodeHelperFormatter) === \"function\" ? _c : Object, typeof (_d = typeof IStringArrayStorage_1.IStringArrayStorage !== \"undefined\" && IStringArrayStorage_1.IStringArrayStorage) === \"function\" ? _d : Object, typeof (_e = typeof IArrayUtils_1.IArrayUtils !== \"undefined\" && IArrayUtils_1.IArrayUtils) === \"function\" ? _e : Object, typeof (_f = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _f : Object, typeof (_g = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _g : Object])\n], StringArrayScopeCallsWrapperVariableNode);\nexports.StringArrayScopeCallsWrapperVariableNode = StringArrayScopeCallsWrapperVariableNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractStringArrayIndexNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nlet AbstractStringArrayIndexNode = class AbstractStringArrayIndexNode {\n constructor(randomGenerator, options) {\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n};\nAbstractStringArrayIndexNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], AbstractStringArrayIndexNode);\nexports.AbstractStringArrayIndexNode = AbstractStringArrayIndexNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayHexadecimalNumberIndexNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst AbstractStringArrayIndexNode_1 = require(\"./AbstractStringArrayIndexNode\");\nconst NodeFactory_1 = require(\"../../../node/NodeFactory\");\nconst NumberUtils_1 = require(\"../../../utils/NumberUtils\");\nlet StringArrayHexadecimalNumberIndexNode = class StringArrayHexadecimalNumberIndexNode extends AbstractStringArrayIndexNode_1.AbstractStringArrayIndexNode {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getNode(index) {\n const hexadecimalIndex = NumberUtils_1.NumberUtils.toHex(index);\n return NodeFactory_1.NodeFactory.literalNode(index, hexadecimalIndex);\n }\n};\nStringArrayHexadecimalNumberIndexNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], StringArrayHexadecimalNumberIndexNode);\nexports.StringArrayHexadecimalNumberIndexNode = StringArrayHexadecimalNumberIndexNode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayHexadecimalNumericStringIndexNode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst AbstractStringArrayIndexNode_1 = require(\"./AbstractStringArrayIndexNode\");\nconst NodeFactory_1 = require(\"../../../node/NodeFactory\");\nconst NumberUtils_1 = require(\"../../../utils/NumberUtils\");\nlet StringArrayHexadecimalNumericStringIndexNode = class StringArrayHexadecimalNumericStringIndexNode extends AbstractStringArrayIndexNode_1.AbstractStringArrayIndexNode {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getNode(index) {\n const hexadecimalIndex = NumberUtils_1.NumberUtils.toHex(index);\n return NodeFactory_1.NodeFactory.literalNode(hexadecimalIndex);\n }\n};\nStringArrayHexadecimalNumericStringIndexNode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], StringArrayHexadecimalNumericStringIndexNode);\nexports.StringArrayHexadecimalNumericStringIndexNode = StringArrayHexadecimalNumericStringIndexNode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.initializable = void 0;\nconst defaultDescriptor = {\n configurable: true,\n enumerable: true\n};\nconst initializedTargetMetadataKey = '_initialized';\nconst initializablePropertiesSetMetadataKey = '_initializablePropertiesSet';\nconst wrappedMethodsSetMetadataKey = '_wrappedMethodsSet';\nconst constructorMethodName = 'constructor';\nfunction initializable(initializeMethodName = 'initialize') {\n const decoratorName = Object.keys(this)[0];\n return (target, propertyKey) => {\n const initializeMethod = target[initializeMethodName];\n if (!initializeMethod || typeof initializeMethod !== 'function') {\n throw new Error(`\\`${initializeMethodName}\\` method with initialization logic not ` +\n `found. \\`@${decoratorName}\\` decorator requires \\`${initializeMethodName}\\` method`);\n }\n initializeTargetMetadata(initializedTargetMetadataKey, false, target);\n initializeTargetMetadata(initializablePropertiesSetMetadataKey, new Set(), target);\n initializeTargetMetadata(wrappedMethodsSetMetadataKey, new Set(), target);\n wrapTargetMethodsInInitializedCheck(target, initializeMethodName);\n wrapInitializeMethodInInitializeCheck(target, initializeMethodName, propertyKey);\n return wrapInitializableProperty(target, propertyKey);\n };\n}\nexports.initializable = initializable;\nfunction initializeTargetMetadata(metadataKey, metadataValue, target) {\n const hasInitializedMetadata = Reflect.hasMetadata(metadataKey, target);\n if (!hasInitializedMetadata) {\n Reflect.defineMetadata(metadataKey, metadataValue, target);\n }\n}\nfunction wrapTargetMethodsInInitializedCheck(target, initializeMethodName) {\n const ownPropertyNames = Object.getOwnPropertyNames(target);\n const prohibitedPropertyNames = new Set([initializeMethodName, constructorMethodName]);\n ownPropertyNames.forEach((propertyName) => {\n var _a;\n const initializablePropertiesSet = Reflect\n .getMetadata(initializablePropertiesSetMetadataKey, target);\n const wrappedMethodsSet = Reflect\n .getMetadata(wrappedMethodsSetMetadataKey, target);\n const isProhibitedPropertyName = prohibitedPropertyNames.has(propertyName)\n || initializablePropertiesSet.has(propertyName)\n || wrappedMethodsSet.has(propertyName);\n if (isProhibitedPropertyName) {\n return;\n }\n const targetProperty = target[propertyName];\n if (typeof targetProperty !== 'function') {\n return;\n }\n const methodDescriptor = (_a = Object\n .getOwnPropertyDescriptor(target, propertyName)) !== null && _a !== void 0 ? _a : defaultDescriptor;\n const originalMethod = methodDescriptor.value;\n Object.defineProperty(target, propertyName, Object.assign(Object.assign({}, methodDescriptor), { value() {\n if (!Reflect.getMetadata(initializedTargetMetadataKey, this)) {\n throw new Error(`Class should be initialized with \\`${initializeMethodName}()\\` method`);\n }\n return originalMethod.apply(this, arguments);\n } }));\n wrappedMethodsSet.add(propertyName);\n });\n}\nfunction wrapInitializeMethodInInitializeCheck(target, initializeMethodName, propertyKey) {\n var _a;\n const methodDescriptor = (_a = Object\n .getOwnPropertyDescriptor(target, initializeMethodName)) !== null && _a !== void 0 ? _a : defaultDescriptor;\n const originalMethod = methodDescriptor.value;\n Object.defineProperty(target, initializeMethodName, Object.assign(Object.assign({}, methodDescriptor), { value: function () {\n Reflect.defineMetadata(initializedTargetMetadataKey, true, this);\n const result = originalMethod.apply(this, arguments);\n if (this[propertyKey]) { }\n return result;\n } }));\n}\nfunction wrapInitializableProperty(target, propertyKey) {\n var _a;\n const initializablePropertiesSet = Reflect\n .getMetadata(initializablePropertiesSetMetadataKey, target);\n initializablePropertiesSet.add(propertyKey);\n const initializablePropertyMetadataKey = `_${propertyKey.toString()}`;\n const propertyDescriptor = (_a = Object\n .getOwnPropertyDescriptor(target, initializablePropertyMetadataKey)) !== null && _a !== void 0 ? _a : defaultDescriptor;\n Object.defineProperty(target, propertyKey, Object.assign(Object.assign({}, propertyDescriptor), { get: function () {\n if (this[initializablePropertyMetadataKey] === undefined) {\n throw new Error(`Property \\`${propertyKey.toString()}\\` is not initialized! Initialize it first!`);\n }\n return this[initializablePropertyMetadataKey];\n }, set: function (newVal) {\n this[initializablePropertyMetadataKey] = newVal;\n } }));\n return propertyDescriptor;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObfuscationTarget = void 0;\nconst Utils_1 = require(\"../utils/Utils\");\nexports.ObfuscationTarget = Utils_1.Utils.makeEnum({\n Browser: 'browser',\n BrowserNoEval: 'browser-no-eval',\n Node: 'node'\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringSeparator = void 0;\nvar StringSeparator;\n(function (StringSeparator) {\n StringSeparator[\"Comma\"] = \",\";\n StringSeparator[\"Dot\"] = \".\";\n StringSeparator[\"VerticalLine\"] = \"|\";\n})(StringSeparator = exports.StringSeparator || (exports.StringSeparator = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CalleeDataExtractor = void 0;\nvar CalleeDataExtractor;\n(function (CalleeDataExtractor) {\n CalleeDataExtractor[\"FunctionDeclarationCalleeDataExtractor\"] = \"FunctionDeclarationCalleeDataExtractor\";\n CalleeDataExtractor[\"FunctionExpressionCalleeDataExtractor\"] = \"FunctionExpressionCalleeDataExtractor\";\n CalleeDataExtractor[\"ObjectExpressionCalleeDataExtractor\"] = \"ObjectExpressionCalleeDataExtractor\";\n})(CalleeDataExtractor = exports.CalleeDataExtractor || (exports.CalleeDataExtractor = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeTransformationStage = void 0;\nvar CodeTransformationStage;\n(function (CodeTransformationStage) {\n CodeTransformationStage[\"PreparingTransformers\"] = \"PreparingTransformers\";\n CodeTransformationStage[\"FinalizingTransformers\"] = \"FinalizingTransformers\";\n})(CodeTransformationStage = exports.CodeTransformationStage || (exports.CodeTransformationStage = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeTransformer = void 0;\nvar CodeTransformer;\n(function (CodeTransformer) {\n CodeTransformer[\"HashbangOperatorTransformer\"] = \"HashbangOperatorTransformer\";\n})(CodeTransformer = exports.CodeTransformer || (exports.CodeTransformer = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CustomCodeHelper = void 0;\nvar CustomCodeHelper;\n(function (CustomCodeHelper) {\n CustomCodeHelper[\"CallsControllerFunction\"] = \"CallsControllerFunction\";\n CustomCodeHelper[\"ConsoleOutputDisable\"] = \"ConsoleOutputDisable\";\n CustomCodeHelper[\"DebugProtectionFunctionCall\"] = \"DebugProtectionFunctionCall\";\n CustomCodeHelper[\"DebugProtectionFunctionInterval\"] = \"DebugProtectionFunctionInterval\";\n CustomCodeHelper[\"DebugProtectionFunction\"] = \"DebugProtectionFunction\";\n CustomCodeHelper[\"DomainLock\"] = \"DomainLock\";\n CustomCodeHelper[\"SelfDefendingUnicode\"] = \"SelfDefendingUnicode\";\n CustomCodeHelper[\"StringArray\"] = \"StringArray\";\n CustomCodeHelper[\"StringArrayCallsWrapper\"] = \"StringArrayCallsWrapper\";\n CustomCodeHelper[\"StringArrayCallsWrapperBase64\"] = \"StringArrayCallsWrapperBase64\";\n CustomCodeHelper[\"StringArrayCallsWrapperRc4\"] = \"StringArrayCallsWrapperRc4\";\n CustomCodeHelper[\"StringArrayRotateFunction\"] = \"StringArrayRotateFunction\";\n})(CustomCodeHelper = exports.CustomCodeHelper || (exports.CustomCodeHelper = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CustomCodeHelperGroup = void 0;\nvar CustomCodeHelperGroup;\n(function (CustomCodeHelperGroup) {\n CustomCodeHelperGroup[\"ConsoleOutput\"] = \"ConsoleOutput\";\n CustomCodeHelperGroup[\"DebugProtection\"] = \"DebugProtection\";\n CustomCodeHelperGroup[\"DomainLock\"] = \"DomainLock\";\n CustomCodeHelperGroup[\"SelfDefending\"] = \"SelfDefending\";\n CustomCodeHelperGroup[\"StringArray\"] = \"StringArray\";\n})(CustomCodeHelperGroup = exports.CustomCodeHelperGroup || (exports.CustomCodeHelperGroup = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ControlFlowCustomNode = void 0;\nvar ControlFlowCustomNode;\n(function (ControlFlowCustomNode) {\n ControlFlowCustomNode[\"BinaryExpressionFunctionNode\"] = \"BinaryExpressionFunctionNode\";\n ControlFlowCustomNode[\"BlockStatementControlFlowFlatteningNode\"] = \"BlockStatementControlFlowFlatteningNode\";\n ControlFlowCustomNode[\"CallExpressionControlFlowStorageCallNode\"] = \"CallExpressionControlFlowStorageCallNode\";\n ControlFlowCustomNode[\"CallExpressionFunctionNode\"] = \"CallExpressionFunctionNode\";\n ControlFlowCustomNode[\"ControlFlowStorageNode\"] = \"ControlFlowStorageNode\";\n ControlFlowCustomNode[\"ExpressionWithOperatorControlFlowStorageCallNode\"] = \"ExpressionWithOperatorControlFlowStorageCallNode\";\n ControlFlowCustomNode[\"LogicalExpressionFunctionNode\"] = \"LogicalExpressionFunctionNode\";\n ControlFlowCustomNode[\"StringLiteralControlFlowStorageCallNode\"] = \"StringLiteralControlFlowStorageCallNode\";\n ControlFlowCustomNode[\"StringLiteralNode\"] = \"StringLiteralNode\";\n})(ControlFlowCustomNode = exports.ControlFlowCustomNode || (exports.ControlFlowCustomNode = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeadCodeInjectionCustomNode = void 0;\nvar DeadCodeInjectionCustomNode;\n(function (DeadCodeInjectionCustomNode) {\n DeadCodeInjectionCustomNode[\"BlockStatementDeadCodeInjectionNode\"] = \"BlockStatementDeadCodeInjectionNode\";\n})(DeadCodeInjectionCustomNode = exports.DeadCodeInjectionCustomNode || (exports.DeadCodeInjectionCustomNode = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectExpressionKeysTransformerCustomNode = void 0;\nvar ObjectExpressionKeysTransformerCustomNode;\n(function (ObjectExpressionKeysTransformerCustomNode) {\n ObjectExpressionKeysTransformerCustomNode[\"ObjectExpressionVariableDeclarationHostNode\"] = \"ObjectExpressionVariableDeclarationHostNode\";\n})(ObjectExpressionKeysTransformerCustomNode = exports.ObjectExpressionKeysTransformerCustomNode || (exports.ObjectExpressionKeysTransformerCustomNode = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayCustomNode = void 0;\nvar StringArrayCustomNode;\n(function (StringArrayCustomNode) {\n StringArrayCustomNode[\"StringArrayCallNode\"] = \"StringArrayCallNode\";\n StringArrayCustomNode[\"StringArrayScopeCallsWrapperFunctionNode\"] = \"StringArrayScopeCallsWrapperFunctionNode\";\n StringArrayCustomNode[\"StringArrayScopeCallsWrapperVariableNode\"] = \"StringArrayScopeCallsWrapperVariableNode\";\n})(StringArrayCustomNode = exports.StringArrayCustomNode || (exports.StringArrayCustomNode = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayIndexNode = void 0;\nvar StringArrayIndexNode;\n(function (StringArrayIndexNode) {\n StringArrayIndexNode[\"StringArrayHexadecimalNumberIndexNode\"] = \"StringArrayHexadecimalNumberIndexNode\";\n StringArrayIndexNode[\"StringArrayHexadecimalNumericStringIndexNode\"] = \"StringArrayHexadecimalNumericStringIndexNode\";\n})(StringArrayIndexNode = exports.StringArrayIndexNode || (exports.StringArrayIndexNode = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObfuscationEvent = void 0;\nvar ObfuscationEvent;\n(function (ObfuscationEvent) {\n ObfuscationEvent[\"AfterObfuscation\"] = \"afterObfuscation\";\n ObfuscationEvent[\"BeforeObfuscation\"] = \"beforeObfuscation\";\n})(ObfuscationEvent = exports.ObfuscationEvent || (exports.ObfuscationEvent = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IdentifierNamesGenerator = void 0;\nconst Utils_1 = require(\"../../../utils/Utils\");\nexports.IdentifierNamesGenerator = Utils_1.Utils.makeEnum({\n DictionaryIdentifierNamesGenerator: 'dictionary',\n HexadecimalIdentifierNamesGenerator: 'hexadecimal',\n MangledIdentifierNamesGenerator: 'mangled',\n MangledShuffledIdentifierNamesGenerator: 'mangled-shuffled'\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoggingMessage = void 0;\nvar LoggingMessage;\n(function (LoggingMessage) {\n LoggingMessage[\"EmptySourceCode\"] = \"Empty source code. Obfuscation canceled...\";\n LoggingMessage[\"ObfuscationCompleted\"] = \"Obfuscation completed. Total time: %s sec.\";\n LoggingMessage[\"ObfuscationStarted\"] = \"Obfuscation started...\";\n LoggingMessage[\"RandomGeneratorSeed\"] = \"Random generator seed: %s...\";\n LoggingMessage[\"CodeTransformationStage\"] = \"Code transformation stage: %s...\";\n LoggingMessage[\"NodeTransformationStage\"] = \"AST transformation stage: %s...\";\n LoggingMessage[\"Version\"] = \"Version: %s\";\n})(LoggingMessage = exports.LoggingMessage || (exports.LoggingMessage = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoggingPrefix = void 0;\nvar LoggingPrefix;\n(function (LoggingPrefix) {\n LoggingPrefix[\"Base\"] = \"[javascript-obfuscator]\";\n LoggingPrefix[\"CLI\"] = \"[javascript-obfuscator-cli]\";\n})(LoggingPrefix = exports.LoggingPrefix || (exports.LoggingPrefix = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeTransformationStage = void 0;\nvar NodeTransformationStage;\n(function (NodeTransformationStage) {\n NodeTransformationStage[\"ControlFlowFlattening\"] = \"ControlFlowFlattening\";\n NodeTransformationStage[\"Converting\"] = \"Converting\";\n NodeTransformationStage[\"DeadCodeInjection\"] = \"DeadCodeInjection\";\n NodeTransformationStage[\"Finalizing\"] = \"Finalizing\";\n NodeTransformationStage[\"Initializing\"] = \"Initializing\";\n NodeTransformationStage[\"Preparing\"] = \"Preparing\";\n NodeTransformationStage[\"RenameIdentifiers\"] = \"RenameIdentifiers\";\n NodeTransformationStage[\"RenameProperties\"] = \"RenameProperties\";\n NodeTransformationStage[\"Simplifying\"] = \"Simplifying\";\n NodeTransformationStage[\"StringArray\"] = \"StringArray\";\n})(NodeTransformationStage = exports.NodeTransformationStage || (exports.NodeTransformationStage = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeTransformer = void 0;\nvar NodeTransformer;\n(function (NodeTransformer) {\n NodeTransformer[\"BooleanLiteralTransformer\"] = \"BooleanLiteralTransformer\";\n NodeTransformer[\"BlockStatementControlFlowTransformer\"] = \"BlockStatementControlFlowTransformer\";\n NodeTransformer[\"BlockStatementSimplifyTransformer\"] = \"BlockStatementSimplifyTransformer\";\n NodeTransformer[\"CommentsTransformer\"] = \"CommentsTransformer\";\n NodeTransformer[\"CustomCodeHelpersTransformer\"] = \"CustomCodeHelpersTransformer\";\n NodeTransformer[\"DeadCodeInjectionTransformer\"] = \"DeadCodeInjectionTransformer\";\n NodeTransformer[\"EscapeSequenceTransformer\"] = \"EscapeSequenceTransformer\";\n NodeTransformer[\"EvalCallExpressionTransformer\"] = \"EvalCallExpressionTransformer\";\n NodeTransformer[\"ExportSpecifierTransformer\"] = \"ExportSpecifierTransformer\";\n NodeTransformer[\"ExpressionStatementsMergeTransformer\"] = \"ExpressionStatementsMergeTransformer\";\n NodeTransformer[\"FunctionControlFlowTransformer\"] = \"FunctionControlFlowTransformer\";\n NodeTransformer[\"IfStatementSimplifyTransformer\"] = \"IfStatementSimplifyTransformer\";\n NodeTransformer[\"LabeledStatementTransformer\"] = \"LabeledStatementTransformer\";\n NodeTransformer[\"MemberExpressionTransformer\"] = \"MemberExpressionTransformer\";\n NodeTransformer[\"MetadataTransformer\"] = \"MetadataTransformer\";\n NodeTransformer[\"MethodDefinitionTransformer\"] = \"MethodDefinitionTransformer\";\n NodeTransformer[\"NumberLiteralTransformer\"] = \"NumberLiteralTransformer\";\n NodeTransformer[\"NumberToNumericalExpressionTransformer\"] = \"NumberToNumericalExpressionTransformer\";\n NodeTransformer[\"ObfuscatingGuardsTransformer\"] = \"ObfuscatingGuardsTransformer\";\n NodeTransformer[\"ObjectExpressionKeysTransformer\"] = \"ObjectExpressionKeysTransformer\";\n NodeTransformer[\"ObjectExpressionTransformer\"] = \"ObjectExpressionTransformer\";\n NodeTransformer[\"ObjectPatternPropertiesTransformer\"] = \"ObjectPatternPropertiesTransformer\";\n NodeTransformer[\"ParentificationTransformer\"] = \"ParentificationTransformer\";\n NodeTransformer[\"RenamePropertiesTransformer\"] = \"RenamePropertiesTransformer\";\n NodeTransformer[\"ScopeIdentifiersTransformer\"] = \"ScopeIdentifiersTransformer\";\n NodeTransformer[\"ScopeThroughIdentifiersTransformer\"] = \"ScopeThroughIdentifiersTransformer\";\n NodeTransformer[\"SplitStringTransformer\"] = \"SplitStringTransformer\";\n NodeTransformer[\"StringArrayTransformer\"] = \"StringArrayTransformer\";\n NodeTransformer[\"StringArrayScopeCallsWrapperTransformer\"] = \"StringArrayScopeCallsWrapperTransformer\";\n NodeTransformer[\"TemplateLiteralTransformer\"] = \"TemplateLiteralTransformer\";\n NodeTransformer[\"VariableDeclarationsMergeTransformer\"] = \"VariableDeclarationsMergeTransformer\";\n NodeTransformer[\"VariablePreserveTransformer\"] = \"VariablePreserveTransformer\";\n})(NodeTransformer = exports.NodeTransformer || (exports.NodeTransformer = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VisitorDirection = void 0;\nvar VisitorDirection;\n(function (VisitorDirection) {\n VisitorDirection[\"Enter\"] = \"enter\";\n VisitorDirection[\"Leave\"] = \"leave\";\n})(VisitorDirection = exports.VisitorDirection || (exports.VisitorDirection = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ControlFlowReplacer = void 0;\nvar ControlFlowReplacer;\n(function (ControlFlowReplacer) {\n ControlFlowReplacer[\"BinaryExpressionControlFlowReplacer\"] = \"BinaryExpressionControlFlowReplacer\";\n ControlFlowReplacer[\"CallExpressionControlFlowReplacer\"] = \"CallExpressionControlFlowReplacer\";\n ControlFlowReplacer[\"LogicalExpressionControlFlowReplacer\"] = \"LogicalExpressionControlFlowReplacer\";\n ControlFlowReplacer[\"StringLiteralControlFlowReplacer\"] = \"StringLiteralControlFlowReplacer\";\n})(ControlFlowReplacer = exports.ControlFlowReplacer || (exports.ControlFlowReplacer = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectExpressionExtractor = void 0;\nvar ObjectExpressionExtractor;\n(function (ObjectExpressionExtractor) {\n ObjectExpressionExtractor[\"BasePropertiesExtractor\"] = \"BasePropertiesExtractor\";\n ObjectExpressionExtractor[\"ObjectExpressionToVariableDeclarationExtractor\"] = \"ObjectExpressionToVariableDeclarationExtractor\";\n})(ObjectExpressionExtractor = exports.ObjectExpressionExtractor || (exports.ObjectExpressionExtractor = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObfuscatingGuard = void 0;\nvar ObfuscatingGuard;\n(function (ObfuscatingGuard) {\n ObfuscatingGuard[\"BlackListObfuscatingGuard\"] = \"BlackListObfuscatingGuard\";\n ObfuscatingGuard[\"ConditionalCommentObfuscatingGuard\"] = \"ConditionalCommentObfuscatingGuard\";\n ObfuscatingGuard[\"ForceTransformStringObfuscatingGuard\"] = \"ForceTransformStringObfuscatingGuard\";\n ObfuscatingGuard[\"IgnoredRequireImportObfuscatingGuard\"] = \"IgnoredRequireImportObfuscatingGuard\";\n ObfuscatingGuard[\"ReservedStringObfuscatingGuard\"] = \"ReservedStringObfuscatingGuard\";\n})(ObfuscatingGuard = exports.ObfuscatingGuard || (exports.ObfuscatingGuard = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayEncoding = void 0;\nconst Utils_1 = require(\"../../../utils/Utils\");\nexports.StringArrayEncoding = Utils_1.Utils.makeEnum({\n None: 'none',\n Base64: 'base64',\n Rc4: 'rc4'\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayIndexesType = void 0;\nconst Utils_1 = require(\"../../../utils/Utils\");\nexports.StringArrayIndexesType = Utils_1.Utils.makeEnum({\n HexadecimalNumber: 'hexadecimal-number',\n HexadecimalNumericString: 'hexadecimal-numeric-string'\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayWrappersType = void 0;\nconst Utils_1 = require(\"../../../utils/Utils\");\nexports.StringArrayWrappersType = Utils_1.Utils.makeEnum({\n Variable: 'variable',\n Function: 'function',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeType = void 0;\nvar NodeType;\n(function (NodeType) {\n NodeType[\"ArrayExpression\"] = \"ArrayExpression\";\n NodeType[\"ArrayPattern\"] = \"ArrayPattern\";\n NodeType[\"ArrowFunctionExpression\"] = \"ArrowFunctionExpression\";\n NodeType[\"AssignmentExpression\"] = \"AssignmentExpression\";\n NodeType[\"AssignmentPattern\"] = \"AssignmentPattern\";\n NodeType[\"AwaitExpression\"] = \"AwaitExpression\";\n NodeType[\"BinaryExpression\"] = \"BinaryExpression\";\n NodeType[\"BlockStatement\"] = \"BlockStatement\";\n NodeType[\"BreakStatement\"] = \"BreakStatement\";\n NodeType[\"CallExpression\"] = \"CallExpression\";\n NodeType[\"CatchClause\"] = \"CatchClause\";\n NodeType[\"ChainExpression\"] = \"ChainExpression\";\n NodeType[\"ClassDeclaration\"] = \"ClassDeclaration\";\n NodeType[\"ConditionalExpression\"] = \"ConditionalExpression\";\n NodeType[\"ContinueStatement\"] = \"ContinueStatement\";\n NodeType[\"ExportAllDeclaration\"] = \"ExportAllDeclaration\";\n NodeType[\"ExportNamedDeclaration\"] = \"ExportNamedDeclaration\";\n NodeType[\"ExportSpecifier\"] = \"ExportSpecifier\";\n NodeType[\"ExpressionStatement\"] = \"ExpressionStatement\";\n NodeType[\"ForStatement\"] = \"ForStatement\";\n NodeType[\"ForInStatement\"] = \"ForInStatement\";\n NodeType[\"ForOfStatement\"] = \"ForOfStatement\";\n NodeType[\"FunctionDeclaration\"] = \"FunctionDeclaration\";\n NodeType[\"FunctionExpression\"] = \"FunctionExpression\";\n NodeType[\"Identifier\"] = \"Identifier\";\n NodeType[\"IfStatement\"] = \"IfStatement\";\n NodeType[\"ImportDeclaration\"] = \"ImportDeclaration\";\n NodeType[\"ImportDefaultSpecifier\"] = \"ImportDefaultSpecifier\";\n NodeType[\"ImportNamespaceSpecifier\"] = \"ImportNamespaceSpecifier\";\n NodeType[\"ImportSpecifier\"] = \"ImportSpecifier\";\n NodeType[\"LabeledStatement\"] = \"LabeledStatement\";\n NodeType[\"Literal\"] = \"Literal\";\n NodeType[\"LogicalExpression\"] = \"LogicalExpression\";\n NodeType[\"MemberExpression\"] = \"MemberExpression\";\n NodeType[\"MethodDefinition\"] = \"MethodDefinition\";\n NodeType[\"ObjectExpression\"] = \"ObjectExpression\";\n NodeType[\"ObjectPattern\"] = \"ObjectPattern\";\n NodeType[\"Program\"] = \"Program\";\n NodeType[\"Property\"] = \"Property\";\n NodeType[\"RestElement\"] = \"RestElement\";\n NodeType[\"ReturnStatement\"] = \"ReturnStatement\";\n NodeType[\"SequenceExpression\"] = \"SequenceExpression\";\n NodeType[\"SpreadElement\"] = \"SpreadElement\";\n NodeType[\"Super\"] = \"Super\";\n NodeType[\"SwitchCase\"] = \"SwitchCase\";\n NodeType[\"SwitchStatement\"] = \"SwitchStatement\";\n NodeType[\"TaggedTemplateExpression\"] = \"TaggedTemplateExpression\";\n NodeType[\"TemplateElement\"] = \"TemplateElement\";\n NodeType[\"TemplateLiteral\"] = \"TemplateLiteral\";\n NodeType[\"ThrowStatement\"] = \"ThrowStatement\";\n NodeType[\"TryStatement\"] = \"TryStatement\";\n NodeType[\"UnaryExpression\"] = \"UnaryExpression\";\n NodeType[\"UpdateExpression\"] = \"UpdateExpression\";\n NodeType[\"VariableDeclaration\"] = \"VariableDeclaration\";\n NodeType[\"VariableDeclarator\"] = \"VariableDeclarator\";\n NodeType[\"WhileStatement\"] = \"WhileStatement\";\n NodeType[\"YieldExpression\"] = \"YieldExpression\";\n})(NodeType = exports.NodeType || (exports.NodeType = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObfuscatingGuardResult = void 0;\nvar ObfuscatingGuardResult;\n(function (ObfuscatingGuardResult) {\n ObfuscatingGuardResult[\"ForceTransform\"] = \"ForceTransform\";\n ObfuscatingGuardResult[\"Ignore\"] = \"Ignore\";\n ObfuscatingGuardResult[\"Transform\"] = \"Transform\";\n})(ObfuscatingGuardResult = exports.ObfuscatingGuardResult || (exports.ObfuscatingGuardResult = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OptionsPreset = void 0;\nconst Utils_1 = require(\"../../../utils/Utils\");\nexports.OptionsPreset = Utils_1.Utils.makeEnum({\n Default: 'default',\n LowObfuscation: 'low-obfuscation',\n MediumObfuscation: 'medium-obfuscation',\n HighObfuscation: 'high-obfuscation'\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SourceMapMode = void 0;\nconst Utils_1 = require(\"../../utils/Utils\");\nexports.SourceMapMode = Utils_1.Utils.makeEnum({\n Inline: 'inline',\n Separate: 'separate'\n});\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObfuscationEventEmitter = void 0;\nconst inversify_1 = require(\"inversify\");\nconst eventemitter3_1 = __importDefault(require(\"eventemitter3\"));\ninversify_1.decorate(inversify_1.injectable(), eventemitter3_1.default);\nlet ObfuscationEventEmitter = class ObfuscationEventEmitter extends eventemitter3_1.default {\n};\nObfuscationEventEmitter = __decorate([\n inversify_1.injectable()\n], ObfuscationEventEmitter);\nexports.ObfuscationEventEmitter = ObfuscationEventEmitter;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractIdentifierNamesGenerator = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet AbstractIdentifierNamesGenerator = class AbstractIdentifierNamesGenerator {\n constructor(randomGenerator, options) {\n this.preservedNamesSet = new Set();\n this.lexicalScopesPreservedNamesMap = new Map();\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n generate(lexicalScopeNode, nameLength) {\n return NodeGuards_1.NodeGuards.isProgramNode(lexicalScopeNode)\n ? this.generateForGlobalScope()\n : this.generateForLexicalScope(lexicalScopeNode);\n }\n preserveName(name) {\n this.preservedNamesSet.add(name);\n }\n preserveNameForLexicalScope(name, lexicalScopeNode) {\n var _a;\n const preservedNamesForLexicalScopeSet = (_a = this.lexicalScopesPreservedNamesMap.get(lexicalScopeNode)) !== null && _a !== void 0 ? _a : new Set();\n preservedNamesForLexicalScopeSet.add(name);\n this.lexicalScopesPreservedNamesMap.set(lexicalScopeNode, preservedNamesForLexicalScopeSet);\n }\n isValidIdentifierName(name) {\n return this.notReservedName(name) && !this.preservedNamesSet.has(name);\n }\n isValidIdentifierNameInLexicalScopes(name, lexicalScopeNodes) {\n var _a;\n if (!this.isValidIdentifierName(name)) {\n return false;\n }\n for (const lexicalScope of lexicalScopeNodes) {\n const preservedNamesForLexicalScopeSet = (_a = this.lexicalScopesPreservedNamesMap.get(lexicalScope)) !== null && _a !== void 0 ? _a : null;\n if (!preservedNamesForLexicalScopeSet) {\n continue;\n }\n if (preservedNamesForLexicalScopeSet.has(name)) {\n return false;\n }\n }\n return true;\n }\n notReservedName(name) {\n return this.options.reservedNames.length\n ? !this.options.reservedNames.some((reservedName) => new RegExp(reservedName, 'g').exec(name) !== null)\n : true;\n }\n};\nAbstractIdentifierNamesGenerator = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], AbstractIdentifierNamesGenerator);\nexports.AbstractIdentifierNamesGenerator = AbstractIdentifierNamesGenerator;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar DictionaryIdentifierNamesGenerator_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DictionaryIdentifierNamesGenerator = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IArrayUtils_1 = require(\"../../interfaces/utils/IArrayUtils\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst AbstractIdentifierNamesGenerator_1 = require(\"./AbstractIdentifierNamesGenerator\");\nconst NodeLexicalScopeUtils_1 = require(\"../../node/NodeLexicalScopeUtils\");\nlet DictionaryIdentifierNamesGenerator = DictionaryIdentifierNamesGenerator_1 = class DictionaryIdentifierNamesGenerator extends AbstractIdentifierNamesGenerator_1.AbstractIdentifierNamesGenerator {\n constructor(randomGenerator, options, arrayUtils) {\n super(randomGenerator, options);\n this.arrayUtils = arrayUtils;\n this.identifierNamesSet = new Set(this.getInitialIdentifierNames(this.options.identifiersDictionary));\n this.identifiersIterator = this.identifierNamesSet.values();\n }\n static incrementIdentifierName(identifierName) {\n let newIdentifierName = '';\n let isSuccess = false;\n for (const character of identifierName) {\n if (!isSuccess && character === character.toUpperCase()) {\n newIdentifierName += character.toLowerCase();\n }\n else if (!isSuccess && character === character.toLowerCase()) {\n newIdentifierName += character.toUpperCase();\n isSuccess = true;\n }\n else {\n newIdentifierName += character;\n }\n }\n if (isSuccess) {\n return newIdentifierName;\n }\n return null;\n }\n generateNext() {\n const identifierName = this.generateNewDictionaryName();\n this.preserveName(identifierName);\n return identifierName;\n }\n generateForGlobalScope() {\n const prefix = this.options.identifiersPrefix ?\n `${this.options.identifiersPrefix}`\n : '';\n const identifierName = this.generateNewDictionaryName();\n const identifierNameWithPrefix = `${prefix}${identifierName}`;\n if (!this.isValidIdentifierName(identifierNameWithPrefix)) {\n return this.generateForGlobalScope();\n }\n this.preserveName(identifierNameWithPrefix);\n return identifierNameWithPrefix;\n }\n generateForLexicalScope(lexicalScopeNode) {\n const lexicalScopes = [\n lexicalScopeNode,\n ...NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScopes(lexicalScopeNode)\n ];\n const identifierName = this.generateNewDictionaryName();\n if (!this.isValidIdentifierNameInLexicalScopes(identifierName, lexicalScopes)) {\n return this.generateForLexicalScope(lexicalScopeNode);\n }\n this.preserveNameForLexicalScope(identifierName, lexicalScopeNode);\n return identifierName;\n }\n generateNewDictionaryName() {\n if (!this.identifierNamesSet.size) {\n throw new Error('Too many identifiers in the code, add more words to identifiers dictionary');\n }\n const iteratorResult = this.identifiersIterator.next();\n if (!iteratorResult.done) {\n const identifierName = iteratorResult.value;\n if (!this.isValidIdentifierName(identifierName)) {\n return this.generateNewDictionaryName();\n }\n return iteratorResult.value;\n }\n this.identifierNamesSet = new Set(this.getIncrementedIdentifierNames([...this.identifierNamesSet]));\n this.identifiersIterator = this.identifierNamesSet.values();\n return this.generateNewDictionaryName();\n }\n getInitialIdentifierNames(identifierNames) {\n const formattedIdentifierNames = identifierNames\n .filter(Boolean)\n .map((identifierName) => identifierName.toLowerCase());\n return this.arrayUtils.shuffle(formattedIdentifierNames);\n }\n getIncrementedIdentifierNames(identifierNames) {\n const formattedIdentifierNames = [];\n for (const identifierName of identifierNames) {\n const newIdentifierName = DictionaryIdentifierNamesGenerator_1\n .incrementIdentifierName(identifierName);\n if (newIdentifierName) {\n formattedIdentifierNames.push(newIdentifierName);\n }\n }\n return this.arrayUtils.shuffle(formattedIdentifierNames);\n }\n};\nDictionaryIdentifierNamesGenerator = DictionaryIdentifierNamesGenerator_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object, typeof (_c = typeof IArrayUtils_1.IArrayUtils !== \"undefined\" && IArrayUtils_1.IArrayUtils) === \"function\" ? _c : Object])\n], DictionaryIdentifierNamesGenerator);\nexports.DictionaryIdentifierNamesGenerator = DictionaryIdentifierNamesGenerator;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar HexadecimalIdentifierNamesGenerator_1, _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HexadecimalIdentifierNamesGenerator = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst AbstractIdentifierNamesGenerator_1 = require(\"./AbstractIdentifierNamesGenerator\");\nconst NumberUtils_1 = require(\"../../utils/NumberUtils\");\nconst Utils_1 = require(\"../../utils/Utils\");\nlet HexadecimalIdentifierNamesGenerator = HexadecimalIdentifierNamesGenerator_1 = class HexadecimalIdentifierNamesGenerator extends AbstractIdentifierNamesGenerator_1.AbstractIdentifierNamesGenerator {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n generateNext(nameLength) {\n const rangeMinInteger = 10000;\n const rangeMaxInteger = 99999999;\n const randomInteger = this.randomGenerator.getRandomInteger(rangeMinInteger, rangeMaxInteger);\n const hexadecimalNumber = NumberUtils_1.NumberUtils.toHex(randomInteger);\n const prefixLength = Utils_1.Utils.hexadecimalPrefix.length;\n const baseNameLength = (nameLength !== null && nameLength !== void 0 ? nameLength : HexadecimalIdentifierNamesGenerator_1.baseIdentifierNameLength)\n + prefixLength;\n const baseIdentifierName = hexadecimalNumber.slice(0, baseNameLength);\n const identifierName = `_${baseIdentifierName}`;\n if (!this.isValidIdentifierName(identifierName)) {\n return this.generateNext(nameLength);\n }\n this.preserveName(identifierName);\n return identifierName;\n }\n generateForGlobalScope(nameLength) {\n const identifierName = this.generateNext(nameLength);\n return `${this.options.identifiersPrefix}${identifierName}`.replace('__', '_');\n }\n generateForLexicalScope(lexicalScopeNode, nameLength) {\n return this.generateNext(nameLength);\n }\n};\nHexadecimalIdentifierNamesGenerator.baseIdentifierNameLength = 6;\nHexadecimalIdentifierNamesGenerator = HexadecimalIdentifierNamesGenerator_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], HexadecimalIdentifierNamesGenerator);\nexports.HexadecimalIdentifierNamesGenerator = HexadecimalIdentifierNamesGenerator;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar MangledIdentifierNamesGenerator_1, _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MangledIdentifierNamesGenerator = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NumbersString_1 = require(\"../../constants/NumbersString\");\nconst AlphabetString_1 = require(\"../../constants/AlphabetString\");\nconst AlphabetStringUppercase_1 = require(\"../../constants/AlphabetStringUppercase\");\nconst AbstractIdentifierNamesGenerator_1 = require(\"./AbstractIdentifierNamesGenerator\");\nconst NodeLexicalScopeUtils_1 = require(\"../../node/NodeLexicalScopeUtils\");\nlet MangledIdentifierNamesGenerator = MangledIdentifierNamesGenerator_1 = class MangledIdentifierNamesGenerator extends AbstractIdentifierNamesGenerator_1.AbstractIdentifierNamesGenerator {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n this.previousMangledName = MangledIdentifierNamesGenerator_1.initMangledNameCharacter;\n }\n generateNext(nameLength) {\n const identifierName = this.generateNewMangledName(this.previousMangledName);\n this.updatePreviousMangledName(identifierName);\n this.preserveName(identifierName);\n return identifierName;\n }\n generateForGlobalScope(nameLength) {\n const prefix = this.options.identifiersPrefix ?\n `${this.options.identifiersPrefix}`\n : '';\n const identifierName = this.generateNewMangledName(this.previousMangledName);\n const identifierNameWithPrefix = `${prefix}${identifierName}`;\n this.updatePreviousMangledName(identifierName);\n if (!this.isValidIdentifierName(identifierNameWithPrefix)) {\n return this.generateForGlobalScope(nameLength);\n }\n this.preserveName(identifierNameWithPrefix);\n return identifierNameWithPrefix;\n }\n generateForLexicalScope(lexicalScopeNode, nameLength) {\n const lexicalScopes = [\n lexicalScopeNode,\n ...NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScopes(lexicalScopeNode)\n ];\n const lastMangledNameForScope = this.getLastMangledNameForScopes(lexicalScopes);\n let identifierName = lastMangledNameForScope;\n do {\n identifierName = this.generateNewMangledName(identifierName);\n } while (!this.isValidIdentifierNameInLexicalScopes(identifierName, lexicalScopes));\n MangledIdentifierNamesGenerator_1.lastMangledNameInScopeMap.set(lexicalScopeNode, identifierName);\n this.updatePreviousMangledName(identifierName);\n this.preserveNameForLexicalScope(identifierName, lexicalScopeNode);\n return identifierName;\n }\n isIncrementedMangledName(nextName, prevName) {\n if (nextName === prevName) {\n return false;\n }\n const nextNameLength = nextName.length;\n const prevNameLength = prevName.length;\n if (nextNameLength !== prevNameLength) {\n return nextNameLength > prevNameLength;\n }\n const nameSequence = this.getNameSequence();\n for (let i = 0; i < nextNameLength; i++) {\n const nextNameCharacter = nextName[i];\n const prevNameCharacter = prevName[i];\n if (nextNameCharacter === prevNameCharacter) {\n continue;\n }\n const indexOfNextNameCharacter = nameSequence.indexOf(nextNameCharacter);\n const indexOfPrevNameCharacter = nameSequence.indexOf(prevNameCharacter);\n return indexOfNextNameCharacter > indexOfPrevNameCharacter;\n }\n throw new Error('Something goes wrong during comparison of mangled names');\n }\n isValidIdentifierName(mangledName) {\n return super.isValidIdentifierName(mangledName)\n && !MangledIdentifierNamesGenerator_1.reservedNamesSet.has(mangledName);\n }\n getNameSequence() {\n return MangledIdentifierNamesGenerator_1.nameSequence;\n }\n updatePreviousMangledName(name) {\n if (!this.isIncrementedMangledName(name, this.previousMangledName)) {\n return;\n }\n this.previousMangledName = name;\n }\n generateNewMangledName(previousMangledName) {\n const generateNewMangledName = (name) => {\n const nameSequence = this.getNameSequence();\n const nameSequenceLength = nameSequence.length;\n const nameLength = name.length;\n const zeroSequence = (num) => {\n return '0'.repeat(num);\n };\n let index = nameLength - 1;\n do {\n const character = name[index];\n const indexInSequence = nameSequence.indexOf(character);\n const lastNameSequenceIndex = nameSequenceLength - 1;\n if (indexInSequence !== lastNameSequenceIndex) {\n const previousNamePart = name.slice(0, index);\n const nextCharacter = nameSequence[indexInSequence + 1];\n const zeroSequenceLength = nameLength - (index + 1);\n const zeroSequenceCharacters = zeroSequence(zeroSequenceLength);\n return previousNamePart + nextCharacter + zeroSequenceCharacters;\n }\n --index;\n } while (index >= 0);\n const firstLetterCharacter = nameSequence[NumbersString_1.numbersString.length];\n return `${firstLetterCharacter}${zeroSequence(nameLength)}`;\n };\n let newMangledName = generateNewMangledName(previousMangledName);\n if (!this.isValidIdentifierName(newMangledName)) {\n newMangledName = this.generateNewMangledName(newMangledName);\n }\n return newMangledName;\n }\n getLastMangledNameForScopes(lexicalScopeNodes) {\n var _a;\n for (const lexicalScope of lexicalScopeNodes) {\n const lastMangledName = (_a = MangledIdentifierNamesGenerator_1.lastMangledNameInScopeMap\n .get(lexicalScope)) !== null && _a !== void 0 ? _a : null;\n if (!lastMangledName) {\n continue;\n }\n return lastMangledName;\n }\n return MangledIdentifierNamesGenerator_1.initMangledNameCharacter;\n }\n};\nMangledIdentifierNamesGenerator.initMangledNameCharacter = '9';\nMangledIdentifierNamesGenerator.lastMangledNameInScopeMap = new WeakMap();\nMangledIdentifierNamesGenerator.nameSequence = [\n ...`${NumbersString_1.numbersString}${AlphabetString_1.alphabetString}${AlphabetStringUppercase_1.alphabetStringUppercase}`\n];\nMangledIdentifierNamesGenerator.reservedNamesSet = new Set([\n 'byte', 'case', 'char', 'do', 'else', 'enum', 'eval', 'for', 'goto',\n 'if', 'in', 'int', 'let', 'long', 'new', 'null', 'this', 'true', 'try',\n 'var', 'void', 'with'\n]);\nMangledIdentifierNamesGenerator = MangledIdentifierNamesGenerator_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], MangledIdentifierNamesGenerator);\nexports.MangledIdentifierNamesGenerator = MangledIdentifierNamesGenerator;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar MangledShuffledIdentifierNamesGenerator_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MangledShuffledIdentifierNamesGenerator = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IArrayUtils_1 = require(\"../../interfaces/utils/IArrayUtils\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NumbersString_1 = require(\"../../constants/NumbersString\");\nconst AlphabetString_1 = require(\"../../constants/AlphabetString\");\nconst AlphabetStringUppercase_1 = require(\"../../constants/AlphabetStringUppercase\");\nconst MangledIdentifierNamesGenerator_1 = require(\"./MangledIdentifierNamesGenerator\");\nlet MangledShuffledIdentifierNamesGenerator = MangledShuffledIdentifierNamesGenerator_1 = class MangledShuffledIdentifierNamesGenerator extends MangledIdentifierNamesGenerator_1.MangledIdentifierNamesGenerator {\n constructor(arrayUtils, randomGenerator, options) {\n super(randomGenerator, options);\n this.arrayUtils = arrayUtils;\n }\n initialize() {\n this.initializeNameSequence([\n ...`${NumbersString_1.numbersString}`,\n ...this.arrayUtils.shuffle([...`${AlphabetString_1.alphabetString}${AlphabetStringUppercase_1.alphabetStringUppercase}`])\n ]);\n }\n initializeNameSequence(nameSequence) {\n if (!this.getNameSequence()) {\n MangledShuffledIdentifierNamesGenerator_1.shuffledNameSequence = nameSequence;\n }\n }\n getNameSequence() {\n return MangledShuffledIdentifierNamesGenerator_1.shuffledNameSequence;\n }\n generateNewMangledName(previousMangledName) {\n return super.generateNewMangledName(previousMangledName);\n }\n};\n__decorate([\n inversify_1.postConstruct(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], MangledShuffledIdentifierNamesGenerator.prototype, \"initialize\", null);\nMangledShuffledIdentifierNamesGenerator = MangledShuffledIdentifierNamesGenerator_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IArrayUtils_1.IArrayUtils !== \"undefined\" && IArrayUtils_1.IArrayUtils) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], MangledShuffledIdentifierNamesGenerator);\nexports.MangledShuffledIdentifierNamesGenerator = MangledShuffledIdentifierNamesGenerator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar Logger_1, _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logger = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst chalk_1 = __importDefault(require(\"chalk\"));\nconst IOptions_1 = require(\"../interfaces/options/IOptions\");\nconst LoggingPrefix_1 = require(\"../enums/logger/LoggingPrefix\");\nlet Logger = Logger_1 = class Logger {\n constructor(options) {\n this.options = options;\n }\n static log(loggingLevelColor, loggingPrefix, loggingMessage, value) {\n const processedMessage = loggingLevelColor(`\\n${loggingPrefix} ${loggingMessage}`);\n console.log(processedMessage, value !== null && value !== void 0 ? value : '');\n }\n info(loggingMessage, value) {\n if (!this.options.log) {\n return;\n }\n Logger_1.log(Logger_1.colorInfo, LoggingPrefix_1.LoggingPrefix.Base, loggingMessage, value);\n }\n success(loggingMessage, value) {\n if (!this.options.log) {\n return;\n }\n Logger_1.log(Logger_1.colorSuccess, LoggingPrefix_1.LoggingPrefix.Base, loggingMessage, value);\n }\n warn(loggingMessage, value) {\n if (!this.options.log) {\n return;\n }\n Logger_1.log(Logger_1.colorWarn, LoggingPrefix_1.LoggingPrefix.Base, loggingMessage, value);\n }\n};\nLogger.colorInfo = chalk_1.default.cyan;\nLogger.colorSuccess = chalk_1.default.green;\nLogger.colorWarn = chalk_1.default.yellow;\nLogger = Logger_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _a : Object])\n], Logger);\nexports.Logger = Logger;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractNodeTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nlet AbstractNodeTransformer = class AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n};\nAbstractNodeTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], AbstractNodeTransformer);\nexports.AbstractNodeTransformer = AbstractNodeTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeTransformerNamesGroupsBuilder = void 0;\nconst inversify_1 = require(\"inversify\");\nconst AbstractTransformerNamesGroupsBuilder_1 = require(\"../utils/AbstractTransformerNamesGroupsBuilder\");\nlet NodeTransformerNamesGroupsBuilder = class NodeTransformerNamesGroupsBuilder extends AbstractTransformerNamesGroupsBuilder_1.AbstractTransformerNamesGroupsBuilder {\n};\nNodeTransformerNamesGroupsBuilder = __decorate([\n inversify_1.injectable()\n], NodeTransformerNamesGroupsBuilder);\nexports.NodeTransformerNamesGroupsBuilder = NodeTransformerNamesGroupsBuilder;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeTransformersRunner = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst TNodeTransformerFactory_1 = require(\"../types/container/node-transformers/TNodeTransformerFactory\");\nconst ITransformerNamesGroupsBuilder_1 = require(\"../interfaces/utils/ITransformerNamesGroupsBuilder\");\nconst VisitorDirection_1 = require(\"../enums/node-transformers/VisitorDirection\");\nconst NodeGuards_1 = require(\"../node/NodeGuards\");\nconst NodeMetadata_1 = require(\"../node/NodeMetadata\");\nlet NodeTransformersRunner = class NodeTransformersRunner {\n constructor(nodeTransformerFactory, nodeTransformerNamesGroupsBuilder) {\n this.nodeTransformerFactory = nodeTransformerFactory;\n this.nodeTransformerNamesGroupsBuilder = nodeTransformerNamesGroupsBuilder;\n }\n transform(astTree, nodeTransformerNames, nodeTransformationStage) {\n if (!nodeTransformerNames.length) {\n return astTree;\n }\n const normalizedNodeTransformers = this.buildNormalizedNodeTransformers(nodeTransformerNames, nodeTransformationStage);\n const nodeTransformerNamesGroups = this.nodeTransformerNamesGroupsBuilder.build(normalizedNodeTransformers);\n for (const nodeTransformerNamesGroup of nodeTransformerNamesGroups) {\n const enterVisitors = [];\n const leaveVisitors = [];\n for (const nodeTransformerName of nodeTransformerNamesGroup) {\n const nodeTransformer = normalizedNodeTransformers[nodeTransformerName];\n const visitor = nodeTransformer.getVisitor(nodeTransformationStage);\n if (!visitor) {\n continue;\n }\n if (visitor.enter) {\n enterVisitors.push({ enter: visitor.enter });\n }\n if (visitor.leave) {\n leaveVisitors.push({ leave: visitor.leave });\n }\n }\n if (!enterVisitors.length && !leaveVisitors.length) {\n continue;\n }\n estraverse.replace(astTree, {\n enter: this.mergeVisitorsForDirection(enterVisitors, VisitorDirection_1.VisitorDirection.Enter),\n leave: this.mergeVisitorsForDirection(leaveVisitors, VisitorDirection_1.VisitorDirection.Leave)\n });\n }\n return astTree;\n }\n buildNormalizedNodeTransformers(nodeTransformerNames, nodeTransformationStage) {\n return nodeTransformerNames\n .reduce((acc, nodeTransformerName) => {\n const nodeTransformer = this.nodeTransformerFactory(nodeTransformerName);\n if (!nodeTransformer.getVisitor(nodeTransformationStage)) {\n return acc;\n }\n return Object.assign(Object.assign({}, acc), { [nodeTransformerName]: nodeTransformer });\n }, {});\n }\n mergeVisitorsForDirection(visitors, direction) {\n const visitorsLength = visitors.length;\n if (!visitorsLength) {\n return (node, parentNode) => node;\n }\n return (node, parentNode) => {\n if (NodeMetadata_1.NodeMetadata.isIgnoredNode(node)) {\n return estraverse.VisitorOption.Skip;\n }\n for (let i = 0; i < visitorsLength; i++) {\n const visitorFunction = visitors[i][direction];\n if (!visitorFunction) {\n continue;\n }\n const visitorResult = visitorFunction(node, parentNode);\n if (!visitorResult || !NodeGuards_1.NodeGuards.isNode(visitorResult)) {\n continue;\n }\n node = visitorResult;\n }\n return node;\n };\n }\n};\nNodeTransformersRunner = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeTransformer)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformerNamesGroupsBuilder)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TNodeTransformerFactory_1.TNodeTransformerFactory !== \"undefined\" && TNodeTransformerFactory_1.TNodeTransformerFactory) === \"function\" ? _a : Object, typeof (_b = typeof ITransformerNamesGroupsBuilder_1.ITransformerNamesGroupsBuilder !== \"undefined\" && ITransformerNamesGroupsBuilder_1.ITransformerNamesGroupsBuilder) === \"function\" ? _b : Object])\n], NodeTransformersRunner);\nexports.NodeTransformersRunner = NodeTransformersRunner;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar BlockStatementControlFlowTransformer_1, _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlockStatementControlFlowTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst TControlFlowCustomNodeFactory_1 = require(\"../../types/container/custom-nodes/TControlFlowCustomNodeFactory\");\nconst IArrayUtils_1 = require(\"../../interfaces/utils/IArrayUtils\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst ControlFlowCustomNode_1 = require(\"../../enums/custom-nodes/ControlFlowCustomNode\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet BlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer_1 = class BlockStatementControlFlowTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(controlFlowCustomNodeFactory, arrayUtils, randomGenerator, options) {\n super(randomGenerator, options);\n this.controlFlowCustomNodeFactory = controlFlowCustomNodeFactory;\n this.arrayUtils = arrayUtils;\n }\n static isProhibitedStatementNode(node) {\n const isBreakOrContinueStatement = NodeGuards_1.NodeGuards.isBreakStatementNode(node)\n || NodeGuards_1.NodeGuards.isContinueStatementNode(node);\n const isVariableDeclarationWithLetOrConstKind = NodeGuards_1.NodeGuards.isVariableDeclarationNode(node)\n && (node.kind === 'const' || node.kind === 'let');\n const isClassDeclaration = NodeGuards_1.NodeGuards.isClassDeclarationNode(node);\n return NodeGuards_1.NodeGuards.isFunctionDeclarationNode(node)\n || isBreakOrContinueStatement\n || isVariableDeclarationWithLetOrConstKind\n || isClassDeclaration;\n }\n static canTransformBlockStatementNode(blockStatementNode) {\n let canTransform = true;\n estraverse.traverse(blockStatementNode, {\n enter: (node) => {\n if (NodeGuards_1.NodeGuards.isWhileStatementNode(node)) {\n return estraverse.VisitorOption.Skip;\n }\n if (BlockStatementControlFlowTransformer_1.isProhibitedStatementNode(node)) {\n canTransform = false;\n }\n }\n });\n if (blockStatementNode.body.length <= 4) {\n canTransform = false;\n }\n return canTransform;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.ControlFlowFlattening:\n return {\n leave: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isBlockStatementNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(blockStatementNode, parentNode) {\n if (this.randomGenerator.getMathRandom() > this.options.controlFlowFlatteningThreshold ||\n !BlockStatementControlFlowTransformer_1.canTransformBlockStatementNode(blockStatementNode)) {\n return blockStatementNode;\n }\n const blockStatementBody = blockStatementNode.body;\n const originalKeys = this.arrayUtils.createWithRange(blockStatementBody.length);\n const shuffledKeys = this.arrayUtils.shuffle(originalKeys);\n const originalKeysIndexesInShuffledArray = originalKeys.map((key) => shuffledKeys.indexOf(key));\n const blockStatementControlFlowFlatteningCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.BlockStatementControlFlowFlatteningNode);\n blockStatementControlFlowFlatteningCustomNode.initialize(blockStatementBody, shuffledKeys, originalKeysIndexesInShuffledArray);\n const newBlockStatementNode = blockStatementControlFlowFlatteningCustomNode.getNode()[0];\n NodeUtils_1.NodeUtils.parentizeNode(newBlockStatementNode, parentNode);\n return newBlockStatementNode;\n }\n};\nBlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory !== \"undefined\" && TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory) === \"function\" ? _a : Object, typeof (_b = typeof IArrayUtils_1.IArrayUtils !== \"undefined\" && IArrayUtils_1.IArrayUtils) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], BlockStatementControlFlowTransformer);\nexports.BlockStatementControlFlowTransformer = BlockStatementControlFlowTransformer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar FunctionControlFlowTransformer_1, _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FunctionControlFlowTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst TControlFlowCustomNodeFactory_1 = require(\"../../types/container/custom-nodes/TControlFlowCustomNodeFactory\");\nconst TControlFlowReplacerFactory_1 = require(\"../../types/container/node-transformers/TControlFlowReplacerFactory\");\nconst TControlFlowStorageFactory_1 = require(\"../../types/container/node-transformers/TControlFlowStorageFactory\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst ControlFlowCustomNode_1 = require(\"../../enums/custom-nodes/ControlFlowCustomNode\");\nconst ControlFlowReplacer_1 = require(\"../../enums/node-transformers/control-flow-transformers/control-flow-replacers/ControlFlowReplacer\");\nconst NodeType_1 = require(\"../../enums/node/NodeType\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeAppender_1 = require(\"../../node/NodeAppender\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeMetadata_1 = require(\"../../node/NodeMetadata\");\nconst NodeStatementUtils_1 = require(\"../../node/NodeStatementUtils\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet FunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = class FunctionControlFlowTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(controlFlowStorageFactory, controlFlowReplacerFactory, controlFlowCustomNodeFactory, randomGenerator, options) {\n super(randomGenerator, options);\n this.controlFlowData = new Map();\n this.visitedFunctionNodes = new Set();\n this.hostNodesWithControlFlowNode = new Set();\n this.controlFlowStorageFactory = controlFlowStorageFactory;\n this.controlFlowReplacerFactory = controlFlowReplacerFactory;\n this.controlFlowCustomNodeFactory = controlFlowCustomNodeFactory;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.ControlFlowFlattening:\n return {\n leave: (node, parentNode) => {\n if (parentNode && (NodeGuards_1.NodeGuards.isFunctionDeclarationNode(node) ||\n NodeGuards_1.NodeGuards.isFunctionExpressionNode(node) ||\n NodeGuards_1.NodeGuards.isArrowFunctionExpressionNode(node))) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(functionNode, parentNode) {\n this.visitedFunctionNodes.add(functionNode);\n if (!NodeGuards_1.NodeGuards.isBlockStatementNode(functionNode.body)) {\n return functionNode;\n }\n const hostNode = this.getHostNode(functionNode.body);\n const controlFlowStorage = this.getControlFlowStorage(hostNode);\n this.controlFlowData.set(hostNode, controlFlowStorage);\n this.transformFunctionBody(functionNode.body, controlFlowStorage);\n if (!controlFlowStorage.getLength()) {\n return functionNode;\n }\n const controlFlowStorageCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.ControlFlowStorageNode);\n controlFlowStorageCustomNode.initialize(controlFlowStorage);\n NodeAppender_1.NodeAppender.prepend(hostNode, controlFlowStorageCustomNode.getNode());\n this.hostNodesWithControlFlowNode.add(hostNode);\n NodeUtils_1.NodeUtils.parentizeAst(functionNode);\n return functionNode;\n }\n getControlFlowStorage(hostNode) {\n const controlFlowStorage = this.controlFlowStorageFactory();\n if (this.controlFlowData.has(hostNode)) {\n if (this.hostNodesWithControlFlowNode.has(hostNode)) {\n if (NodeGuards_1.NodeGuards.isSwitchCaseNode(hostNode)) {\n hostNode.consequent.shift();\n }\n else {\n hostNode.body.shift();\n }\n }\n const hostControlFlowStorage = this.controlFlowData.get(hostNode);\n controlFlowStorage.mergeWith(hostControlFlowStorage, true);\n }\n return controlFlowStorage;\n }\n getHostNode(functionNodeBody) {\n const blockScopesOfNode = NodeStatementUtils_1.NodeStatementUtils.getParentNodesWithStatements(functionNodeBody);\n if (blockScopesOfNode.length === 1) {\n return functionNodeBody;\n }\n else {\n blockScopesOfNode.pop();\n }\n if (blockScopesOfNode.length > FunctionControlFlowTransformer_1.hostNodeSearchMinDepth) {\n blockScopesOfNode.splice(0, FunctionControlFlowTransformer_1.hostNodeSearchMinDepth);\n }\n if (blockScopesOfNode.length > FunctionControlFlowTransformer_1.hostNodeSearchMaxDepth) {\n blockScopesOfNode.length = FunctionControlFlowTransformer_1.hostNodeSearchMaxDepth;\n }\n return this.randomGenerator.getRandomGenerator().pickone(blockScopesOfNode);\n }\n isVisitedFunctionNode(node) {\n return (NodeGuards_1.NodeGuards.isFunctionDeclarationNode(node) ||\n NodeGuards_1.NodeGuards.isFunctionExpressionNode(node) ||\n NodeGuards_1.NodeGuards.isArrowFunctionExpressionNode(node)) && this.visitedFunctionNodes.has(node);\n }\n transformFunctionBody(functionNodeBody, controlFlowStorage) {\n estraverse.replace(functionNodeBody, {\n enter: (node, parentNode) => {\n if (NodeMetadata_1.NodeMetadata.isIgnoredNode(node)) {\n return estraverse.VisitorOption.Skip;\n }\n if (this.isVisitedFunctionNode(node) || !parentNode) {\n return estraverse.VisitorOption.Skip;\n }\n if (!FunctionControlFlowTransformer_1.controlFlowReplacersMap.has(node.type)) {\n return node;\n }\n if (this.randomGenerator.getMathRandom() > this.options.controlFlowFlatteningThreshold) {\n return node;\n }\n const controlFlowReplacerName = FunctionControlFlowTransformer_1\n .controlFlowReplacersMap.get(node.type);\n if (controlFlowReplacerName === undefined) {\n return node;\n }\n return Object.assign(Object.assign({}, this.controlFlowReplacerFactory(controlFlowReplacerName).replace(node, parentNode, controlFlowStorage)), { parentNode });\n }\n });\n }\n};\nFunctionControlFlowTransformer.controlFlowReplacersMap = new Map([\n [NodeType_1.NodeType.BinaryExpression, ControlFlowReplacer_1.ControlFlowReplacer.BinaryExpressionControlFlowReplacer],\n [NodeType_1.NodeType.CallExpression, ControlFlowReplacer_1.ControlFlowReplacer.CallExpressionControlFlowReplacer],\n [NodeType_1.NodeType.LogicalExpression, ControlFlowReplacer_1.ControlFlowReplacer.LogicalExpressionControlFlowReplacer],\n [NodeType_1.NodeType.Literal, ControlFlowReplacer_1.ControlFlowReplacer.StringLiteralControlFlowReplacer]\n]);\nFunctionControlFlowTransformer.hostNodeSearchMinDepth = 0;\nFunctionControlFlowTransformer.hostNodeSearchMaxDepth = 2;\nFunctionControlFlowTransformer = FunctionControlFlowTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__TControlFlowStorage)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowReplacer)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TControlFlowStorageFactory_1.TControlFlowStorageFactory !== \"undefined\" && TControlFlowStorageFactory_1.TControlFlowStorageFactory) === \"function\" ? _a : Object, typeof (_b = typeof TControlFlowReplacerFactory_1.TControlFlowReplacerFactory !== \"undefined\" && TControlFlowReplacerFactory_1.TControlFlowReplacerFactory) === \"function\" ? _b : Object, typeof (_c = typeof TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory !== \"undefined\" && TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory) === \"function\" ? _c : Object, typeof (_d = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _d : Object, typeof (_e = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _e : Object])\n], FunctionControlFlowTransformer);\nexports.FunctionControlFlowTransformer = FunctionControlFlowTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar AbstractControlFlowReplacer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractControlFlowReplacer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TControlFlowCustomNodeFactory_1 = require(\"../../../types/container/custom-nodes/TControlFlowCustomNodeFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nlet AbstractControlFlowReplacer = AbstractControlFlowReplacer_1 = class AbstractControlFlowReplacer {\n constructor(controlFlowCustomNodeFactory, randomGenerator, options) {\n this.replacerDataByControlFlowStorageId = new Map();\n this.controlFlowCustomNodeFactory = controlFlowCustomNodeFactory;\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n static getStorageKeysByIdForCurrentStorage(identifierDataByControlFlowStorageId, controlFlowStorageId) {\n let storageKeysById;\n if (identifierDataByControlFlowStorageId.has(controlFlowStorageId)) {\n storageKeysById = identifierDataByControlFlowStorageId.get(controlFlowStorageId);\n }\n else {\n storageKeysById = new Map();\n }\n return storageKeysById;\n }\n insertCustomNodeToControlFlowStorage(customNode, controlFlowStorage, replacerId, usingExistingIdentifierChance) {\n const controlFlowStorageId = controlFlowStorage.getStorageId();\n const storageKeysById = AbstractControlFlowReplacer_1\n .getStorageKeysByIdForCurrentStorage(this.replacerDataByControlFlowStorageId, controlFlowStorageId);\n const storageKeysForCurrentId = storageKeysById.get(replacerId);\n if (this.randomGenerator.getMathRandom() < usingExistingIdentifierChance &&\n storageKeysForCurrentId &&\n storageKeysForCurrentId.length) {\n return this.randomGenerator.getRandomGenerator().pickone(storageKeysForCurrentId);\n }\n const generateStorageKey = (length) => {\n const key = this.randomGenerator.getRandomString(length);\n if (controlFlowStorage.getStorage().has(key)) {\n return generateStorageKey(length);\n }\n return key;\n };\n const storageKey = generateStorageKey(5);\n storageKeysById.set(replacerId, [storageKey]);\n this.replacerDataByControlFlowStorageId.set(controlFlowStorageId, storageKeysById);\n controlFlowStorage.set(storageKey, customNode);\n return storageKey;\n }\n};\nAbstractControlFlowReplacer = AbstractControlFlowReplacer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory !== \"undefined\" && TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], AbstractControlFlowReplacer);\nexports.AbstractControlFlowReplacer = AbstractControlFlowReplacer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar BinaryExpressionControlFlowReplacer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BinaryExpressionControlFlowReplacer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TControlFlowCustomNodeFactory_1 = require(\"../../../types/container/custom-nodes/TControlFlowCustomNodeFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst ControlFlowCustomNode_1 = require(\"../../../enums/custom-nodes/ControlFlowCustomNode\");\nconst ExpressionWithOperatorControlFlowReplacer_1 = require(\"./ExpressionWithOperatorControlFlowReplacer\");\nlet BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = class BinaryExpressionControlFlowReplacer extends ExpressionWithOperatorControlFlowReplacer_1.ExpressionWithOperatorControlFlowReplacer {\n constructor(controlFlowCustomNodeFactory, randomGenerator, options) {\n super(controlFlowCustomNodeFactory, randomGenerator, options);\n }\n replace(binaryExpressionNode, parentNode, controlFlowStorage) {\n const operator = binaryExpressionNode.operator;\n const binaryExpressionFunctionCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.BinaryExpressionFunctionNode);\n binaryExpressionFunctionCustomNode.initialize(operator);\n const storageKey = this.insertCustomNodeToControlFlowStorage(binaryExpressionFunctionCustomNode, controlFlowStorage, operator, BinaryExpressionControlFlowReplacer_1.usingExistingIdentifierChance);\n return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey, binaryExpressionNode.left, binaryExpressionNode.right);\n }\n};\nBinaryExpressionControlFlowReplacer.usingExistingIdentifierChance = 0.5;\nBinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory !== \"undefined\" && TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], BinaryExpressionControlFlowReplacer);\nexports.BinaryExpressionControlFlowReplacer = BinaryExpressionControlFlowReplacer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar CallExpressionControlFlowReplacer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CallExpressionControlFlowReplacer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TControlFlowCustomNodeFactory_1 = require(\"../../../types/container/custom-nodes/TControlFlowCustomNodeFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst ControlFlowCustomNode_1 = require(\"../../../enums/custom-nodes/ControlFlowCustomNode\");\nconst AbstractControlFlowReplacer_1 = require(\"./AbstractControlFlowReplacer\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nlet CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer_1 = class CallExpressionControlFlowReplacer extends AbstractControlFlowReplacer_1.AbstractControlFlowReplacer {\n constructor(controlFlowCustomNodeFactory, randomGenerator, options) {\n super(controlFlowCustomNodeFactory, randomGenerator, options);\n }\n replace(callExpressionNode, parentNode, controlFlowStorage) {\n const callee = callExpressionNode.callee;\n if (!NodeGuards_1.NodeGuards.isIdentifierNode(callee)) {\n return callExpressionNode;\n }\n const replacerId = String(callExpressionNode.arguments.length);\n const callExpressionFunctionCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.CallExpressionFunctionNode);\n const expressionArguments = callExpressionNode.arguments;\n callExpressionFunctionCustomNode.initialize(expressionArguments);\n const storageKey = this.insertCustomNodeToControlFlowStorage(callExpressionFunctionCustomNode, controlFlowStorage, replacerId, CallExpressionControlFlowReplacer_1.usingExistingIdentifierChance);\n return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey, callee, expressionArguments);\n }\n getControlFlowStorageCallNode(controlFlowStorageId, storageKey, callee, expressionArguments) {\n const controlFlowStorageCallCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.CallExpressionControlFlowStorageCallNode);\n controlFlowStorageCallCustomNode.initialize(controlFlowStorageId, storageKey, callee, expressionArguments);\n const statementNode = controlFlowStorageCallCustomNode.getNode()[0];\n if (!statementNode || !NodeGuards_1.NodeGuards.isExpressionStatementNode(statementNode)) {\n throw new Error('`controlFlowStorageCallCustomNode.getNode()[0]` should returns array with `ExpressionStatement` node');\n }\n return statementNode.expression;\n }\n};\nCallExpressionControlFlowReplacer.usingExistingIdentifierChance = 0.5;\nCallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory !== \"undefined\" && TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], CallExpressionControlFlowReplacer);\nexports.CallExpressionControlFlowReplacer = CallExpressionControlFlowReplacer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExpressionWithOperatorControlFlowReplacer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TControlFlowCustomNodeFactory_1 = require(\"../../../types/container/custom-nodes/TControlFlowCustomNodeFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst ControlFlowCustomNode_1 = require(\"../../../enums/custom-nodes/ControlFlowCustomNode\");\nconst AbstractControlFlowReplacer_1 = require(\"./AbstractControlFlowReplacer\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nlet ExpressionWithOperatorControlFlowReplacer = class ExpressionWithOperatorControlFlowReplacer extends AbstractControlFlowReplacer_1.AbstractControlFlowReplacer {\n constructor(controlFlowCustomNodeFactory, randomGenerator, options) {\n super(controlFlowCustomNodeFactory, randomGenerator, options);\n }\n getControlFlowStorageCallNode(controlFlowStorageId, storageKey, leftExpression, rightExpression) {\n const controlFlowStorageCallCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.ExpressionWithOperatorControlFlowStorageCallNode);\n controlFlowStorageCallCustomNode.initialize(controlFlowStorageId, storageKey, leftExpression, rightExpression);\n const statementNode = controlFlowStorageCallCustomNode.getNode()[0];\n if (!statementNode || !NodeGuards_1.NodeGuards.isExpressionStatementNode(statementNode)) {\n throw new Error('`controlFlowStorageCallCustomNode.getNode()[0]` should returns array with `ExpressionStatement` node');\n }\n return statementNode.expression;\n }\n};\nExpressionWithOperatorControlFlowReplacer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory !== \"undefined\" && TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], ExpressionWithOperatorControlFlowReplacer);\nexports.ExpressionWithOperatorControlFlowReplacer = ExpressionWithOperatorControlFlowReplacer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar LogicalExpressionControlFlowReplacer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LogicalExpressionControlFlowReplacer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TControlFlowCustomNodeFactory_1 = require(\"../../../types/container/custom-nodes/TControlFlowCustomNodeFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst ControlFlowCustomNode_1 = require(\"../../../enums/custom-nodes/ControlFlowCustomNode\");\nconst ExpressionWithOperatorControlFlowReplacer_1 = require(\"./ExpressionWithOperatorControlFlowReplacer\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nconst NodeUtils_1 = require(\"../../../node/NodeUtils\");\nlet LogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowReplacer_1 = class LogicalExpressionControlFlowReplacer extends ExpressionWithOperatorControlFlowReplacer_1.ExpressionWithOperatorControlFlowReplacer {\n constructor(controlFlowCustomNodeFactory, randomGenerator, options) {\n super(controlFlowCustomNodeFactory, randomGenerator, options);\n }\n replace(logicalExpressionNode, parentNode, controlFlowStorage) {\n if (this.checkForProhibitedExpressions(logicalExpressionNode.left, logicalExpressionNode.right)) {\n return logicalExpressionNode;\n }\n const operator = logicalExpressionNode.operator;\n const logicalExpressionFunctionCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.LogicalExpressionFunctionNode);\n logicalExpressionFunctionCustomNode.initialize(operator);\n const storageKey = this.insertCustomNodeToControlFlowStorage(logicalExpressionFunctionCustomNode, controlFlowStorage, operator, LogicalExpressionControlFlowReplacer_1.usingExistingIdentifierChance);\n return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey, logicalExpressionNode.left, logicalExpressionNode.right);\n }\n checkForProhibitedExpressions(leftExpression, rightExpression) {\n return [leftExpression, rightExpression].some((expressionNode) => {\n let nodeForCheck;\n if (!NodeGuards_1.NodeGuards.isUnaryExpressionNode(expressionNode)) {\n nodeForCheck = expressionNode;\n }\n else {\n nodeForCheck = NodeUtils_1.NodeUtils.getUnaryExpressionArgumentNode(expressionNode);\n }\n return !NodeGuards_1.NodeGuards.isLiteralNode(nodeForCheck) &&\n !NodeGuards_1.NodeGuards.isIdentifierNode(nodeForCheck) &&\n !NodeGuards_1.NodeGuards.isObjectExpressionNode(nodeForCheck) &&\n !NodeGuards_1.NodeGuards.isExpressionStatementNode(nodeForCheck);\n });\n }\n};\nLogicalExpressionControlFlowReplacer.usingExistingIdentifierChance = 0.5;\nLogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowReplacer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory !== \"undefined\" && TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], LogicalExpressionControlFlowReplacer);\nexports.LogicalExpressionControlFlowReplacer = LogicalExpressionControlFlowReplacer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar StringLiteralControlFlowReplacer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringLiteralControlFlowReplacer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TControlFlowCustomNodeFactory_1 = require(\"../../../types/container/custom-nodes/TControlFlowCustomNodeFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../../interfaces/utils/IRandomGenerator\");\nconst ControlFlowCustomNode_1 = require(\"../../../enums/custom-nodes/ControlFlowCustomNode\");\nconst AbstractControlFlowReplacer_1 = require(\"./AbstractControlFlowReplacer\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nconst NodeLiteralUtils_1 = require(\"../../../node/NodeLiteralUtils\");\nlet StringLiteralControlFlowReplacer = StringLiteralControlFlowReplacer_1 = class StringLiteralControlFlowReplacer extends AbstractControlFlowReplacer_1.AbstractControlFlowReplacer {\n constructor(controlFlowCustomNodeFactory, randomGenerator, options) {\n super(controlFlowCustomNodeFactory, randomGenerator, options);\n }\n replace(literalNode, parentNode, controlFlowStorage) {\n if (NodeGuards_1.NodeGuards.isPropertyNode(parentNode) && parentNode.key === literalNode) {\n return literalNode;\n }\n if (!NodeLiteralUtils_1.NodeLiteralUtils.isStringLiteralNode(literalNode) || literalNode.value.length < 3) {\n return literalNode;\n }\n const replacerId = String(literalNode.value);\n const literalFunctionCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.StringLiteralNode);\n literalFunctionCustomNode.initialize(literalNode.value);\n const storageKey = this.insertCustomNodeToControlFlowStorage(literalFunctionCustomNode, controlFlowStorage, replacerId, StringLiteralControlFlowReplacer_1.usingExistingIdentifierChance);\n return this.getControlFlowStorageCallNode(controlFlowStorage.getStorageId(), storageKey);\n }\n getControlFlowStorageCallNode(controlFlowStorageId, storageKey) {\n const controlFlowStorageCallCustomNode = this.controlFlowCustomNodeFactory(ControlFlowCustomNode_1.ControlFlowCustomNode.StringLiteralControlFlowStorageCallNode);\n controlFlowStorageCallCustomNode.initialize(controlFlowStorageId, storageKey);\n const statementNode = controlFlowStorageCallCustomNode.getNode()[0];\n if (!statementNode || !NodeGuards_1.NodeGuards.isExpressionStatementNode(statementNode)) {\n throw new Error('`controlFlowStorageCallCustomNode.getNode()[0]` should returns array with `ExpressionStatement` node');\n }\n return statementNode.expression;\n }\n};\nStringLiteralControlFlowReplacer.usingExistingIdentifierChance = 1;\nStringLiteralControlFlowReplacer = StringLiteralControlFlowReplacer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IControlFlowCustomNode)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory !== \"undefined\" && TControlFlowCustomNodeFactory_1.TControlFlowCustomNodeFactory) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], StringLiteralControlFlowReplacer);\nexports.StringLiteralControlFlowReplacer = StringLiteralControlFlowReplacer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BooleanLiteralTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nlet BooleanLiteralTransformer = class BooleanLiteralTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isLiteralNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(literalNode, parentNode) {\n if (typeof literalNode.value !== 'boolean') {\n return literalNode;\n }\n const literalValue = literalNode.value;\n const unaryExpressionNode = literalValue\n ? this.getTrueUnaryExpressionNode()\n : this.getFalseUnaryExpressionNode();\n NodeUtils_1.NodeUtils.parentizeNode(unaryExpressionNode, parentNode);\n return unaryExpressionNode;\n }\n getTrueUnaryExpressionNode() {\n return NodeFactory_1.NodeFactory.unaryExpressionNode('!', this.getFalseUnaryExpressionNode());\n }\n getFalseUnaryExpressionNode() {\n return NodeFactory_1.NodeFactory.unaryExpressionNode('!', NodeFactory_1.NodeFactory.arrayExpressionNode());\n }\n};\nBooleanLiteralTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], BooleanLiteralTransformer);\nexports.BooleanLiteralTransformer = BooleanLiteralTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExportSpecifierTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet ExportSpecifierTransformer = class ExportSpecifierTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isExportSpecifierNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(exportSpecifierNode, parentNode) {\n if (exportSpecifierNode.local.name === exportSpecifierNode.exported.name) {\n exportSpecifierNode.exported = NodeUtils_1.NodeUtils.clone(exportSpecifierNode.local);\n }\n return exportSpecifierNode;\n }\n};\nExportSpecifierTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], ExportSpecifierTransformer);\nexports.ExportSpecifierTransformer = ExportSpecifierTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MemberExpressionTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet MemberExpressionTransformer = class MemberExpressionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isMemberExpressionNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(memberExpressionNode, parentNode) {\n if (NodeGuards_1.NodeGuards.isIdentifierNode(memberExpressionNode.property)) {\n if (memberExpressionNode.computed) {\n return memberExpressionNode;\n }\n memberExpressionNode.computed = true;\n memberExpressionNode.property = NodeFactory_1.NodeFactory.literalNode(memberExpressionNode.property.name);\n }\n return memberExpressionNode;\n }\n};\nMemberExpressionTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], MemberExpressionTransformer);\nexports.MemberExpressionTransformer = MemberExpressionTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar MethodDefinitionTransformer_1, _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MethodDefinitionTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet MethodDefinitionTransformer = MethodDefinitionTransformer_1 = class MethodDefinitionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isMethodDefinitionNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(methodDefinitionNode, parentNode) {\n if (NodeGuards_1.NodeGuards.isIdentifierNode(methodDefinitionNode.key)) {\n return this.replaceIdentifierKey(methodDefinitionNode, methodDefinitionNode.key);\n }\n if (NodeGuards_1.NodeGuards.isLiteralNode(methodDefinitionNode.key)) {\n return this.replaceLiteralKey(methodDefinitionNode, methodDefinitionNode.key);\n }\n return methodDefinitionNode;\n }\n replaceIdentifierKey(methodDefinitionNode, keyNode) {\n if (!MethodDefinitionTransformer_1.ignoredNames.includes(keyNode.name)\n && !methodDefinitionNode.computed) {\n methodDefinitionNode.computed = true;\n methodDefinitionNode.key = NodeFactory_1.NodeFactory.literalNode(keyNode.name);\n }\n return methodDefinitionNode;\n }\n replaceLiteralKey(methodDefinitionNode, keyNode) {\n if (typeof keyNode.value === 'string'\n && !MethodDefinitionTransformer_1.ignoredNames.includes(keyNode.value)\n && !methodDefinitionNode.computed) {\n methodDefinitionNode.computed = true;\n }\n return methodDefinitionNode;\n }\n};\nMethodDefinitionTransformer.ignoredNames = ['constructor'];\nMethodDefinitionTransformer = MethodDefinitionTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], MethodDefinitionTransformer);\nexports.MethodDefinitionTransformer = MethodDefinitionTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NumberLiteralTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformer_1 = require(\"../../enums/node-transformers/NodeTransformer\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NumberUtils_1 = require(\"../../utils/NumberUtils\");\nlet NumberLiteralTransformer = class NumberLiteralTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n this.runAfter = [\n NodeTransformer_1.NodeTransformer.NumberToNumericalExpressionTransformer\n ];\n this.numberLiteralCache = new Map();\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isLiteralNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(literalNode, parentNode) {\n if (typeof literalNode.value !== 'number' && typeof literalNode.value !== 'bigint') {\n return literalNode;\n }\n const literalValue = literalNode.value;\n let rawValue;\n if (this.numberLiteralCache.has(literalValue)) {\n rawValue = this.numberLiteralCache.get(literalValue);\n }\n else {\n if (NumberUtils_1.NumberUtils.isCeil(literalValue)) {\n rawValue = NumberUtils_1.NumberUtils.toHex(literalValue);\n }\n else {\n rawValue = String(literalValue);\n }\n this.numberLiteralCache.set(literalValue, rawValue);\n }\n return NodeFactory_1.NodeFactory.literalNode(literalValue, rawValue);\n }\n};\nNumberLiteralTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], NumberLiteralTransformer);\nexports.NumberLiteralTransformer = NumberLiteralTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NumberToNumericalExpressionTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst INumberNumericalExpressionAnalyzer_1 = require(\"../../interfaces/analyzers/number-numerical-expression-analyzer/INumberNumericalExpressionAnalyzer\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NumberUtils_1 = require(\"../../utils/NumberUtils\");\nlet NumberToNumericalExpressionTransformer = class NumberToNumericalExpressionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(numberNumericalExpressionAnalyzer, randomGenerator, options) {\n super(randomGenerator, options);\n this.numberNumericalExpressionAnalyzer = numberNumericalExpressionAnalyzer;\n }\n getVisitor(nodeTransformationStage) {\n if (!this.options.numbersToExpressions) {\n return null;\n }\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n leave: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isLiteralNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(literalNode, parentNode) {\n if (typeof literalNode.value !== 'number') {\n return literalNode;\n }\n if (NodeGuards_1.NodeGuards.isPropertyNode(parentNode) && !parentNode.computed) {\n return literalNode;\n }\n const numberNumericalExpressionData = this.numberNumericalExpressionAnalyzer.analyze(literalNode.value);\n return this.convertNumericalExpressionDataToNode(numberNumericalExpressionData);\n }\n convertNumericalExpressionDataToNode(numberNumericalExpressionData, operator = '+') {\n var _a;\n const numberNumericalExpressionDataLength = numberNumericalExpressionData.length;\n const leftParts = numberNumericalExpressionDataLength > 1\n ? numberNumericalExpressionData.slice(0, numberNumericalExpressionDataLength - 1)\n : [numberNumericalExpressionData[0]];\n const rightParts = numberNumericalExpressionDataLength > 1\n ? numberNumericalExpressionData.slice(-1)\n : [];\n if (rightParts.length) {\n return this.convertPartsToBinaryExpression(operator, leftParts, rightParts);\n }\n const firstLeftPartOrNumber = (_a = leftParts[0]) !== null && _a !== void 0 ? _a : null;\n return Array.isArray(firstLeftPartOrNumber)\n ? this.convertNumericalExpressionDataToNode(firstLeftPartOrNumber, '*')\n : this.convertPartOrNumberToLiteralNode(firstLeftPartOrNumber);\n }\n convertPartsToBinaryExpression(operator, leftParts, rightParts) {\n const rightPartOrNumber = rightParts[0];\n if (Array.isArray(rightPartOrNumber)) {\n return NodeFactory_1.NodeFactory.binaryExpressionNode(operator, this.convertNumericalExpressionDataToNode(leftParts), this.convertNumericalExpressionDataToNode(rightPartOrNumber, '*'));\n }\n else {\n return NodeFactory_1.NodeFactory.binaryExpressionNode(operator, this.convertNumericalExpressionDataToNode(leftParts), this.convertPartOrNumberToLiteralNode(rightPartOrNumber));\n }\n }\n convertPartOrNumberToLiteralNode(partOrNumber) {\n const number = Array.isArray(partOrNumber)\n ? partOrNumber[0]\n : partOrNumber;\n const isPositiveNumber = NumberUtils_1.NumberUtils.isPositive(number);\n const literalNode = NodeFactory_1.NodeFactory.literalNode(Math.abs(number));\n return isPositiveNumber\n ? literalNode\n : NodeFactory_1.NodeFactory.unaryExpressionNode('-', literalNode);\n }\n};\nNumberToNumericalExpressionTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.INumberNumericalExpressionAnalyzer)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof INumberNumericalExpressionAnalyzer_1.INumberNumericalExpressionAnalyzer !== \"undefined\" && INumberNumericalExpressionAnalyzer_1.INumberNumericalExpressionAnalyzer) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], NumberToNumericalExpressionTransformer);\nexports.NumberToNumericalExpressionTransformer = NumberToNumericalExpressionTransformer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar ObjectExpressionKeysTransformer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectExpressionKeysTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst TObjectExpressionExtractorFactory_1 = require(\"../../types/container/node-transformers/TObjectExpressionExtractorFactory\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst ObjectExpressionExtractor_1 = require(\"../../enums/node-transformers/converting-transformers/properties-extractors/ObjectExpressionExtractor\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeStatementUtils_1 = require(\"../../node/NodeStatementUtils\");\nlet ObjectExpressionKeysTransformer = ObjectExpressionKeysTransformer_1 = class ObjectExpressionKeysTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(objectExpressionExtractorFactory, randomGenerator, options) {\n super(randomGenerator, options);\n this.objectExpressionExtractorFactory = objectExpressionExtractorFactory;\n }\n static isProhibitedObjectExpressionNode(objectExpressionNode, objectExpressionParentNode, objectExpressionHostStatement) {\n return ObjectExpressionKeysTransformer_1.isReferencedIdentifierName(objectExpressionNode, objectExpressionHostStatement)\n || ObjectExpressionKeysTransformer_1.isProhibitedArrowFunctionExpression(objectExpressionNode, objectExpressionParentNode)\n || ObjectExpressionKeysTransformer_1.isProhibitedSequenceExpression(objectExpressionNode, objectExpressionHostStatement);\n }\n static isReferencedIdentifierName(objectExpressionNode, objectExpressionHostNode) {\n const identifierNamesSet = [];\n let isReferencedIdentifierName = false;\n let isCurrentNode = false;\n estraverse.traverse(objectExpressionHostNode, {\n enter: (node) => {\n if (node === objectExpressionNode) {\n isCurrentNode = true;\n }\n if (!NodeGuards_1.NodeGuards.isIdentifierNode(node)) {\n return;\n }\n if (!isCurrentNode) {\n identifierNamesSet.push(node.name);\n return;\n }\n if (identifierNamesSet.includes(node.name)) {\n isReferencedIdentifierName = true;\n }\n },\n leave: (node) => {\n if (node === objectExpressionNode) {\n isCurrentNode = false;\n return estraverse.VisitorOption.Break;\n }\n }\n });\n return isReferencedIdentifierName;\n }\n static isProhibitedArrowFunctionExpression(objectExpressionNode, objectExpressionNodeParentNode) {\n return NodeGuards_1.NodeGuards.isArrowFunctionExpressionNode(objectExpressionNodeParentNode)\n && objectExpressionNodeParentNode.body === objectExpressionNode;\n }\n static isProhibitedSequenceExpression(objectExpressionNode, objectExpressionHostNode) {\n return NodeGuards_1.NodeGuards.isExpressionStatementNode(objectExpressionHostNode)\n && NodeGuards_1.NodeGuards.isSequenceExpressionNode(objectExpressionHostNode.expression)\n && objectExpressionHostNode.expression.expressions.some((expressionNode) => NodeGuards_1.NodeGuards.isCallExpressionNode(expressionNode)\n && NodeGuards_1.NodeGuards.isSuperNode(expressionNode.callee));\n }\n getVisitor(nodeTransformationStage) {\n if (!this.options.transformObjectKeys) {\n return null;\n }\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n leave: (node, parentNode) => {\n if (parentNode\n && NodeGuards_1.NodeGuards.isObjectExpressionNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(objectExpressionNode, parentNode) {\n if (!objectExpressionNode.properties.length) {\n return objectExpressionNode;\n }\n const hostStatement = NodeStatementUtils_1.NodeStatementUtils.getRootStatementOfNode(objectExpressionNode);\n if (ObjectExpressionKeysTransformer_1.isProhibitedObjectExpressionNode(objectExpressionNode, parentNode, hostStatement)) {\n return objectExpressionNode;\n }\n return this.applyObjectExpressionKeysExtractorsRecursive(ObjectExpressionKeysTransformer_1.objectExpressionExtractorNames, objectExpressionNode, hostStatement);\n }\n applyObjectExpressionKeysExtractorsRecursive(objectExpressionExtractorNames, objectExpressionNode, hostStatement) {\n const newObjectExpressionExtractorNames = [...objectExpressionExtractorNames];\n const objectExpressionExtractor = newObjectExpressionExtractorNames.shift();\n if (!objectExpressionExtractor) {\n return objectExpressionNode;\n }\n const { nodeToReplace, objectExpressionHostStatement: newObjectExpressionHostStatement, objectExpressionNode: newObjectExpressionNode } = this.objectExpressionExtractorFactory(objectExpressionExtractor)\n .extract(objectExpressionNode, hostStatement);\n this.applyObjectExpressionKeysExtractorsRecursive(newObjectExpressionExtractorNames, newObjectExpressionNode, newObjectExpressionHostStatement);\n return nodeToReplace;\n }\n};\nObjectExpressionKeysTransformer.objectExpressionExtractorNames = [\n ObjectExpressionExtractor_1.ObjectExpressionExtractor.ObjectExpressionToVariableDeclarationExtractor,\n ObjectExpressionExtractor_1.ObjectExpressionExtractor.BasePropertiesExtractor\n];\nObjectExpressionKeysTransformer = ObjectExpressionKeysTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObjectExpressionExtractor)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TObjectExpressionExtractorFactory_1.TObjectExpressionExtractorFactory !== \"undefined\" && TObjectExpressionExtractorFactory_1.TObjectExpressionExtractorFactory) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], ObjectExpressionKeysTransformer);\nexports.ObjectExpressionKeysTransformer = ObjectExpressionKeysTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectExpressionTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet ObjectExpressionTransformer = class ObjectExpressionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isObjectExpressionNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(objectExpressionNode, parentNode) {\n objectExpressionNode.properties\n .forEach((property) => {\n if (!NodeGuards_1.NodeGuards.isPropertyNode(property)) {\n return;\n }\n if (!property.key) {\n return;\n }\n if (property.computed) {\n this.transformComputedProperty(property);\n }\n else {\n this.transformBaseProperty(property);\n }\n });\n return objectExpressionNode;\n }\n transformComputedProperty(property) {\n if (!NodeGuards_1.NodeGuards.isLiteralNode(property.key) || !(typeof property.key.value === 'string')) {\n return;\n }\n property.key = NodeFactory_1.NodeFactory.literalNode(property.key.value);\n }\n transformBaseProperty(property) {\n if (property.shorthand) {\n property.shorthand = false;\n }\n if (!NodeGuards_1.NodeGuards.isIdentifierNode(property.key)) {\n return;\n }\n property.key = NodeFactory_1.NodeFactory.literalNode(property.key.name);\n }\n};\nObjectExpressionTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], ObjectExpressionTransformer);\nexports.ObjectExpressionTransformer = ObjectExpressionTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectPatternPropertiesTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeLexicalScopeUtils_1 = require(\"../../node/NodeLexicalScopeUtils\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet ObjectPatternPropertiesTransformer = class ObjectPatternPropertiesTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isPropertyNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(propertyNode, parentNode) {\n if (!NodeGuards_1.NodeGuards.isObjectPatternNode(parentNode) || !propertyNode.shorthand) {\n return propertyNode;\n }\n if (!this.options.renameGlobals) {\n const lexicalScope = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScope(propertyNode);\n const shouldNotTransformGlobalPropertyNode = !!lexicalScope && NodeGuards_1.NodeGuards.isProgramNode(lexicalScope);\n if (shouldNotTransformGlobalPropertyNode) {\n return propertyNode;\n }\n }\n propertyNode.shorthand = false;\n propertyNode.value = NodeUtils_1.NodeUtils.clone(propertyNode.value);\n NodeUtils_1.NodeUtils.parentizeNode(propertyNode.value, propertyNode);\n return propertyNode;\n }\n};\nObjectPatternPropertiesTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], ObjectPatternPropertiesTransformer);\nexports.ObjectPatternPropertiesTransformer = ObjectPatternPropertiesTransformer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar SplitStringTransformer_1, _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SplitStringTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst stringz = __importStar(require(\"stringz\"));\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformer_1 = require(\"../../enums/node-transformers/NodeTransformer\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeLiteralUtils_1 = require(\"../../node/NodeLiteralUtils\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet SplitStringTransformer = SplitStringTransformer_1 = class SplitStringTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n this.runAfter = [\n NodeTransformer_1.NodeTransformer.ObjectExpressionKeysTransformer,\n NodeTransformer_1.NodeTransformer.TemplateLiteralTransformer\n ];\n }\n static chunkString(string, stringLength, chunkSize) {\n const chunksCount = Math.ceil(stringLength / chunkSize);\n const chunks = [];\n let nextChunkStartIndex = 0;\n for (let chunkIndex = 0; chunkIndex < chunksCount; ++chunkIndex, nextChunkStartIndex += chunkSize) {\n chunks[chunkIndex] = stringz.substr(string, nextChunkStartIndex, chunkSize);\n }\n return chunks;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n enter: (node, parentNode) => {\n if (!this.options.splitStrings) {\n return;\n }\n if (parentNode && NodeGuards_1.NodeGuards.isLiteralNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(literalNode, parentNode) {\n if (NodeLiteralUtils_1.NodeLiteralUtils.isProhibitedLiteralNode(literalNode, parentNode)) {\n return literalNode;\n }\n const firstPassChunksNode = this.transformLiteralNodeByChunkLength(literalNode, parentNode, SplitStringTransformer_1.firstPassChunkLength);\n const secondPassChunksNode = estraverse.replace(firstPassChunksNode, {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isLiteralNode(node)) {\n return this.transformLiteralNodeByChunkLength(node, parentNode, this.options.splitStringsChunkLength);\n }\n }\n });\n return secondPassChunksNode;\n }\n transformLiteralNodeByChunkLength(literalNode, parentNode, chunkLength) {\n if (!NodeLiteralUtils_1.NodeLiteralUtils.isStringLiteralNode(literalNode)) {\n return literalNode;\n }\n const valueLength = stringz.length(literalNode.value);\n if (chunkLength >= valueLength) {\n return literalNode;\n }\n const stringChunks = SplitStringTransformer_1.chunkString(literalNode.value, valueLength, chunkLength);\n const binaryExpressionNode = this.transformStringChunksToBinaryExpressionNode(stringChunks);\n NodeUtils_1.NodeUtils.parentizeAst(binaryExpressionNode);\n NodeUtils_1.NodeUtils.parentizeNode(binaryExpressionNode, parentNode);\n return binaryExpressionNode;\n }\n transformStringChunksToBinaryExpressionNode(chunks) {\n const firstChunk = chunks.shift();\n const secondChunk = chunks.shift();\n if (!firstChunk || !secondChunk) {\n throw new Error('First and second chunks values should not be empty');\n }\n const initialBinaryExpressionNode = NodeFactory_1.NodeFactory.binaryExpressionNode('+', NodeFactory_1.NodeFactory.literalNode(firstChunk), NodeFactory_1.NodeFactory.literalNode(secondChunk));\n return chunks.reduce((binaryExpressionNode, chunk) => {\n const chunkLiteralNode = NodeFactory_1.NodeFactory.literalNode(chunk);\n return NodeFactory_1.NodeFactory.binaryExpressionNode('+', binaryExpressionNode, chunkLiteralNode);\n }, initialBinaryExpressionNode);\n }\n};\nSplitStringTransformer.firstPassChunkLength = 1000;\nSplitStringTransformer = SplitStringTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], SplitStringTransformer);\nexports.SplitStringTransformer = SplitStringTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar TemplateLiteralTransformer_1, _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TemplateLiteralTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet TemplateLiteralTransformer = TemplateLiteralTransformer_1 = class TemplateLiteralTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n static isLiteralNodeWithStringValue(node) {\n return !!node && NodeGuards_1.NodeGuards.isLiteralNode(node) && typeof node.value === 'string';\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isTemplateLiteralNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(templateLiteralNode, parentNode) {\n if (NodeGuards_1.NodeGuards.isTaggedTemplateExpressionNode(parentNode)) {\n return templateLiteralNode;\n }\n return this.transformTemplateLiteralNode(templateLiteralNode, parentNode);\n }\n transformTemplateLiteralNode(templateLiteralNode, parentNode) {\n const templateLiteralExpressions = templateLiteralNode.expressions;\n let nodes = [];\n templateLiteralNode.quasis.forEach((templateElement) => {\n nodes.push(NodeFactory_1.NodeFactory.literalNode(templateElement.value.cooked));\n const expression = templateLiteralExpressions.shift();\n if (!expression) {\n return;\n }\n nodes.push(expression);\n });\n nodes = nodes.filter((node) => {\n return !(NodeGuards_1.NodeGuards.isLiteralNode(node) && node.value === '');\n });\n if (!TemplateLiteralTransformer_1.isLiteralNodeWithStringValue(nodes[0]) &&\n !TemplateLiteralTransformer_1.isLiteralNodeWithStringValue(nodes[1])) {\n nodes.unshift(NodeFactory_1.NodeFactory.literalNode(''));\n }\n let transformedNode;\n if (nodes.length > 1) {\n let root = NodeFactory_1.NodeFactory.binaryExpressionNode('+', nodes.shift(), nodes.shift());\n nodes.forEach((node) => {\n root = NodeFactory_1.NodeFactory.binaryExpressionNode('+', root, node);\n });\n transformedNode = root;\n }\n else {\n transformedNode = nodes[0];\n }\n NodeUtils_1.NodeUtils.parentizeAst(transformedNode);\n NodeUtils_1.NodeUtils.parentizeNode(transformedNode, parentNode);\n return transformedNode;\n }\n};\nTemplateLiteralTransformer = TemplateLiteralTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], TemplateLiteralTransformer);\nexports.TemplateLiteralTransformer = TemplateLiteralTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar BasePropertiesExtractor_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BasePropertiesExtractor = void 0;\nconst inversify_1 = require(\"inversify\");\nconst NodeAppender_1 = require(\"../../../node/NodeAppender\");\nconst NodeFactory_1 = require(\"../../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nconst NodeStatementUtils_1 = require(\"../../../node/NodeStatementUtils\");\nconst NodeUtils_1 = require(\"../../../node/NodeUtils\");\nlet BasePropertiesExtractor = BasePropertiesExtractor_1 = class BasePropertiesExtractor {\n static getPropertyNodeKeyName(propertyNode) {\n const propertyKeyNode = propertyNode.key;\n if (NodeGuards_1.NodeGuards.isLiteralNode(propertyKeyNode)\n && (typeof propertyKeyNode.value === 'string'\n || typeof propertyKeyNode.value === 'number')) {\n return propertyKeyNode.value.toString();\n }\n if (NodeGuards_1.NodeGuards.isIdentifierNode(propertyKeyNode)) {\n return propertyKeyNode.name;\n }\n return null;\n }\n static isProhibitedPropertyNode(node) {\n return node.kind !== 'init';\n }\n static isProhibitedPattern(node) {\n return !node\n || NodeGuards_1.NodeGuards.isObjectPatternNode(node)\n || NodeGuards_1.NodeGuards.isArrayPatternNode(node)\n || NodeGuards_1.NodeGuards.isAssignmentPatternNode(node)\n || NodeGuards_1.NodeGuards.isRestElementNode(node);\n }\n static shouldCreateLiteralNode(property) {\n return !property.computed\n || (property.computed && !!property.key && NodeGuards_1.NodeGuards.isLiteralNode(property.key));\n }\n extract(objectExpressionNode, hostStatement) {\n const hostNode = objectExpressionNode.parentNode;\n if (hostNode\n && NodeGuards_1.NodeGuards.isVariableDeclaratorNode(hostNode)\n && NodeGuards_1.NodeGuards.isIdentifierNode(hostNode.id)) {\n return this.transformObjectExpressionNode(objectExpressionNode, hostStatement, hostNode.id);\n }\n return {\n nodeToReplace: objectExpressionNode,\n objectExpressionHostStatement: hostStatement,\n objectExpressionNode: objectExpressionNode\n };\n }\n transformObjectExpressionNode(objectExpressionNode, hostStatement, memberExpressionHostNode) {\n const properties = objectExpressionNode.properties;\n const [expressionStatements, removablePropertyIds] = this\n .extractPropertiesToExpressionStatements(properties, hostStatement, memberExpressionHostNode);\n const hostNodeWithStatements = NodeStatementUtils_1.NodeStatementUtils.getScopeOfNode(hostStatement);\n this.filterExtractedObjectExpressionProperties(objectExpressionNode, removablePropertyIds);\n NodeAppender_1.NodeAppender.insertAfter(hostNodeWithStatements, expressionStatements, hostStatement);\n NodeUtils_1.NodeUtils.parentizeAst(hostNodeWithStatements);\n return {\n nodeToReplace: objectExpressionNode,\n objectExpressionHostStatement: hostStatement,\n objectExpressionNode: objectExpressionNode\n };\n }\n extractPropertiesToExpressionStatements(properties, hostStatement, memberExpressionHostNode) {\n const propertiesLength = properties.length;\n const expressionStatements = [];\n const removablePropertyIds = [];\n for (let i = propertiesLength - 1; i >= 0; i--) {\n const property = properties[i];\n if (NodeGuards_1.NodeGuards.isSpreadElementNode(property)) {\n break;\n }\n if (BasePropertiesExtractor_1.isProhibitedPropertyNode(property)) {\n continue;\n }\n const propertyValue = property.value;\n if (BasePropertiesExtractor_1.isProhibitedPattern(propertyValue)) {\n continue;\n }\n const propertyKeyName = BasePropertiesExtractor_1.getPropertyNodeKeyName(property);\n if (!propertyKeyName) {\n continue;\n }\n const shouldCreateLiteralNode = BasePropertiesExtractor_1.shouldCreateLiteralNode(property);\n const memberExpressionProperty = shouldCreateLiteralNode\n ? NodeFactory_1.NodeFactory.literalNode(propertyKeyName)\n : NodeFactory_1.NodeFactory.identifierNode(propertyKeyName);\n const memberExpressionNode = NodeFactory_1.NodeFactory\n .memberExpressionNode(memberExpressionHostNode, memberExpressionProperty, true);\n const expressionStatementNode = NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.assignmentExpressionNode('=', memberExpressionNode, propertyValue));\n if (NodeGuards_1.NodeGuards.isObjectExpressionNode(property.value)) {\n this.transformObjectExpressionNode(property.value, hostStatement, memberExpressionNode);\n }\n expressionStatements.unshift(expressionStatementNode);\n removablePropertyIds.unshift(i);\n }\n return [expressionStatements, removablePropertyIds];\n }\n filterExtractedObjectExpressionProperties(objectExpressionNode, removablePropertyIds) {\n objectExpressionNode.properties = objectExpressionNode.properties\n .filter((property, index) => !removablePropertyIds.includes(index));\n }\n};\nBasePropertiesExtractor = BasePropertiesExtractor_1 = __decorate([\n inversify_1.injectable()\n], BasePropertiesExtractor);\nexports.BasePropertiesExtractor = BasePropertiesExtractor;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObjectExpressionToVariableDeclarationExtractor = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TObjectExpressionKeysTransformerCustomNodeFactory_1 = require(\"../../../types/container/custom-nodes/TObjectExpressionKeysTransformerCustomNodeFactory\");\nconst ObjectExpressionKeysTransformerCustomNode_1 = require(\"../../../enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode\");\nconst NodeAppender_1 = require(\"../../../node/NodeAppender\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nconst NodeStatementUtils_1 = require(\"../../../node/NodeStatementUtils\");\nconst NodeUtils_1 = require(\"../../../node/NodeUtils\");\nconst NodeLexicalScopeUtils_1 = require(\"../../../node/NodeLexicalScopeUtils\");\nlet ObjectExpressionToVariableDeclarationExtractor = class ObjectExpressionToVariableDeclarationExtractor {\n constructor(objectExpressionKeysTransformerCustomNodeFactory) {\n this.objectExpressionKeysTransformerCustomNodeFactory = objectExpressionKeysTransformerCustomNodeFactory;\n }\n extract(objectExpressionNode, hostStatement) {\n return this.transformObjectExpressionToVariableDeclaration(objectExpressionNode, hostStatement);\n }\n transformObjectExpressionToVariableDeclaration(objectExpressionNode, hostStatement) {\n var _a;\n const hostNodeWithStatements = NodeStatementUtils_1.NodeStatementUtils.getScopeOfNode(hostStatement);\n const lexicalScopeNode = NodeGuards_1.NodeGuards.isNodeWithLexicalScope(hostNodeWithStatements)\n ? hostNodeWithStatements\n : (_a = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScope(hostNodeWithStatements)) !== null && _a !== void 0 ? _a : null;\n if (!lexicalScopeNode) {\n throw new Error('Cannot find lexical scope node for the host statement node');\n }\n const properties = objectExpressionNode.properties;\n const newObjectExpressionHostStatement = this.getObjectExpressionHostNode(lexicalScopeNode, properties);\n const statementsToInsert = [newObjectExpressionHostStatement];\n NodeAppender_1.NodeAppender.insertBefore(hostNodeWithStatements, statementsToInsert, hostStatement);\n NodeUtils_1.NodeUtils.parentizeAst(newObjectExpressionHostStatement);\n NodeUtils_1.NodeUtils.parentizeNode(newObjectExpressionHostStatement, hostNodeWithStatements);\n const newObjectExpressionIdentifier = this.getObjectExpressionIdentifierNode(newObjectExpressionHostStatement);\n const newObjectExpressionNode = this.getObjectExpressionNode(newObjectExpressionHostStatement);\n return {\n nodeToReplace: newObjectExpressionIdentifier,\n objectExpressionHostStatement: newObjectExpressionHostStatement,\n objectExpressionNode: newObjectExpressionNode\n };\n }\n getObjectExpressionHostNode(lexicalScopeNode, properties) {\n const variableDeclarationHostNodeCustomNode = this.objectExpressionKeysTransformerCustomNodeFactory(ObjectExpressionKeysTransformerCustomNode_1.ObjectExpressionKeysTransformerCustomNode.ObjectExpressionVariableDeclarationHostNode);\n variableDeclarationHostNodeCustomNode.initialize(lexicalScopeNode, properties);\n const statementNode = variableDeclarationHostNodeCustomNode.getNode()[0];\n if (!statementNode\n || !NodeGuards_1.NodeGuards.isVariableDeclarationNode(statementNode)) {\n throw new Error('`objectExpressionHostCustomNode.getNode()[0]` should returns array with `VariableDeclaration` node');\n }\n return statementNode;\n }\n getObjectExpressionIdentifierNode(objectExpressionHostNode) {\n const newObjectExpressionIdentifierNode = objectExpressionHostNode.declarations[0].id;\n if (!NodeGuards_1.NodeGuards.isIdentifierNode(newObjectExpressionIdentifierNode)) {\n throw new Error('`objectExpressionHostNode` should contain `VariableDeclarator` node with `Identifier` id property');\n }\n return newObjectExpressionIdentifierNode;\n }\n getObjectExpressionNode(objectExpressionHostNode) {\n var _a;\n const newObjectExpressionNode = (_a = objectExpressionHostNode.declarations[0].init) !== null && _a !== void 0 ? _a : null;\n if (!newObjectExpressionNode || !NodeGuards_1.NodeGuards.isObjectExpressionNode(newObjectExpressionNode)) {\n throw new Error('`objectExpressionHostNode` should contain `VariableDeclarator` node with `ObjectExpression` init property');\n }\n return newObjectExpressionNode;\n }\n};\nObjectExpressionToVariableDeclarationExtractor = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObjectExpressionKeysTransformerCustomNode)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TObjectExpressionKeysTransformerCustomNodeFactory_1.TObjectExpressionKeysTransformerCustomNodeFactory !== \"undefined\" && TObjectExpressionKeysTransformerCustomNodeFactory_1.TObjectExpressionKeysTransformerCustomNodeFactory) === \"function\" ? _a : Object])\n], ObjectExpressionToVariableDeclarationExtractor);\nexports.ObjectExpressionToVariableDeclarationExtractor = ObjectExpressionToVariableDeclarationExtractor;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar DeadCodeInjectionTransformer_1, _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeadCodeInjectionTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst TDeadNodeInjectionCustomNodeFactory_1 = require(\"../../types/container/custom-nodes/TDeadNodeInjectionCustomNodeFactory\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst INodeTransformersRunner_1 = require(\"../../interfaces/node-transformers/INodeTransformersRunner\");\nconst DeadCodeInjectionCustomNode_1 = require(\"../../enums/custom-nodes/DeadCodeInjectionCustomNode\");\nconst NodeTransformer_1 = require(\"../../enums/node-transformers/NodeTransformer\");\nconst NodeType_1 = require(\"../../enums/node/NodeType\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeStatementUtils_1 = require(\"../../node/NodeStatementUtils\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet DeadCodeInjectionTransformer = DeadCodeInjectionTransformer_1 = class DeadCodeInjectionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(deadCodeInjectionCustomNodeFactory, transformersRunner, randomGenerator, options) {\n super(randomGenerator, options);\n this.deadCodeInjectionRootAstHostNodeSet = new Set();\n this.collectedBlockStatements = [];\n this.collectedBlockStatementsTotalLength = 0;\n this.deadCodeInjectionCustomNodeFactory = deadCodeInjectionCustomNodeFactory;\n this.transformersRunner = transformersRunner;\n }\n static isProhibitedNodeInsideCollectedBlockStatement(targetNode) {\n return NodeGuards_1.NodeGuards.isFunctionDeclarationNode(targetNode)\n || NodeGuards_1.NodeGuards.isBreakStatementNode(targetNode)\n || NodeGuards_1.NodeGuards.isContinueStatementNode(targetNode)\n || NodeGuards_1.NodeGuards.isAwaitExpressionNode(targetNode)\n || NodeGuards_1.NodeGuards.isYieldExpressionNode(targetNode)\n || NodeGuards_1.NodeGuards.isSuperNode(targetNode)\n || (NodeGuards_1.NodeGuards.isForOfStatementNode(targetNode) && targetNode.await);\n }\n static isScopeHoistingFunctionDeclaration(targetNode) {\n if (!NodeGuards_1.NodeGuards.isFunctionDeclarationNode(targetNode)) {\n return false;\n }\n const scopeNode = NodeStatementUtils_1.NodeStatementUtils.getScopeOfNode(targetNode);\n const scopeBody = !NodeGuards_1.NodeGuards.isSwitchCaseNode(scopeNode)\n ? scopeNode.body\n : scopeNode.consequent;\n const indexInScope = scopeBody.indexOf(targetNode);\n if (indexInScope === 0) {\n return false;\n }\n const slicedBody = scopeBody.slice(0, indexInScope);\n const hostBlockStatementNode = NodeFactory_1.NodeFactory.blockStatementNode(slicedBody);\n const functionDeclarationName = targetNode.id.name;\n let isScopeHoistedFunctionDeclaration = false;\n estraverse.traverse(hostBlockStatementNode, {\n enter: (node) => {\n if (NodeGuards_1.NodeGuards.isIdentifierNode(node) && node.name === functionDeclarationName) {\n isScopeHoistedFunctionDeclaration = true;\n return estraverse.VisitorOption.Break;\n }\n }\n });\n return isScopeHoistedFunctionDeclaration;\n }\n static isValidCollectedBlockStatementNode(blockStatementNode) {\n if (!blockStatementNode.body.length) {\n return false;\n }\n let nestedBlockStatementsCount = 0;\n let isValidBlockStatementNode = true;\n estraverse.traverse(blockStatementNode, {\n enter: (node) => {\n if (NodeGuards_1.NodeGuards.isBlockStatementNode(node)) {\n nestedBlockStatementsCount++;\n }\n if (nestedBlockStatementsCount > DeadCodeInjectionTransformer_1.maxNestedBlockStatementsCount\n || DeadCodeInjectionTransformer_1.isProhibitedNodeInsideCollectedBlockStatement(node)\n || DeadCodeInjectionTransformer_1.isScopeHoistingFunctionDeclaration(node)) {\n isValidBlockStatementNode = false;\n return estraverse.VisitorOption.Break;\n }\n }\n });\n return isValidBlockStatementNode;\n }\n static isValidWrappedBlockStatementNode(blockStatementNode) {\n if (!blockStatementNode.body.length) {\n return false;\n }\n let isValidBlockStatementNode = true;\n estraverse.traverse(blockStatementNode, {\n enter: (node) => {\n if (DeadCodeInjectionTransformer_1.isScopeHoistingFunctionDeclaration(node)) {\n isValidBlockStatementNode = false;\n return estraverse.VisitorOption.Break;\n }\n }\n });\n if (!isValidBlockStatementNode) {\n return false;\n }\n const parentNodeWithStatements = NodeStatementUtils_1.NodeStatementUtils\n .getParentNodeWithStatements(blockStatementNode);\n return parentNodeWithStatements.type !== NodeType_1.NodeType.Program;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.DeadCodeInjection:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isProgramNode(node)) {\n this.prepareNode(node, parentNode);\n return node;\n }\n },\n leave: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isBlockStatementNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n case NodeTransformationStage_1.NodeTransformationStage.Finalizing:\n if (!this.deadCodeInjectionRootAstHostNodeSet.size) {\n return null;\n }\n return {\n enter: (node, parentNode) => {\n if (parentNode && this.isDeadCodeInjectionRootAstHostNode(node)) {\n return this.restoreNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n prepareNode(programNode, parentNode) {\n estraverse.traverse(programNode, {\n enter: (node) => {\n if (!NodeGuards_1.NodeGuards.isBlockStatementNode(node)) {\n return;\n }\n const clonedBlockStatementNode = NodeUtils_1.NodeUtils.clone(node);\n if (!DeadCodeInjectionTransformer_1.isValidCollectedBlockStatementNode(clonedBlockStatementNode)) {\n return;\n }\n const transformedBlockStatementNode = this.makeClonedBlockStatementNodeUnique(clonedBlockStatementNode);\n this.collectedBlockStatements.push(transformedBlockStatementNode);\n }\n });\n this.collectedBlockStatementsTotalLength = this.collectedBlockStatements.length;\n }\n transformNode(blockStatementNode, parentNode) {\n const canBreakTraverse = !this.collectedBlockStatements.length\n || this.collectedBlockStatementsTotalLength < DeadCodeInjectionTransformer_1.minCollectedBlockStatementsCount;\n if (canBreakTraverse) {\n return estraverse.VisitorOption.Break;\n }\n if (this.randomGenerator.getMathRandom() > this.options.deadCodeInjectionThreshold\n || !DeadCodeInjectionTransformer_1.isValidWrappedBlockStatementNode(blockStatementNode)) {\n return blockStatementNode;\n }\n const minInteger = 0;\n const maxInteger = this.collectedBlockStatements.length - 1;\n const randomIndex = this.randomGenerator.getRandomInteger(minInteger, maxInteger);\n const randomBlockStatementNode = this.collectedBlockStatements.splice(randomIndex, 1)[0];\n const isDuplicateBlockStatementNodes = randomBlockStatementNode === blockStatementNode;\n if (isDuplicateBlockStatementNodes) {\n return blockStatementNode;\n }\n return this.replaceBlockStatementNode(blockStatementNode, randomBlockStatementNode, parentNode);\n }\n restoreNode(deadCodeInjectionRootAstHostNode, parentNode) {\n const hostNodeFirstStatement = deadCodeInjectionRootAstHostNode.body[0];\n if (!NodeGuards_1.NodeGuards.isFunctionDeclarationNode(hostNodeFirstStatement)) {\n throw new Error('Wrong dead code injection root AST host node. Host node should contain `FunctionDeclaration` node');\n }\n return hostNodeFirstStatement.body;\n }\n isDeadCodeInjectionRootAstHostNode(node) {\n return NodeGuards_1.NodeGuards.isBlockStatementNode(node) && this.deadCodeInjectionRootAstHostNodeSet.has(node);\n }\n makeClonedBlockStatementNodeUnique(clonedBlockStatementNode) {\n const hostNode = NodeFactory_1.NodeFactory.programNode([\n NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.functionExpressionNode([], clonedBlockStatementNode))\n ]);\n NodeUtils_1.NodeUtils.parentizeAst(hostNode);\n NodeUtils_1.NodeUtils.parentizeNode(hostNode, hostNode);\n this.transformersRunner.transform(hostNode, DeadCodeInjectionTransformer_1.transformersToRenameBlockScopeIdentifiers, NodeTransformationStage_1.NodeTransformationStage.RenameIdentifiers);\n return clonedBlockStatementNode;\n }\n replaceBlockStatementNode(blockStatementNode, randomBlockStatementNode, parentNode) {\n const deadCodeInjectionRootAstHostNode = NodeFactory_1.NodeFactory.blockStatementNode([\n NodeFactory_1.NodeFactory.functionDeclarationNode(DeadCodeInjectionTransformer_1.deadCodeInjectionRootAstHostNodeName, [], randomBlockStatementNode)\n ]);\n this.deadCodeInjectionRootAstHostNodeSet.add(deadCodeInjectionRootAstHostNode);\n const blockStatementDeadCodeInjectionCustomNode = this.deadCodeInjectionCustomNodeFactory(DeadCodeInjectionCustomNode_1.DeadCodeInjectionCustomNode.BlockStatementDeadCodeInjectionNode);\n blockStatementDeadCodeInjectionCustomNode.initialize(blockStatementNode, deadCodeInjectionRootAstHostNode);\n const newBlockStatementNode = blockStatementDeadCodeInjectionCustomNode.getNode()[0];\n NodeUtils_1.NodeUtils.parentizeNode(newBlockStatementNode, parentNode);\n return newBlockStatementNode;\n }\n};\nDeadCodeInjectionTransformer.deadCodeInjectionRootAstHostNodeName = 'deadCodeInjectionRootAstHostNode';\nDeadCodeInjectionTransformer.maxNestedBlockStatementsCount = 4;\nDeadCodeInjectionTransformer.minCollectedBlockStatementsCount = 5;\nDeadCodeInjectionTransformer.transformersToRenameBlockScopeIdentifiers = [\n NodeTransformer_1.NodeTransformer.LabeledStatementTransformer,\n NodeTransformer_1.NodeTransformer.ScopeIdentifiersTransformer,\n NodeTransformer_1.NodeTransformer.ScopeThroughIdentifiersTransformer\n];\nDeadCodeInjectionTransformer = DeadCodeInjectionTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IDeadCodeInjectionCustomNode)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformersRunner)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TDeadNodeInjectionCustomNodeFactory_1.TDeadNodeInjectionCustomNodeFactory !== \"undefined\" && TDeadNodeInjectionCustomNodeFactory_1.TDeadNodeInjectionCustomNodeFactory) === \"function\" ? _a : Object, typeof (_b = typeof INodeTransformersRunner_1.INodeTransformersRunner !== \"undefined\" && INodeTransformersRunner_1.INodeTransformersRunner) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object])\n], DeadCodeInjectionTransformer);\nexports.DeadCodeInjectionTransformer = DeadCodeInjectionTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EscapeSequenceTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IEscapeSequenceEncoder_1 = require(\"../../interfaces/utils/IEscapeSequenceEncoder\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst NodeTransformer_1 = require(\"../../enums/node-transformers/NodeTransformer\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeLiteralUtils_1 = require(\"../../node/NodeLiteralUtils\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet EscapeSequenceTransformer = class EscapeSequenceTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options, escapeSequenceEncoder) {\n super(randomGenerator, options);\n this.runAfter = [\n NodeTransformer_1.NodeTransformer.CustomCodeHelpersTransformer\n ];\n this.escapeSequenceEncoder = escapeSequenceEncoder;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Finalizing:\n return {\n enter: (node, parentNode) => {\n if (NodeGuards_1.NodeGuards.isLiteralNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(literalNode, parentNode) {\n if (!NodeLiteralUtils_1.NodeLiteralUtils.isStringLiteralNode(literalNode)) {\n return literalNode;\n }\n const encodedValue = this.escapeSequenceEncoder.encode(literalNode.value, this.options.unicodeEscapeSequence);\n const newLiteralNode = NodeFactory_1.NodeFactory.literalNode(encodedValue);\n NodeUtils_1.NodeUtils.parentizeNode(newLiteralNode, parentNode);\n return newLiteralNode;\n }\n};\nEscapeSequenceTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IEscapeSequenceEncoder)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object, typeof (_c = typeof IEscapeSequenceEncoder_1.IEscapeSequenceEncoder !== \"undefined\" && IEscapeSequenceEncoder_1.IEscapeSequenceEncoder) === \"function\" ? _c : Object])\n], EscapeSequenceTransformer);\nexports.EscapeSequenceTransformer = EscapeSequenceTransformer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar CommentsTransformer_1, _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CommentsTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst ConditionalCommentObfuscatingGuard_1 = require(\"../preparing-transformers/obfuscating-guards/ConditionalCommentObfuscatingGuard\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet CommentsTransformer = CommentsTransformer_1 = class CommentsTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Initializing:\n return {\n leave: (node) => {\n if (NodeGuards_1.NodeGuards.isProgramNode(node)) {\n return this.transformNode(node);\n }\n }\n };\n case NodeTransformationStage_1.NodeTransformationStage.Finalizing:\n return {\n leave: (node) => {\n if (NodeGuards_1.NodeGuards.isProgramNode(node)) {\n return this.filterCommentsOnFinalizingTraverse(node);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(rootNode) {\n rootNode = this.filterCommentsOnPrimaryTraverse(rootNode);\n if (!rootNode.comments || !rootNode.comments.length) {\n return rootNode;\n }\n const comments = rootNode.comments.reverse();\n if (comments.length === 0) {\n return rootNode;\n }\n if (!rootNode.body.length) {\n rootNode.leadingComments = comments;\n return rootNode;\n }\n let isFirstNode = true;\n estraverse.traverse(rootNode, {\n enter: (node) => {\n if (node === rootNode) {\n return;\n }\n const commentIdx = comments.findIndex((comment) => comment.range && node.range && comment.range[0] < node.range[0]);\n if (commentIdx >= 0) {\n (isFirstNode ? rootNode : node).leadingComments =\n comments.splice(commentIdx, comments.length - commentIdx).reverse();\n }\n isFirstNode = false;\n }\n });\n if (comments.length > 0) {\n rootNode.trailingComments = comments.reverse();\n }\n return rootNode;\n }\n filterCommentsOnPrimaryTraverse(rootNode) {\n var _a;\n rootNode.comments = (_a = rootNode.comments) === null || _a === void 0 ? void 0 : _a.filter((comment) => this.filterComment(comment, true));\n return rootNode;\n }\n filterCommentsOnFinalizingTraverse(rootNode) {\n estraverse.replace(rootNode, {\n enter: (node) => {\n var _a, _b;\n if (node.leadingComments) {\n node.leadingComments = (_a = node.leadingComments) === null || _a === void 0 ? void 0 : _a.filter((comment) => this.filterComment(comment, false));\n }\n if (node.trailingComments) {\n node.trailingComments = (_b = node.trailingComments) === null || _b === void 0 ? void 0 : _b.filter((comment) => this.filterComment(comment, false));\n }\n return node;\n }\n });\n return rootNode;\n }\n filterComment(comment, keepConditionalComment) {\n if (keepConditionalComment && ConditionalCommentObfuscatingGuard_1.ConditionalCommentObfuscatingGuard.isConditionalComment(comment)) {\n return true;\n }\n return CommentsTransformer_1.preservedWords\n .some((preservedWord) => comment.value.includes(preservedWord));\n }\n};\nCommentsTransformer.preservedWords = [\n '@license',\n '@preserve'\n];\nCommentsTransformer = CommentsTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], CommentsTransformer);\nexports.CommentsTransformer = CommentsTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CustomCodeHelpersTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TCustomCodeHelperGroupStorage_1 = require(\"../../types/storages/TCustomCodeHelperGroupStorage\");\nconst IObfuscationEventEmitter_1 = require(\"../../interfaces/event-emitters/IObfuscationEventEmitter\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst ICallsGraphAnalyzer_1 = require(\"../../interfaces/analyzers/calls-graph-analyzer/ICallsGraphAnalyzer\");\nconst IPrevailingKindOfVariablesAnalyzer_1 = require(\"../../interfaces/analyzers/calls-graph-analyzer/IPrevailingKindOfVariablesAnalyzer\");\nconst NodeTransformer_1 = require(\"../../enums/node-transformers/NodeTransformer\");\nconst ObfuscationEvent_1 = require(\"../../enums/event-emitters/ObfuscationEvent\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet CustomCodeHelpersTransformer = class CustomCodeHelpersTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(callsGraphAnalyzer, prevailingKindOfVariablesAnalyzer, obfuscationEventEmitter, customCodeHelperGroupStorage, randomGenerator, options) {\n super(randomGenerator, options);\n this.runAfter = [\n NodeTransformer_1.NodeTransformer.ParentificationTransformer,\n NodeTransformer_1.NodeTransformer.VariablePreserveTransformer\n ];\n this.callsGraphData = [];\n this.callsGraphAnalyzer = callsGraphAnalyzer;\n this.prevailingKindOfVariablesAnalyzer = prevailingKindOfVariablesAnalyzer;\n this.obfuscationEventEmitter = obfuscationEventEmitter;\n this.customCodeHelperGroupStorage = customCodeHelperGroupStorage;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Preparing:\n return {\n leave: (node, parentNode) => {\n if (NodeGuards_1.NodeGuards.isProgramNode(node)) {\n this.prepareNode(node, parentNode);\n this.appendCustomNodesBeforeObfuscation(node, parentNode);\n return this.transformNode(node, parentNode);\n }\n }\n };\n case NodeTransformationStage_1.NodeTransformationStage.Finalizing:\n return {\n leave: (node, parentNode) => {\n if (NodeGuards_1.NodeGuards.isProgramNode(node)) {\n this.appendCustomNodesAfterObfuscation(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n prepareNode(node, parentNode) {\n this.callsGraphData = this.callsGraphAnalyzer.analyze(node);\n this.prevailingKindOfVariablesAnalyzer.analyze(node);\n }\n transformNode(node, parentNode) {\n return node;\n }\n appendCustomNodesBeforeObfuscation(node, parentNode) {\n this.customCodeHelperGroupStorage\n .getStorage()\n .forEach((customCodeHelperGroup) => {\n customCodeHelperGroup.initialize();\n this.obfuscationEventEmitter.once(customCodeHelperGroup.getAppendEvent(), customCodeHelperGroup.appendNodes.bind(customCodeHelperGroup));\n });\n this.obfuscationEventEmitter.emit(ObfuscationEvent_1.ObfuscationEvent.BeforeObfuscation, node, this.callsGraphData);\n }\n appendCustomNodesAfterObfuscation(node, parentNode) {\n this.obfuscationEventEmitter.emit(ObfuscationEvent_1.ObfuscationEvent.AfterObfuscation, node, this.callsGraphData);\n }\n};\nCustomCodeHelpersTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICallsGraphAnalyzer)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscationEventEmitter)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TCustomNodeGroupStorage)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof ICallsGraphAnalyzer_1.ICallsGraphAnalyzer !== \"undefined\" && ICallsGraphAnalyzer_1.ICallsGraphAnalyzer) === \"function\" ? _a : Object, typeof (_b = typeof IPrevailingKindOfVariablesAnalyzer_1.IPrevailingKindOfVariablesAnalyzer !== \"undefined\" && IPrevailingKindOfVariablesAnalyzer_1.IPrevailingKindOfVariablesAnalyzer) === \"function\" ? _b : Object, typeof (_c = typeof IObfuscationEventEmitter_1.IObfuscationEventEmitter !== \"undefined\" && IObfuscationEventEmitter_1.IObfuscationEventEmitter) === \"function\" ? _c : Object, typeof (_d = typeof TCustomCodeHelperGroupStorage_1.TCustomCodeHelperGroupStorage !== \"undefined\" && TCustomCodeHelperGroupStorage_1.TCustomCodeHelperGroupStorage) === \"function\" ? _d : Object, typeof (_e = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _e : Object, typeof (_f = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _f : Object])\n], CustomCodeHelpersTransformer);\nexports.CustomCodeHelpersTransformer = CustomCodeHelpersTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar EvalCallExpressionTransformer_1, _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EvalCallExpressionTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformer_1 = require(\"../../enums/node-transformers/NodeTransformer\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nconst StringUtils_1 = require(\"../../utils/StringUtils\");\nlet EvalCallExpressionTransformer = EvalCallExpressionTransformer_1 = class EvalCallExpressionTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n this.runAfter = [\n NodeTransformer_1.NodeTransformer.EscapeSequenceTransformer,\n NodeTransformer_1.NodeTransformer.ParentificationTransformer,\n NodeTransformer_1.NodeTransformer.VariablePreserveTransformer\n ];\n this.evalRootAstHostNodeSet = new Set();\n }\n static extractEvalStringFromCallExpressionArgument(node) {\n if (NodeGuards_1.NodeGuards.isLiteralNode(node)) {\n return EvalCallExpressionTransformer_1\n .extractEvalStringFromLiteralNode(node);\n }\n if (NodeGuards_1.NodeGuards.isTemplateLiteralNode(node)) {\n return EvalCallExpressionTransformer_1\n .extractEvalStringFromTemplateLiteralNode(node);\n }\n return null;\n }\n static extractEvalStringFromLiteralNode(node) {\n return typeof node.value === 'string' ? node.value : null;\n }\n static extractEvalStringFromTemplateLiteralNode(node) {\n const quasis = node.quasis;\n const allowedQuasisLength = 1;\n if (quasis.length !== allowedQuasisLength || node.expressions.length) {\n return null;\n }\n return quasis[0].value.cooked;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Preparing:\n return {\n enter: (node, parentNode) => {\n if (parentNode\n && NodeGuards_1.NodeGuards.isCallExpressionNode(node)\n && NodeGuards_1.NodeGuards.isIdentifierNode(node.callee)\n && node.callee.name === 'eval') {\n return this.transformNode(node, parentNode);\n }\n }\n };\n case NodeTransformationStage_1.NodeTransformationStage.Finalizing:\n if (!this.evalRootAstHostNodeSet.size) {\n return null;\n }\n return {\n leave: (node, parentNode) => {\n if (parentNode && this.isEvalRootAstHostNode(node)) {\n return this.restoreNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(callExpressionNode, parentNode) {\n const callExpressionFirstArgument = callExpressionNode.arguments[0];\n if (!callExpressionFirstArgument) {\n return callExpressionNode;\n }\n const evalString = EvalCallExpressionTransformer_1\n .extractEvalStringFromCallExpressionArgument(callExpressionFirstArgument);\n if (!evalString) {\n return callExpressionNode;\n }\n let ast;\n try {\n ast = NodeUtils_1.NodeUtils.convertCodeToStructure(evalString);\n }\n catch (_a) {\n return callExpressionNode;\n }\n const evalRootAstHostNode = NodeFactory_1.NodeFactory\n .functionExpressionNode([], NodeFactory_1.NodeFactory.blockStatementNode(ast));\n NodeUtils_1.NodeUtils.parentizeAst(evalRootAstHostNode);\n NodeUtils_1.NodeUtils.parentizeNode(evalRootAstHostNode, parentNode);\n this.evalRootAstHostNodeSet.add(evalRootAstHostNode);\n return evalRootAstHostNode;\n }\n restoreNode(evalRootAstHostNode, parentNode) {\n const targetAst = evalRootAstHostNode.body.body;\n const obfuscatedCode = NodeUtils_1.NodeUtils.convertStructureToCode(targetAst);\n return NodeFactory_1.NodeFactory.callExpressionNode(NodeFactory_1.NodeFactory.identifierNode('eval'), [\n NodeFactory_1.NodeFactory.literalNode(StringUtils_1.StringUtils.escapeJsString(obfuscatedCode))\n ]);\n }\n isEvalRootAstHostNode(node) {\n return NodeGuards_1.NodeGuards.isFunctionExpressionNode(node) && this.evalRootAstHostNodeSet.has(node);\n }\n};\nEvalCallExpressionTransformer = EvalCallExpressionTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], EvalCallExpressionTransformer);\nexports.EvalCallExpressionTransformer = EvalCallExpressionTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MetadataTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformer_1 = require(\"../../enums/node-transformers/NodeTransformer\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeMetadata_1 = require(\"../../node/NodeMetadata\");\nlet MetadataTransformer = class MetadataTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n this.runAfter = [\n NodeTransformer_1.NodeTransformer.ParentificationTransformer,\n NodeTransformer_1.NodeTransformer.VariablePreserveTransformer\n ];\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Preparing:\n return {\n enter: (node, parentNode) => {\n return this.transformNode(node, parentNode);\n }\n };\n default:\n return null;\n }\n }\n transformNode(node, parentNode) {\n NodeMetadata_1.NodeMetadata.set(node, { ignoredNode: false });\n if (NodeGuards_1.NodeGuards.isLiteralNode(node)) {\n NodeMetadata_1.NodeMetadata.set(node, { replacedLiteral: false });\n }\n return node;\n }\n};\nMetadataTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], MetadataTransformer);\nexports.MetadataTransformer = MetadataTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar ObfuscatingGuardsTransformer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObfuscatingGuardsTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TObfuscatingGuardFactory_1 = require(\"../../types/container/node-transformers/TObfuscatingGuardFactory\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformer_1 = require(\"../../enums/node-transformers/NodeTransformer\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst ObfuscatingGuard_1 = require(\"../../enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard\");\nconst ObfuscatingGuardResult_1 = require(\"../../enums/node/ObfuscatingGuardResult\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeMetadata_1 = require(\"../../node/NodeMetadata\");\nlet ObfuscatingGuardsTransformer = ObfuscatingGuardsTransformer_1 = class ObfuscatingGuardsTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(obfuscatingGuardFactory, randomGenerator, options) {\n super(randomGenerator, options);\n this.runAfter = [\n NodeTransformer_1.NodeTransformer.ParentificationTransformer,\n NodeTransformer_1.NodeTransformer.VariablePreserveTransformer\n ];\n this.obfuscatingGuards = ObfuscatingGuardsTransformer_1.obfuscatingGuardsList.map(obfuscatingGuardFactory);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Preparing:\n return {\n enter: (node, parentNode) => {\n return this.transformNode(node, parentNode);\n }\n };\n default:\n return null;\n }\n }\n transformNode(node, parentNode) {\n const obfuscatingGuardResults = this.obfuscatingGuards\n .map((obfuscatingGuard) => obfuscatingGuard.check(node));\n this.setNodeMetadata(node, obfuscatingGuardResults);\n return node;\n }\n setNodeMetadata(node, obfuscatingGuardResults) {\n const isTransformNode = obfuscatingGuardResults\n .every((obfuscatingGuardResult) => obfuscatingGuardResult === ObfuscatingGuardResult_1.ObfuscatingGuardResult.Transform);\n let isForceTransformNode = false;\n let isIgnoredNode = false;\n if (!isTransformNode) {\n isForceTransformNode = obfuscatingGuardResults\n .some((obfuscatingGuardResult) => obfuscatingGuardResult === ObfuscatingGuardResult_1.ObfuscatingGuardResult.ForceTransform);\n isIgnoredNode = !isForceTransformNode && obfuscatingGuardResults\n .some((obfuscatingGuardResult) => obfuscatingGuardResult === ObfuscatingGuardResult_1.ObfuscatingGuardResult.Ignore);\n }\n NodeMetadata_1.NodeMetadata.set(node, {\n forceTransformNode: isForceTransformNode && !NodeGuards_1.NodeGuards.isProgramNode(node),\n ignoredNode: isIgnoredNode && !NodeGuards_1.NodeGuards.isProgramNode(node)\n });\n }\n};\nObfuscatingGuardsTransformer.obfuscatingGuardsList = [\n ObfuscatingGuard_1.ObfuscatingGuard.BlackListObfuscatingGuard,\n ObfuscatingGuard_1.ObfuscatingGuard.ConditionalCommentObfuscatingGuard,\n ObfuscatingGuard_1.ObfuscatingGuard.ForceTransformStringObfuscatingGuard,\n ObfuscatingGuard_1.ObfuscatingGuard.IgnoredRequireImportObfuscatingGuard,\n ObfuscatingGuard_1.ObfuscatingGuard.ReservedStringObfuscatingGuard\n];\nObfuscatingGuardsTransformer = ObfuscatingGuardsTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeGuard)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TObfuscatingGuardFactory_1.TObfuscatingGuardFactory !== \"undefined\" && TObfuscatingGuardFactory_1.TObfuscatingGuardFactory) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], ObfuscatingGuardsTransformer);\nexports.ObfuscatingGuardsTransformer = ObfuscatingGuardsTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ParentificationTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet ParentificationTransformer = class ParentificationTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Preparing:\n return {\n enter: (node, parentNode) => {\n return this.transformNode(node, parentNode);\n }\n };\n default:\n return null;\n }\n }\n transformNode(node, parentNode) {\n return NodeUtils_1.NodeUtils.parentizeNode(node, parentNode);\n }\n};\nParentificationTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], ParentificationTransformer);\nexports.ParentificationTransformer = ParentificationTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VariablePreserveTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst IIdentifierReplacer_1 = require(\"../../interfaces/node-transformers/rename-identifiers-transformers/replacer/IIdentifierReplacer\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IScopeIdentifiersTraverser_1 = require(\"../../interfaces/node/IScopeIdentifiersTraverser\");\nconst NodeTransformer_1 = require(\"../../enums/node-transformers/NodeTransformer\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet VariablePreserveTransformer = class VariablePreserveTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(identifierReplacer, randomGenerator, options, scopeIdentifiersTraverser) {\n super(randomGenerator, options);\n this.runAfter = [\n NodeTransformer_1.NodeTransformer.ParentificationTransformer\n ];\n this.identifierReplacer = identifierReplacer;\n this.scopeIdentifiersTraverser = scopeIdentifiersTraverser;\n this.preserveScopeVariableIdentifiers = this.preserveScopeVariableIdentifiers.bind(this);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Preparing:\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n case NodeTransformationStage_1.NodeTransformationStage.RenameIdentifiers:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isProgramNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(programNode, parentNode) {\n this.scopeIdentifiersTraverser.traverseScopeIdentifiers(programNode, parentNode, this.preserveScopeVariableIdentifiers);\n return programNode;\n }\n preserveScopeVariableIdentifiers(data) {\n const { isGlobalDeclaration, isBubblingDeclaration, variable, variableScope } = data;\n for (const identifier of variable.identifiers) {\n if (isGlobalDeclaration || isBubblingDeclaration) {\n this.preserveIdentifierNameForRootLexicalScope(identifier);\n }\n else {\n this.preserveIdentifierNameForLexicalScope(identifier, variableScope);\n }\n }\n }\n preserveIdentifierNameForRootLexicalScope(identifierNode) {\n this.identifierReplacer.preserveName(identifierNode);\n }\n preserveIdentifierNameForLexicalScope(identifierNode, variableScope) {\n const lexicalScopeNode = NodeGuards_1.NodeGuards.isNodeWithLexicalScope(variableScope.block)\n ? variableScope.block\n : null;\n if (!lexicalScopeNode) {\n return;\n }\n this.identifierReplacer.preserveNameForLexicalScope(identifierNode, lexicalScopeNode);\n }\n};\nVariablePreserveTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierReplacer)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IScopeIdentifiersTraverser)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IIdentifierReplacer_1.IIdentifierReplacer !== \"undefined\" && IIdentifierReplacer_1.IIdentifierReplacer) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object, typeof (_d = typeof IScopeIdentifiersTraverser_1.IScopeIdentifiersTraverser !== \"undefined\" && IScopeIdentifiersTraverser_1.IScopeIdentifiersTraverser) === \"function\" ? _d : Object])\n], VariablePreserveTransformer);\nexports.VariablePreserveTransformer = VariablePreserveTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar BlackListObfuscatingGuard_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlackListObfuscatingGuard = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ObfuscatingGuardResult_1 = require(\"../../../enums/node/ObfuscatingGuardResult\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nlet BlackListObfuscatingGuard = BlackListObfuscatingGuard_1 = class BlackListObfuscatingGuard {\n constructor() {\n this.blackListGuardsLength = BlackListObfuscatingGuard_1.blackListGuards.length;\n }\n check(node) {\n for (let i = 0; i < this.blackListGuardsLength; i++) {\n if (BlackListObfuscatingGuard_1.blackListGuards[i](node)) {\n return ObfuscatingGuardResult_1.ObfuscatingGuardResult.Ignore;\n }\n }\n return ObfuscatingGuardResult_1.ObfuscatingGuardResult.Transform;\n }\n};\nBlackListObfuscatingGuard.blackListGuards = [\n NodeGuards_1.NodeGuards.isUseStrictOperator\n];\nBlackListObfuscatingGuard = BlackListObfuscatingGuard_1 = __decorate([\n inversify_1.injectable(),\n __metadata(\"design:paramtypes\", [])\n], BlackListObfuscatingGuard);\nexports.BlackListObfuscatingGuard = BlackListObfuscatingGuard;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar ConditionalCommentObfuscatingGuard_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ConditionalCommentObfuscatingGuard = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ObfuscatingGuardResult_1 = require(\"../../../enums/node/ObfuscatingGuardResult\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nlet ConditionalCommentObfuscatingGuard = ConditionalCommentObfuscatingGuard_1 = class ConditionalCommentObfuscatingGuard {\n constructor() {\n this.obfuscationAllowed = true;\n }\n static isConditionalComment(comment) {\n return ConditionalCommentObfuscatingGuard_1.obfuscationEnableCommentRegExp.test(comment.value) ||\n ConditionalCommentObfuscatingGuard_1.obfuscationDisableCommentRegExp.test(comment.value);\n }\n check(node) {\n if (NodeGuards_1.NodeGuards.isNodeWithComments(node)) {\n const leadingComments = node.leadingComments;\n if (leadingComments) {\n this.obfuscationAllowed = this.checkComments(leadingComments);\n }\n }\n return this.obfuscationAllowed\n ? ObfuscatingGuardResult_1.ObfuscatingGuardResult.Transform\n : ObfuscatingGuardResult_1.ObfuscatingGuardResult.Ignore;\n }\n checkComments(comments) {\n const commentsLength = comments.length;\n let obfuscationAllowed = this.obfuscationAllowed;\n for (let i = 0; i < commentsLength; i++) {\n const comment = comments[i];\n if (ConditionalCommentObfuscatingGuard_1.obfuscationEnableCommentRegExp.test(comment.value)) {\n obfuscationAllowed = true;\n continue;\n }\n if (ConditionalCommentObfuscatingGuard_1.obfuscationDisableCommentRegExp.test(comment.value)) {\n obfuscationAllowed = false;\n }\n }\n return obfuscationAllowed;\n }\n};\nConditionalCommentObfuscatingGuard.obfuscationEnableCommentRegExp = new RegExp('javascript-obfuscator *: *enable');\nConditionalCommentObfuscatingGuard.obfuscationDisableCommentRegExp = new RegExp('javascript-obfuscator *: *disable');\nConditionalCommentObfuscatingGuard = ConditionalCommentObfuscatingGuard_1 = __decorate([\n inversify_1.injectable()\n], ConditionalCommentObfuscatingGuard);\nexports.ConditionalCommentObfuscatingGuard = ConditionalCommentObfuscatingGuard;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ForceTransformStringObfuscatingGuard = void 0;\nconst inversify_1 = require(\"inversify\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst ObfuscatingGuardResult_1 = require(\"../../../enums/node/ObfuscatingGuardResult\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nlet ForceTransformStringObfuscatingGuard = class ForceTransformStringObfuscatingGuard {\n constructor(options) {\n this.options = options;\n }\n check(node) {\n if (this.options.forceTransformStrings.length\n && NodeGuards_1.NodeGuards.isLiteralNode(node)\n && typeof node.value === 'string') {\n return !this.isForceTransformString(node.value)\n ? ObfuscatingGuardResult_1.ObfuscatingGuardResult.Transform\n : ObfuscatingGuardResult_1.ObfuscatingGuardResult.ForceTransform;\n }\n return ObfuscatingGuardResult_1.ObfuscatingGuardResult.Transform;\n }\n isForceTransformString(value) {\n return this.options.forceTransformStrings\n .some((forceTransformString) => {\n return new RegExp(forceTransformString, 'g').exec(value) !== null;\n });\n }\n};\nForceTransformStringObfuscatingGuard = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _a : Object])\n], ForceTransformStringObfuscatingGuard);\nexports.ForceTransformStringObfuscatingGuard = ForceTransformStringObfuscatingGuard;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IgnoredRequireImportObfuscatingGuard = void 0;\nconst inversify_1 = require(\"inversify\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst ObfuscatingGuardResult_1 = require(\"../../../enums/node/ObfuscatingGuardResult\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nlet IgnoredRequireImportObfuscatingGuard = class IgnoredRequireImportObfuscatingGuard {\n constructor(options) {\n this.options = options;\n }\n check(node) {\n if (this.options.ignoreRequireImports\n && NodeGuards_1.NodeGuards.isCallExpressionNode(node)\n && NodeGuards_1.NodeGuards.isIdentifierNode(node.callee)\n && node.callee.name === 'require') {\n return ObfuscatingGuardResult_1.ObfuscatingGuardResult.Ignore;\n }\n return ObfuscatingGuardResult_1.ObfuscatingGuardResult.Transform;\n }\n};\nIgnoredRequireImportObfuscatingGuard = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _a : Object])\n], IgnoredRequireImportObfuscatingGuard);\nexports.IgnoredRequireImportObfuscatingGuard = IgnoredRequireImportObfuscatingGuard;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ReservedStringObfuscatingGuard = void 0;\nconst inversify_1 = require(\"inversify\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst ObfuscatingGuardResult_1 = require(\"../../../enums/node/ObfuscatingGuardResult\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nlet ReservedStringObfuscatingGuard = class ReservedStringObfuscatingGuard {\n constructor(options) {\n this.options = options;\n }\n check(node) {\n if (this.options.reservedStrings.length\n && NodeGuards_1.NodeGuards.isLiteralNode(node)\n && typeof node.value === 'string') {\n return !this.isReservedString(node.value)\n ? ObfuscatingGuardResult_1.ObfuscatingGuardResult.Transform\n : ObfuscatingGuardResult_1.ObfuscatingGuardResult.Ignore;\n }\n return ObfuscatingGuardResult_1.ObfuscatingGuardResult.Transform;\n }\n isReservedString(value) {\n return this.options.reservedStrings\n .some((reservedString) => {\n return new RegExp(reservedString, 'g').exec(value) !== null;\n });\n }\n};\nReservedStringObfuscatingGuard = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _a : Object])\n], ReservedStringObfuscatingGuard);\nexports.ReservedStringObfuscatingGuard = ReservedStringObfuscatingGuard;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LabeledStatementTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst IIdentifierReplacer_1 = require(\"../../interfaces/node-transformers/rename-identifiers-transformers/replacer/IIdentifierReplacer\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeLexicalScopeUtils_1 = require(\"../../node/NodeLexicalScopeUtils\");\nlet LabeledStatementTransformer = class LabeledStatementTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(identifierReplacer, randomGenerator, options) {\n super(randomGenerator, options);\n this.identifierReplacer = identifierReplacer;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.RenameIdentifiers:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isLabeledStatementNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(labeledStatementNode, parentNode) {\n const lexicalScopeNode = NodeLexicalScopeUtils_1.NodeLexicalScopeUtils.getLexicalScope(labeledStatementNode);\n if (!lexicalScopeNode) {\n return labeledStatementNode;\n }\n this.storeLabeledStatementName(labeledStatementNode, lexicalScopeNode);\n this.replaceLabeledStatementName(labeledStatementNode, lexicalScopeNode);\n return labeledStatementNode;\n }\n storeLabeledStatementName(labeledStatementNode, lexicalScopeNode) {\n this.identifierReplacer.storeLocalName(labeledStatementNode.label, lexicalScopeNode);\n }\n replaceLabeledStatementName(labeledStatementNode, lexicalScopeNode) {\n estraverse.replace(labeledStatementNode, {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isLabelIdentifierNode(node, parentNode)) {\n const newIdentifier = this.identifierReplacer\n .replace(node, lexicalScopeNode);\n node.name = newIdentifier.name;\n }\n }\n });\n }\n};\nLabeledStatementTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierReplacer)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IIdentifierReplacer_1.IIdentifierReplacer !== \"undefined\" && IIdentifierReplacer_1.IIdentifierReplacer) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], LabeledStatementTransformer);\nexports.LabeledStatementTransformer = LabeledStatementTransformer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopeIdentifiersTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst IIdentifierReplacer_1 = require(\"../../interfaces/node-transformers/rename-identifiers-transformers/replacer/IIdentifierReplacer\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IScopeIdentifiersTraverser_1 = require(\"../../interfaces/node/IScopeIdentifiersTraverser\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeMetadata_1 = require(\"../../node/NodeMetadata\");\nlet ScopeIdentifiersTransformer = class ScopeIdentifiersTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(identifierReplacer, randomGenerator, options, scopeIdentifiersTraverser) {\n super(randomGenerator, options);\n this.lexicalScopesWithObjectPatternWithoutDeclarationMap = new Map();\n this.identifierReplacer = identifierReplacer;\n this.scopeIdentifiersTraverser = scopeIdentifiersTraverser;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.RenameIdentifiers:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isProgramNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(programNode, parentNode) {\n this.scopeIdentifiersTraverser.traverseScopeIdentifiers(programNode, parentNode, (data) => {\n const { isGlobalDeclaration, variable, variableLexicalScopeNode } = data;\n if (!this.options.renameGlobals && isGlobalDeclaration) {\n const isImportBindingOrCatchClauseIdentifier = variable.defs\n .every((definition) => definition.type === 'ImportBinding'\n || definition.type === 'CatchClause');\n if (!isImportBindingOrCatchClauseIdentifier) {\n return;\n }\n }\n this.transformScopeVariableIdentifiers(variable, variableLexicalScopeNode, isGlobalDeclaration);\n });\n return programNode;\n }\n transformScopeVariableIdentifiers(variable, lexicalScopeNode, isGlobalDeclaration) {\n var _a;\n const firstIdentifier = (_a = variable.identifiers[0]) !== null && _a !== void 0 ? _a : null;\n if (!firstIdentifier) {\n return;\n }\n if (!this.isReplaceableIdentifierNode(firstIdentifier, lexicalScopeNode, variable)) {\n return;\n }\n this.storeIdentifierName(firstIdentifier, lexicalScopeNode, isGlobalDeclaration);\n this.replaceIdentifierName(firstIdentifier, lexicalScopeNode, variable);\n }\n storeIdentifierName(identifierNode, lexicalScopeNode, isGlobalDeclaration) {\n if (isGlobalDeclaration) {\n this.identifierReplacer.storeGlobalName(identifierNode, lexicalScopeNode);\n }\n else {\n this.identifierReplacer.storeLocalName(identifierNode, lexicalScopeNode);\n }\n }\n replaceIdentifierName(identifierNode, lexicalScopeNode, variable) {\n const newIdentifier = this.identifierReplacer\n .replace(identifierNode, lexicalScopeNode);\n variable.identifiers.forEach((identifier) => {\n identifier.name = newIdentifier.name;\n });\n variable.references.forEach((reference) => {\n reference.identifier.name = identifierNode.name;\n });\n }\n isReplaceableIdentifierNode(identifierNode, lexicalScopeNode, variable) {\n const parentNode = identifierNode.parentNode;\n return !!parentNode\n && !NodeMetadata_1.NodeMetadata.isIgnoredNode(identifierNode)\n && !this.isProhibitedPropertyIdentifierNode(identifierNode, parentNode)\n && !this.isProhibitedPropertyAssignmentPatternIdentifierNode(identifierNode, parentNode)\n && !this.isProhibitedClassDeclarationNameIdentifierNode(variable, identifierNode, parentNode)\n && !this.isProhibitedExportNamedClassDeclarationIdentifierNode(identifierNode, parentNode)\n && !this.isProhibitedExportNamedFunctionDeclarationIdentifierNode(identifierNode, parentNode)\n && !this.isProhibitedExportNamedVariableDeclarationIdentifierNode(identifierNode, parentNode)\n && !this.isProhibitedImportSpecifierNode(identifierNode, parentNode)\n && !this.isProhibitedVariableNameUsedInObjectPatternNode(variable, identifierNode, lexicalScopeNode)\n && !NodeGuards_1.NodeGuards.isLabelIdentifierNode(identifierNode, parentNode);\n }\n isProhibitedClassDeclarationNameIdentifierNode(variable, identifierNode, parentNode) {\n return NodeGuards_1.NodeGuards.isClassDeclarationNode(variable.scope.block)\n && NodeGuards_1.NodeGuards.isClassDeclarationNode(parentNode)\n && parentNode.id === identifierNode;\n }\n isProhibitedExportNamedClassDeclarationIdentifierNode(identifierNode, parentNode) {\n return NodeGuards_1.NodeGuards.isClassDeclarationNode(parentNode)\n && parentNode.id === identifierNode\n && !!parentNode.parentNode\n && NodeGuards_1.NodeGuards.isExportNamedDeclarationNode(parentNode.parentNode);\n }\n isProhibitedExportNamedFunctionDeclarationIdentifierNode(identifierNode, parentNode) {\n return NodeGuards_1.NodeGuards.isFunctionDeclarationNode(parentNode)\n && parentNode.id === identifierNode\n && !!parentNode.parentNode\n && NodeGuards_1.NodeGuards.isExportNamedDeclarationNode(parentNode.parentNode);\n }\n isProhibitedExportNamedVariableDeclarationIdentifierNode(identifierNode, parentNode) {\n return NodeGuards_1.NodeGuards.isVariableDeclaratorNode(parentNode)\n && parentNode.id === identifierNode\n && !!parentNode.parentNode\n && NodeGuards_1.NodeGuards.isVariableDeclarationNode(parentNode.parentNode)\n && !!parentNode.parentNode.parentNode\n && NodeGuards_1.NodeGuards.isExportNamedDeclarationNode(parentNode.parentNode.parentNode);\n }\n isProhibitedImportSpecifierNode(identifierNode, parentNode) {\n return NodeGuards_1.NodeGuards.isImportSpecifierNode(parentNode)\n && parentNode.imported.name === parentNode.local.name;\n }\n isProhibitedPropertyIdentifierNode(node, parentNode) {\n return NodeGuards_1.NodeGuards.isPropertyNode(parentNode)\n && !parentNode.computed\n && NodeGuards_1.NodeGuards.isIdentifierNode(parentNode.key)\n && NodeGuards_1.NodeGuards.isIdentifierNode(node)\n && parentNode.shorthand\n && parentNode.key.name === node.name;\n }\n isProhibitedPropertyAssignmentPatternIdentifierNode(node, parentNode) {\n return NodeGuards_1.NodeGuards.isAssignmentPatternNode(parentNode)\n && parentNode.left === node\n && !!parentNode.parentNode\n && NodeGuards_1.NodeGuards.isPropertyNode(parentNode.parentNode)\n && NodeGuards_1.NodeGuards.isIdentifierNode(parentNode.left)\n && NodeGuards_1.NodeGuards.isIdentifierNode(parentNode.parentNode.key)\n && parentNode.left.name === parentNode.parentNode.key.name;\n }\n isProhibitedVariableNameUsedInObjectPatternNode(variable, identifierNode, lexicalScopeNode) {\n let isLexicalScopeHasObjectPatternWithoutDeclaration = this.lexicalScopesWithObjectPatternWithoutDeclarationMap.get(lexicalScopeNode);\n if (isLexicalScopeHasObjectPatternWithoutDeclaration === false) {\n return false;\n }\n const hasVarDefinitions = variable.defs.some((definition) => definition.kind === 'var');\n if (!hasVarDefinitions) {\n return false;\n }\n let isProhibitedVariableDeclaration = false;\n estraverse.traverse(lexicalScopeNode, {\n enter: (node, parentNode) => {\n if (NodeGuards_1.NodeGuards.isObjectPatternNode(node)\n && parentNode\n && NodeGuards_1.NodeGuards.isAssignmentExpressionNode(parentNode)) {\n isLexicalScopeHasObjectPatternWithoutDeclaration = true;\n const properties = node.properties;\n for (const property of properties) {\n if (!NodeGuards_1.NodeGuards.isPropertyNode(property)) {\n continue;\n }\n if (property.computed || !property.shorthand) {\n continue;\n }\n if (!NodeGuards_1.NodeGuards.isIdentifierNode(property.key)) {\n continue;\n }\n if (identifierNode.name !== property.key.name) {\n continue;\n }\n isProhibitedVariableDeclaration = true;\n return estraverse.VisitorOption.Break;\n }\n }\n }\n });\n this.lexicalScopesWithObjectPatternWithoutDeclarationMap.set(lexicalScopeNode, isLexicalScopeHasObjectPatternWithoutDeclaration !== null && isLexicalScopeHasObjectPatternWithoutDeclaration !== void 0 ? isLexicalScopeHasObjectPatternWithoutDeclaration : false);\n return isProhibitedVariableDeclaration;\n }\n};\nScopeIdentifiersTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierReplacer)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IScopeIdentifiersTraverser)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IIdentifierReplacer_1.IIdentifierReplacer !== \"undefined\" && IIdentifierReplacer_1.IIdentifierReplacer) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object, typeof (_d = typeof IScopeIdentifiersTraverser_1.IScopeIdentifiersTraverser !== \"undefined\" && IScopeIdentifiersTraverser_1.IScopeIdentifiersTraverser) === \"function\" ? _d : Object])\n], ScopeIdentifiersTransformer);\nexports.ScopeIdentifiersTransformer = ScopeIdentifiersTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopeThroughIdentifiersTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IIdentifierReplacer_1 = require(\"../../interfaces/node-transformers/rename-identifiers-transformers/replacer/IIdentifierReplacer\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IScopeIdentifiersTraverser_1 = require(\"../../interfaces/node/IScopeIdentifiersTraverser\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet ScopeThroughIdentifiersTransformer = class ScopeThroughIdentifiersTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(identifierReplacer, randomGenerator, options, scopeIdentifiersTraverser) {\n super(randomGenerator, options);\n this.identifierReplacer = identifierReplacer;\n this.scopeIdentifiersTraverser = scopeIdentifiersTraverser;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.RenameIdentifiers:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isProgramNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(programNode, parentNode) {\n this.scopeIdentifiersTraverser.traverseScopeThroughIdentifiers(programNode, parentNode, (data) => {\n const { reference, variableLexicalScopeNode } = data;\n this.transformScopeThroughIdentifiers(reference, variableLexicalScopeNode);\n });\n return programNode;\n }\n transformScopeThroughIdentifiers(reference, lexicalScopeNode) {\n if (reference.resolved) {\n return;\n }\n const identifier = reference.identifier;\n this.storeIdentifierName(identifier, lexicalScopeNode);\n this.replaceIdentifierName(identifier, lexicalScopeNode, reference);\n }\n storeIdentifierName(identifierNode, lexicalScopeNode) {\n this.identifierReplacer.storeLocalName(identifierNode, lexicalScopeNode);\n }\n replaceIdentifierName(identifierNode, lexicalScopeNode, reference) {\n const newIdentifier = this.identifierReplacer\n .replace(identifierNode, lexicalScopeNode);\n reference.identifier.name = newIdentifier.name;\n }\n};\nScopeThroughIdentifiersTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierReplacer)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IScopeIdentifiersTraverser)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IIdentifierReplacer_1.IIdentifierReplacer !== \"undefined\" && IIdentifierReplacer_1.IIdentifierReplacer) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object, typeof (_d = typeof IScopeIdentifiersTraverser_1.IScopeIdentifiersTraverser !== \"undefined\" && IScopeIdentifiersTraverser_1.IScopeIdentifiersTraverser) === \"function\" ? _d : Object])\n], ScopeThroughIdentifiersTransformer);\nexports.ScopeThroughIdentifiersTransformer = ScopeThroughIdentifiersTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IdentifierReplacer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst NodeFactory_1 = require(\"../../../node/NodeFactory\");\nlet IdentifierReplacer = class IdentifierReplacer {\n constructor(identifierNamesGeneratorFactory, options) {\n this.blockScopesMap = new Map();\n this.options = options;\n this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);\n }\n storeGlobalName(identifierNode, lexicalScopeNode) {\n const identifierName = identifierNode.name;\n if (this.isReservedName(identifierName)) {\n return;\n }\n const newIdentifierName = this.identifierNamesGenerator.generateForGlobalScope();\n if (!this.blockScopesMap.has(lexicalScopeNode)) {\n this.blockScopesMap.set(lexicalScopeNode, new Map());\n }\n const namesMap = this.blockScopesMap.get(lexicalScopeNode);\n namesMap.set(identifierName, newIdentifierName);\n }\n storeLocalName(identifierNode, lexicalScopeNode) {\n const identifierName = identifierNode.name;\n if (this.isReservedName(identifierName)) {\n return;\n }\n const newIdentifierName = this.identifierNamesGenerator.generateForLexicalScope(lexicalScopeNode);\n if (!this.blockScopesMap.has(lexicalScopeNode)) {\n this.blockScopesMap.set(lexicalScopeNode, new Map());\n }\n const namesMap = this.blockScopesMap.get(lexicalScopeNode);\n namesMap.set(identifierName, newIdentifierName);\n }\n replace(identifierNode, lexicalScopeNode) {\n let identifierName = identifierNode.name;\n if (this.blockScopesMap.has(lexicalScopeNode)) {\n const namesMap = this.blockScopesMap.get(lexicalScopeNode);\n if (namesMap.has(identifierName)) {\n identifierName = namesMap.get(identifierName);\n }\n }\n return NodeFactory_1.NodeFactory.identifierNode(identifierName);\n }\n preserveName(identifierNode) {\n this.identifierNamesGenerator.preserveName(identifierNode.name);\n }\n preserveNameForLexicalScope(identifierNode, lexicalScopeNode) {\n this.identifierNamesGenerator.preserveNameForLexicalScope(identifierNode.name, lexicalScopeNode);\n }\n isReservedName(name) {\n if (!this.options.reservedNames.length) {\n return false;\n }\n return this.options.reservedNames\n .some((reservedName) => {\n return new RegExp(reservedName, 'g').exec(name) !== null;\n });\n }\n};\nIdentifierReplacer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], IdentifierReplacer);\nexports.IdentifierReplacer = IdentifierReplacer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar RenamePropertiesTransformer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RenamePropertiesTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IRenamePropertiesReplacer_1 = require(\"../../interfaces/node-transformers/rename-properties-transformers/replacer/IRenamePropertiesReplacer\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet RenamePropertiesTransformer = RenamePropertiesTransformer_1 = class RenamePropertiesTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(renamePropertiesReplacer, randomGenerator, options) {\n super(randomGenerator, options);\n this.renamePropertiesReplacer = renamePropertiesReplacer;\n }\n static isValidPropertyNode(propertyNode, propertyKeyNode) {\n if (NodeGuards_1.NodeGuards.isIdentifierNode(propertyKeyNode) && propertyNode.computed) {\n return false;\n }\n return NodeGuards_1.NodeGuards.isIdentifierNode(propertyKeyNode) || NodeGuards_1.NodeGuards.isLiteralNode(propertyKeyNode);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.RenameProperties:\n return {\n enter: (node, parentNode) => {\n if (parentNode) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(node, parentNode) {\n if (NodeGuards_1.NodeGuards.isPropertyNode(node)) {\n return this.transformPropertyNode(node);\n }\n if (NodeGuards_1.NodeGuards.isMemberExpressionNode(node)) {\n return this.transformMemberExpressionNode(node);\n }\n if (NodeGuards_1.NodeGuards.isMethodDefinitionNode(node)) {\n return this.transformMethodDefinitionNode(node);\n }\n return node;\n }\n transformPropertyNode(propertyNode) {\n const propertyKeyNode = propertyNode.key;\n if (RenamePropertiesTransformer_1.isValidPropertyNode(propertyNode, propertyKeyNode)) {\n propertyNode.key = this.renamePropertiesReplacer.replace(propertyKeyNode);\n propertyNode.shorthand = false;\n }\n return propertyNode;\n }\n transformMemberExpressionNode(memberExpressionNode) {\n const propertyKeyNode = memberExpressionNode.property;\n if (RenamePropertiesTransformer_1.isValidPropertyNode(memberExpressionNode, propertyKeyNode)) {\n memberExpressionNode.property = this.renamePropertiesReplacer.replace(propertyKeyNode);\n }\n return memberExpressionNode;\n }\n transformMethodDefinitionNode(methodDefinitionNode) {\n const propertyKeyNode = methodDefinitionNode.key;\n if (RenamePropertiesTransformer_1.isValidPropertyNode(methodDefinitionNode, propertyKeyNode)) {\n methodDefinitionNode.key = this.renamePropertiesReplacer.replace(propertyKeyNode);\n }\n return methodDefinitionNode;\n }\n};\nRenamePropertiesTransformer = RenamePropertiesTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRenamePropertiesReplacer)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRenamePropertiesReplacer_1.IRenamePropertiesReplacer !== \"undefined\" && IRenamePropertiesReplacer_1.IRenamePropertiesReplacer) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], RenamePropertiesTransformer);\nexports.RenamePropertiesTransformer = RenamePropertiesTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RenamePropertiesReplacer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nconst ReservedDomProperties_json_1 = __importDefault(require(\"./ReservedDomProperties.json\"));\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\nconst NodeFactory_1 = require(\"../../../node/NodeFactory\");\nlet RenamePropertiesReplacer = class RenamePropertiesReplacer {\n constructor(identifierNamesGeneratorFactory, options) {\n this.propertyNamesMap = new Map();\n this.reservedDomPropertiesList = new Set(ReservedDomProperties_json_1.default);\n this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);\n this.options = options;\n }\n replace(node) {\n if (NodeGuards_1.NodeGuards.isIdentifierNode(node)) {\n return NodeFactory_1.NodeFactory.identifierNode(this.replacePropertyName(node.name));\n }\n if (NodeGuards_1.NodeGuards.isLiteralNode(node) && typeof node.value === 'string') {\n return NodeFactory_1.NodeFactory.literalNode(this.replacePropertyName(node.value));\n }\n return node;\n }\n replacePropertyName(propertyName) {\n var _a;\n if (this.isReservedName(propertyName)) {\n return propertyName;\n }\n let renamedPropertyName = (_a = this.propertyNamesMap.get(propertyName)) !== null && _a !== void 0 ? _a : null;\n if (renamedPropertyName !== null) {\n return renamedPropertyName;\n }\n renamedPropertyName = this.identifierNamesGenerator.generateNext();\n this.propertyNamesMap.set(propertyName, renamedPropertyName);\n return renamedPropertyName;\n }\n isReservedName(name) {\n return this.isReservedOptionName(name)\n || this.isReservedDomPropertyName(name);\n }\n isReservedOptionName(name) {\n if (!this.options.reservedNames.length) {\n return false;\n }\n return this.options.reservedNames\n .some((reservedName) => {\n return new RegExp(reservedName, 'g').exec(name) !== null;\n });\n }\n isReservedDomPropertyName(name) {\n return this.reservedDomPropertiesList.has(name);\n }\n};\nRenamePropertiesReplacer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], RenamePropertiesReplacer);\nexports.RenamePropertiesReplacer = RenamePropertiesReplacer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractStatementSimplifyTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformer_1 = require(\"../../enums/node-transformers/NodeTransformer\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nlet AbstractStatementSimplifyTransformer = class AbstractStatementSimplifyTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n this.runAfter = [\n NodeTransformer_1.NodeTransformer.ExpressionStatementsMergeTransformer,\n NodeTransformer_1.NodeTransformer.VariableDeclarationsMergeTransformer\n ];\n }\n getStatementSimplifyData(statementNode) {\n if (!statementNode) {\n return null;\n }\n if (!NodeGuards_1.NodeGuards.isBlockStatementNode(statementNode)) {\n return {\n leadingStatements: [statementNode],\n trailingStatement: null,\n hasReturnStatement: false,\n hasSingleExpression: false\n };\n }\n const { startIndex, unwrappedExpressions, hasReturnStatement } = this.collectIteratedStatementsSimplifyData(statementNode);\n const leadingStatements = this.getLeadingStatements(statementNode, startIndex);\n if (!unwrappedExpressions.length) {\n return {\n leadingStatements,\n trailingStatement: null,\n hasReturnStatement,\n hasSingleExpression: false\n };\n }\n const hasSingleExpression = unwrappedExpressions.length === 1;\n const expression = hasSingleExpression\n ? unwrappedExpressions[0]\n : NodeFactory_1.NodeFactory.sequenceExpressionNode(unwrappedExpressions);\n const statement = hasReturnStatement\n ? NodeFactory_1.NodeFactory.returnStatementNode(expression)\n : NodeFactory_1.NodeFactory.expressionStatementNode(expression);\n return {\n leadingStatements,\n trailingStatement: {\n statement,\n expression\n },\n hasReturnStatement,\n hasSingleExpression\n };\n }\n collectIteratedStatementsSimplifyData(statementNode) {\n const statementNodeBodyLength = statementNode.body.length;\n const unwrappedExpressions = [];\n let hasReturnStatement = false;\n let startIndex = null;\n for (let i = statementNodeBodyLength - 1; i >= 0; i--) {\n const statementBodyStatementNode = statementNode.body[i];\n if (NodeGuards_1.NodeGuards.isExpressionStatementNode(statementBodyStatementNode)) {\n if (NodeGuards_1.NodeGuards.isSequenceExpressionNode(statementBodyStatementNode.expression)) {\n unwrappedExpressions.unshift(...statementBodyStatementNode.expression.expressions);\n }\n else {\n unwrappedExpressions.unshift(statementBodyStatementNode.expression);\n }\n startIndex = i;\n continue;\n }\n if (NodeGuards_1.NodeGuards.isReturnStatementNode(statementBodyStatementNode)\n && statementBodyStatementNode.argument) {\n unwrappedExpressions.unshift(statementBodyStatementNode.argument);\n hasReturnStatement = true;\n startIndex = i;\n continue;\n }\n break;\n }\n return {\n startIndex,\n unwrappedExpressions,\n hasReturnStatement\n };\n }\n getLeadingStatements(statementNode, startIndex) {\n if (startIndex === null) {\n return statementNode.body;\n }\n return startIndex === 0\n ? []\n : statementNode.body.slice(0, startIndex);\n }\n getPartialStatement(statementSimplifyData) {\n if (!statementSimplifyData.leadingStatements.length && statementSimplifyData.trailingStatement) {\n return statementSimplifyData.trailingStatement.statement;\n }\n return NodeFactory_1.NodeFactory.blockStatementNode([\n ...statementSimplifyData.leadingStatements.length ? statementSimplifyData.leadingStatements : [],\n ...statementSimplifyData.trailingStatement ? [statementSimplifyData.trailingStatement.statement] : []\n ]);\n }\n};\nAbstractStatementSimplifyTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], AbstractStatementSimplifyTransformer);\nexports.AbstractStatementSimplifyTransformer = AbstractStatementSimplifyTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BlockStatementSimplifyTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformer_1 = require(\"../../enums/node-transformers/NodeTransformer\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractStatementSimplifyTransformer_1 = require(\"./AbstractStatementSimplifyTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet BlockStatementSimplifyTransformer = class BlockStatementSimplifyTransformer extends AbstractStatementSimplifyTransformer_1.AbstractStatementSimplifyTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n this.runAfter = [\n NodeTransformer_1.NodeTransformer.VariableDeclarationsMergeTransformer\n ];\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Simplifying:\n return {\n leave: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isBlockStatementNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(statementNode, parentNode) {\n const simplifyData = this.getStatementSimplifyData(statementNode);\n if (!simplifyData) {\n return statementNode;\n }\n const partialStatementNode = this.getPartialStatement(simplifyData);\n const transformedNode = NodeGuards_1.NodeGuards.isBlockStatementNode(partialStatementNode)\n ? partialStatementNode\n : NodeFactory_1.NodeFactory.blockStatementNode([partialStatementNode]);\n return NodeUtils_1.NodeUtils.parentizeNode(transformedNode, parentNode);\n }\n};\nBlockStatementSimplifyTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], BlockStatementSimplifyTransformer);\nexports.BlockStatementSimplifyTransformer = BlockStatementSimplifyTransformer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ExpressionStatementsMergeTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeStatementUtils_1 = require(\"../../node/NodeStatementUtils\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet ExpressionStatementsMergeTransformer = class ExpressionStatementsMergeTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Simplifying:\n return {\n leave: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isExpressionStatementNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(expressionStatementNode, parentNode) {\n if (!NodeGuards_1.NodeGuards.isNodeWithStatements(parentNode)) {\n return expressionStatementNode;\n }\n const prevStatement = NodeStatementUtils_1.NodeStatementUtils.getPreviousSiblingStatement(expressionStatementNode);\n if (!prevStatement || !NodeGuards_1.NodeGuards.isExpressionStatementNode(prevStatement)) {\n return expressionStatementNode;\n }\n if (NodeGuards_1.NodeGuards.isSequenceExpressionNode(prevStatement.expression)) {\n prevStatement.expression.expressions.push(expressionStatementNode.expression);\n NodeUtils_1.NodeUtils.parentizeNode(expressionStatementNode.expression, prevStatement.expression);\n }\n else {\n prevStatement.expression = NodeFactory_1.NodeFactory.sequenceExpressionNode([\n prevStatement.expression,\n expressionStatementNode.expression\n ]);\n NodeUtils_1.NodeUtils.parentizeAst(prevStatement.expression);\n NodeUtils_1.NodeUtils.parentizeNode(prevStatement.expression, prevStatement);\n }\n return estraverse.VisitorOption.Remove;\n }\n};\nExpressionStatementsMergeTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], ExpressionStatementsMergeTransformer);\nexports.ExpressionStatementsMergeTransformer = ExpressionStatementsMergeTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IfStatementSimplifyTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractStatementSimplifyTransformer_1 = require(\"./AbstractStatementSimplifyTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeFactory_1 = require(\"../../node/NodeFactory\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet IfStatementSimplifyTransformer = class IfStatementSimplifyTransformer extends AbstractStatementSimplifyTransformer_1.AbstractStatementSimplifyTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Simplifying:\n return {\n leave: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isIfStatementNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(ifStatementNode, parentNode) {\n const consequentSimplifyData = this.getStatementSimplifyData(ifStatementNode.consequent);\n if (!consequentSimplifyData) {\n return ifStatementNode;\n }\n let transformedNode;\n if (!ifStatementNode.alternate) {\n transformedNode = this.getConsequentNode(ifStatementNode, consequentSimplifyData);\n }\n else {\n const alternateSimplifyData = this.getStatementSimplifyData(ifStatementNode.alternate);\n if (!alternateSimplifyData) {\n return ifStatementNode;\n }\n transformedNode = this.getConsequentAndAlternateNode(ifStatementNode, consequentSimplifyData, alternateSimplifyData);\n }\n return NodeUtils_1.NodeUtils.parentizeNode(transformedNode, parentNode);\n }\n getConsequentNode(ifStatementNode, consequentSimplifyData) {\n if (consequentSimplifyData.leadingStatements.length\n || !consequentSimplifyData.trailingStatement) {\n return NodeFactory_1.NodeFactory.ifStatementNode(ifStatementNode.test, this.getPartialStatement(consequentSimplifyData));\n }\n if (consequentSimplifyData.hasReturnStatement) {\n return NodeFactory_1.NodeFactory.ifStatementNode(ifStatementNode.test, consequentSimplifyData.trailingStatement.statement);\n }\n return NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.logicalExpressionNode('&&', ifStatementNode.test, consequentSimplifyData.trailingStatement.expression));\n }\n getConsequentAndAlternateNode(ifStatementNode, consequentSimplifyData, alternateSimplifyData) {\n if (consequentSimplifyData.leadingStatements.length\n || alternateSimplifyData.leadingStatements.length\n || !consequentSimplifyData.trailingStatement\n || !alternateSimplifyData.trailingStatement) {\n return NodeFactory_1.NodeFactory.ifStatementNode(ifStatementNode.test, this.getPartialStatement(consequentSimplifyData), this.getPartialStatement(alternateSimplifyData));\n }\n if (consequentSimplifyData.hasReturnStatement && alternateSimplifyData.hasReturnStatement) {\n return NodeFactory_1.NodeFactory.returnStatementNode(NodeFactory_1.NodeFactory.conditionalExpressionNode(ifStatementNode.test, consequentSimplifyData.trailingStatement.expression, alternateSimplifyData.trailingStatement.expression));\n }\n if (consequentSimplifyData.hasReturnStatement || alternateSimplifyData.hasReturnStatement) {\n return NodeFactory_1.NodeFactory.ifStatementNode(ifStatementNode.test, consequentSimplifyData.trailingStatement.statement, alternateSimplifyData.trailingStatement.statement);\n }\n return NodeFactory_1.NodeFactory.expressionStatementNode(NodeFactory_1.NodeFactory.conditionalExpressionNode(ifStatementNode.test, consequentSimplifyData.trailingStatement.expression, alternateSimplifyData.trailingStatement.expression));\n }\n getPartialStatement(statementSimplifyData) {\n const partialStatement = super.getPartialStatement(statementSimplifyData);\n if (!NodeGuards_1.NodeGuards.isBlockStatementNode(partialStatement)) {\n return partialStatement;\n }\n return partialStatement.body.length === 1\n && !this.isProhibitedSingleStatementForIfStatementBranch(partialStatement.body[0])\n ? partialStatement.body[0]\n : partialStatement;\n }\n isProhibitedSingleStatementForIfStatementBranch(statement) {\n return NodeGuards_1.NodeGuards.isFunctionDeclarationNode(statement)\n || NodeGuards_1.NodeGuards.isIfStatementNode(statement)\n || (NodeGuards_1.NodeGuards.isVariableDeclarationNode(statement) && statement.kind !== 'var');\n }\n};\nIfStatementSimplifyTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], IfStatementSimplifyTransformer);\nexports.IfStatementSimplifyTransformer = IfStatementSimplifyTransformer;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VariableDeclarationsMergeTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeStatementUtils_1 = require(\"../../node/NodeStatementUtils\");\nlet VariableDeclarationsMergeTransformer = class VariableDeclarationsMergeTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Simplifying:\n return {\n leave: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isVariableDeclarationNode(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(variableDeclarationNode, parentNode) {\n if (!NodeGuards_1.NodeGuards.isNodeWithStatements(parentNode)) {\n return variableDeclarationNode;\n }\n const prevStatement = NodeStatementUtils_1.NodeStatementUtils.getPreviousSiblingStatement(variableDeclarationNode);\n if (!prevStatement || !NodeGuards_1.NodeGuards.isVariableDeclarationNode(prevStatement)) {\n return variableDeclarationNode;\n }\n if (variableDeclarationNode.kind !== prevStatement.kind) {\n return variableDeclarationNode;\n }\n prevStatement.declarations.push(...variableDeclarationNode.declarations);\n return estraverse.VisitorOption.Remove;\n }\n};\nVariableDeclarationsMergeTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], VariableDeclarationsMergeTransformer);\nexports.VariableDeclarationsMergeTransformer = VariableDeclarationsMergeTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c, _d, _e, _f, _g;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayScopeCallsWrapperTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TStringArrayCustomNodeFactory_1 = require(\"../../types/container/custom-nodes/TStringArrayCustomNodeFactory\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IStringArrayScopeCallsWrapperLexicalScopeDataStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrapperLexicalScopeDataStorage\");\nconst IStringArrayScopeCallsWrapperNamesDataStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrapperNamesDataStorage\");\nconst IStringArrayStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayStorage\");\nconst IVisitedLexicalScopeNodesStackStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IVisitedLexicalScopeNodesStackStorage\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst StringArrayCustomNode_1 = require(\"../../enums/custom-nodes/StringArrayCustomNode\");\nconst StringArrayWrappersType_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayWrappersType\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeAppender_1 = require(\"../../node/NodeAppender\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet StringArrayScopeCallsWrapperTransformer = class StringArrayScopeCallsWrapperTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options, visitedLexicalScopeNodesStackStorage, stringArrayStorage, stringArrayScopeCallsWrapperNamesDataStorage, stringArrayScopeCallsWrapperLexicalScopeDataStorage, stringArrayTransformerCustomNodeFactory) {\n super(randomGenerator, options);\n this.visitedLexicalScopeNodesStackStorage = visitedLexicalScopeNodesStackStorage;\n this.stringArrayStorage = stringArrayStorage;\n this.stringArrayScopeCallsWrapperNamesDataStorage = stringArrayScopeCallsWrapperNamesDataStorage;\n this.stringArrayScopeCallsWrapperLexicalScopeDataStorage = stringArrayScopeCallsWrapperLexicalScopeDataStorage;\n this.stringArrayTransformerCustomNodeFactory = stringArrayTransformerCustomNodeFactory;\n }\n getVisitor(nodeTransformationStage) {\n if (!this.options.stringArrayWrappersCount) {\n return null;\n }\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.StringArray:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isNodeWithLexicalScopeStatements(node, parentNode)) {\n this.onLexicalScopeNodeEnter(node);\n }\n },\n leave: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isNodeWithLexicalScopeStatements(node, parentNode)) {\n this.onLexicalScopeNodeLeave();\n return this.transformNode(node);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(lexicalScopeBodyNode) {\n var _a, _b;\n const stringArrayScopeCallsWrapperNamesDataByEncoding = (_a = this.stringArrayScopeCallsWrapperNamesDataStorage.get(lexicalScopeBodyNode)) !== null && _a !== void 0 ? _a : null;\n const stringArrayScopeCallsWrapperLexicalScopeData = (_b = this.stringArrayScopeCallsWrapperLexicalScopeDataStorage.get(lexicalScopeBodyNode)) !== null && _b !== void 0 ? _b : null;\n if (!stringArrayScopeCallsWrapperNamesDataByEncoding || !stringArrayScopeCallsWrapperLexicalScopeData) {\n return lexicalScopeBodyNode;\n }\n const { callsWrappersParameterIndexesData: stringArrayScopeCallsWrapperParameterIndexes } = stringArrayScopeCallsWrapperLexicalScopeData;\n const stringArrayScopeCallsWrapperNamesDataList = Object.values(stringArrayScopeCallsWrapperNamesDataByEncoding);\n for (const stringArrayScopeCallsWrapperNamesData of stringArrayScopeCallsWrapperNamesDataList) {\n if (!stringArrayScopeCallsWrapperNamesData) {\n continue;\n }\n const { names } = stringArrayScopeCallsWrapperNamesData;\n const namesLength = names.length;\n for (let i = namesLength - 1; i >= 0; i--) {\n const stringArrayScopeCallsWrapperName = names[i];\n const { name: upperStringArrayCallsWrapperName, index: upperStringArrayCallsWrapperShiftedIndex, parameterIndexesData: upperStringArrayCallsWrapperParameterIndexes } = this.getUpperStringArrayCallsWrapperData(stringArrayScopeCallsWrapperNamesData, stringArrayScopeCallsWrapperLexicalScopeData);\n const stringArrayScopeCallsWrapperNode = this.getStringArrayScopeCallsWrapperNode(stringArrayScopeCallsWrapperName, stringArrayScopeCallsWrapperParameterIndexes, upperStringArrayCallsWrapperName, upperStringArrayCallsWrapperParameterIndexes, upperStringArrayCallsWrapperShiftedIndex);\n NodeAppender_1.NodeAppender.prepend(lexicalScopeBodyNode, stringArrayScopeCallsWrapperNode);\n }\n }\n return lexicalScopeBodyNode;\n }\n getRootStringArrayCallsWrapperData(stringArrayScopeCallsWrapperNamesData, stringArrayScopeCallsWrapperLexicalScopeData) {\n const { encoding } = stringArrayScopeCallsWrapperNamesData;\n const { resultShiftedIndex } = stringArrayScopeCallsWrapperLexicalScopeData;\n return {\n name: this.stringArrayStorage.getStorageCallsWrapperName(encoding),\n index: resultShiftedIndex,\n parameterIndexesData: null\n };\n }\n getUpperStringArrayCallsWrapperData(stringArrayScopeCallsWrapperNamesData, stringArrayScopeCallsWrapperLexicalScopeData) {\n var _a, _b, _c, _d, _e, _f;\n const { encoding } = stringArrayScopeCallsWrapperNamesData;\n const { scopeShiftedIndex } = stringArrayScopeCallsWrapperLexicalScopeData;\n const rootStringArrayCallsWrapperData = this.getRootStringArrayCallsWrapperData(stringArrayScopeCallsWrapperNamesData, stringArrayScopeCallsWrapperLexicalScopeData);\n if (!this.options.stringArrayWrappersChainedCalls) {\n return rootStringArrayCallsWrapperData;\n }\n const parentLexicalScopeBodyNode = (_a = this.visitedLexicalScopeNodesStackStorage.getLastElement()) !== null && _a !== void 0 ? _a : null;\n if (!parentLexicalScopeBodyNode) {\n return rootStringArrayCallsWrapperData;\n }\n const parentLexicalScopeNamesDataByEncoding = (_b = this.stringArrayScopeCallsWrapperNamesDataStorage\n .get(parentLexicalScopeBodyNode)) !== null && _b !== void 0 ? _b : null;\n const parentScopeCallsWrapperLexicalScopeData = (_c = this.stringArrayScopeCallsWrapperLexicalScopeDataStorage\n .get(parentLexicalScopeBodyNode)) !== null && _c !== void 0 ? _c : null;\n const parentLexicalScopeNames = (_e = (_d = parentLexicalScopeNamesDataByEncoding === null || parentLexicalScopeNamesDataByEncoding === void 0 ? void 0 : parentLexicalScopeNamesDataByEncoding[encoding]) === null || _d === void 0 ? void 0 : _d.names) !== null && _e !== void 0 ? _e : null;\n if (!(parentLexicalScopeNames === null || parentLexicalScopeNames === void 0 ? void 0 : parentLexicalScopeNames.length)) {\n return rootStringArrayCallsWrapperData;\n }\n const upperStringArrayCallsWrapperName = this.randomGenerator\n .getRandomGenerator()\n .pickone(parentLexicalScopeNames);\n const parameterIndexesData = (_f = parentScopeCallsWrapperLexicalScopeData === null || parentScopeCallsWrapperLexicalScopeData === void 0 ? void 0 : parentScopeCallsWrapperLexicalScopeData.callsWrappersParameterIndexesData) !== null && _f !== void 0 ? _f : null;\n return {\n name: upperStringArrayCallsWrapperName,\n index: scopeShiftedIndex,\n parameterIndexesData\n };\n }\n getStringArrayScopeCallsWrapperNode(stringArrayScopeCallsWrapperName, stringArrayScopeCallsWrapperParameterIndexes, upperStringArrayCallsWrapperName, upperStringArrayCallsWrapperParameterIndexes, stringArrayScopeCallsWrapperShiftedIndex) {\n switch (this.options.stringArrayWrappersType) {\n case StringArrayWrappersType_1.StringArrayWrappersType.Function:\n return this.getStringArrayScopeCallsWrapperFunctionNode(stringArrayScopeCallsWrapperName, stringArrayScopeCallsWrapperParameterIndexes, upperStringArrayCallsWrapperName, upperStringArrayCallsWrapperParameterIndexes, stringArrayScopeCallsWrapperShiftedIndex);\n case StringArrayWrappersType_1.StringArrayWrappersType.Variable:\n default:\n return this.getStringArrayScopeCallsWrapperVariableNode(stringArrayScopeCallsWrapperName, upperStringArrayCallsWrapperName);\n }\n }\n getStringArrayScopeCallsWrapperVariableNode(stringArrayScopeCallsWrapperName, upperStringArrayCallsWrapperName) {\n const stringArrayScopeCallsWrapperVariableNode = this.stringArrayTransformerCustomNodeFactory(StringArrayCustomNode_1.StringArrayCustomNode.StringArrayScopeCallsWrapperVariableNode);\n stringArrayScopeCallsWrapperVariableNode.initialize(stringArrayScopeCallsWrapperName, upperStringArrayCallsWrapperName);\n return stringArrayScopeCallsWrapperVariableNode.getNode();\n }\n getStringArrayScopeCallsWrapperFunctionNode(stringArrayScopeCallsWrapperName, stringArrayScopeCallsWrapperParameterIndexes, upperStringArrayCallsWrapperName, upperStringArrayCallsWrapperParameterIndexes, stringArrayScopeCallsWrapperShiftedIndex) {\n const stringArrayScopeCallsWrapperFunctionNode = this.stringArrayTransformerCustomNodeFactory(StringArrayCustomNode_1.StringArrayCustomNode.StringArrayScopeCallsWrapperFunctionNode);\n stringArrayScopeCallsWrapperFunctionNode.initialize(stringArrayScopeCallsWrapperName, stringArrayScopeCallsWrapperParameterIndexes, upperStringArrayCallsWrapperName, upperStringArrayCallsWrapperParameterIndexes, stringArrayScopeCallsWrapperShiftedIndex);\n return stringArrayScopeCallsWrapperFunctionNode.getNode();\n }\n onLexicalScopeNodeEnter(lexicalScopeBodyNode) {\n this.visitedLexicalScopeNodesStackStorage.push(lexicalScopeBodyNode);\n }\n onLexicalScopeNodeLeave() {\n this.visitedLexicalScopeNodesStackStorage.pop();\n }\n};\nStringArrayScopeCallsWrapperTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IVisitedLexicalScopeNodesStackStorage)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorage)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayScopeCallsWrapperNamesDataStorage)),\n __param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayScopeCallsWrapperLexicalScopeDataStorage)),\n __param(6, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IStringArrayCustomNode)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object, typeof (_c = typeof IVisitedLexicalScopeNodesStackStorage_1.IVisitedLexicalScopeNodesStackStorage !== \"undefined\" && IVisitedLexicalScopeNodesStackStorage_1.IVisitedLexicalScopeNodesStackStorage) === \"function\" ? _c : Object, typeof (_d = typeof IStringArrayStorage_1.IStringArrayStorage !== \"undefined\" && IStringArrayStorage_1.IStringArrayStorage) === \"function\" ? _d : Object, typeof (_e = typeof IStringArrayScopeCallsWrapperNamesDataStorage_1.IStringArrayScopeCallsWrapperNamesDataStorage !== \"undefined\" && IStringArrayScopeCallsWrapperNamesDataStorage_1.IStringArrayScopeCallsWrapperNamesDataStorage) === \"function\" ? _e : Object, typeof (_f = typeof IStringArrayScopeCallsWrapperLexicalScopeDataStorage_1.IStringArrayScopeCallsWrapperLexicalScopeDataStorage !== \"undefined\" && IStringArrayScopeCallsWrapperLexicalScopeDataStorage_1.IStringArrayScopeCallsWrapperLexicalScopeDataStorage) === \"function\" ? _f : Object, typeof (_g = typeof TStringArrayCustomNodeFactory_1.TStringArrayCustomNodeFactory !== \"undefined\" && TStringArrayCustomNodeFactory_1.TStringArrayCustomNodeFactory) === \"function\" ? _g : Object])\n], StringArrayScopeCallsWrapperTransformer);\nexports.StringArrayScopeCallsWrapperTransformer = StringArrayScopeCallsWrapperTransformer;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar StringArrayTransformer_1, _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayTransformer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst TStringArrayCustomNodeFactory_1 = require(\"../../types/container/custom-nodes/TStringArrayCustomNodeFactory\");\nconst ILiteralNodesCacheStorage_1 = require(\"../../interfaces/storages/string-array-transformers/ILiteralNodesCacheStorage\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IStringArrayScopeCallsWrapperLexicalScopeDataStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrapperLexicalScopeDataStorage\");\nconst IStringArrayScopeCallsWrapperNamesDataStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayScopeCallsWrapperNamesDataStorage\");\nconst IStringArrayStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IStringArrayStorage\");\nconst IStringArrayStorageAnalyzer_1 = require(\"../../interfaces/analyzers/string-array-storage-analyzer/IStringArrayStorageAnalyzer\");\nconst IVisitedLexicalScopeNodesStackStorage_1 = require(\"../../interfaces/storages/string-array-transformers/IVisitedLexicalScopeNodesStackStorage\");\nconst NodeTransformationStage_1 = require(\"../../enums/node-transformers/NodeTransformationStage\");\nconst StringArrayCustomNode_1 = require(\"../../enums/custom-nodes/StringArrayCustomNode\");\nconst StringArrayWrappersType_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayWrappersType\");\nconst AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeLiteralUtils_1 = require(\"../../node/NodeLiteralUtils\");\nconst NodeMetadata_1 = require(\"../../node/NodeMetadata\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet StringArrayTransformer = StringArrayTransformer_1 = class StringArrayTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(randomGenerator, options, literalNodesCacheStorage, visitedLexicalScopeNodesStackStorage, stringArrayStorage, stringArrayScopeCallsWrapperNamesDataStorage, stringArrayScopeCallsWrapperLexicalScopeDataStorage, stringArrayStorageAnalyzer, identifierNamesGeneratorFactory, stringArrayTransformerCustomNodeFactory) {\n super(randomGenerator, options);\n this.literalNodesCacheStorage = literalNodesCacheStorage;\n this.visitedLexicalScopeNodesStackStorage = visitedLexicalScopeNodesStackStorage;\n this.stringArrayStorage = stringArrayStorage;\n this.stringArrayScopeCallsWrapperNamesDataStorage = stringArrayScopeCallsWrapperNamesDataStorage;\n this.stringArrayScopeCallsWrapperLexicalScopeDataStorage = stringArrayScopeCallsWrapperLexicalScopeDataStorage;\n this.stringArrayStorageAnalyzer = stringArrayStorageAnalyzer;\n this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);\n this.stringArrayTransformerCustomNodeFactory = stringArrayTransformerCustomNodeFactory;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.StringArray:\n return {\n enter: (node, parentNode) => {\n if (NodeGuards_1.NodeGuards.isProgramNode(node)) {\n this.prepareNode(node);\n }\n if (parentNode && NodeGuards_1.NodeGuards.isLiteralNode(node) && !NodeMetadata_1.NodeMetadata.isReplacedLiteral(node)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n prepareNode(programNode) {\n this.stringArrayStorageAnalyzer.analyze(programNode);\n if (this.options.shuffleStringArray) {\n this.stringArrayStorage.shuffleStorage();\n }\n if (this.options.rotateStringArray) {\n this.stringArrayStorage.rotateStorage();\n }\n }\n transformNode(literalNode, parentNode) {\n if (!NodeLiteralUtils_1.NodeLiteralUtils.isStringLiteralNode(literalNode)\n || NodeLiteralUtils_1.NodeLiteralUtils.isProhibitedLiteralNode(literalNode, parentNode)) {\n return literalNode;\n }\n const literalValue = literalNode.value;\n const stringArrayStorageItemData = this.stringArrayStorageAnalyzer.getItemDataForLiteralNode(literalNode);\n const cacheKey = this.literalNodesCacheStorage.buildKey(literalValue, stringArrayStorageItemData);\n const useCachedValue = this.literalNodesCacheStorage.shouldUseCachedValue(cacheKey, stringArrayStorageItemData);\n if (useCachedValue) {\n return this.literalNodesCacheStorage.get(cacheKey);\n }\n const resultNode = stringArrayStorageItemData\n ? this.getStringArrayCallNode(stringArrayStorageItemData)\n : literalNode;\n this.literalNodesCacheStorage.set(cacheKey, resultNode);\n NodeUtils_1.NodeUtils.parentizeNode(resultNode, parentNode);\n return resultNode;\n }\n getStringArrayCallNode(stringArrayStorageItemData) {\n const { name: stringArrayCallsWrapperName, index, parameterIndexesData } = this.getStringArrayCallsWrapperData(stringArrayStorageItemData);\n const { decodeKey } = stringArrayStorageItemData;\n const stringArrayCallCustomNode = this.stringArrayTransformerCustomNodeFactory(StringArrayCustomNode_1.StringArrayCustomNode.StringArrayCallNode);\n stringArrayCallCustomNode.initialize(stringArrayCallsWrapperName, parameterIndexesData, index, this.stringArrayStorage.getIndexShiftAmount(), decodeKey);\n const statementNode = stringArrayCallCustomNode.getNode()[0];\n if (!NodeGuards_1.NodeGuards.isExpressionStatementNode(statementNode)) {\n throw new Error('`stringArrayCallCustomNode.getNode()[0]` should returns array with `ExpressionStatement` node');\n }\n return statementNode.expression;\n }\n getStringArrayCallsWrapperData(stringArrayStorageItemData) {\n return !this.options.stringArrayWrappersCount\n ? this.getRootStringArrayCallsWrapperData(stringArrayStorageItemData)\n : this.getUpperStringArrayCallsWrapperData(stringArrayStorageItemData);\n }\n getRootStringArrayCallsWrapperData(stringArrayStorageItemData) {\n const { encoding, index } = stringArrayStorageItemData;\n const rootStringArrayCallsWrapperName = this.stringArrayStorage.getStorageCallsWrapperName(encoding);\n return {\n name: rootStringArrayCallsWrapperName,\n parameterIndexesData: null,\n index\n };\n }\n getUpperStringArrayCallsWrapperData(stringArrayStorageItemData) {\n var _a, _b, _c, _d;\n const { encoding, index } = stringArrayStorageItemData;\n const currentLexicalScopeBodyNode = (_a = this.visitedLexicalScopeNodesStackStorage.getLastElement()) !== null && _a !== void 0 ? _a : null;\n const parentLexicalScopeBodyNode = (_b = this.visitedLexicalScopeNodesStackStorage.getPenultimateElement()) !== null && _b !== void 0 ? _b : null;\n if (!currentLexicalScopeBodyNode) {\n throw new Error('Cannot find current lexical scope body node');\n }\n const stringArrayScopeCallsWrapperNamesDataByEncoding = this.getAndUpdateStringArrayScopeCallsWrapperNamesDataByEncoding(currentLexicalScopeBodyNode, stringArrayStorageItemData);\n const stringArrayScopeCallsWrapperLexicalScopeData = this.getAndUpdateStringArrayScopeCallsWrapperLexicalScopeData(currentLexicalScopeBodyNode, parentLexicalScopeBodyNode);\n const stringArrayScopeCallsWrapperNames = (_d = (_c = stringArrayScopeCallsWrapperNamesDataByEncoding[encoding]) === null || _c === void 0 ? void 0 : _c.names) !== null && _d !== void 0 ? _d : [];\n const randomUpperStringArrayCallsWrapperName = this.randomGenerator\n .getRandomGenerator()\n .pickone(stringArrayScopeCallsWrapperNames);\n const resultIndex = stringArrayScopeCallsWrapperLexicalScopeData\n ? stringArrayScopeCallsWrapperLexicalScopeData.resultShiftedIndex + index\n : index;\n return {\n name: randomUpperStringArrayCallsWrapperName,\n index: resultIndex,\n parameterIndexesData: stringArrayScopeCallsWrapperLexicalScopeData.callsWrappersParameterIndexesData\n };\n }\n getAndUpdateStringArrayScopeCallsWrapperNamesDataByEncoding(currentLexicalScopeBodyNode, stringArrayStorageItemData) {\n var _a, _b, _c;\n const { encoding } = stringArrayStorageItemData;\n const stringArrayScopeCallsWrapperNamesDataByEncoding = (_a = this.stringArrayScopeCallsWrapperNamesDataStorage.get(currentLexicalScopeBodyNode)) !== null && _a !== void 0 ? _a : {};\n const stringArrayScopeCallsWrapperNames = (_c = (_b = stringArrayScopeCallsWrapperNamesDataByEncoding[encoding]) === null || _b === void 0 ? void 0 : _b.names) !== null && _c !== void 0 ? _c : [];\n const isFilledScopeCallsWrapperNamesList = stringArrayScopeCallsWrapperNames.length === this.options.stringArrayWrappersCount;\n if (isFilledScopeCallsWrapperNamesList) {\n return stringArrayScopeCallsWrapperNamesDataByEncoding;\n }\n const nextScopeCallsWrapperName = NodeGuards_1.NodeGuards.isProgramNode(currentLexicalScopeBodyNode)\n ? this.identifierNamesGenerator.generateForGlobalScope()\n : this.identifierNamesGenerator.generateNext();\n stringArrayScopeCallsWrapperNamesDataByEncoding[encoding] = {\n encoding,\n names: [\n ...stringArrayScopeCallsWrapperNames,\n nextScopeCallsWrapperName\n ]\n };\n this.stringArrayScopeCallsWrapperNamesDataStorage.set(currentLexicalScopeBodyNode, stringArrayScopeCallsWrapperNamesDataByEncoding);\n return stringArrayScopeCallsWrapperNamesDataByEncoding;\n }\n getAndUpdateStringArrayScopeCallsWrapperLexicalScopeData(currentLexicalScopeBodyNode, parentLexicalScopeBodyNode) {\n var _a, _b;\n const storedLexicalScopeData = (_a = this.stringArrayScopeCallsWrapperLexicalScopeDataStorage.get(currentLexicalScopeBodyNode)) !== null && _a !== void 0 ? _a : null;\n if (storedLexicalScopeData) {\n return storedLexicalScopeData;\n }\n const parentLexicalScopeData = parentLexicalScopeBodyNode\n ? (_b = this.stringArrayScopeCallsWrapperLexicalScopeDataStorage.get(parentLexicalScopeBodyNode)) !== null && _b !== void 0 ? _b : null : null;\n const callsWrappersParameterIndexesData = this.options.stringArrayWrappersType === StringArrayWrappersType_1.StringArrayWrappersType.Function\n ? this.getStringArrayCallsWrapperParameterIndexesData()\n : null;\n const scopeShiftedIndex = this.options.stringArrayWrappersType === StringArrayWrappersType_1.StringArrayWrappersType.Function\n ? this.randomGenerator.getRandomInteger(StringArrayTransformer_1.minShiftedIndexValue, StringArrayTransformer_1.maxShiftedIndexValue)\n : 0;\n const resultShiftedIndex = parentLexicalScopeData\n ? parentLexicalScopeData.resultShiftedIndex + scopeShiftedIndex\n : scopeShiftedIndex;\n const lexicalScopeData = {\n callsWrappersParameterIndexesData,\n parentLexicalScopeBodyNode,\n resultShiftedIndex,\n scopeShiftedIndex\n };\n this.stringArrayScopeCallsWrapperLexicalScopeDataStorage.set(currentLexicalScopeBodyNode, lexicalScopeData);\n return lexicalScopeData;\n }\n getStringArrayCallsWrapperParameterIndexesData() {\n const minIndexValue = 0;\n const maxIndexValue = this.options.stringArrayWrappersParametersMaxCount - 1;\n const valueIndexParameterIndex = this.randomGenerator\n .getRandomInteger(minIndexValue, maxIndexValue);\n const decodeKeyParameterIndex = this.randomGenerator\n .getRandomIntegerExcluding(minIndexValue, maxIndexValue, [valueIndexParameterIndex]);\n return {\n valueIndexParameterIndex,\n decodeKeyParameterIndex\n };\n }\n};\nStringArrayTransformer.minShiftedIndexValue = -1000;\nStringArrayTransformer.maxShiftedIndexValue = 1000;\nStringArrayTransformer = StringArrayTransformer_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ILiteralNodesCacheStorage)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IVisitedLexicalScopeNodesStackStorage)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorage)),\n __param(5, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayScopeCallsWrapperNamesDataStorage)),\n __param(6, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayScopeCallsWrapperLexicalScopeDataStorage)),\n __param(7, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IStringArrayStorageAnalyzer)),\n __param(8, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(9, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IStringArrayCustomNode)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object, typeof (_c = typeof ILiteralNodesCacheStorage_1.ILiteralNodesCacheStorage !== \"undefined\" && ILiteralNodesCacheStorage_1.ILiteralNodesCacheStorage) === \"function\" ? _c : Object, typeof (_d = typeof IVisitedLexicalScopeNodesStackStorage_1.IVisitedLexicalScopeNodesStackStorage !== \"undefined\" && IVisitedLexicalScopeNodesStackStorage_1.IVisitedLexicalScopeNodesStackStorage) === \"function\" ? _d : Object, typeof (_e = typeof IStringArrayStorage_1.IStringArrayStorage !== \"undefined\" && IStringArrayStorage_1.IStringArrayStorage) === \"function\" ? _e : Object, typeof (_f = typeof IStringArrayScopeCallsWrapperNamesDataStorage_1.IStringArrayScopeCallsWrapperNamesDataStorage !== \"undefined\" && IStringArrayScopeCallsWrapperNamesDataStorage_1.IStringArrayScopeCallsWrapperNamesDataStorage) === \"function\" ? _f : Object, typeof (_g = typeof IStringArrayScopeCallsWrapperLexicalScopeDataStorage_1.IStringArrayScopeCallsWrapperLexicalScopeDataStorage !== \"undefined\" && IStringArrayScopeCallsWrapperLexicalScopeDataStorage_1.IStringArrayScopeCallsWrapperLexicalScopeDataStorage) === \"function\" ? _g : Object, typeof (_h = typeof IStringArrayStorageAnalyzer_1.IStringArrayStorageAnalyzer !== \"undefined\" && IStringArrayStorageAnalyzer_1.IStringArrayStorageAnalyzer) === \"function\" ? _h : Object, typeof (_j = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _j : Object, typeof (_k = typeof TStringArrayCustomNodeFactory_1.TStringArrayCustomNodeFactory !== \"undefined\" && TStringArrayCustomNodeFactory_1.TStringArrayCustomNodeFactory) === \"function\" ? _k : Object])\n], StringArrayTransformer);\nexports.StringArrayTransformer = StringArrayTransformer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeAppender = void 0;\nconst NodeGuards_1 = require(\"./NodeGuards\");\nclass NodeAppender {\n static append(nodeWithStatements, statements) {\n statements = NodeAppender.parentizeScopeStatementsBeforeAppend(nodeWithStatements, statements);\n NodeAppender.setScopeStatements(nodeWithStatements, [\n ...NodeAppender.getScopeStatements(nodeWithStatements),\n ...statements\n ]);\n }\n static appendToOptimalBlockScope(callsGraphData, nodeWithStatements, bodyStatements, index = 0) {\n const targetBlockScope = callsGraphData.length\n ? NodeAppender.getOptimalBlockScope(callsGraphData, index)\n : nodeWithStatements;\n NodeAppender.prepend(targetBlockScope, bodyStatements);\n }\n static getOptimalBlockScope(callsGraphData, index, deep = Infinity) {\n const firstCall = callsGraphData[index];\n if (deep <= 0) {\n throw new Error('Invalid `deep` argument value. Value should be bigger then 0.');\n }\n if (deep > 1 && firstCall.callsGraph.length) {\n return NodeAppender.getOptimalBlockScope(firstCall.callsGraph, 0, --deep);\n }\n else {\n return firstCall.callee;\n }\n }\n static insertBefore(nodeWithStatements, statements, target) {\n const indexInScopeStatement = NodeAppender\n .getScopeStatements(nodeWithStatements)\n .indexOf(target);\n NodeAppender.insertAtIndex(nodeWithStatements, statements, indexInScopeStatement);\n }\n static insertAfter(nodeWithStatements, statements, target) {\n const indexInScopeStatement = NodeAppender\n .getScopeStatements(nodeWithStatements)\n .indexOf(target);\n NodeAppender.insertAtIndex(nodeWithStatements, statements, indexInScopeStatement + 1);\n }\n static insertAtIndex(nodeWithStatements, statements, index) {\n statements = NodeAppender.parentizeScopeStatementsBeforeAppend(nodeWithStatements, statements);\n NodeAppender.setScopeStatements(nodeWithStatements, [\n ...NodeAppender.getScopeStatements(nodeWithStatements).slice(0, index),\n ...statements,\n ...NodeAppender.getScopeStatements(nodeWithStatements).slice(index)\n ]);\n }\n static prepend(nodeWithStatements, statements) {\n statements = NodeAppender.parentizeScopeStatementsBeforeAppend(nodeWithStatements, statements);\n NodeAppender.setScopeStatements(nodeWithStatements, [\n ...statements,\n ...NodeAppender.getScopeStatements(nodeWithStatements),\n ]);\n }\n static getScopeStatements(nodeWithStatements) {\n if (NodeGuards_1.NodeGuards.isSwitchCaseNode(nodeWithStatements)) {\n return nodeWithStatements.consequent;\n }\n return nodeWithStatements.body;\n }\n static parentizeScopeStatementsBeforeAppend(nodeWithStatements, statements) {\n statements.forEach((statement) => {\n statement.parentNode = nodeWithStatements;\n });\n return statements;\n }\n static setScopeStatements(nodeWithStatements, statements) {\n if (NodeGuards_1.NodeGuards.isSwitchCaseNode(nodeWithStatements)) {\n nodeWithStatements.consequent = statements;\n return;\n }\n nodeWithStatements.body = statements;\n }\n}\nexports.NodeAppender = NodeAppender;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeFactory = void 0;\nconst escodegen = __importStar(require(\"@javascript-obfuscator/escodegen\"));\nconst NodeType_1 = require(\"../enums/node/NodeType\");\nclass NodeFactory {\n static programNode(body = []) {\n return {\n type: NodeType_1.NodeType.Program,\n body,\n sourceType: 'script',\n metadata: { ignoredNode: false }\n };\n }\n static arrayExpressionNode(elements = []) {\n return {\n type: NodeType_1.NodeType.ArrayExpression,\n elements,\n metadata: { ignoredNode: false }\n };\n }\n static arrowFunctionExpressionNode(params, expression, body) {\n return {\n type: NodeType_1.NodeType.ArrowFunctionExpression,\n params,\n expression,\n body\n };\n }\n static assignmentExpressionNode(operator, left, right) {\n return {\n type: NodeType_1.NodeType.AssignmentExpression,\n operator,\n left,\n right,\n metadata: { ignoredNode: false }\n };\n }\n static binaryExpressionNode(operator, left, right) {\n return {\n type: NodeType_1.NodeType.BinaryExpression,\n operator,\n left,\n right,\n metadata: { ignoredNode: false }\n };\n }\n static blockStatementNode(body = []) {\n return {\n type: NodeType_1.NodeType.BlockStatement,\n body,\n metadata: { ignoredNode: false }\n };\n }\n static breakStatement(label) {\n return {\n type: NodeType_1.NodeType.BreakStatement,\n label,\n metadata: { ignoredNode: false }\n };\n }\n static callExpressionNode(callee, args = [], optional = false) {\n return {\n type: NodeType_1.NodeType.CallExpression,\n callee,\n optional,\n arguments: args,\n metadata: { ignoredNode: false }\n };\n }\n static conditionalExpressionNode(test, consequent, alternate) {\n return {\n type: NodeType_1.NodeType.ConditionalExpression,\n test,\n consequent,\n alternate,\n metadata: { ignoredNode: false }\n };\n }\n static continueStatement(label) {\n return {\n type: NodeType_1.NodeType.ContinueStatement,\n label,\n metadata: { ignoredNode: false }\n };\n }\n static directiveNode(expression, directive) {\n return {\n type: NodeType_1.NodeType.ExpressionStatement,\n expression,\n directive,\n metadata: { ignoredNode: false }\n };\n }\n static exportAllDeclarationNode(source) {\n return {\n type: NodeType_1.NodeType.ExportAllDeclaration,\n source,\n metadata: { ignoredNode: false }\n };\n }\n static exportNamedDeclarationNode(specifiers, source) {\n return {\n type: NodeType_1.NodeType.ExportNamedDeclaration,\n specifiers,\n source,\n metadata: { ignoredNode: false }\n };\n }\n static expressionStatementNode(expression) {\n return {\n type: NodeType_1.NodeType.ExpressionStatement,\n expression,\n metadata: { ignoredNode: false }\n };\n }\n static functionDeclarationNode(functionName, params, body) {\n return {\n type: NodeType_1.NodeType.FunctionDeclaration,\n id: NodeFactory.identifierNode(functionName),\n params,\n body,\n generator: false,\n metadata: { ignoredNode: false }\n };\n }\n static functionExpressionNode(params, body) {\n return {\n type: NodeType_1.NodeType.FunctionExpression,\n params,\n body,\n generator: false,\n metadata: { ignoredNode: false }\n };\n }\n static ifStatementNode(test, consequent, alternate) {\n return Object.assign(Object.assign({ type: NodeType_1.NodeType.IfStatement, test,\n consequent }, alternate && { alternate }), { metadata: { ignoredNode: false } });\n }\n static identifierNode(name) {\n return {\n type: NodeType_1.NodeType.Identifier,\n name,\n metadata: { ignoredNode: false }\n };\n }\n static importDeclarationNode(specifiers, source) {\n return {\n type: NodeType_1.NodeType.ImportDeclaration,\n specifiers,\n source,\n metadata: { ignoredNode: false }\n };\n }\n static literalNode(value, raw) {\n raw = raw !== undefined ? raw : `'${value}'`;\n return {\n type: NodeType_1.NodeType.Literal,\n value,\n raw,\n 'x-verbatim-property': {\n content: raw,\n precedence: escodegen.Precedence.Primary\n },\n metadata: { ignoredNode: false }\n };\n }\n static logicalExpressionNode(operator, left, right) {\n return {\n type: NodeType_1.NodeType.LogicalExpression,\n operator,\n left,\n right,\n metadata: { ignoredNode: false }\n };\n }\n static memberExpressionNode(object, property, computed = false, optional = false) {\n return {\n type: NodeType_1.NodeType.MemberExpression,\n computed,\n object,\n optional,\n property,\n metadata: { ignoredNode: false }\n };\n }\n static objectExpressionNode(properties) {\n return {\n type: NodeType_1.NodeType.ObjectExpression,\n properties,\n metadata: { ignoredNode: false }\n };\n }\n static propertyNode(key, value, computed = false) {\n return {\n type: NodeType_1.NodeType.Property,\n key,\n value,\n kind: 'init',\n method: false,\n shorthand: false,\n computed,\n metadata: { ignoredNode: false }\n };\n }\n static returnStatementNode(argument) {\n return {\n type: NodeType_1.NodeType.ReturnStatement,\n argument,\n metadata: { ignoredNode: false }\n };\n }\n static sequenceExpressionNode(expressions) {\n return {\n type: NodeType_1.NodeType.SequenceExpression,\n expressions,\n metadata: { ignoredNode: false }\n };\n }\n static switchStatementNode(discriminant, cases) {\n return {\n type: NodeType_1.NodeType.SwitchStatement,\n discriminant,\n cases,\n metadata: { ignoredNode: false }\n };\n }\n static switchCaseNode(test, consequent) {\n return {\n type: NodeType_1.NodeType.SwitchCase,\n test,\n consequent,\n metadata: { ignoredNode: false }\n };\n }\n static unaryExpressionNode(operator, argument, prefix = true) {\n return {\n type: NodeType_1.NodeType.UnaryExpression,\n operator,\n argument,\n prefix,\n metadata: { ignoredNode: false }\n };\n }\n static updateExpressionNode(operator, argumentExpr) {\n return {\n type: NodeType_1.NodeType.UpdateExpression,\n operator,\n argument: argumentExpr,\n prefix: false,\n metadata: { ignoredNode: false }\n };\n }\n static templateElement(value, tail) {\n return {\n type: NodeType_1.NodeType.TemplateElement,\n value,\n tail,\n metadata: { ignoredNode: false }\n };\n }\n static templateLiteral(expressions, quasis) {\n return {\n type: NodeType_1.NodeType.TemplateLiteral,\n expressions,\n quasis,\n metadata: { ignoredNode: false }\n };\n }\n static variableDeclarationNode(declarations = [], kind = 'var') {\n return {\n type: NodeType_1.NodeType.VariableDeclaration,\n declarations,\n kind,\n metadata: { ignoredNode: false }\n };\n }\n static variableDeclaratorNode(id, init) {\n return {\n type: NodeType_1.NodeType.VariableDeclarator,\n id,\n init,\n metadata: { ignoredNode: false }\n };\n }\n static whileStatementNode(test, body) {\n return {\n type: NodeType_1.NodeType.WhileStatement,\n test,\n body,\n metadata: { ignoredNode: false }\n };\n }\n}\nexports.NodeFactory = NodeFactory;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeGuards = void 0;\nconst NodeType_1 = require(\"../enums/node/NodeType\");\nclass NodeGuards {\n static isArrayPatternNode(node) {\n return node.type === NodeType_1.NodeType.ArrayPattern;\n }\n static isArrowFunctionExpressionNode(node) {\n return node.type === NodeType_1.NodeType.ArrowFunctionExpression;\n }\n static isAssignmentExpressionNode(node) {\n return node.type === NodeType_1.NodeType.AssignmentExpression;\n }\n static isAssignmentPatternNode(node) {\n return node.type === NodeType_1.NodeType.AssignmentPattern;\n }\n static isAwaitExpressionNode(node) {\n return node.type === NodeType_1.NodeType.AwaitExpression;\n }\n static isBigIntLiteralNode(node) {\n return NodeGuards.isLiteralNode(node) && !!node.bigint;\n }\n static isBlockStatementNode(node) {\n return node.type === NodeType_1.NodeType.BlockStatement;\n }\n static isBreakStatementNode(node) {\n return node.type === NodeType_1.NodeType.BreakStatement;\n }\n static isCallExpressionNode(node) {\n return node.type === NodeType_1.NodeType.CallExpression;\n }\n static isClassDeclarationNode(node) {\n return node.type === NodeType_1.NodeType.ClassDeclaration && node.id !== null;\n }\n static isContinueStatementNode(node) {\n return node.type === NodeType_1.NodeType.ContinueStatement;\n }\n static isDirectiveNode(node) {\n return node.type === NodeType_1.NodeType.ExpressionStatement\n && 'directive' in node;\n }\n static isExportAllDeclarationNode(node) {\n return node.type === NodeType_1.NodeType.ExportAllDeclaration;\n }\n static isExportNamedDeclarationNode(node) {\n return node.type === NodeType_1.NodeType.ExportNamedDeclaration;\n }\n static isExportSpecifierNode(node) {\n return node.type === NodeType_1.NodeType.ExportSpecifier;\n }\n static isExpressionStatementNode(node) {\n return node.type === NodeType_1.NodeType.ExpressionStatement\n && !('directive' in node);\n }\n static isForOfStatementNode(node) {\n return node.type === NodeType_1.NodeType.ForOfStatement;\n }\n static isFunctionNode(node) {\n return NodeGuards.isFunctionDeclarationNode(node) ||\n NodeGuards.isFunctionExpressionNode(node) ||\n NodeGuards.isArrowFunctionExpressionNode(node);\n }\n static isFunctionDeclarationNode(node) {\n return node.type === NodeType_1.NodeType.FunctionDeclaration && node.id !== null;\n }\n static isFunctionExpressionNode(node) {\n return node.type === NodeType_1.NodeType.FunctionExpression;\n }\n static isIdentifierNode(node) {\n return node.type === NodeType_1.NodeType.Identifier;\n }\n static isIfStatementNode(node) {\n return node.type === NodeType_1.NodeType.IfStatement;\n }\n static isImportDeclarationNode(node) {\n return node.type === NodeType_1.NodeType.ImportDeclaration;\n }\n static isImportSpecifierNode(node) {\n return node.type === NodeType_1.NodeType.ImportSpecifier;\n }\n static isLabelIdentifierNode(node, parentNode) {\n const parentNodeIsLabeledStatementNode = NodeGuards.isLabeledStatementNode(parentNode) && parentNode.label === node;\n const parentNodeIsContinueStatementNode = NodeGuards.isContinueStatementNode(parentNode) && parentNode.label === node;\n const parentNodeIsBreakStatementNode = NodeGuards.isBreakStatementNode(parentNode) && parentNode.label === node;\n return parentNodeIsLabeledStatementNode || parentNodeIsContinueStatementNode || parentNodeIsBreakStatementNode;\n }\n static isLabeledStatementNode(node) {\n return node.type === NodeType_1.NodeType.LabeledStatement;\n }\n static isLiteralNode(node) {\n return node.type === NodeType_1.NodeType.Literal;\n }\n static isMemberExpressionNode(node) {\n return node.type === NodeType_1.NodeType.MemberExpression;\n }\n static isMethodDefinitionNode(node) {\n return node.type === NodeType_1.NodeType.MethodDefinition;\n }\n static isNode(object) {\n return object && !object.type !== undefined;\n }\n static isNodeWithLexicalScope(node) {\n return NodeGuards.isProgramNode(node) || NodeGuards.isFunctionNode(node);\n }\n static isNodeWithBlockLexicalScope(node) {\n return NodeGuards.isNodeWithLexicalScope(node) || NodeGuards.isBlockStatementNode(node);\n }\n static isNodeWithLexicalScopeStatements(node, parentNode) {\n return NodeGuards.isProgramNode(node)\n || (NodeGuards.isBlockStatementNode(node) && NodeGuards.nodesWithLexicalStatements.includes(parentNode.type));\n }\n static isNodeWithStatements(node) {\n return NodeGuards.isProgramNode(node)\n || NodeGuards.isBlockStatementNode(node)\n || NodeGuards.isSwitchCaseNode(node);\n }\n static isNodeWithComments(node) {\n return Boolean(node.leadingComments) || Boolean(node.trailingComments);\n }\n static isObjectPatternNode(node) {\n return node.type === NodeType_1.NodeType.ObjectPattern;\n }\n static isObjectExpressionNode(node) {\n return node.type === NodeType_1.NodeType.ObjectExpression;\n }\n static isProgramNode(node) {\n return node.type === NodeType_1.NodeType.Program;\n }\n static isPropertyNode(node) {\n return node.type === NodeType_1.NodeType.Property;\n }\n static isRestElementNode(node) {\n return node.type === NodeType_1.NodeType.RestElement;\n }\n static isReturnStatementNode(node) {\n return node.type === NodeType_1.NodeType.ReturnStatement;\n }\n static isSequenceExpressionNode(node) {\n return node.type === NodeType_1.NodeType.SequenceExpression;\n }\n static isSpreadElementNode(node) {\n return node.type === NodeType_1.NodeType.SpreadElement;\n }\n static isSuperNode(node) {\n return node.type === NodeType_1.NodeType.Super;\n }\n static isSwitchCaseNode(node) {\n return node.type === NodeType_1.NodeType.SwitchCase;\n }\n static isTaggedTemplateExpressionNode(node) {\n return node.type === NodeType_1.NodeType.TaggedTemplateExpression;\n }\n static isTemplateLiteralNode(node) {\n return node.type === NodeType_1.NodeType.TemplateLiteral;\n }\n static isUnaryExpressionNode(node) {\n return node.type === NodeType_1.NodeType.UnaryExpression;\n }\n static isUseStrictOperator(node) {\n return NodeGuards.isDirectiveNode(node)\n && node.directive === 'use strict';\n }\n static isVariableDeclarationNode(node) {\n return node.type === NodeType_1.NodeType.VariableDeclaration;\n }\n static isVariableDeclaratorNode(node) {\n return node.type === NodeType_1.NodeType.VariableDeclarator;\n }\n static isWhileStatementNode(node) {\n return node.type === NodeType_1.NodeType.WhileStatement;\n }\n static isYieldExpressionNode(node) {\n return node.type === NodeType_1.NodeType.YieldExpression;\n }\n}\nexports.NodeGuards = NodeGuards;\nNodeGuards.nodesWithLexicalStatements = [\n NodeType_1.NodeType.ArrowFunctionExpression,\n NodeType_1.NodeType.FunctionDeclaration,\n NodeType_1.NodeType.FunctionExpression,\n NodeType_1.NodeType.MethodDefinition,\n];\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeLexicalScopeUtils = void 0;\nconst NodeGuards_1 = require(\"./NodeGuards\");\nclass NodeLexicalScopeUtils {\n static getLexicalScope(node) {\n return NodeLexicalScopeUtils.getLexicalScopesRecursive(node, 1)[0];\n }\n static getLexicalScopes(node) {\n return NodeLexicalScopeUtils.getLexicalScopesRecursive(node);\n }\n static getLexicalScopesRecursive(node, maxSize = Infinity, nodesWithLexicalScope = [], depth = 0) {\n if (nodesWithLexicalScope.length >= maxSize) {\n return nodesWithLexicalScope;\n }\n const parentNode = node.parentNode;\n if (!parentNode) {\n throw new ReferenceError('`parentNode` property of given node is `undefined`');\n }\n if (NodeGuards_1.NodeGuards.isNodeWithLexicalScope(node)) {\n nodesWithLexicalScope.push(node);\n }\n if (node !== parentNode) {\n return NodeLexicalScopeUtils.getLexicalScopesRecursive(parentNode, maxSize, nodesWithLexicalScope, ++depth);\n }\n return nodesWithLexicalScope;\n }\n}\nexports.NodeLexicalScopeUtils = NodeLexicalScopeUtils;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeLiteralUtils = void 0;\nconst NodeGuards_1 = require(\"./NodeGuards\");\nclass NodeLiteralUtils {\n static isStringLiteralNode(literalNode) {\n return typeof literalNode.value === 'string';\n }\n static isProhibitedLiteralNode(literalNode, parentNode) {\n if (NodeGuards_1.NodeGuards.isPropertyNode(parentNode) && !parentNode.computed && parentNode.key === literalNode) {\n return true;\n }\n if (NodeGuards_1.NodeGuards.isImportDeclarationNode(parentNode)) {\n return true;\n }\n if (NodeGuards_1.NodeGuards.isExportAllDeclarationNode(parentNode) || NodeGuards_1.NodeGuards.isExportNamedDeclarationNode(parentNode)) {\n return true;\n }\n return false;\n }\n}\nexports.NodeLiteralUtils = NodeLiteralUtils;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeMetadata = void 0;\nclass NodeMetadata {\n static set(node, metadata) {\n var _a;\n node.metadata = Object.assign((_a = node.metadata) !== null && _a !== void 0 ? _a : {}, metadata);\n }\n static get(node, metadataKey) {\n return node.metadata !== undefined\n ? node.metadata[metadataKey]\n : undefined;\n }\n static isForceTransformNode(node) {\n return NodeMetadata.get(node, 'forceTransformNode') === true;\n }\n static isIgnoredNode(node) {\n return NodeMetadata.get(node, 'ignoredNode') === true;\n }\n static isReplacedLiteral(literalNode) {\n return NodeMetadata.get(literalNode, 'replacedLiteral') === true;\n }\n}\nexports.NodeMetadata = NodeMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeStatementUtils = void 0;\nconst NodeGuards_1 = require(\"./NodeGuards\");\nclass NodeStatementUtils {\n static getParentNodeWithStatements(node) {\n return NodeStatementUtils.getParentNodesWithStatementsRecursive(node, 1)[0];\n }\n static getParentNodesWithStatements(node) {\n return NodeStatementUtils.getParentNodesWithStatementsRecursive(node);\n }\n static getNextSiblingStatement(statement) {\n return NodeStatementUtils.getSiblingStatementByOffset(statement, 1);\n }\n static getPreviousSiblingStatement(statement) {\n return NodeStatementUtils.getSiblingStatementByOffset(statement, -1);\n }\n static getRootStatementOfNode(node) {\n if (NodeGuards_1.NodeGuards.isProgramNode(node)) {\n throw new Error('Unable to find root statement for `Program` node');\n }\n const parentNode = node.parentNode;\n if (!parentNode) {\n throw new ReferenceError('`parentNode` property of given node is `undefined`');\n }\n if (!NodeGuards_1.NodeGuards.isNodeWithStatements(parentNode)) {\n return NodeStatementUtils.getRootStatementOfNode(parentNode);\n }\n return node;\n }\n static getScopeOfNode(node) {\n const parentNode = node.parentNode;\n if (!parentNode) {\n throw new ReferenceError('`parentNode` property of given node is `undefined`');\n }\n if (!NodeGuards_1.NodeGuards.isNodeWithStatements(parentNode)) {\n return NodeStatementUtils.getScopeOfNode(parentNode);\n }\n return parentNode;\n }\n static getParentNodesWithStatementsRecursive(node, maxSize = Infinity, nodesWithStatements = [], depth = 0) {\n if (nodesWithStatements.length >= maxSize) {\n return nodesWithStatements;\n }\n const parentNode = node.parentNode;\n if (!parentNode) {\n throw new ReferenceError('`parentNode` property of given node is `undefined`');\n }\n if (NodeGuards_1.NodeGuards.isProgramNode(node) ||\n (NodeGuards_1.NodeGuards.isNodeWithLexicalScopeStatements(node, parentNode) && depth > 0)) {\n nodesWithStatements.push(node);\n }\n if (node !== parentNode) {\n return NodeStatementUtils.getParentNodesWithStatementsRecursive(parentNode, maxSize, nodesWithStatements, ++depth);\n }\n return nodesWithStatements;\n }\n static getSiblingStatementByOffset(statement, offset) {\n const scopeNode = NodeStatementUtils.getScopeOfNode(statement);\n const scopeBody = !NodeGuards_1.NodeGuards.isSwitchCaseNode(scopeNode)\n ? scopeNode.body\n : scopeNode.consequent;\n const indexInScope = scopeBody.indexOf(statement);\n return scopeBody[indexInScope + offset] || null;\n }\n}\nexports.NodeStatementUtils = NodeStatementUtils;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NodeUtils = void 0;\nconst escodegen = __importStar(require(\"@javascript-obfuscator/escodegen\"));\nconst estraverse = __importStar(require(\"estraverse\"));\nconst EcmaVersion_1 = require(\"../constants/EcmaVersion\");\nconst ASTParserFacade_1 = require(\"../ASTParserFacade\");\nconst NodeGuards_1 = require(\"./NodeGuards\");\nconst NodeMetadata_1 = require(\"./NodeMetadata\");\nclass NodeUtils {\n static addXVerbatimPropertyTo(literalNode) {\n literalNode['x-verbatim-property'] = {\n content: literalNode.raw,\n precedence: escodegen.Precedence.Primary\n };\n return literalNode;\n }\n static clone(astTree) {\n return NodeUtils.parentizeAst(NodeUtils.cloneRecursive(astTree));\n }\n static convertCodeToStructure(code) {\n const structure = ASTParserFacade_1.ASTParserFacade.parse(code, {\n ecmaVersion: EcmaVersion_1.ecmaVersion,\n sourceType: 'script'\n });\n estraverse.replace(structure, {\n enter: (node, parentNode) => {\n NodeUtils.parentizeNode(node, parentNode);\n if (NodeGuards_1.NodeGuards.isLiteralNode(node)) {\n NodeUtils.addXVerbatimPropertyTo(node);\n }\n NodeMetadata_1.NodeMetadata.set(node, { ignoredNode: false });\n return node;\n }\n });\n return structure.body;\n }\n static convertStructureToCode(structure) {\n return structure.reduce((code, node) => {\n return code + escodegen.generate(node, {\n sourceMapWithCode: true\n }).code;\n }, '');\n }\n static getUnaryExpressionArgumentNode(unaryExpressionNode) {\n if (NodeGuards_1.NodeGuards.isUnaryExpressionNode(unaryExpressionNode.argument)) {\n return NodeUtils.getUnaryExpressionArgumentNode(unaryExpressionNode.argument);\n }\n return unaryExpressionNode.argument;\n }\n static parentizeAst(astTree) {\n var _a;\n const parentNode = (_a = astTree.parentNode) !== null && _a !== void 0 ? _a : null;\n estraverse.replace(astTree, {\n enter: NodeUtils.parentizeNode\n });\n if (parentNode) {\n astTree.parentNode = parentNode;\n }\n return astTree;\n }\n static parentizeNode(node, parentNode) {\n node.parentNode = parentNode !== null && parentNode !== void 0 ? parentNode : node;\n return node;\n }\n static cloneRecursive(node) {\n if (node === null) {\n return node;\n }\n const copy = {};\n const nodeKeys = Object.keys(node);\n nodeKeys\n .forEach((property) => {\n var _a;\n if (property === 'parentNode') {\n return;\n }\n const value = (_a = node[property]) !== null && _a !== void 0 ? _a : null;\n let clonedValue;\n if (value === null || value instanceof RegExp) {\n clonedValue = value;\n }\n else if (value instanceof Array) {\n clonedValue = value.map(NodeUtils.cloneRecursive);\n }\n else if (typeof value === 'object') {\n clonedValue = NodeUtils.cloneRecursive(value);\n }\n else {\n clonedValue = value;\n }\n copy[property] = clonedValue;\n });\n return copy;\n }\n}\nexports.NodeUtils = NodeUtils;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar ScopeIdentifiersTraverser_1, _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScopeIdentifiersTraverser = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst IScopeAnalyzer_1 = require(\"../interfaces/analyzers/scope-analyzer/IScopeAnalyzer\");\nconst NodeGuards_1 = require(\"./NodeGuards\");\nlet ScopeIdentifiersTraverser = ScopeIdentifiersTraverser_1 = class ScopeIdentifiersTraverser {\n constructor(scopeAnalyzer) {\n this.scopeAnalyzer = scopeAnalyzer;\n }\n traverseScopeIdentifiers(programNode, parentNode, callback) {\n this.scopeAnalyzer.analyze(programNode);\n const globalScope = this.scopeAnalyzer.acquireScope(programNode);\n this.traverseScopeIdentifiersRecursive(globalScope, globalScope, callback);\n }\n traverseScopeThroughIdentifiers(programNode, parentNode, callback) {\n this.scopeAnalyzer.analyze(programNode);\n const globalScope = this.scopeAnalyzer.acquireScope(programNode);\n this.traverseScopeThroughIdentifiersRecursive(globalScope, globalScope, callback);\n }\n traverseScopeIdentifiersRecursive(rootScope, currentScope, callback) {\n const variableScope = currentScope.variableScope;\n const variableLexicalScopeNode = NodeGuards_1.NodeGuards.isNodeWithBlockLexicalScope(variableScope.block)\n ? variableScope.block\n : null;\n const isGlobalDeclaration = ScopeIdentifiersTraverser_1.globalScopeNames.includes(variableScope.type);\n if (!variableLexicalScopeNode) {\n return;\n }\n for (const variable of currentScope.variables) {\n if (variable.name === ScopeIdentifiersTraverser_1.argumentsVariableName) {\n continue;\n }\n const isBubblingDeclaration = variable\n .identifiers\n .some((identifier) => identifier.parentNode\n && NodeGuards_1.NodeGuards.isPropertyNode(identifier.parentNode)\n && identifier.parentNode.shorthand);\n callback({\n isGlobalDeclaration,\n isBubblingDeclaration,\n rootScope,\n variable,\n variableScope,\n variableLexicalScopeNode\n });\n }\n for (const childScope of currentScope.childScopes) {\n this.traverseScopeIdentifiersRecursive(rootScope, childScope, callback);\n }\n }\n traverseScopeThroughIdentifiersRecursive(rootScope, currentScope, callback) {\n const variableScope = currentScope.variableScope;\n const variableLexicalScopeNode = NodeGuards_1.NodeGuards.isNodeWithBlockLexicalScope(variableScope.block)\n ? variableScope.block\n : null;\n if (!variableLexicalScopeNode) {\n return;\n }\n for (const reference of currentScope.through) {\n callback({\n reference,\n variableLexicalScopeNode\n });\n }\n for (const childScope of currentScope.childScopes) {\n this.traverseScopeThroughIdentifiersRecursive(rootScope, childScope, callback);\n }\n }\n};\nScopeIdentifiersTraverser.argumentsVariableName = 'arguments';\nScopeIdentifiersTraverser.globalScopeNames = [\n 'global',\n 'module'\n];\nScopeIdentifiersTraverser = ScopeIdentifiersTraverser_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IScopeAnalyzer)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IScopeAnalyzer_1.IScopeAnalyzer !== \"undefined\" && IScopeAnalyzer_1.IScopeAnalyzer) === \"function\" ? _a : Object])\n], ScopeIdentifiersTraverser);\nexports.ScopeIdentifiersTraverser = ScopeIdentifiersTraverser;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar Options_1, _a, _b, _c, _d, _e, _f, _g;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Options = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst class_validator_1 = require(\"class-validator\");\nconst TInputOptions_1 = require(\"../types/options/TInputOptions\");\nconst TOptionsPreset_1 = require(\"../types/options/TOptionsPreset\");\nconst TStringArrayWrappersType_1 = require(\"../types/options/TStringArrayWrappersType\");\nconst TTypeFromEnum_1 = require(\"../types/utils/TTypeFromEnum\");\nconst IOptionsNormalizer_1 = require(\"../interfaces/options/IOptionsNormalizer\");\nconst IdentifierNamesGenerator_1 = require(\"../enums/generators/identifier-names-generators/IdentifierNamesGenerator\");\nconst ObfuscationTarget_1 = require(\"../enums/ObfuscationTarget\");\nconst OptionsPreset_1 = require(\"../enums/options/presets/OptionsPreset\");\nconst SourceMapMode_1 = require(\"../enums/source-map/SourceMapMode\");\nconst StringArrayIndexesType_1 = require(\"../enums/node-transformers/string-array-transformers/StringArrayIndexesType\");\nconst StringArrayEncoding_1 = require(\"../enums/node-transformers/string-array-transformers/StringArrayEncoding\");\nconst StringArrayWrappersType_1 = require(\"../enums/node-transformers/string-array-transformers/StringArrayWrappersType\");\nconst Default_1 = require(\"./presets/Default\");\nconst LowObfuscation_1 = require(\"./presets/LowObfuscation\");\nconst MediumObfuscation_1 = require(\"./presets/MediumObfuscation\");\nconst HighObfuscation_1 = require(\"./presets/HighObfuscation\");\nconst ValidationErrorsFormatter_1 = require(\"./ValidationErrorsFormatter\");\nconst IsAllowedForObfuscationTargets_1 = require(\"./validators/IsAllowedForObfuscationTargets\");\nlet Options = Options_1 = class Options {\n constructor(inputOptions, optionsNormalizer) {\n var _a;\n const optionsPreset = Options_1.getOptionsByPreset((_a = inputOptions.optionsPreset) !== null && _a !== void 0 ? _a : OptionsPreset_1.OptionsPreset.Default);\n Object.assign(this, optionsPreset, inputOptions);\n const errors = class_validator_1.validateSync(this, Options_1.validatorOptions);\n if (errors.length) {\n throw new ReferenceError(`Validation failed. errors:\\n${ValidationErrorsFormatter_1.ValidationErrorsFormatter.format(errors)}`);\n }\n Object.assign(this, optionsNormalizer.normalize(this));\n }\n static getOptionsByPreset(optionsPreset) {\n var _a;\n const options = (_a = Options_1.optionPresetsMap.get(optionsPreset)) !== null && _a !== void 0 ? _a : null;\n if (!options) {\n throw new Error(`Options for preset name \\`${optionsPreset}\\` are not found`);\n }\n return options;\n }\n};\nOptions.optionPresetsMap = new Map([\n [OptionsPreset_1.OptionsPreset.Default, Default_1.DEFAULT_PRESET],\n [OptionsPreset_1.OptionsPreset.LowObfuscation, LowObfuscation_1.LOW_OBFUSCATION_PRESET],\n [OptionsPreset_1.OptionsPreset.MediumObfuscation, MediumObfuscation_1.MEDIUM_OBFUSCATION_PRESET],\n [OptionsPreset_1.OptionsPreset.HighObfuscation, HighObfuscation_1.HIGH_OBFUSCATION_PRESET]\n]);\nOptions.validatorOptions = {\n validationError: {\n target: false\n }\n};\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"compact\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"controlFlowFlattening\", void 0);\n__decorate([\n class_validator_1.IsNumber(),\n class_validator_1.Min(0),\n class_validator_1.Max(1),\n __metadata(\"design:type\", Number)\n], Options.prototype, \"controlFlowFlatteningThreshold\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"deadCodeInjection\", void 0);\n__decorate([\n class_validator_1.IsNumber(),\n __metadata(\"design:type\", Number)\n], Options.prototype, \"deadCodeInjectionThreshold\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"debugProtection\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"debugProtectionInterval\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"disableConsoleOutput\", void 0);\n__decorate([\n class_validator_1.IsArray(),\n class_validator_1.ArrayUnique(),\n class_validator_1.IsString({\n each: true\n }),\n IsAllowedForObfuscationTargets_1.IsAllowedForObfuscationTargets([\n ObfuscationTarget_1.ObfuscationTarget.Browser,\n ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval,\n ]),\n __metadata(\"design:type\", Array)\n], Options.prototype, \"domainLock\", void 0);\n__decorate([\n class_validator_1.IsArray(),\n class_validator_1.ArrayUnique(),\n class_validator_1.IsString({\n each: true\n }),\n __metadata(\"design:type\", Array)\n], Options.prototype, \"forceTransformStrings\", void 0);\n__decorate([\n class_validator_1.IsIn([\n IdentifierNamesGenerator_1.IdentifierNamesGenerator.DictionaryIdentifierNamesGenerator,\n IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator,\n IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledIdentifierNamesGenerator,\n IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledShuffledIdentifierNamesGenerator\n ]),\n __metadata(\"design:type\", typeof (_a = typeof TTypeFromEnum_1.TTypeFromEnum !== \"undefined\" && TTypeFromEnum_1.TTypeFromEnum) === \"function\" ? _a : Object)\n], Options.prototype, \"identifierNamesGenerator\", void 0);\n__decorate([\n class_validator_1.IsString(),\n __metadata(\"design:type\", String)\n], Options.prototype, \"identifiersPrefix\", void 0);\n__decorate([\n class_validator_1.IsArray(),\n class_validator_1.ArrayUnique(),\n class_validator_1.IsString({\n each: true\n }),\n class_validator_1.ValidateIf((options) => options.identifierNamesGenerator === IdentifierNamesGenerator_1.IdentifierNamesGenerator.DictionaryIdentifierNamesGenerator),\n class_validator_1.ArrayNotEmpty(),\n __metadata(\"design:type\", Array)\n], Options.prototype, \"identifiersDictionary\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"ignoreRequireImports\", void 0);\n__decorate([\n class_validator_1.IsString(),\n __metadata(\"design:type\", String)\n], Options.prototype, \"inputFileName\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"log\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"numbersToExpressions\", void 0);\n__decorate([\n class_validator_1.IsIn([\n OptionsPreset_1.OptionsPreset.Default,\n OptionsPreset_1.OptionsPreset.LowObfuscation,\n OptionsPreset_1.OptionsPreset.MediumObfuscation,\n OptionsPreset_1.OptionsPreset.HighObfuscation\n ]),\n __metadata(\"design:type\", typeof (_b = typeof TOptionsPreset_1.TOptionsPreset !== \"undefined\" && TOptionsPreset_1.TOptionsPreset) === \"function\" ? _b : Object)\n], Options.prototype, \"optionsPreset\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"renameGlobals\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"renameProperties\", void 0);\n__decorate([\n class_validator_1.IsArray(),\n class_validator_1.ArrayUnique(),\n class_validator_1.IsString({\n each: true\n }),\n __metadata(\"design:type\", Array)\n], Options.prototype, \"reservedNames\", void 0);\n__decorate([\n class_validator_1.IsArray(),\n class_validator_1.ArrayUnique(),\n class_validator_1.IsString({\n each: true\n }),\n __metadata(\"design:type\", Array)\n], Options.prototype, \"reservedStrings\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"rotateStringArray\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"selfDefending\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"shuffleStringArray\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"simplify\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"sourceMap\", void 0);\n__decorate([\n class_validator_1.IsString(),\n class_validator_1.ValidateIf((options) => Boolean(options.sourceMapBaseUrl)),\n class_validator_1.IsUrl({\n require_protocol: true,\n require_tld: false,\n require_valid_protocol: true\n }),\n __metadata(\"design:type\", String)\n], Options.prototype, \"sourceMapBaseUrl\", void 0);\n__decorate([\n class_validator_1.IsString(),\n __metadata(\"design:type\", String)\n], Options.prototype, \"sourceMapFileName\", void 0);\n__decorate([\n class_validator_1.IsIn([SourceMapMode_1.SourceMapMode.Inline, SourceMapMode_1.SourceMapMode.Separate]),\n __metadata(\"design:type\", typeof (_c = typeof TTypeFromEnum_1.TTypeFromEnum !== \"undefined\" && TTypeFromEnum_1.TTypeFromEnum) === \"function\" ? _c : Object)\n], Options.prototype, \"sourceMapMode\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"splitStrings\", void 0);\n__decorate([\n class_validator_1.IsNumber(),\n class_validator_1.ValidateIf((options) => Boolean(options.splitStrings)),\n class_validator_1.Min(1),\n __metadata(\"design:type\", Number)\n], Options.prototype, \"splitStringsChunkLength\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"stringArray\", void 0);\n__decorate([\n class_validator_1.IsArray(),\n class_validator_1.ArrayUnique(),\n class_validator_1.IsIn([StringArrayEncoding_1.StringArrayEncoding.None, StringArrayEncoding_1.StringArrayEncoding.Base64, StringArrayEncoding_1.StringArrayEncoding.Rc4], { each: true }),\n __metadata(\"design:type\", Array)\n], Options.prototype, \"stringArrayEncoding\", void 0);\n__decorate([\n class_validator_1.IsArray(),\n class_validator_1.ArrayNotEmpty(),\n class_validator_1.ArrayUnique(),\n class_validator_1.IsIn([StringArrayIndexesType_1.StringArrayIndexesType.HexadecimalNumber, StringArrayIndexesType_1.StringArrayIndexesType.HexadecimalNumericString], { each: true }),\n __metadata(\"design:type\", Array)\n], Options.prototype, \"stringArrayIndexesType\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"stringArrayIndexShift\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"stringArrayWrappersChainedCalls\", void 0);\n__decorate([\n class_validator_1.IsNumber(),\n class_validator_1.Min(0),\n __metadata(\"design:type\", Number)\n], Options.prototype, \"stringArrayWrappersCount\", void 0);\n__decorate([\n class_validator_1.IsNumber(),\n class_validator_1.Min(2),\n __metadata(\"design:type\", Number)\n], Options.prototype, \"stringArrayWrappersParametersMaxCount\", void 0);\n__decorate([\n class_validator_1.IsIn([StringArrayWrappersType_1.StringArrayWrappersType.Variable, StringArrayWrappersType_1.StringArrayWrappersType.Function]),\n __metadata(\"design:type\", typeof (_d = typeof TStringArrayWrappersType_1.TStringArrayWrappersType !== \"undefined\" && TStringArrayWrappersType_1.TStringArrayWrappersType) === \"function\" ? _d : Object)\n], Options.prototype, \"stringArrayWrappersType\", void 0);\n__decorate([\n class_validator_1.IsNumber(),\n class_validator_1.Min(0),\n class_validator_1.Max(1),\n __metadata(\"design:type\", Number)\n], Options.prototype, \"stringArrayThreshold\", void 0);\n__decorate([\n class_validator_1.IsIn([ObfuscationTarget_1.ObfuscationTarget.Browser, ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval, ObfuscationTarget_1.ObfuscationTarget.Node]),\n __metadata(\"design:type\", typeof (_e = typeof TTypeFromEnum_1.TTypeFromEnum !== \"undefined\" && TTypeFromEnum_1.TTypeFromEnum) === \"function\" ? _e : Object)\n], Options.prototype, \"target\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"transformObjectKeys\", void 0);\n__decorate([\n class_validator_1.IsBoolean(),\n __metadata(\"design:type\", Boolean)\n], Options.prototype, \"unicodeEscapeSequence\", void 0);\nOptions = Options_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.TInputOptions)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptionsNormalizer)),\n __metadata(\"design:paramtypes\", [typeof (_f = typeof TInputOptions_1.TInputOptions !== \"undefined\" && TInputOptions_1.TInputOptions) === \"function\" ? _f : Object, typeof (_g = typeof IOptionsNormalizer_1.IOptionsNormalizer !== \"undefined\" && IOptionsNormalizer_1.IOptionsNormalizer) === \"function\" ? _g : Object])\n], Options);\nexports.Options = Options;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar OptionsNormalizer_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OptionsNormalizer = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ControlFlowFlatteningThresholdRule_1 = require(\"./normalizer-rules/ControlFlowFlatteningThresholdRule\");\nconst DeadCodeInjectionRule_1 = require(\"./normalizer-rules/DeadCodeInjectionRule\");\nconst DeadCodeInjectionThresholdRule_1 = require(\"./normalizer-rules/DeadCodeInjectionThresholdRule\");\nconst DomainLockRule_1 = require(\"./normalizer-rules/DomainLockRule\");\nconst InputFileNameRule_1 = require(\"./normalizer-rules/InputFileNameRule\");\nconst SeedRule_1 = require(\"./normalizer-rules/SeedRule\");\nconst SelfDefendingRule_1 = require(\"./normalizer-rules/SelfDefendingRule\");\nconst SourceMapBaseUrlRule_1 = require(\"./normalizer-rules/SourceMapBaseUrlRule\");\nconst SourceMapFileNameRule_1 = require(\"./normalizer-rules/SourceMapFileNameRule\");\nconst SplitStringsChunkLengthRule_1 = require(\"./normalizer-rules/SplitStringsChunkLengthRule\");\nconst StringArrayRule_1 = require(\"./normalizer-rules/StringArrayRule\");\nconst StringArrayEncodingRule_1 = require(\"./normalizer-rules/StringArrayEncodingRule\");\nconst StringArrayWappersChainedCalls_1 = require(\"./normalizer-rules/StringArrayWappersChainedCalls\");\nlet OptionsNormalizer = OptionsNormalizer_1 = class OptionsNormalizer {\n normalize(options) {\n let normalizedOptions = Object.assign({}, options);\n for (const normalizerRule of OptionsNormalizer_1.normalizerRules) {\n normalizedOptions = normalizerRule(normalizedOptions);\n }\n return normalizedOptions;\n }\n};\nOptionsNormalizer.normalizerRules = [\n ControlFlowFlatteningThresholdRule_1.ControlFlowFlatteningThresholdRule,\n DeadCodeInjectionRule_1.DeadCodeInjectionRule,\n DeadCodeInjectionThresholdRule_1.DeadCodeInjectionThresholdRule,\n DomainLockRule_1.DomainLockRule,\n InputFileNameRule_1.InputFileNameRule,\n SeedRule_1.SeedRule,\n SelfDefendingRule_1.SelfDefendingRule,\n SourceMapBaseUrlRule_1.SourceMapBaseUrlRule,\n SourceMapFileNameRule_1.SourceMapFileNameRule,\n SplitStringsChunkLengthRule_1.SplitStringsChunkLengthRule,\n StringArrayRule_1.StringArrayRule,\n StringArrayEncodingRule_1.StringArrayEncodingRule,\n StringArrayWappersChainedCalls_1.StringArrayWrappersChainedCallsRule,\n];\nOptionsNormalizer = OptionsNormalizer_1 = __decorate([\n inversify_1.injectable()\n], OptionsNormalizer);\nexports.OptionsNormalizer = OptionsNormalizer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ValidationErrorsFormatter = void 0;\nclass ValidationErrorsFormatter {\n static format(errors) {\n return errors\n .reduce((errorMessages, error) => [\n ...errorMessages,\n ValidationErrorsFormatter.formatWithNestedConstraints(error)\n ], [])\n .join('\\n');\n }\n static formatWithNestedConstraints(error) {\n const constraints = error.constraints;\n if (!constraints) {\n return `\\`${error.property}\\` error\\n`;\n }\n const rootError = `\\`${error.property}\\` errors:\\n`;\n const nestedErrors = Object\n .keys(constraints)\n .map((constraint) => ` - ${constraints[constraint]}\\n`)\n .join();\n return `${rootError}${nestedErrors}`;\n }\n}\nexports.ValidationErrorsFormatter = ValidationErrorsFormatter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ControlFlowFlatteningThresholdRule = void 0;\nconst ControlFlowFlatteningThresholdRule = (options) => {\n if (options.controlFlowFlatteningThreshold === 0) {\n options = Object.assign(Object.assign({}, options), { controlFlowFlattening: false, controlFlowFlatteningThreshold: 0 });\n }\n return options;\n};\nexports.ControlFlowFlatteningThresholdRule = ControlFlowFlatteningThresholdRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeadCodeInjectionRule = void 0;\nconst Default_1 = require(\"../presets/Default\");\nconst DeadCodeInjectionRule = (options) => {\n if (options.deadCodeInjection) {\n options = Object.assign(Object.assign({}, options), { deadCodeInjection: true, stringArray: true });\n if (!options.stringArrayThreshold) {\n options = Object.assign(Object.assign({}, options), { stringArray: true, stringArrayThreshold: Default_1.DEFAULT_PRESET.stringArrayThreshold });\n }\n }\n return options;\n};\nexports.DeadCodeInjectionRule = DeadCodeInjectionRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeadCodeInjectionThresholdRule = void 0;\nconst DeadCodeInjectionThresholdRule = (options) => {\n if (options.deadCodeInjectionThreshold === 0) {\n options = Object.assign(Object.assign({}, options), { deadCodeInjection: false, deadCodeInjectionThreshold: 0 });\n }\n return options;\n};\nexports.DeadCodeInjectionThresholdRule = DeadCodeInjectionThresholdRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DomainLockRule = void 0;\nconst Utils_1 = require(\"../../utils/Utils\");\nconst DomainLockRule = (options) => {\n if (options.domainLock.length) {\n const normalizedDomains = [];\n for (const domain of options.domainLock) {\n normalizedDomains.push(Utils_1.Utils.extractDomainFrom(domain));\n }\n options = Object.assign(Object.assign({}, options), { domainLock: normalizedDomains });\n }\n return options;\n};\nexports.DomainLockRule = DomainLockRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.InputFileNameRule = void 0;\nconst StringSeparator_1 = require(\"../../enums/StringSeparator\");\nconst InputFileNameRule = (options) => {\n let { inputFileName } = options;\n if (inputFileName) {\n inputFileName = inputFileName\n .replace(/^\\/+/, '')\n .split(StringSeparator_1.StringSeparator.Dot)\n .slice(0, -1)\n .join(StringSeparator_1.StringSeparator.Dot) || inputFileName;\n options = Object.assign(Object.assign({}, options), { inputFileName: `${inputFileName}.js` });\n }\n return options;\n};\nexports.InputFileNameRule = InputFileNameRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SeedRule = void 0;\nconst SeedRule = (options) => {\n if (options.seed) {\n return Object.assign(Object.assign({}, options), { seed: options.seed });\n }\n const getRandomInteger = (min, max) => {\n return Math.floor(Math.random() * (max - min + 1) + min);\n };\n return Object.assign(Object.assign({}, options), { seed: getRandomInteger(0, 999999999) });\n};\nexports.SeedRule = SeedRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelfDefendingRule = void 0;\nconst SelfDefendingRule = (options) => {\n if (options.selfDefending) {\n options = Object.assign(Object.assign({}, options), { compact: true, selfDefending: true });\n }\n return options;\n};\nexports.SelfDefendingRule = SelfDefendingRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SourceMapBaseUrlRule = void 0;\nconst SourceMapBaseUrlRule = (options) => {\n const { sourceMapBaseUrl } = options;\n if (!options.sourceMapFileName) {\n options = Object.assign(Object.assign({}, options), { sourceMapBaseUrl: '' });\n return options;\n }\n if (sourceMapBaseUrl && !sourceMapBaseUrl.endsWith('/')) {\n options = Object.assign(Object.assign({}, options), { sourceMapBaseUrl: `${sourceMapBaseUrl}/` });\n }\n return options;\n};\nexports.SourceMapBaseUrlRule = SourceMapBaseUrlRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SourceMapFileNameRule = void 0;\nconst StringSeparator_1 = require(\"../../enums/StringSeparator\");\nconst SourceMapFileNameRule = (options) => {\n let { sourceMapFileName } = options;\n if (sourceMapFileName) {\n sourceMapFileName = sourceMapFileName\n .replace(/^\\/+/, '')\n .replace(/(?:\\.js)?(?:\\.map)?$/, '');\n let sourceMapFileNameParts = sourceMapFileName.split(StringSeparator_1.StringSeparator.Dot);\n const sourceMapFileNamePartsCount = sourceMapFileNameParts.length;\n const lastPart = sourceMapFileNameParts[sourceMapFileNamePartsCount - 1];\n if (sourceMapFileNamePartsCount > 1 && lastPart.length <= 3) {\n sourceMapFileNameParts = sourceMapFileNameParts.slice(0, -1);\n }\n sourceMapFileName = sourceMapFileNameParts.join(StringSeparator_1.StringSeparator.Dot);\n options = Object.assign(Object.assign({}, options), { sourceMapFileName: `${sourceMapFileName}.js.map` });\n }\n return options;\n};\nexports.SourceMapFileNameRule = SourceMapFileNameRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SplitStringsChunkLengthRule = void 0;\nconst SplitStringsChunkLengthRule = (options) => {\n if (options.splitStringsChunkLength === 0) {\n options = Object.assign(Object.assign({}, options), { splitStrings: false, splitStringsChunkLength: 0 });\n }\n else {\n options = Object.assign(Object.assign({}, options), { splitStringsChunkLength: Math.floor(options.splitStringsChunkLength) });\n }\n return options;\n};\nexports.SplitStringsChunkLengthRule = SplitStringsChunkLengthRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayEncodingRule = void 0;\nconst StringArrayEncoding_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayEncoding\");\nconst StringArrayEncodingRule = (options) => {\n if (!options.stringArrayEncoding.length) {\n options = Object.assign(Object.assign({}, options), { stringArrayEncoding: [\n StringArrayEncoding_1.StringArrayEncoding.None\n ] });\n }\n return options;\n};\nexports.StringArrayEncodingRule = StringArrayEncodingRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayRule = void 0;\nconst StringArrayEncoding_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayEncoding\");\nconst StringArrayRule = (options) => {\n if (!options.stringArray) {\n options = Object.assign(Object.assign({}, options), { rotateStringArray: false, shuffleStringArray: false, stringArray: false, stringArrayEncoding: [\n StringArrayEncoding_1.StringArrayEncoding.None\n ], stringArrayIndexShift: false, stringArrayWrappersChainedCalls: false, stringArrayWrappersCount: 0, stringArrayThreshold: 0 });\n }\n return options;\n};\nexports.StringArrayRule = StringArrayRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayWrappersChainedCallsRule = void 0;\nconst StringArrayWrappersChainedCallsRule = (options) => {\n if (options.stringArrayWrappersCount === 0) {\n options = Object.assign(Object.assign({}, options), { stringArrayWrappersChainedCalls: false, stringArrayWrappersCount: 0 });\n }\n return options;\n};\nexports.StringArrayWrappersChainedCallsRule = StringArrayWrappersChainedCallsRule;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DEFAULT_PRESET = void 0;\nconst IdentifierNamesGenerator_1 = require(\"../../enums/generators/identifier-names-generators/IdentifierNamesGenerator\");\nconst ObfuscationTarget_1 = require(\"../../enums/ObfuscationTarget\");\nconst OptionsPreset_1 = require(\"../../enums/options/presets/OptionsPreset\");\nconst SourceMapMode_1 = require(\"../../enums/source-map/SourceMapMode\");\nconst StringArrayIndexesType_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayIndexesType\");\nconst StringArrayEncoding_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayEncoding\");\nconst StringArrayWrappersType_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayWrappersType\");\nexports.DEFAULT_PRESET = Object.freeze({\n compact: true,\n config: '',\n controlFlowFlattening: false,\n controlFlowFlatteningThreshold: 0.75,\n deadCodeInjection: false,\n deadCodeInjectionThreshold: 0.4,\n debugProtection: false,\n debugProtectionInterval: false,\n disableConsoleOutput: false,\n domainLock: [],\n exclude: [],\n forceTransformStrings: [],\n identifierNamesGenerator: IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator,\n identifiersPrefix: '',\n identifiersDictionary: [],\n ignoreRequireImports: false,\n inputFileName: '',\n log: false,\n numbersToExpressions: false,\n optionsPreset: OptionsPreset_1.OptionsPreset.Default,\n renameGlobals: false,\n renameProperties: false,\n reservedNames: [],\n reservedStrings: [],\n rotateStringArray: true,\n seed: 0,\n selfDefending: false,\n shuffleStringArray: true,\n simplify: true,\n sourceMap: false,\n sourceMapBaseUrl: '',\n sourceMapFileName: '',\n sourceMapMode: SourceMapMode_1.SourceMapMode.Separate,\n splitStrings: false,\n splitStringsChunkLength: 10,\n stringArray: true,\n stringArrayEncoding: [\n StringArrayEncoding_1.StringArrayEncoding.None\n ],\n stringArrayIndexesType: [\n StringArrayIndexesType_1.StringArrayIndexesType.HexadecimalNumber\n ],\n stringArrayIndexShift: true,\n stringArrayWrappersChainedCalls: true,\n stringArrayWrappersCount: 1,\n stringArrayWrappersParametersMaxCount: 2,\n stringArrayWrappersType: StringArrayWrappersType_1.StringArrayWrappersType.Variable,\n stringArrayThreshold: 0.75,\n target: ObfuscationTarget_1.ObfuscationTarget.Browser,\n transformObjectKeys: false,\n unicodeEscapeSequence: false\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HIGH_OBFUSCATION_PRESET = void 0;\nconst OptionsPreset_1 = require(\"../../enums/options/presets/OptionsPreset\");\nconst StringArrayEncoding_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayEncoding\");\nconst MediumObfuscation_1 = require(\"./MediumObfuscation\");\nexports.HIGH_OBFUSCATION_PRESET = Object.freeze(Object.assign(Object.assign({}, MediumObfuscation_1.MEDIUM_OBFUSCATION_PRESET), { controlFlowFlatteningThreshold: 1, deadCodeInjectionThreshold: 1, debugProtection: true, debugProtectionInterval: true, optionsPreset: OptionsPreset_1.OptionsPreset.HighObfuscation, splitStringsChunkLength: 5, stringArrayEncoding: [\n StringArrayEncoding_1.StringArrayEncoding.Rc4\n ], stringArrayWrappersCount: 5, stringArrayWrappersParametersMaxCount: 5, stringArrayThreshold: 1 }));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LOW_OBFUSCATION_PRESET = void 0;\nconst OptionsPreset_1 = require(\"../../enums/options/presets/OptionsPreset\");\nconst Default_1 = require(\"./Default\");\nexports.LOW_OBFUSCATION_PRESET = Object.freeze(Object.assign(Object.assign({}, Default_1.DEFAULT_PRESET), { disableConsoleOutput: true, optionsPreset: OptionsPreset_1.OptionsPreset.LowObfuscation, rotateStringArray: true, selfDefending: true, shuffleStringArray: true, simplify: true }));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MEDIUM_OBFUSCATION_PRESET = void 0;\nconst OptionsPreset_1 = require(\"../../enums/options/presets/OptionsPreset\");\nconst StringArrayEncoding_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayEncoding\");\nconst StringArrayWrappersType_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayWrappersType\");\nconst LowObfuscation_1 = require(\"./LowObfuscation\");\nexports.MEDIUM_OBFUSCATION_PRESET = Object.freeze(Object.assign(Object.assign({}, LowObfuscation_1.LOW_OBFUSCATION_PRESET), { controlFlowFlattening: true, deadCodeInjection: true, numbersToExpressions: true, optionsPreset: OptionsPreset_1.OptionsPreset.MediumObfuscation, splitStrings: true, splitStringsChunkLength: 10, stringArrayEncoding: [\n StringArrayEncoding_1.StringArrayEncoding.Base64\n ], stringArrayWrappersCount: 2, stringArrayWrappersParametersMaxCount: 4, stringArrayWrappersType: StringArrayWrappersType_1.StringArrayWrappersType.Function, transformObjectKeys: true }));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NO_ADDITIONAL_NODES_PRESET = void 0;\nconst IdentifierNamesGenerator_1 = require(\"../../enums/generators/identifier-names-generators/IdentifierNamesGenerator\");\nconst ObfuscationTarget_1 = require(\"../../enums/ObfuscationTarget\");\nconst SourceMapMode_1 = require(\"../../enums/source-map/SourceMapMode\");\nconst StringArrayEncoding_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayEncoding\");\nconst StringArrayWrappersType_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayWrappersType\");\nconst StringArrayIndexesType_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayIndexesType\");\nexports.NO_ADDITIONAL_NODES_PRESET = Object.freeze({\n compact: true,\n controlFlowFlattening: false,\n controlFlowFlatteningThreshold: 0,\n deadCodeInjection: false,\n deadCodeInjectionThreshold: 0,\n debugProtection: false,\n debugProtectionInterval: false,\n disableConsoleOutput: false,\n domainLock: [],\n exclude: [],\n forceTransformStrings: [],\n identifierNamesGenerator: IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator,\n identifiersPrefix: '',\n identifiersDictionary: [],\n ignoreRequireImports: false,\n inputFileName: '',\n log: false,\n numbersToExpressions: false,\n renameGlobals: false,\n renameProperties: false,\n reservedNames: [],\n reservedStrings: [],\n rotateStringArray: false,\n seed: 0,\n selfDefending: false,\n shuffleStringArray: false,\n simplify: false,\n sourceMap: false,\n sourceMapBaseUrl: '',\n sourceMapFileName: '',\n sourceMapMode: SourceMapMode_1.SourceMapMode.Separate,\n splitStrings: false,\n splitStringsChunkLength: 0,\n stringArray: false,\n stringArrayEncoding: [\n StringArrayEncoding_1.StringArrayEncoding.None\n ],\n stringArrayIndexesType: [\n StringArrayIndexesType_1.StringArrayIndexesType.HexadecimalNumber\n ],\n stringArrayIndexShift: false,\n stringArrayWrappersChainedCalls: false,\n stringArrayWrappersCount: 0,\n stringArrayWrappersParametersMaxCount: 2,\n stringArrayWrappersType: StringArrayWrappersType_1.StringArrayWrappersType.Variable,\n stringArrayThreshold: 0,\n target: ObfuscationTarget_1.ObfuscationTarget.Browser,\n transformObjectKeys: false,\n unicodeEscapeSequence: false\n});\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IsAllowedForObfuscationTargets = void 0;\nconst class_validator_1 = require(\"class-validator\");\nconst fast_deep_equal_1 = __importDefault(require(\"fast-deep-equal\"));\nconst StringSeparator_1 = require(\"../../enums/StringSeparator\");\nconst Default_1 = require(\"../presets/Default\");\nfunction IsAllowedForObfuscationTargets(obfuscationTargets, validationOptions) {\n return (optionsObject, propertyName) => {\n class_validator_1.registerDecorator({\n propertyName,\n constraints: [obfuscationTargets],\n name: 'IsAllowedForObfuscationTargets',\n options: validationOptions,\n target: optionsObject.constructor,\n validator: {\n validate(value, validationArguments) {\n const options = validationArguments.object;\n const defaultValue = Default_1.DEFAULT_PRESET[propertyName];\n const isDefaultValue = fast_deep_equal_1.default(value, defaultValue);\n return isDefaultValue || obfuscationTargets.includes(options.target);\n },\n defaultMessage(validationArguments) {\n const requiredObfuscationTargetsString = obfuscationTargets.join(`${StringSeparator_1.StringSeparator.Comma} `);\n return `This option allowed only for obfuscation targets: ${requiredObfuscationTargetsString}`;\n }\n }\n });\n };\n}\nexports.IsAllowedForObfuscationTargets = IsAllowedForObfuscationTargets;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ObfuscatedCode = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst ICryptUtils_1 = require(\"../interfaces/utils/ICryptUtils\");\nconst Initializable_1 = require(\"../decorators/Initializable\");\nconst SourceMapMode_1 = require(\"../enums/source-map/SourceMapMode\");\nconst IOptions_1 = require(\"../interfaces/options/IOptions\");\nlet ObfuscatedCode = class ObfuscatedCode {\n constructor(cryptUtils, options) {\n this.cryptUtils = cryptUtils;\n this.options = options;\n }\n initialize(obfuscatedCode, sourceMap) {\n this.obfuscatedCode = obfuscatedCode;\n this.sourceMap = sourceMap;\n }\n getObfuscatedCode() {\n return this.correctObfuscatedCode();\n }\n getSourceMap() {\n return this.sourceMap;\n }\n toString() {\n return this.obfuscatedCode;\n }\n correctObfuscatedCode() {\n if (!this.sourceMap) {\n return this.obfuscatedCode;\n }\n const sourceMapUrl = this.options.sourceMapBaseUrl + this.options.sourceMapFileName;\n let sourceMappingUrl = '//# sourceMappingURL=';\n switch (this.options.sourceMapMode) {\n case SourceMapMode_1.SourceMapMode.Inline:\n sourceMappingUrl += `data:application/json;base64,${this.cryptUtils.btoa(this.sourceMap)}`;\n break;\n case SourceMapMode_1.SourceMapMode.Separate:\n default:\n if (!sourceMapUrl) {\n return this.obfuscatedCode;\n }\n sourceMappingUrl += sourceMapUrl;\n }\n return `${this.obfuscatedCode}\\n${sourceMappingUrl}`;\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], ObfuscatedCode.prototype, \"obfuscatedCode\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], ObfuscatedCode.prototype, \"sourceMap\", void 0);\nObfuscatedCode = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICryptUtils)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof ICryptUtils_1.ICryptUtils !== \"undefined\" && ICryptUtils_1.ICryptUtils) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], ObfuscatedCode);\nexports.ObfuscatedCode = ObfuscatedCode;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SourceCode = void 0;\nclass SourceCode {\n constructor(sourceCode, sourceMap) {\n this.sourceCode = sourceCode;\n this.sourceMap = sourceMap;\n }\n getSourceCode() {\n return this.sourceCode;\n }\n getSourceMap() {\n return this.sourceMap;\n }\n toString() {\n return this.sourceCode;\n }\n}\nexports.SourceCode = SourceCode;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArrayStorage = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../decorators/Initializable\");\nlet ArrayStorage = class ArrayStorage {\n constructor(randomGenerator, options) {\n this.storageLength = 0;\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n initialize() {\n this.storage = [];\n this.storageId = this.randomGenerator.getRandomString(6);\n }\n delete(key) {\n var _a;\n const deletedElement = (_a = this.storage.splice(key, 1)[0]) !== null && _a !== void 0 ? _a : undefined;\n if (deletedElement) {\n this.storageLength--;\n }\n return deletedElement;\n }\n get(key) {\n return this.storage[key];\n }\n getOrThrow(key) {\n const value = this.get(key);\n if (!value) {\n throw new Error(`No value found in array storage with key \\`${key}\\``);\n }\n return value;\n }\n getKeyOf(value) {\n const key = this.storage.indexOf(value);\n return key >= 0 ? key : null;\n }\n getLength() {\n return this.storageLength;\n }\n getStorage() {\n return this.storage;\n }\n getStorageId() {\n return this.storageId;\n }\n mergeWith(storage, mergeId = false) {\n this.storage = [...this.storage, ...storage.getStorage()];\n if (mergeId) {\n this.storageId = storage.getStorageId();\n }\n }\n set(key, value) {\n if (key === this.storageLength) {\n this.storage.push(value);\n }\n else {\n this.storage.splice(key, 0, value);\n }\n this.storageLength++;\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", Array)\n], ArrayStorage.prototype, \"storage\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], ArrayStorage.prototype, \"storageId\", void 0);\n__decorate([\n inversify_1.postConstruct(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], ArrayStorage.prototype, \"initialize\", null);\nArrayStorage = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], ArrayStorage);\nexports.ArrayStorage = ArrayStorage;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MapStorage = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nconst Initializable_1 = require(\"../decorators/Initializable\");\nlet MapStorage = class MapStorage {\n constructor(randomGenerator, options) {\n this.randomGenerator = randomGenerator;\n this.options = options;\n }\n initialize() {\n this.storage = new Map();\n this.storageId = this.randomGenerator.getRandomString(6);\n }\n get(key) {\n return this.storage.get(key);\n }\n getOrThrow(key) {\n const value = this.get(key);\n if (!value) {\n throw new Error(`No value found in map storage with key \\`${key}\\``);\n }\n return value;\n }\n getKeyOf(value) {\n for (const [key, storageValue] of this.storage) {\n if (value === storageValue) {\n return key;\n }\n }\n return null;\n }\n getLength() {\n return this.storage.size;\n }\n getStorage() {\n return this.storage;\n }\n getStorageId() {\n return this.storageId;\n }\n has(key) {\n return this.storage.has(key);\n }\n mergeWith(storage, mergeId = false) {\n this.storage = new Map([...this.storage, ...storage.getStorage()]);\n if (mergeId) {\n this.storageId = storage.getStorageId();\n }\n }\n set(key, value) {\n this.storage.set(key, value);\n }\n};\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], MapStorage.prototype, \"storageId\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof Map !== \"undefined\" && Map) === \"function\" ? _a : Object)\n], MapStorage.prototype, \"storage\", void 0);\n__decorate([\n inversify_1.postConstruct(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], MapStorage.prototype, \"initialize\", null);\nMapStorage = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], MapStorage);\nexports.MapStorage = MapStorage;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar CustomCodeHelperGroupStorage_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CustomCodeHelperGroupStorage = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TCustomCodeHelperGroupFactory_1 = require(\"../../types/container/custom-code-helpers/TCustomCodeHelperGroupFactory\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst CustomCodeHelperGroup_1 = require(\"../../enums/custom-code-helpers/CustomCodeHelperGroup\");\nconst MapStorage_1 = require(\"../MapStorage\");\nlet CustomCodeHelperGroupStorage = CustomCodeHelperGroupStorage_1 = class CustomCodeHelperGroupStorage extends MapStorage_1.MapStorage {\n constructor(customCodeHelperGroupFactory, randomGenerator, options) {\n super(randomGenerator, options);\n this.customCodeHelperGroupFactory = customCodeHelperGroupFactory;\n }\n initialize() {\n super.initialize();\n CustomCodeHelperGroupStorage_1.customCodeHelperGroupsList.forEach((customCodeHelperGroupName) => {\n const customCodeHelperGroup = this.customCodeHelperGroupFactory(customCodeHelperGroupName);\n this.storage.set(customCodeHelperGroupName, customCodeHelperGroup);\n });\n }\n};\nCustomCodeHelperGroupStorage.customCodeHelperGroupsList = [\n CustomCodeHelperGroup_1.CustomCodeHelperGroup.ConsoleOutput,\n CustomCodeHelperGroup_1.CustomCodeHelperGroup.DebugProtection,\n CustomCodeHelperGroup_1.CustomCodeHelperGroup.DomainLock,\n CustomCodeHelperGroup_1.CustomCodeHelperGroup.SelfDefending,\n CustomCodeHelperGroup_1.CustomCodeHelperGroup.StringArray\n];\n__decorate([\n inversify_1.postConstruct(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], CustomCodeHelperGroupStorage.prototype, \"initialize\", null);\nCustomCodeHelperGroupStorage = CustomCodeHelperGroupStorage_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__ICustomCodeHelperGroup)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TCustomCodeHelperGroupFactory_1.TCustomCodeHelperGroupFactory !== \"undefined\" && TCustomCodeHelperGroupFactory_1.TCustomCodeHelperGroupFactory) === \"function\" ? _a : Object, typeof (_b = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], CustomCodeHelperGroupStorage);\nexports.CustomCodeHelperGroupStorage = CustomCodeHelperGroupStorage;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ControlFlowStorage = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst MapStorage_1 = require(\"../MapStorage\");\nlet ControlFlowStorage = class ControlFlowStorage extends MapStorage_1.MapStorage {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n};\nControlFlowStorage = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], ControlFlowStorage);\nexports.ControlFlowStorage = ControlFlowStorage;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LiteralNodesCacheStorage = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst StringArrayEncoding_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayEncoding\");\nconst MapStorage_1 = require(\"../MapStorage\");\nlet LiteralNodesCacheStorage = class LiteralNodesCacheStorage extends MapStorage_1.MapStorage {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n buildKey(literalValue, stringArrayStorageItemData) {\n return `${literalValue}-${Boolean(stringArrayStorageItemData)}`;\n }\n shouldUseCachedValue(key, stringArrayStorageItemData) {\n return !this.options.stringArrayWrappersCount\n && (stringArrayStorageItemData === null || stringArrayStorageItemData === void 0 ? void 0 : stringArrayStorageItemData.encoding) !== StringArrayEncoding_1.StringArrayEncoding.Rc4\n && this.storage.has(key);\n }\n};\nLiteralNodesCacheStorage = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], LiteralNodesCacheStorage);\nexports.LiteralNodesCacheStorage = LiteralNodesCacheStorage;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayScopeCallsWrapperLexicalScopeDataStorage = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst MapStorage_1 = require(\"../MapStorage\");\nlet StringArrayScopeCallsWrapperLexicalScopeDataStorage = class StringArrayScopeCallsWrapperLexicalScopeDataStorage extends MapStorage_1.MapStorage {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n};\nStringArrayScopeCallsWrapperLexicalScopeDataStorage = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], StringArrayScopeCallsWrapperLexicalScopeDataStorage);\nexports.StringArrayScopeCallsWrapperLexicalScopeDataStorage = StringArrayScopeCallsWrapperLexicalScopeDataStorage;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayScopeCallsWrapperNamesDataStorage = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst MapStorage_1 = require(\"../MapStorage\");\nlet StringArrayScopeCallsWrapperNamesDataStorage = class StringArrayScopeCallsWrapperNamesDataStorage extends MapStorage_1.MapStorage {\n constructor(randomGenerator, options) {\n super(randomGenerator, options);\n }\n};\nStringArrayScopeCallsWrapperNamesDataStorage = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object])\n], StringArrayScopeCallsWrapperNamesDataStorage);\nexports.StringArrayScopeCallsWrapperNamesDataStorage = StringArrayScopeCallsWrapperNamesDataStorage;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar StringArrayStorage_1, _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayStorage = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TIdentifierNamesGeneratorFactory_1 = require(\"../../types/container/generators/TIdentifierNamesGeneratorFactory\");\nconst IArrayUtils_1 = require(\"../../interfaces/utils/IArrayUtils\");\nconst ICryptUtilsSwappedAlphabet_1 = require(\"../../interfaces/utils/ICryptUtilsSwappedAlphabet\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst StringArrayEncoding_1 = require(\"../../enums/node-transformers/string-array-transformers/StringArrayEncoding\");\nconst MapStorage_1 = require(\"../MapStorage\");\nlet StringArrayStorage = StringArrayStorage_1 = class StringArrayStorage extends MapStorage_1.MapStorage {\n constructor(identifierNamesGeneratorFactory, arrayUtils, randomGenerator, options, cryptUtilsSwappedAlphabet) {\n super(randomGenerator, options);\n this.rc4EncodedValuesSourcesCache = new Map();\n this.indexShiftAmount = 0;\n this.rotationAmount = 0;\n this.stringArrayStorageCallsWrapperNamesMap = new Map();\n this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);\n this.arrayUtils = arrayUtils;\n this.cryptUtilsSwappedAlphabet = cryptUtilsSwappedAlphabet;\n this.rc4Keys = this.randomGenerator.getRandomGenerator()\n .n(() => this.randomGenerator.getRandomGenerator().string({\n length: StringArrayStorage_1.rc4KeyLength\n }), StringArrayStorage_1.rc4KeysCount);\n }\n initialize() {\n super.initialize();\n this.indexShiftAmount = this.options.stringArrayIndexShift\n ? this.randomGenerator.getRandomInteger(StringArrayStorage_1.minimumIndexShiftAmount, StringArrayStorage_1.maximumIndexShiftAmount)\n : 0;\n this.rotationAmount = this.options.rotateStringArray\n ? this.randomGenerator.getRandomInteger(StringArrayStorage_1.minimumRotationAmount, StringArrayStorage_1.maximumRotationAmount)\n : 0;\n }\n get(value) {\n return this.getOrSetIfDoesNotExist(value);\n }\n getIndexShiftAmount() {\n return this.indexShiftAmount;\n }\n getRotationAmount() {\n return this.rotationAmount;\n }\n getStorageName() {\n return this.getStorageId();\n }\n getStorageId() {\n if (!this.stringArrayStorageName) {\n this.stringArrayStorageName = this.identifierNamesGenerator\n .generateForGlobalScope(StringArrayStorage_1.stringArrayNameLength);\n }\n return this.stringArrayStorageName;\n }\n getStorageCallsWrapperName(stringArrayEncoding) {\n var _a;\n const storageCallsWrapperName = (_a = this.stringArrayStorageCallsWrapperNamesMap\n .get(stringArrayEncoding)) !== null && _a !== void 0 ? _a : null;\n if (storageCallsWrapperName) {\n return storageCallsWrapperName;\n }\n const newStorageCallsWrapperName = this.identifierNamesGenerator\n .generateForGlobalScope(StringArrayStorage_1.stringArrayNameLength);\n this.stringArrayStorageCallsWrapperNamesMap.set(stringArrayEncoding, newStorageCallsWrapperName);\n return newStorageCallsWrapperName;\n }\n rotateStorage() {\n if (!this.getLength()) {\n return;\n }\n this.storage = new Map(this.arrayUtils.rotate(Array.from(this.storage.entries()), this.rotationAmount));\n }\n shuffleStorage() {\n this.storage = new Map(this.arrayUtils\n .shuffle(Array.from(this.storage.entries()))\n .map(([value, stringArrayStorageItemData], index) => {\n stringArrayStorageItemData.index = index;\n return [value, stringArrayStorageItemData];\n })\n .sort(([, stringArrayStorageItemDataA], [, stringArrayStorageItemDataB]) => stringArrayStorageItemDataA.index - stringArrayStorageItemDataB.index));\n }\n getOrSetIfDoesNotExist(value) {\n const { encodedValue, encoding, decodeKey } = this.getEncodedValue(value);\n const storedStringArrayStorageItemData = this.storage.get(encodedValue);\n if (storedStringArrayStorageItemData) {\n return storedStringArrayStorageItemData;\n }\n const stringArrayStorageItemData = {\n encodedValue,\n encoding,\n decodeKey,\n value,\n index: this.getLength()\n };\n this.storage.set(encodedValue, stringArrayStorageItemData);\n return stringArrayStorageItemData;\n }\n getEncodedValue(value) {\n var _a;\n const encoding = this.options.stringArrayEncoding.length\n ? this.randomGenerator\n .getRandomGenerator()\n .pickone(this.options.stringArrayEncoding)\n : null;\n if (!encoding) {\n throw new Error('`stringArrayEncoding` option array is empty');\n }\n switch (encoding) {\n case StringArrayEncoding_1.StringArrayEncoding.Rc4: {\n const decodeKey = this.randomGenerator.getRandomGenerator().pickone(this.rc4Keys);\n const encodedValue = this.cryptUtilsSwappedAlphabet.btoa(this.cryptUtilsSwappedAlphabet.rc4(value, decodeKey));\n const encodedValueSources = (_a = this.rc4EncodedValuesSourcesCache.get(encodedValue)) !== null && _a !== void 0 ? _a : [];\n let encodedValueSourcesLength = encodedValueSources.length;\n const shouldAddValueToSourcesCache = !encodedValueSourcesLength || !encodedValueSources.includes(value);\n if (shouldAddValueToSourcesCache) {\n encodedValueSources.push(value);\n encodedValueSourcesLength++;\n }\n this.rc4EncodedValuesSourcesCache.set(encodedValue, encodedValueSources);\n if (encodedValueSourcesLength > 1) {\n return this.getEncodedValue(value);\n }\n return { encodedValue, encoding, decodeKey };\n }\n case StringArrayEncoding_1.StringArrayEncoding.Base64: {\n const decodeKey = null;\n const encodedValue = this.cryptUtilsSwappedAlphabet.btoa(value);\n return { encodedValue, encoding, decodeKey };\n }\n default: {\n const decodeKey = null;\n const encodedValue = value;\n return { encodedValue, encoding, decodeKey };\n }\n }\n }\n};\nStringArrayStorage.minimumRotationAmount = 100;\nStringArrayStorage.maximumRotationAmount = 500;\nStringArrayStorage.minimumIndexShiftAmount = 100;\nStringArrayStorage.maximumIndexShiftAmount = 500;\nStringArrayStorage.rc4KeyLength = 4;\nStringArrayStorage.rc4KeysCount = 50;\nStringArrayStorage.stringArrayNameLength = 4;\n__decorate([\n inversify_1.postConstruct(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], StringArrayStorage.prototype, \"initialize\", null);\nStringArrayStorage = StringArrayStorage_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierNamesGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(3, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ICryptUtilsSwappedAlphabet)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory !== \"undefined\" && TIdentifierNamesGeneratorFactory_1.TIdentifierNamesGeneratorFactory) === \"function\" ? _a : Object, typeof (_b = typeof IArrayUtils_1.IArrayUtils !== \"undefined\" && IArrayUtils_1.IArrayUtils) === \"function\" ? _b : Object, typeof (_c = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _c : Object, typeof (_d = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _d : Object, typeof (_e = typeof ICryptUtilsSwappedAlphabet_1.ICryptUtilsSwappedAlphabet !== \"undefined\" && ICryptUtilsSwappedAlphabet_1.ICryptUtilsSwappedAlphabet) === \"function\" ? _e : Object])\n], StringArrayStorage);\nexports.StringArrayStorage = StringArrayStorage;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.VisitedLexicalScopeNodesStackStorage = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst IArrayUtils_1 = require(\"../../interfaces/utils/IArrayUtils\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst ArrayStorage_1 = require(\"../ArrayStorage\");\nlet VisitedLexicalScopeNodesStackStorage = class VisitedLexicalScopeNodesStackStorage extends ArrayStorage_1.ArrayStorage {\n constructor(randomGenerator, options, arrayUtils) {\n super(randomGenerator, options);\n this.arrayUtils = arrayUtils;\n }\n getLastElement() {\n return this.arrayUtils.getLastElement(this.getStorage());\n }\n getPenultimateElement() {\n var _a;\n const storageLength = this.getLength();\n return (_a = this.get(storageLength - 2)) !== null && _a !== void 0 ? _a : undefined;\n }\n push(nodeWithLexicalScopeStatements) {\n const storageLength = this.getLength();\n this.set(storageLength, nodeWithLexicalScopeStatements);\n }\n pop() {\n const storageLength = this.getLength();\n return this.delete(storageLength - 1);\n }\n};\nVisitedLexicalScopeNodesStackStorage = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __param(2, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IArrayUtils)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object, typeof (_b = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _b : Object, typeof (_c = typeof IArrayUtils_1.IArrayUtils !== \"undefined\" && IArrayUtils_1.IArrayUtils) === \"function\" ? _c : Object])\n], VisitedLexicalScopeNodesStackStorage);\nexports.VisitedLexicalScopeNodesStackStorage = VisitedLexicalScopeNodesStackStorage;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AbstractTransformerNamesGroupsBuilder = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst ILevelledTopologicalSorter_1 = require(\"../interfaces/utils/ILevelledTopologicalSorter\");\nlet AbstractTransformerNamesGroupsBuilder = class AbstractTransformerNamesGroupsBuilder {\n constructor(levelledTopologicalSorter) {\n this.levelledTopologicalSorter = levelledTopologicalSorter;\n }\n build(normalizedTransformers) {\n const transformerNames = Object.keys(normalizedTransformers);\n const relationEdges = this.buildTransformersRelationEdges(transformerNames, normalizedTransformers);\n for (const [precedent, consequent] of relationEdges) {\n this.levelledTopologicalSorter.add(precedent, consequent);\n }\n return this.levelledTopologicalSorter.sortByGroups();\n }\n buildTransformersRelationEdges(transformerNames, normalizedTransformers) {\n const relationEdges = [];\n for (const transformerName of transformerNames) {\n const transformer = normalizedTransformers[transformerName];\n const runAfterRelations = transformer.runAfter;\n if (!runAfterRelations || !runAfterRelations.length) {\n relationEdges.push([transformerName, null]);\n continue;\n }\n for (const runAfterRelation of runAfterRelations) {\n const isUnknownRelation = normalizedTransformers[runAfterRelation] === undefined;\n if (isUnknownRelation) {\n relationEdges.push([transformerName, null]);\n continue;\n }\n relationEdges.push([runAfterRelation, transformerName]);\n }\n }\n return relationEdges;\n }\n};\nAbstractTransformerNamesGroupsBuilder = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ILevelledTopologicalSorter)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof ILevelledTopologicalSorter_1.ILevelledTopologicalSorter !== \"undefined\" && ILevelledTopologicalSorter_1.ILevelledTopologicalSorter) === \"function\" ? _a : Object])\n], AbstractTransformerNamesGroupsBuilder);\nexports.AbstractTransformerNamesGroupsBuilder = AbstractTransformerNamesGroupsBuilder;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArrayUtils = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nlet ArrayUtils = class ArrayUtils {\n constructor(randomGenerator) {\n this.randomGenerator = randomGenerator;\n }\n createWithRange(length) {\n const range = [];\n for (let i = 0; i < length; i++) {\n range.push(i);\n }\n return range;\n }\n fillWithRange(length, valueFunction) {\n const range = [];\n for (let i = 0; i < length; i++) {\n range.push(valueFunction(i));\n }\n return range;\n }\n findMostOccurringElement(array) {\n var _a;\n const arrayLength = array.length;\n if (!arrayLength) {\n return null;\n }\n const elementsMap = {};\n let mostOccurringElement = array[0];\n let mostOccurringElementCount = 1;\n for (const element of array) {\n const currentElementCount = (_a = elementsMap[element]) !== null && _a !== void 0 ? _a : 0;\n const updatedElementCount = currentElementCount + 1;\n if (updatedElementCount > mostOccurringElementCount) {\n mostOccurringElement = element;\n mostOccurringElementCount = updatedElementCount;\n }\n elementsMap[element] = updatedElementCount;\n }\n return mostOccurringElement;\n }\n getLastElement(array) {\n var _a;\n const arrayLength = array.length;\n return (_a = array[arrayLength - 1]) !== null && _a !== void 0 ? _a : undefined;\n }\n rotate(array, times) {\n if (!array.length) {\n throw new ReferenceError('Cannot rotate empty array.');\n }\n if (times <= 0) {\n return array;\n }\n const newArray = array;\n let temp;\n while (times--) {\n temp = newArray.pop();\n if (temp) {\n newArray.unshift(temp);\n }\n }\n return newArray;\n }\n shuffle(array) {\n const shuffledArray = [...array];\n for (let i = shuffledArray.length; i; i--) {\n const j = Math.floor(this.randomGenerator.getMathRandom() * i);\n [shuffledArray[i - 1], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i - 1]];\n }\n return shuffledArray;\n }\n};\nArrayUtils = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object])\n], ArrayUtils);\nexports.ArrayUtils = ArrayUtils;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CryptUtils = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nconst Base64Alphabet_1 = require(\"../constants/Base64Alphabet\");\nconst RandomGenerator_1 = require(\"./RandomGenerator\");\nconst Utils_1 = require(\"./Utils\");\nlet CryptUtils = class CryptUtils {\n constructor(randomGenerator) {\n this.base64Alphabet = Base64Alphabet_1.base64alphabet;\n this.randomGenerator = randomGenerator;\n }\n btoa(string) {\n const chars = this.base64Alphabet;\n let output = '';\n string = encodeURIComponent(string).replace(/%([0-9A-F]{2})/g, (match, p1) => {\n return String.fromCharCode(parseInt(`${Utils_1.Utils.hexadecimalPrefix}${p1}`, 16));\n });\n for (let block, charCode, idx = 0, map = chars; string.charAt(idx | 0) || (map = '=', idx % 1); output += map.charAt(63 & block >> 8 - idx % 1 * 8)) {\n charCode = string.charCodeAt(idx += 3 / 4);\n if (charCode > 0xFF) {\n throw new Error('\\'btoa\\' failed: The string to be encoded contains characters outside of the Latin1 range.');\n }\n block = block << 8 | charCode;\n }\n return output;\n }\n hideString(str, length) {\n const escapeRegExp = (s) => s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n const randomMerge = (s1, s2) => {\n let i1 = -1;\n let i2 = -1;\n let result = '';\n while (i1 < s1.length || i2 < s2.length) {\n if (this.randomGenerator.getMathRandom() < 0.5 && i2 < s2.length) {\n result += s2.charAt(++i2);\n }\n else {\n result += s1.charAt(++i1);\n }\n }\n return result;\n };\n const randomString = this.randomGenerator.getRandomGenerator().string({\n length: length,\n pool: RandomGenerator_1.RandomGenerator.randomGeneratorPool\n });\n let randomStringDiff = randomString.replace(new RegExp(`[${escapeRegExp(str)}]`, 'g'), '');\n const randomStringDiffArray = randomStringDiff.split('');\n this.randomGenerator.getRandomGenerator().shuffle(randomStringDiffArray);\n randomStringDiff = randomStringDiffArray.join('');\n return [randomMerge(str, randomStringDiff), randomStringDiff];\n }\n rc4(string, key) {\n const s = [];\n let j = 0;\n let x;\n let result = '';\n for (var i = 0; i < 256; i++) {\n s[i] = i;\n }\n for (i = 0; i < 256; i++) {\n j = (j + s[i] + key.charCodeAt(i % key.length)) % 256;\n x = s[i];\n s[i] = s[j];\n s[j] = x;\n }\n i = 0;\n j = 0;\n for (let y = 0; y < string.length; y++) {\n i = (i + 1) % 256;\n j = (j + s[i]) % 256;\n x = s[i];\n s[i] = s[j];\n s[j] = x;\n result += String.fromCharCode(string.charCodeAt(y) ^ s[(s[i] + s[j]) % 256]);\n }\n return result;\n }\n};\nCryptUtils = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object])\n], CryptUtils);\nexports.CryptUtils = CryptUtils;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CryptUtilsSwappedAlphabet = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nconst Base64AlphabetSwapped_1 = require(\"../constants/Base64AlphabetSwapped\");\nconst CryptUtils_1 = require(\"./CryptUtils\");\nlet CryptUtilsSwappedAlphabet = class CryptUtilsSwappedAlphabet extends CryptUtils_1.CryptUtils {\n constructor(randomGenerator) {\n super(randomGenerator);\n this.base64Alphabet = Base64AlphabetSwapped_1.base64alphabetSwapped;\n }\n};\nCryptUtilsSwappedAlphabet = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IRandomGenerator)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof IRandomGenerator_1.IRandomGenerator !== \"undefined\" && IRandomGenerator_1.IRandomGenerator) === \"function\" ? _a : Object])\n], CryptUtilsSwappedAlphabet);\nexports.CryptUtilsSwappedAlphabet = CryptUtilsSwappedAlphabet;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar EscapeSequenceEncoder_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EscapeSequenceEncoder = void 0;\nconst inversify_1 = require(\"inversify\");\nlet EscapeSequenceEncoder = EscapeSequenceEncoder_1 = class EscapeSequenceEncoder {\n constructor() {\n this.stringsCache = new Map();\n }\n encode(string, encodeAllSymbols) {\n const cacheKey = `${string}-${String(encodeAllSymbols)}`;\n if (this.stringsCache.has(cacheKey)) {\n return this.stringsCache.get(cacheKey);\n }\n const radix = 16;\n const replaceRegExp = new RegExp('[\\\\s\\\\S]', 'g');\n let prefix;\n let template;\n const result = string.replace(replaceRegExp, (character) => {\n const shouldEncodeCharacter = encodeAllSymbols\n || EscapeSequenceEncoder_1.forceEscapeCharactersRegExp.test(character);\n if (!shouldEncodeCharacter) {\n return character;\n }\n if (EscapeSequenceEncoder_1.ASCIICharactersRegExp.test(character)) {\n prefix = '\\\\x';\n template = '00';\n }\n else {\n prefix = '\\\\u';\n template = '0000';\n }\n return `${prefix}${(template + character.charCodeAt(0).toString(radix)).slice(-template.length)}`;\n });\n this.stringsCache.set(cacheKey, result);\n this.stringsCache.set(`${result}-${String(encodeAllSymbols)}`, result);\n return result;\n }\n};\nEscapeSequenceEncoder.ASCIICharactersRegExp = /[\\x00-\\x7F]/;\nEscapeSequenceEncoder.forceEscapeCharactersRegExp = /[\\x00-\\x1F\\x7F-\\x9F'\"\\\\\\s]/;\nEscapeSequenceEncoder = EscapeSequenceEncoder_1 = __decorate([\n inversify_1.injectable()\n], EscapeSequenceEncoder);\nexports.EscapeSequenceEncoder = EscapeSequenceEncoder;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LevelledTopologicalSorter = void 0;\nconst inversify_1 = require(\"inversify\");\nlet LevelledTopologicalSorter = class LevelledTopologicalSorter {\n constructor() {\n this.graph = new Map();\n }\n add(precedent, consequent = null) {\n if (consequent !== null) {\n return this.link(precedent, consequent);\n }\n return this.register(precedent);\n }\n sort() {\n const consequents = Array.from(this.graph.keys());\n const results = [];\n const marks = {};\n for (const consequent of consequents) {\n if (marks[consequent] !== undefined) {\n continue;\n }\n this.visit(results, marks, consequent);\n }\n return results;\n }\n sortByGroups() {\n this.sort();\n const resultItemsGroups = [];\n while (this.hasNodes()) {\n const rootNodes = this.findRootNodes();\n resultItemsGroups.push(rootNodes);\n for (const rootNode of rootNodes) {\n this.delete(rootNode);\n }\n }\n return resultItemsGroups;\n }\n delete(consequent) {\n const precedents = this.getPrecedents(consequent);\n if (precedents.length) {\n throw new Error(`Unable to remove non-root node: ${consequent}`);\n }\n this.graph.delete(consequent);\n const precedentsGroups = Array.from(this.graph.values());\n for (const precedentsGroup of precedentsGroups) {\n const precedentsCount = precedentsGroup.length - 1;\n for (let index = precedentsCount; index >= 0; index = index - 1) {\n if (precedentsGroup[index] !== consequent) {\n continue;\n }\n precedentsGroup.splice(index, 1);\n }\n }\n }\n findRootNodes() {\n const consequents = Array.from(this.graph.keys());\n const rootNodes = [];\n for (const consequent of consequents) {\n if (!this.hasPrecedents(consequent)) {\n rootNodes.push(consequent);\n }\n }\n return rootNodes;\n }\n getPrecedents(consequent) {\n const precedents = this.graph.get(consequent);\n if (!precedents) {\n throw new Error(`Unknown node: ${consequent}`);\n }\n return precedents;\n }\n hasNodes() {\n return this.graph.size > 0;\n }\n hasPrecedents(consequent) {\n return this.getPrecedents(consequent).length > 0;\n }\n link(precedent, consequent) {\n this.register(precedent);\n this.register(consequent);\n const target = this.graph.get(consequent);\n if (target && !target.includes(precedent)) {\n target.push(precedent);\n }\n return this;\n }\n register(name) {\n if (!this.graph.has(name)) {\n this.graph.set(name, []);\n }\n return this;\n }\n visit(results, marks, name) {\n const mark = marks[name];\n if (mark === 'visiting') {\n throw new Error(`Detected cycle involving node: ${name}`);\n }\n if (mark) {\n return;\n }\n marks[name] = 'visiting';\n const precedents = this.getPrecedents(name);\n for (const precedent of precedents) {\n this.visit(results, marks, precedent);\n }\n marks[name] = 'ok';\n results.push(name);\n return;\n }\n};\nLevelledTopologicalSorter = __decorate([\n inversify_1.injectable()\n], LevelledTopologicalSorter);\nexports.LevelledTopologicalSorter = LevelledTopologicalSorter;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NumberUtils = void 0;\nconst Utils_1 = require(\"./Utils\");\nclass NumberUtils {\n static toHex(number) {\n const radix = 16;\n const basePart = typeof number === 'number'\n ? number.toString(radix)\n : `${number.toString(radix)}n`;\n return `${Utils_1.Utils.hexadecimalPrefix}${basePart}`;\n }\n static isCeil(number) {\n return typeof number === 'number'\n ? number % 1 === 0\n : true;\n }\n static isPositive(number) {\n if (isNaN(number)) {\n throw new Error('Given value is NaN');\n }\n if (number > 0) {\n return true;\n }\n if (number < 0) {\n return false;\n }\n if (1 / number === Number.POSITIVE_INFINITY) {\n return true;\n }\n return false;\n }\n static isUnsafeNumber(number) {\n if (isNaN(number)) {\n throw new Error('Given value is NaN');\n }\n return number < Number.MIN_SAFE_INTEGER || number > Number.MAX_SAFE_INTEGER;\n }\n static getFactors(number) {\n if (number === 0) {\n throw new Error('Invalid number. Allowed only non-zero number');\n }\n number = Math.abs(number);\n if (number === 1) {\n return [-number, number];\n }\n const factors = [];\n const root = Math.sqrt(number);\n const isEven = number % 2 === 0;\n const incrementValue = isEven ? 1 : 2;\n for (let currentFactor = 1; currentFactor <= root; currentFactor += incrementValue) {\n if (number % currentFactor !== 0) {\n continue;\n }\n factors.push(...[-currentFactor, currentFactor]);\n const compliment = number / currentFactor;\n if (compliment !== currentFactor) {\n factors.push(...[-compliment, compliment]);\n }\n }\n return factors.sort((a, b) => a - b);\n }\n}\nexports.NumberUtils = NumberUtils;\n","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar __param = (this && this.__param) || function (paramIndex, decorator) {\n return function (target, key) { decorator(target, key, paramIndex); }\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar RandomGenerator_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RandomGenerator = void 0;\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst md5_1 = __importDefault(require(\"md5\"));\nconst chance_1 = require(\"chance\");\nconst IOptions_1 = require(\"../interfaces/options/IOptions\");\nconst ISourceCode_1 = require(\"../interfaces/source-code/ISourceCode\");\nconst Initializable_1 = require(\"../decorators/Initializable\");\nconst AlphabetString_1 = require(\"../constants/AlphabetString\");\nconst AlphabetStringUppercase_1 = require(\"../constants/AlphabetStringUppercase\");\nlet RandomGenerator = RandomGenerator_1 = class RandomGenerator {\n constructor(sourceCode, options) {\n this.sourceCode = sourceCode;\n this.options = options;\n }\n initialize() {\n this.randomGenerator = new chance_1.Chance(this.getRawSeed());\n }\n getMathRandom() {\n return this.getRandomInteger(0, 99999) / 100000;\n }\n getRandomGenerator() {\n return this.randomGenerator;\n }\n getRandomInteger(min, max) {\n return this.getRandomGenerator().integer({\n min: min,\n max: max\n });\n }\n getRandomIntegerExcluding(min, max, valuesToExclude) {\n const valuesToPickArray = [];\n for (let value = min; value <= max; value++) {\n if (valuesToExclude.includes(value)) {\n continue;\n }\n valuesToPickArray.push(value);\n }\n return this.randomGenerator.pickone(valuesToPickArray);\n }\n getRandomString(length, pool = RandomGenerator_1.randomGeneratorPool) {\n return this.getRandomGenerator().string({ length, pool });\n }\n getInputSeed() {\n return this.options.seed.toString();\n }\n getRawSeed() {\n const inputSeed = this.getInputSeed();\n const inputSeedParts = `${inputSeed}`.split('|');\n if (inputSeedParts.length > 1) {\n return inputSeed;\n }\n const sourceCodeMD5Hash = md5_1.default(this.sourceCode.getSourceCode());\n return `${inputSeed}|${sourceCodeMD5Hash}`;\n }\n};\nRandomGenerator.randomGeneratorPool = `${AlphabetString_1.alphabetString}${AlphabetStringUppercase_1.alphabetStringUppercase}`;\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof chance_1.Chance !== \"undefined\" && chance_1.Chance.Chance) === \"function\" ? _a : Object)\n], RandomGenerator.prototype, \"randomGenerator\", void 0);\n__decorate([\n inversify_1.postConstruct(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], RandomGenerator.prototype, \"initialize\", null);\nRandomGenerator = RandomGenerator_1 = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.ISourceCode)),\n __param(1, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IOptions)),\n __metadata(\"design:paramtypes\", [typeof (_b = typeof ISourceCode_1.ISourceCode !== \"undefined\" && ISourceCode_1.ISourceCode) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], RandomGenerator);\nexports.RandomGenerator = RandomGenerator;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringUtils = void 0;\nconst js_string_escape_1 = __importDefault(require(\"js-string-escape\"));\nclass StringUtils {\n static escapeJsString(string) {\n return js_string_escape_1.default(string);\n }\n}\nexports.StringUtils = StringUtils;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Utils = void 0;\nclass Utils {\n static buildVersionMessage(version, buildTimestamp) {\n if (!version || !buildTimestamp) {\n return 'unknown';\n }\n const buildDate = new Date(parseInt(buildTimestamp, 10)).toISOString();\n return `${version}_${buildDate}`;\n }\n static extractDomainFrom(url) {\n let domain;\n if (url.includes('://') || url.indexOf('//') === 0) {\n domain = url.split('/')[2];\n }\n else {\n domain = url.split('/')[0];\n }\n domain = domain.split(':')[0];\n return domain;\n }\n static getIdentifiersPrefixForMultipleSources(identifiersPrefix, sourceCodeIndex) {\n const baseIdentifiersPrefix = !!identifiersPrefix\n ? identifiersPrefix\n : Utils.baseMultipleSourcesIdentifiersPrefix;\n return `${baseIdentifiersPrefix}${sourceCodeIndex}`;\n }\n static makeEnum(enumLikeObject) {\n return Object.freeze(Object.assign({}, enumLikeObject));\n }\n}\nexports.Utils = Utils;\nUtils.baseMultipleSourcesIdentifiersPrefix = 'a';\nUtils.hexadecimalPrefix = '0x';\n","module.exports = require(\"@javascript-obfuscator/escodegen\");;","module.exports = require(\"acorn\");;","module.exports = require(\"chalk\");;","module.exports = require(\"chance\");;","module.exports = require(\"class-validator\");;","module.exports = require(\"eslint-scope\");;","module.exports = require(\"estraverse\");;","module.exports = require(\"eventemitter3\");;","module.exports = require(\"fast-deep-equal\");;","module.exports = require(\"inversify\");;","module.exports = require(\"js-string-escape\");;","module.exports = require(\"md5\");;","module.exports = require(\"reflect-metadata\");;","module.exports = require(\"string-template\");;","module.exports = require(\"stringz\");;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// module exports must be returned from runtime so entry inlining is disabled\n// startup\n// Load entry module and return exports\nreturn __webpack_require__(3254);\n"],"sourceRoot":""}