{"version":3,"sources":["webpack://javascript-obfuscator/./index.cli.ts","webpack://javascript-obfuscator/./src/ASTParserFacade.ts","webpack://javascript-obfuscator/./src/JavaScriptObfuscator.ts","webpack://javascript-obfuscator/./src/JavaScriptObfuscatorCLIFacade.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/cli/JavaScriptObfuscatorCLI.ts","webpack://javascript-obfuscator/./src/cli/sanitizers/ArraySanitizer.ts","webpack://javascript-obfuscator/./src/cli/sanitizers/BooleanSanitizer.ts","webpack://javascript-obfuscator/./src/cli/utils/CLIUtils.ts","webpack://javascript-obfuscator/./src/cli/utils/ObfuscatedCodeWriter.ts","webpack://javascript-obfuscator/./src/cli/utils/SourceCodeReader.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/TInputCLIOptions.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/./src/cli/utils|sync","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 \"commander\"","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 \"fs\"","webpack://javascript-obfuscator/external \"inversify\"","webpack://javascript-obfuscator/external \"js-string-escape\"","webpack://javascript-obfuscator/external \"md5\"","webpack://javascript-obfuscator/external \"mkdirp\"","webpack://javascript-obfuscator/external \"multimatch\"","webpack://javascript-obfuscator/external \"path\"","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","webpack://javascript-obfuscator/webpack/runtime/hasOwnProperty shorthand"],"names":["Object","defineProperty","exports","value","JavaScriptObfuscatorCLIFacade_1","module","JavaScriptObfuscatorCLI","__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","JavaScriptObfuscator","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","JavaScriptObfuscatorCLI_1","argv","javaScriptObfuscatorCLI","initialize","run","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","commander","path","TInputCLIOptions_1","Initializable_1","IdentifierNamesGenerator_1","LoggingPrefix_1","ObfuscationTarget_1","OptionsPreset_1","SourceMapMode_1","StringArrayEncoding_1","StringArrayWrappersType_1","Default_1","ArraySanitizer_1","BooleanSanitizer_1","CLIUtils_1","JavaScriptObfuscatorFacade_1","Logger_1","ObfuscatedCodeWriter_1","SourceCodeReader_1","StringArrayIndexesType_1","rawArguments","inputCLIOptions","filterOptions","configFilePath","configFileLocation","resolve","configFileOptions","CLIUtils","getUserConfig","DEFAULT_PRESET","filteredOptions","option","inputPath","normalize","commands","Command","configureCommands","configureHelp","buildOptions","opts","sourceCodeReader","SourceCodeReader","obfuscatedCodeWriter","ObfuscatedCodeWriter","includes","outputHelp","sourceCodeData","readSourceCode","processSourceCodeData","usage","BooleanSanitizer","parseFloat","ArraySanitizer","stringifyOptionAvailableValues","IdentifierNamesGenerator","HexadecimalIdentifierNamesGenerator","OptionsPreset","Default","SourceMapMode","Separate","StringArrayEncoding","None","StringArrayIndexesType","HexadecimalNumber","parseInt","StringArrayWrappersType","Variable","ObfuscationTarget","Browser","on","console","log","filePath","content","outputCodePath","getOutputCodePath","Logger","colorInfo","LoggingPrefix","CLI","processSourceCode","inputCodePath","sourceCodeIndex","basename","processSourceCodeWithSourceMap","processSourceCodeWithoutSourceMap","writeFile","outputSourceMapPath","getOutputSourceMapPath","sourceMapFileName","sourceMapMode","getSourceMap","availableInputExtensions","encoding","obfuscatedFilePrefix","initializable","CommanderStatic","TInputCLIOptions","String","endsWith","SyntaxError","string","trim","StringSeparator_1","configPath","configFileExtension","extname","allowedConfigFileExtensions","ReferenceError","optionEnum","values","join","StringSeparator","Comma","fs","mkdirp","normalizedFilePath","normalizedRawOutputPath","output","Dot","rawInputPathStats","lstatSync","outputPathExtName","isDirectoryRawInputPath","isDirectory","isDirectoryRawOutputPath","parsedNormalizedFilePath","baseOutputPath","dir","base","normalizedOutputCodePath","parsedOutputCodePath","ext","indexOfLastSeparator","lastIndexOf","sep","sourceMapPath","normalizedSourceMapFilePath","test","outputPath","data","sync","dirname","writeFileSync","multimatch_1","excludePatterns","fileName","isExcludedFilePathByGlobPattern","excludePattern","statSync","isFile","directoryPath","isExcludedPath","readFileSync","isFilePath","isValidFile","exclude","readFile","isDirectoryPath","isValidDirectory","readDirectoryRecursive","availableFilePaths","extension","filesData","readdirSync","fileData","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","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","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","NodeTransformersRunner","IObfuscatedCode","ObfuscatedCode","toFactory","obfuscatedCodeAsString","sourceMapAsString","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","DictionaryIdentifierNamesGenerator_1","HexadecimalIdentifierNamesGenerator_1","MangledIdentifierNamesGenerator_1","MangledShuffledIdentifierNamesGenerator_1","IIdentifierNamesGenerator","DictionaryIdentifierNamesGenerator","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","SingleCallControllerTemplate_1","NodeUtils_1","callsControllerFunctionName","NodeUtils","convertCodeToStructure","ObfuscationEvent","AfterObfuscation","obfuscateTemplate","formatTemplate","SingleCallControllerTemplate","callControllerFunctionName","GlobalVariableNoEvalTemplate","ConsoleOutputDisableTemplate_1","GlobalVariableNoEvalTemplate_1","consoleOutputDisableFunctionName","globalVariableTemplate","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","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","stringArrayStorageItemData","StringUtils","escapeJsString","encodedValue","StringArrayRotateFunctionTemplate_1","stringArrayRotationAmount","timesName","whileFunctionName","StringArrayRotateFunctionTemplate","toHex","getLength","stringArrayEncodingsLength","stringArrayEncoding","stringArrayCallsWrapperCodeHelperName","getStringArrayCallsWrapperCodeHelperName","stringArrayCodeHelper","getStorageName","stringArrayCallsWrapperCodeHelper","getStorageCallsWrapperName","getIndexShiftAmount","stringArrayRotateFunctionCodeHelper","getRotationAmount","rotateStringArray","stringArrayCallsWrapperCodeHelperMap","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","blockStatementBody","shuffledKeys","originalKeysIndexesInShuffledArray","controllerIdentifierName","indexIdentifierName","variableDeclarationNode","variableDeclaratorNode","memberExpressionNode","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","stringArrayIndexNodeFactory","isPositive","normalizedIndex","stringArrayCallsIndexType","stringArrayIndexesType","stringArrayIndexNodeName","stringArrayIndexNodesMap","stringArrayCallIndexNode","replacedLiteral","hexadecimalNode","unaryExpressionNode","decodeKey","rc4KeyLiteralNode","stringArrayRootCallsWrapperParametersCount","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","Node","VisitorDirection","Function","NodeType","ObfuscatingGuardResult","LowObfuscation","MediumObfuscation","HighObfuscation","Inline","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","loggingLevelColor","loggingPrefix","loggingMessage","processedMessage","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","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","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","isGlobalDeclaration","isBubblingDeclaration","variableScope","identifier","identifiers","preserveIdentifierNameForRootLexicalScope","preserveIdentifierNameForLexicalScope","block","blackListGuardsLength","blackListGuards","isUseStrictOperator","obfuscationAllowed","obfuscationEnableCommentRegExp","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","visitedLexicalScopeNodesStackStorage","stringArrayScopeCallsWrapperNamesDataStorage","stringArrayScopeCallsWrapperLexicalScopeDataStorage","stringArrayTransformerCustomNodeFactory","stringArrayWrappersCount","isNodeWithLexicalScopeStatements","onLexicalScopeNodeEnter","onLexicalScopeNodeLeave","lexicalScopeBodyNode","stringArrayScopeCallsWrapperNamesDataByEncoding","stringArrayScopeCallsWrapperLexicalScopeData","callsWrappersParameterIndexesData","stringArrayScopeCallsWrapperParameterIndexes","stringArrayScopeCallsWrapperNamesDataList","stringArrayScopeCallsWrapperNamesData","names","upperStringArrayCallsWrapperShiftedIndex","parameterIndexesData","upperStringArrayCallsWrapperParameterIndexes","getUpperStringArrayCallsWrapperData","stringArrayScopeCallsWrapperNode","getStringArrayScopeCallsWrapperNode","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","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","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","LowObfuscation_1","MediumObfuscation_1","HighObfuscation_1","ValidationErrorsFormatter_1","IsAllowedForObfuscationTargets_1","optionsNormalizer","errors","validateSync","validatorOptions","ValidationErrorsFormatter","optionPresetsMap","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","floor","random","sourceMapFileNameParts","sourceMapFileNamePartsCount","lastPart","stringArrayIndexShift","freeze","fast_deep_equal_1","obfuscationTargets","validationOptions","optionsObject","registerDecorator","validator","validationArguments","defaultValue","defaultMessage","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","encodeURIComponent","match","p1","fromCharCode","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","baseMultipleSourcesIdentifiersPrefix","enumLikeObject","webpackEmptyContext","req","e","require","__webpack_module_cache__","__webpack_require__","moduleId","__webpack_modules__","obj","prop"],"mappings":"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","file":"index.cli.js","sourcesContent":["\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst JavaScriptObfuscatorCLIFacade_1 = require(\"./src/JavaScriptObfuscatorCLIFacade\");\nmodule.exports = JavaScriptObfuscatorCLIFacade_1.JavaScriptObfuscatorCLI;\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JavaScriptObfuscatorCLI = void 0;\nrequire(\"reflect-metadata\");\nconst JavaScriptObfuscatorCLI_1 = require(\"./cli/JavaScriptObfuscatorCLI\");\nclass JavaScriptObfuscatorCLIFacade {\n static obfuscate(argv) {\n const javaScriptObfuscatorCLI = new JavaScriptObfuscatorCLI_1.JavaScriptObfuscatorCLI(argv);\n javaScriptObfuscatorCLI.initialize();\n javaScriptObfuscatorCLI.run();\n }\n}\nexports.JavaScriptObfuscatorCLI = JavaScriptObfuscatorCLIFacade;\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 __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 _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.JavaScriptObfuscatorCLI = void 0;\nconst commander = __importStar(require(\"commander\"));\nconst path = __importStar(require(\"path\"));\nconst TInputCLIOptions_1 = require(\"../types/options/TInputCLIOptions\");\nconst Initializable_1 = require(\"../decorators/Initializable\");\nconst IdentifierNamesGenerator_1 = require(\"../enums/generators/identifier-names-generators/IdentifierNamesGenerator\");\nconst LoggingPrefix_1 = require(\"../enums/logger/LoggingPrefix\");\nconst ObfuscationTarget_1 = require(\"../enums/ObfuscationTarget\");\nconst OptionsPreset_1 = require(\"../enums/options/presets/OptionsPreset\");\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 Default_1 = require(\"../options/presets/Default\");\nconst ArraySanitizer_1 = require(\"./sanitizers/ArraySanitizer\");\nconst BooleanSanitizer_1 = require(\"./sanitizers/BooleanSanitizer\");\nconst CLIUtils_1 = require(\"./utils/CLIUtils\");\nconst JavaScriptObfuscatorFacade_1 = require(\"../JavaScriptObfuscatorFacade\");\nconst Logger_1 = require(\"../logger/Logger\");\nconst ObfuscatedCodeWriter_1 = require(\"./utils/ObfuscatedCodeWriter\");\nconst SourceCodeReader_1 = require(\"./utils/SourceCodeReader\");\nconst Utils_1 = require(\"../utils/Utils\");\nconst StringArrayIndexesType_1 = require(\"../enums/node-transformers/string-array-transformers/StringArrayIndexesType\");\nclass JavaScriptObfuscatorCLI {\n constructor(argv) {\n this.rawArguments = argv;\n this.arguments = argv.slice(2);\n }\n static buildOptions(inputOptions) {\n const inputCLIOptions = JavaScriptObfuscatorCLI.filterOptions(inputOptions);\n const configFilePath = inputOptions.config;\n const configFileLocation = configFilePath ? path.resolve(configFilePath, '.') : '';\n const configFileOptions = configFileLocation ? CLIUtils_1.CLIUtils.getUserConfig(configFileLocation) : {};\n return Object.assign(Object.assign(Object.assign({}, Default_1.DEFAULT_PRESET), configFileOptions), inputCLIOptions);\n }\n static filterOptions(options) {\n const filteredOptions = {};\n Object\n .keys(options)\n .forEach((option) => {\n if (options[option] === undefined) {\n return;\n }\n filteredOptions[option] = options[option];\n });\n return filteredOptions;\n }\n initialize() {\n this.inputPath = path.normalize(this.arguments[0] || '');\n this.commands = (new commander.Command());\n this.configureCommands();\n this.configureHelp();\n this.inputCLIOptions = JavaScriptObfuscatorCLI.buildOptions(this.commands.opts());\n this.sourceCodeReader = new SourceCodeReader_1.SourceCodeReader(this.inputPath, this.inputCLIOptions);\n this.obfuscatedCodeWriter = new ObfuscatedCodeWriter_1.ObfuscatedCodeWriter(this.inputPath, this.inputCLIOptions);\n }\n run() {\n const canShowHelp = !this.arguments.length || this.arguments.includes('--help');\n if (canShowHelp) {\n this.commands.outputHelp();\n return;\n }\n const sourceCodeData = this.sourceCodeReader.readSourceCode();\n this.processSourceCodeData(sourceCodeData);\n }\n configureCommands() {\n this.commands\n .usage(' [options]')\n .version(Utils_1.Utils.buildVersionMessage(process.env.VERSION, process.env.BUILD_TIMESTAMP), '-v, --version')\n .option('-o, --output ', 'Output path for obfuscated code')\n .option('--compact ', 'Disable one line output code compacting', BooleanSanitizer_1.BooleanSanitizer)\n .option('--config ', 'Name of js / json config file')\n .option('--control-flow-flattening ', 'Enables control flow flattening', BooleanSanitizer_1.BooleanSanitizer)\n .option('--control-flow-flattening-threshold ', 'The probability that the control flow flattening transformation will be applied to the node', parseFloat)\n .option('--dead-code-injection ', 'Enables dead code injection', BooleanSanitizer_1.BooleanSanitizer)\n .option('--dead-code-injection-threshold ', 'The probability that the dead code injection transformation will be applied to the node', parseFloat)\n .option('--debug-protection ', 'Disable browser Debug panel (can cause DevTools enabled browser freeze)', BooleanSanitizer_1.BooleanSanitizer)\n .option('--debug-protection-interval ', 'Disable browser Debug panel even after page was loaded (can cause DevTools enabled browser freeze)', BooleanSanitizer_1.BooleanSanitizer)\n .option('--disable-console-output ', 'Allow console.log, console.info, console.error and console.warn messages output into browser console', BooleanSanitizer_1.BooleanSanitizer)\n .option('--domain-lock (comma separated, without whitespaces)', 'Allows to run the obfuscated source code only on specific domains and/or sub-domains (comma separated)', ArraySanitizer_1.ArraySanitizer)\n .option('--exclude (comma separated, without whitespaces)', 'A filename or glob which indicates files to exclude from obfuscation', ArraySanitizer_1.ArraySanitizer)\n .option('--force-transform-strings (comma separated, without whitespaces)', 'Enables force transformation of string literals, which being matched by passed RegExp patterns (comma separated)', ArraySanitizer_1.ArraySanitizer)\n .option('--identifier-names-generator ', 'Sets identifier names generator. ' +\n `Values: ${CLIUtils_1.CLIUtils.stringifyOptionAvailableValues(IdentifierNamesGenerator_1.IdentifierNamesGenerator)}. ` +\n `Default: ${IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator}`)\n .option('--identifiers-prefix ', 'Sets prefix for all global identifiers')\n .option('--identifiers-dictionary (comma separated, without whitespaces)', 'Identifiers dictionary (comma separated) for `--identifier-names-generator dictionary` option', ArraySanitizer_1.ArraySanitizer)\n .option('--ignore-require-imports ', 'Prevents obfuscation of `require` imports', BooleanSanitizer_1.BooleanSanitizer)\n .option('--log ', 'Enables logging of the information to the console', BooleanSanitizer_1.BooleanSanitizer)\n .option('--numbers-to-expressions ', 'Enables numbers conversion to expressions', BooleanSanitizer_1.BooleanSanitizer)\n .option('--options-preset ', 'Allows to set options preset. ' +\n `Values: ${CLIUtils_1.CLIUtils.stringifyOptionAvailableValues(OptionsPreset_1.OptionsPreset)}. ` +\n `Default: ${OptionsPreset_1.OptionsPreset.Default}`)\n .option('--reserved-names (comma separated, without whitespaces)', 'Disables obfuscation and generation of identifiers, which being matched by passed RegExp patterns (comma separated)', ArraySanitizer_1.ArraySanitizer)\n .option('--reserved-strings (comma separated, without whitespaces)', 'Disables transformation of string literals, which being matched by passed RegExp patterns (comma separated)', ArraySanitizer_1.ArraySanitizer)\n .option('--rename-globals ', 'Allows to enable obfuscation of global variable and function names with declaration', BooleanSanitizer_1.BooleanSanitizer)\n .option('--rename-properties ', 'UNSAFE: Enables renaming of property names. This probably WILL break your code', BooleanSanitizer_1.BooleanSanitizer)\n .option('--rotate-string-array ', 'Enable rotation of string array values during obfuscation', BooleanSanitizer_1.BooleanSanitizer)\n .option('--seed ', 'Sets seed for random generator. This is useful for creating repeatable results.', parseFloat)\n .option('--self-defending ', 'Disables self-defending for obfuscated code', BooleanSanitizer_1.BooleanSanitizer)\n .option('--shuffle-string-array ', 'Randomly shuffles string array items', BooleanSanitizer_1.BooleanSanitizer)\n .option('--simplify ', 'Enables additional code obfuscation through simplification', BooleanSanitizer_1.BooleanSanitizer)\n .option('--source-map ', 'Enables source map generation', BooleanSanitizer_1.BooleanSanitizer)\n .option('--source-map-base-url ', 'Sets base url to the source map import url when `--source-map-mode=separate`')\n .option('--source-map-file-name ', 'Sets file name for output source map when `--source-map-mode=separate`')\n .option('--source-map-mode ', 'Specify source map output mode. ' +\n `Values: ${CLIUtils_1.CLIUtils.stringifyOptionAvailableValues(SourceMapMode_1.SourceMapMode)}. ` +\n `Default: ${SourceMapMode_1.SourceMapMode.Separate}`)\n .option('--split-strings ', 'Splits literal strings into chunks with length of `splitStringsChunkLength` option value', BooleanSanitizer_1.BooleanSanitizer)\n .option('--split-strings-chunk-length ', 'Sets chunk length of `splitStrings` option', parseFloat)\n .option('--string-array ', 'Disables gathering of all literal strings into an array and replacing every literal string with an array call', BooleanSanitizer_1.BooleanSanitizer)\n .option('--string-array-encoding (comma separated, without whitespaces)', 'Encodes each string in strings array using base64 or rc4 (this option can slow down your code speed). ' +\n `Values: ${CLIUtils_1.CLIUtils.stringifyOptionAvailableValues(StringArrayEncoding_1.StringArrayEncoding)}. ` +\n `Default: ${StringArrayEncoding_1.StringArrayEncoding.None}`, ArraySanitizer_1.ArraySanitizer)\n .option('--string-array-indexes-type (comma separated, without whitespaces)', 'Encodes each string in strings array using base64 or rc4 (this option can slow down your code speed). ' +\n `Values: ${CLIUtils_1.CLIUtils.stringifyOptionAvailableValues(StringArrayIndexesType_1.StringArrayIndexesType)}. ` +\n `Default: ${StringArrayIndexesType_1.StringArrayIndexesType.HexadecimalNumber}`, ArraySanitizer_1.ArraySanitizer)\n .option('--string-array-index-shift ', 'Enables additional index shift for all string array calls', BooleanSanitizer_1.BooleanSanitizer)\n .option('--string-array-wrappers-count ', 'Sets the count of wrappers for the string array inside each root or function scope', parseInt)\n .option('--string-array-wrappers-chained-calls ', 'Enables the chained calls between string array wrappers', BooleanSanitizer_1.BooleanSanitizer)\n .option('--string-array-wrappers-parameters-max-count ', 'Allows to control the maximum number of string array wrappers parameters', parseInt)\n .option('--string-array-wrappers-type ', 'Allows to select a type of the wrappers that are appending by the `--string-array-wrappers-count` option. ' +\n `Values: ${CLIUtils_1.CLIUtils.stringifyOptionAvailableValues(StringArrayWrappersType_1.StringArrayWrappersType)}. ` +\n `Default: ${StringArrayWrappersType_1.StringArrayWrappersType.Variable}`)\n .option('--string-array-threshold ', 'The probability that the literal string will be inserted into stringArray (Default: 0.8, Min: 0, Max: 1)', parseFloat)\n .option('--target ', 'Allows to set target environment for obfuscated code. ' +\n `Values: ${CLIUtils_1.CLIUtils.stringifyOptionAvailableValues(ObfuscationTarget_1.ObfuscationTarget)}. ` +\n `Default: ${ObfuscationTarget_1.ObfuscationTarget.Browser}`)\n .option('--transform-object-keys ', 'Enables transformation of object keys', BooleanSanitizer_1.BooleanSanitizer)\n .option('--unicode-escape-sequence ', 'Allows to enable/disable string conversion to unicode escape sequence', BooleanSanitizer_1.BooleanSanitizer)\n .parse(this.rawArguments);\n }\n configureHelp() {\n this.commands.on('--help', () => {\n console.log(' Examples:\\n');\n console.log(' %> javascript-obfuscator input_file_name.js --compact true --self-defending false');\n console.log(' %> javascript-obfuscator input_file_name.js --output output_file_name.js --compact true --self-defending false');\n console.log(' %> javascript-obfuscator input_directory_name --compact true --self-defending false');\n console.log('');\n });\n }\n processSourceCodeData(sourceCodeData) {\n sourceCodeData.forEach(({ filePath, content }, index) => {\n const outputCodePath = this.obfuscatedCodeWriter.getOutputCodePath(filePath);\n try {\n Logger_1.Logger.log(Logger_1.Logger.colorInfo, LoggingPrefix_1.LoggingPrefix.CLI, `Obfuscating file: ${filePath}...`);\n this.processSourceCode(content, filePath, outputCodePath, index);\n }\n catch (error) {\n Logger_1.Logger.log(Logger_1.Logger.colorInfo, LoggingPrefix_1.LoggingPrefix.CLI, `Error in file: ${filePath}...`);\n throw error;\n }\n });\n }\n processSourceCode(sourceCode, inputCodePath, outputCodePath, sourceCodeIndex) {\n const options = Object.assign(Object.assign(Object.assign({}, this.inputCLIOptions), { inputFileName: path.basename(inputCodePath) }), sourceCodeIndex !== null && {\n identifiersPrefix: Utils_1.Utils.getIdentifiersPrefixForMultipleSources(this.inputCLIOptions.identifiersPrefix, sourceCodeIndex)\n });\n if (options.sourceMap) {\n this.processSourceCodeWithSourceMap(sourceCode, outputCodePath, options);\n }\n else {\n this.processSourceCodeWithoutSourceMap(sourceCode, outputCodePath, options);\n }\n }\n processSourceCodeWithoutSourceMap(sourceCode, outputCodePath, options) {\n const obfuscatedCode = JavaScriptObfuscatorFacade_1.JavaScriptObfuscator.obfuscate(sourceCode, options).getObfuscatedCode();\n this.obfuscatedCodeWriter.writeFile(outputCodePath, obfuscatedCode);\n }\n processSourceCodeWithSourceMap(sourceCode, outputCodePath, options) {\n var _a;\n const outputSourceMapPath = this.obfuscatedCodeWriter.getOutputSourceMapPath(outputCodePath, (_a = options.sourceMapFileName) !== null && _a !== void 0 ? _a : '');\n options = Object.assign(Object.assign({}, options), { sourceMapFileName: path.basename(outputSourceMapPath) });\n const obfuscatedCode = JavaScriptObfuscatorFacade_1.JavaScriptObfuscator.obfuscate(sourceCode, options);\n this.obfuscatedCodeWriter.writeFile(outputCodePath, obfuscatedCode.getObfuscatedCode());\n if (options.sourceMapMode === SourceMapMode_1.SourceMapMode.Separate && obfuscatedCode.getSourceMap()) {\n this.obfuscatedCodeWriter.writeFile(outputSourceMapPath, obfuscatedCode.getSourceMap());\n }\n }\n}\nJavaScriptObfuscatorCLI.availableInputExtensions = [\n '.js'\n];\nJavaScriptObfuscatorCLI.encoding = 'utf8';\nJavaScriptObfuscatorCLI.obfuscatedFilePrefix = '-obfuscated';\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_a = typeof commander !== \"undefined\" && commander.CommanderStatic) === \"function\" ? _a : Object)\n], JavaScriptObfuscatorCLI.prototype, \"commands\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_b = typeof TInputCLIOptions_1.TInputCLIOptions !== \"undefined\" && TInputCLIOptions_1.TInputCLIOptions) === \"function\" ? _b : Object)\n], JavaScriptObfuscatorCLI.prototype, \"inputCLIOptions\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", String)\n], JavaScriptObfuscatorCLI.prototype, \"inputPath\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_c = typeof SourceCodeReader_1.SourceCodeReader !== \"undefined\" && SourceCodeReader_1.SourceCodeReader) === \"function\" ? _c : Object)\n], JavaScriptObfuscatorCLI.prototype, \"sourceCodeReader\", void 0);\n__decorate([\n Initializable_1.initializable(),\n __metadata(\"design:type\", typeof (_d = typeof ObfuscatedCodeWriter_1.ObfuscatedCodeWriter !== \"undefined\" && ObfuscatedCodeWriter_1.ObfuscatedCodeWriter) === \"function\" ? _d : Object)\n], JavaScriptObfuscatorCLI.prototype, \"obfuscatedCodeWriter\", void 0);\nexports.JavaScriptObfuscatorCLI = JavaScriptObfuscatorCLI;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArraySanitizer = void 0;\nconst ArraySanitizer = (value) => {\n if (value.endsWith(',')) {\n throw new SyntaxError('Multiple values should be wrapped inside quotes: --option-name \\'value1\\',\\'value2\\'');\n }\n return value.split(',').map((string) => string.trim());\n};\nexports.ArraySanitizer = ArraySanitizer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BooleanSanitizer = void 0;\nconst BooleanSanitizer = (value) => {\n return value === 'true' || value === '1';\n};\nexports.BooleanSanitizer = BooleanSanitizer;\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.CLIUtils = void 0;\nconst path = __importStar(require(\"path\"));\nconst StringSeparator_1 = require(\"../../enums/StringSeparator\");\nclass CLIUtils {\n static getUserConfig(configPath) {\n let config;\n const configFileExtension = path.extname(configPath);\n const isValidExtension = CLIUtils.allowedConfigFileExtensions.includes(configFileExtension);\n if (!isValidExtension) {\n throw new ReferenceError('Given config path must be a valid `.js` or `.json` file path');\n }\n try {\n config = require(configPath);\n }\n catch (_a) {\n try {\n config = __non_webpack_require__(configPath);\n }\n catch (_b) {\n throw new ReferenceError(`Cannot open config file with path: ${configPath}`);\n }\n }\n return config;\n }\n static stringifyOptionAvailableValues(optionEnum) {\n return Object.values(optionEnum).join(`${StringSeparator_1.StringSeparator.Comma} `);\n }\n}\nexports.CLIUtils = CLIUtils;\nCLIUtils.allowedConfigFileExtensions = [\n '.js',\n '.json'\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 __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.ObfuscatedCodeWriter = void 0;\nconst fs = __importStar(require(\"fs\"));\nconst mkdirp = __importStar(require(\"mkdirp\"));\nconst path = __importStar(require(\"path\"));\nconst StringSeparator_1 = require(\"../../enums/StringSeparator\");\nconst JavaScriptObfuscatorCLI_1 = require(\"../JavaScriptObfuscatorCLI\");\nclass ObfuscatedCodeWriter {\n constructor(inputPath, options) {\n this.inputPath = path.normalize(inputPath);\n this.options = options;\n }\n getOutputCodePath(filePath) {\n const normalizedFilePath = path.normalize(filePath);\n const normalizedRawOutputPath = this.options.output\n ? path.normalize(this.options.output)\n : null;\n if (!normalizedRawOutputPath) {\n return normalizedFilePath\n .split(StringSeparator_1.StringSeparator.Dot)\n .map((value, index) => {\n return index === 0 ? `${value}${JavaScriptObfuscatorCLI_1.JavaScriptObfuscatorCLI.obfuscatedFilePrefix}` : value;\n })\n .join(StringSeparator_1.StringSeparator.Dot);\n }\n const rawInputPathStats = fs.lstatSync(this.inputPath);\n const outputPathExtName = path.extname(normalizedRawOutputPath);\n const isDirectoryRawInputPath = rawInputPathStats.isDirectory();\n const isDirectoryRawOutputPath = !JavaScriptObfuscatorCLI_1.JavaScriptObfuscatorCLI\n .availableInputExtensions\n .includes(outputPathExtName);\n if (isDirectoryRawInputPath) {\n if (isDirectoryRawOutputPath) {\n const parsedNormalizedFilePath = path.parse(normalizedFilePath);\n const baseOutputPath = path.join(parsedNormalizedFilePath.dir.replace(this.inputPath, ''), parsedNormalizedFilePath.base);\n return path.join(normalizedRawOutputPath, baseOutputPath);\n }\n else {\n throw new Error('Output path for directory obfuscation should be a directory path');\n }\n }\n else {\n if (isDirectoryRawOutputPath) {\n return path.join(normalizedRawOutputPath, path.basename(filePath));\n }\n else {\n return normalizedRawOutputPath;\n }\n }\n }\n getOutputSourceMapPath(outputCodePath, sourceMapFileName = '') {\n if (!outputCodePath) {\n throw new Error('Output code path is empty');\n }\n let normalizedOutputCodePath = path.normalize(outputCodePath);\n let parsedOutputCodePath = path.parse(normalizedOutputCodePath);\n if (!parsedOutputCodePath.ext && !sourceMapFileName) {\n throw new Error('Source map file name should be set when output code path is a directory path');\n }\n if (sourceMapFileName) {\n const indexOfLastSeparator = normalizedOutputCodePath.lastIndexOf(path.sep);\n const sourceMapPath = parsedOutputCodePath.ext && indexOfLastSeparator > 0\n ? normalizedOutputCodePath.slice(0, indexOfLastSeparator)\n : normalizedOutputCodePath;\n const normalizedSourceMapFilePath = sourceMapFileName.replace(/^[a-zA-Z]:\\\\*/, '');\n normalizedOutputCodePath = path.join(sourceMapPath, normalizedSourceMapFilePath);\n }\n if (!/\\.js\\.map$/.test(normalizedOutputCodePath)) {\n parsedOutputCodePath = path.parse(normalizedOutputCodePath);\n const outputCodePathWithoutExtension = path.join(parsedOutputCodePath.dir, parsedOutputCodePath.name);\n normalizedOutputCodePath = `${outputCodePathWithoutExtension}.js.map`;\n }\n else if (/\\.js$/.test(normalizedOutputCodePath)) {\n normalizedOutputCodePath += '.map';\n }\n return normalizedOutputCodePath;\n }\n writeFile(outputPath, data) {\n mkdirp.sync(path.dirname(outputPath));\n fs.writeFileSync(outputPath, data, {\n encoding: JavaScriptObfuscatorCLI_1.JavaScriptObfuscatorCLI.encoding\n });\n }\n}\nexports.ObfuscatedCodeWriter = ObfuscatedCodeWriter;\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.SourceCodeReader = void 0;\nconst fs = __importStar(require(\"fs\"));\nconst path = __importStar(require(\"path\"));\nconst multimatch_1 = __importDefault(require(\"multimatch\"));\nconst JavaScriptObfuscatorCLI_1 = require(\"../JavaScriptObfuscatorCLI\");\nclass SourceCodeReader {\n constructor(inputPath, options) {\n this.inputPath = inputPath;\n this.options = options;\n }\n static isExcludedPath(filePath, excludePatterns = []) {\n if (!excludePatterns.length) {\n return false;\n }\n const fileName = path.basename(filePath);\n const isExcludedFilePathByGlobPattern = !!multimatch_1.default([filePath], excludePatterns).length;\n const isExcludedFilePathByInclusion = excludePatterns.some((excludePattern) => filePath.includes(excludePattern) || fileName.includes(excludePattern));\n return isExcludedFilePathByInclusion || isExcludedFilePathByGlobPattern;\n }\n static isDirectoryPath(filePath) {\n try {\n return fs.statSync(filePath).isDirectory();\n }\n catch (_a) {\n return false;\n }\n }\n static isFilePath(filePath) {\n try {\n return fs.statSync(filePath).isFile();\n }\n catch (_a) {\n return false;\n }\n }\n static isValidDirectory(directoryPath, excludePatterns = []) {\n return !SourceCodeReader.isExcludedPath(directoryPath, excludePatterns);\n }\n static isValidFile(filePath, excludePatterns = []) {\n return JavaScriptObfuscatorCLI_1.JavaScriptObfuscatorCLI.availableInputExtensions.includes(path.extname(filePath))\n && !filePath.includes(JavaScriptObfuscatorCLI_1.JavaScriptObfuscatorCLI.obfuscatedFilePrefix)\n && !SourceCodeReader.isExcludedPath(filePath, excludePatterns);\n }\n static readFile(filePath) {\n return {\n filePath: path.normalize(filePath),\n content: fs.readFileSync(filePath, JavaScriptObfuscatorCLI_1.JavaScriptObfuscatorCLI.encoding)\n };\n }\n readSourceCode() {\n if (SourceCodeReader.isFilePath(this.inputPath)\n && SourceCodeReader.isValidFile(this.inputPath, this.options.exclude)) {\n return [SourceCodeReader.readFile(this.inputPath)];\n }\n if (SourceCodeReader.isDirectoryPath(this.inputPath)\n && SourceCodeReader.isValidDirectory(this.inputPath, this.options.exclude)) {\n return this.readDirectoryRecursive(this.inputPath);\n }\n const availableFilePaths = JavaScriptObfuscatorCLI_1.JavaScriptObfuscatorCLI\n .availableInputExtensions\n .map((extension) => `\\`${extension}\\``)\n .join(', ');\n throw new ReferenceError(`Given input path must be a valid ${availableFilePaths} file or directory path`);\n }\n readDirectoryRecursive(directoryPath, filesData = []) {\n fs.readdirSync(directoryPath, JavaScriptObfuscatorCLI_1.JavaScriptObfuscatorCLI.encoding)\n .forEach((fileName) => {\n const filePath = path.join(directoryPath, fileName);\n if (SourceCodeReader.isDirectoryPath(filePath)\n && SourceCodeReader.isValidDirectory(filePath, this.options.exclude)) {\n filesData.push(...this.readDirectoryRecursive(filePath));\n return;\n }\n if (SourceCodeReader.isFilePath(filePath)\n && SourceCodeReader.isValidFile(filePath, this.options.exclude)) {\n const fileData = SourceCodeReader.readFile(filePath);\n filesData.push(fileData);\n return;\n }\n });\n return filesData;\n }\n}\nexports.SourceCodeReader = SourceCodeReader;\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\";\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","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => [];\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 5285;\nmodule.exports = webpackEmptyContext;","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(\"commander\");;","module.exports = require(\"eslint-scope\");;","module.exports = require(\"estraverse\");;","module.exports = require(\"eventemitter3\");;","module.exports = require(\"fast-deep-equal\");;","module.exports = require(\"fs\");;","module.exports = require(\"inversify\");;","module.exports = require(\"js-string-escape\");;","module.exports = require(\"md5\");;","module.exports = require(\"mkdirp\");;","module.exports = require(\"multimatch\");;","module.exports = require(\"path\");;","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__(7568);\n","__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)"],"sourceRoot":""}