1 |
- {"version":3,"sources":["webpack://JavaScriptObfuscator/webpack/bootstrap","webpack://JavaScriptObfuscator/external \"inversify\"","webpack://JavaScriptObfuscator/./src/container/ServiceIdentifiers.ts","webpack://JavaScriptObfuscator/./src/interfaces/options/IOptions.ts","webpack://JavaScriptObfuscator/./src/interfaces/utils/IRandomGenerator.ts","webpack://JavaScriptObfuscator/./src/node/NodeGuards.ts","webpack://JavaScriptObfuscator/./src/types/container/generators/TIdentifierNamesGeneratorFactory.ts","webpack://JavaScriptObfuscator/./src/node/NodeUtils.ts","webpack://JavaScriptObfuscator/./src/decorators/Initializable.ts","webpack://JavaScriptObfuscator/./src/node/NodeFactory.ts","webpack://JavaScriptObfuscator/./src/interfaces/custom-code-helpers/ICustomCodeHelperFormatter.ts","webpack://JavaScriptObfuscator/./src/enums/node-transformers/NodeTransformationStage.ts","webpack://JavaScriptObfuscator/./src/node-transformers/AbstractNodeTransformer.ts","webpack://JavaScriptObfuscator/external \"estraverse\"","webpack://JavaScriptObfuscator/./src/enums/node-transformers/NodeTransformer.ts","webpack://JavaScriptObfuscator/./src/interfaces/custom-code-helpers/ICustomCodeHelperObfuscator.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/AbstractCustomNode.ts","webpack://JavaScriptObfuscator/./src/container/InversifyContainerFacade.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/AbstractCustomCodeHelper.ts","webpack://JavaScriptObfuscator/./src/node/NodeStatementUtils.ts","webpack://JavaScriptObfuscator/./src/node/NodeMetadata.ts","webpack://JavaScriptObfuscator/./src/types/container/custom-nodes/TControlFlowCustomNodeFactory.ts","webpack://JavaScriptObfuscator/./src/enums/custom-nodes/ControlFlowCustomNode.ts","webpack://JavaScriptObfuscator/./src/node/NodeAppender.ts","webpack://JavaScriptObfuscator/./src/node/NodeLexicalScopeUtils.ts","webpack://JavaScriptObfuscator/./src/enums/ObfuscationTarget.ts","webpack://JavaScriptObfuscator/./src/enums/event-emitters/ObfuscationEvent.ts","webpack://JavaScriptObfuscator/./src/utils/Utils.ts","webpack://JavaScriptObfuscator/./src/enums/custom-code-helpers/CustomCodeHelper.ts","webpack://JavaScriptObfuscator/./src/enums/StringArrayEncoding.ts","webpack://JavaScriptObfuscator/./src/types/container/custom-code-helpers/TCustomCodeHelperFactory.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/AbstractCustomCodeHelperGroup.ts","webpack://JavaScriptObfuscator/external \"@gradecam/tsenum\"","webpack://JavaScriptObfuscator/./src/enums/source-map/SourceMapMode.ts","webpack://JavaScriptObfuscator/./src/interfaces/utils/IEscapeSequenceEncoder.ts","webpack://JavaScriptObfuscator/./src/enums/generators/identifier-names-generators/IdentifierNamesGenerator.ts","webpack://JavaScriptObfuscator/./src/enums/node/NodeType.ts","webpack://JavaScriptObfuscator/./src/interfaces/utils/IArrayUtils.ts","webpack://JavaScriptObfuscator/./src/interfaces/storages/string-array-storage/IStringArrayStorage.ts","webpack://JavaScriptObfuscator/./src/utils/NumberUtils.ts","webpack://JavaScriptObfuscator/./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/obfuscating-transformers/obfuscating-replacers/AbstractObfuscatingReplacer.ts","webpack://JavaScriptObfuscator/./src/options/presets/Default.ts","webpack://JavaScriptObfuscator/./src/enums/StringSeparator.ts","webpack://JavaScriptObfuscator/./src/analyzers/calls-graph-analyzer/callee-data-extractors/AbstractCalleeDataExtractor.ts","webpack://JavaScriptObfuscator/./src/constants/EcmaVersion.ts","webpack://JavaScriptObfuscator/./src/node/NodeLiteralUtils.ts","webpack://JavaScriptObfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/AbstractControlFlowReplacer.ts","webpack://JavaScriptObfuscator/external \"escodegen\"","webpack://JavaScriptObfuscator/./src/custom-code-helpers/common/templates/GlobalVariableNoEvalTemplate.ts","webpack://JavaScriptObfuscator/./src/interfaces/utils/ICryptUtils.ts","webpack://JavaScriptObfuscator/./src/generators/identifier-names-generators/AbstractIdentifierNamesGenerator.ts","webpack://JavaScriptObfuscator/./src/types/container/node-transformers/TIdentifierObfuscatingReplacerFactory.ts","webpack://JavaScriptObfuscator/./src/storages/MapStorage.ts","webpack://JavaScriptObfuscator/./src/JavaScriptObfuscatorFacade.ts","webpack://JavaScriptObfuscator/./src/enums/analyzers/calls-graph-analyzer/CalleeDataExtractor.ts","webpack://JavaScriptObfuscator/./src/enums/code-transformers/CodeTransformer.ts","webpack://JavaScriptObfuscator/./src/utils/AbstractTransformerNamesGroupsBuilder.ts","webpack://JavaScriptObfuscator/./src/enums/code-transformers/CodeTransformationStage.ts","webpack://JavaScriptObfuscator/./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/ControlFlowReplacer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/ExpressionWithOperatorControlFlowReplacer.ts","webpack://JavaScriptObfuscator/./src/ASTParserFacade.ts","webpack://JavaScriptObfuscator/external \"chalk\"","webpack://JavaScriptObfuscator/./src/interfaces/node-transformers/INodeTransformersRunner.ts","webpack://JavaScriptObfuscator/./src/enums/custom-nodes/DeadCodeInjectionCustomNode.ts","webpack://JavaScriptObfuscator/./src/enums/node-transformers/converting-transformers/properties-extractors/ObjectExpressionExtractor.ts","webpack://JavaScriptObfuscator/./src/enums/custom-nodes/ObjectExpressionKeysTransformerCustomNode.ts","webpack://JavaScriptObfuscator/./src/enums/custom-code-helpers/CustomCodeHelperGroup.ts","webpack://JavaScriptObfuscator/./src/interfaces/analyzers/calls-graph-analyzer/IPrevailingKindOfVariablesAnalyzer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/preparing-transformers/obfuscating-guards/ConditionalCommentObfuscatingGuard.ts","webpack://JavaScriptObfuscator/./src/enums/node-transformers/obfuscating-transformers/obfuscating-replacers/LiteralObfuscatingReplacer.ts","webpack://JavaScriptObfuscator/./src/interfaces/analyzers/string-array-storage-analyzer/IStringArrayStorageAnalyzer.ts","webpack://JavaScriptObfuscator/./src/interfaces/node/IScopeIdentifiersTraverser.ts","webpack://JavaScriptObfuscator/external \"class-validator\"","webpack://JavaScriptObfuscator/./src/enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard.ts","webpack://JavaScriptObfuscator/./src/utils/RandomGenerator.ts","webpack://JavaScriptObfuscator/./src/interfaces/utils/ITransformerNamesGroupsBuilder.ts","webpack://JavaScriptObfuscator/external \"reflect-metadata\"","webpack://JavaScriptObfuscator/./src/logger/Logger.ts","webpack://JavaScriptObfuscator/./src/enums/logger/LoggingPrefix.ts","webpack://JavaScriptObfuscator/./src/container/modules/analyzers/AnalyzersModule.ts","webpack://JavaScriptObfuscator/./src/analyzers/calls-graph-analyzer/CallsGraphAnalyzer.ts","webpack://JavaScriptObfuscator/./src/types/container/calls-graph-analyzer/TCalleeDataExtractorFactory.ts","webpack://JavaScriptObfuscator/./src/analyzers/calls-graph-analyzer/callee-data-extractors/FunctionDeclarationCalleeDataExtractor.ts","webpack://JavaScriptObfuscator/./src/analyzers/calls-graph-analyzer/callee-data-extractors/FunctionExpressionCalleeDataExtractor.ts","webpack://JavaScriptObfuscator/./src/analyzers/calls-graph-analyzer/callee-data-extractors/ObjectExpressionCalleeDataExtractor.ts","webpack://JavaScriptObfuscator/./src/analyzers/prevailing-kind-of-variables-analyzer/PrevailingKindOfVariablesAnalyzer.ts","webpack://JavaScriptObfuscator/./src/analyzers/scope-analyzer/ScopeAnalyzer.ts","webpack://JavaScriptObfuscator/external \"eslint-scope\"","webpack://JavaScriptObfuscator/./src/analyzers/string-array-storage-analyzer/StringArrayStorageAnalyzer.ts","webpack://JavaScriptObfuscator/./src/container/modules/code-transformers/CodeTransformersModule.ts","webpack://JavaScriptObfuscator/./src/code-transformers/CodeTransformerNamesGroupsBuilder.ts","webpack://JavaScriptObfuscator/./src/interfaces/utils/ILevelledTopologicalSorter.ts","webpack://JavaScriptObfuscator/./src/code-transformers/preparing-transformers/HashbangOperatorTransformer.ts","webpack://JavaScriptObfuscator/./src/code-transformers/AbstractCodeTransformer.ts","webpack://JavaScriptObfuscator/./src/container/modules/node-transformers/ControlFlowTransformersModule.ts","webpack://JavaScriptObfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/BinaryExpressionControlFlowReplacer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/control-flow-transformers/BlockStatementControlFlowTransformer.ts","webpack://JavaScriptObfuscator/external \"acorn\"","webpack://JavaScriptObfuscator/external \"acorn-import-meta\"","webpack://JavaScriptObfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/CallExpressionControlFlowReplacer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer.ts","webpack://JavaScriptObfuscator/./src/types/container/custom-nodes/TDeadNodeInjectionCustomNodeFactory.ts","webpack://JavaScriptObfuscator/./src/node-transformers/control-flow-transformers/FunctionControlFlowTransformer.ts","webpack://JavaScriptObfuscator/./src/types/container/node-transformers/TControlFlowReplacerFactory.ts","webpack://JavaScriptObfuscator/./src/types/container/node-transformers/TControlFlowStorageFactory.ts","webpack://JavaScriptObfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/LogicalExpressionControlFlowReplacer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/control-flow-transformers/control-flow-replacers/StringLiteralControlFlowReplacer.ts","webpack://JavaScriptObfuscator/./src/container/modules/node-transformers/ConvertingTransformersModule.ts","webpack://JavaScriptObfuscator/./src/node-transformers/converting-transformers/object-expression-extractors/ObjectExpressionToVariableDeclarationExtractor.ts","webpack://JavaScriptObfuscator/./src/types/container/custom-nodes/TObjectExpressionKeysTransformerCustomNodeFactory.ts","webpack://JavaScriptObfuscator/./src/node-transformers/converting-transformers/MemberExpressionTransformer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/converting-transformers/MethodDefinitionTransformer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/converting-transformers/ObjectExpressionKeysTransformer.ts","webpack://JavaScriptObfuscator/./src/types/container/node-transformers/TObjectExpressionExtractorFactory.ts","webpack://JavaScriptObfuscator/./src/node-transformers/converting-transformers/ObjectExpressionTransformer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/converting-transformers/SplitStringTransformer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/converting-transformers/TemplateLiteralTransformer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/converting-transformers/object-expression-extractors/BasePropertiesExtractor.ts","webpack://JavaScriptObfuscator/./src/container/modules/custom-code-helpers/CustomCodeHelpersModule.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/console-output/group/ConsoleOutputCodeHelperGroup.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/debug-protection/group/DebugProtectionCodeHelperGroup.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/domain-lock/group/DomainLockCustomCodeHelperGroup.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/self-defending/group/SelfDefendingCodeHelperGroup.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/group/StringArrayCodeHelperGroup.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/console-output/ConsoleOutputDisableCodeHelper.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/console-output/templates/ConsoleOutputDisableExpressionTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/common/templates/GlobalVariableTemplate1.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/common/templates/GlobalVariableTemplate2.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/CustomCodeHelperFormatter.ts","webpack://JavaScriptObfuscator/external \"string-template\"","webpack://JavaScriptObfuscator/./src/custom-code-helpers/CustomCodeHelperObfuscator.ts","webpack://JavaScriptObfuscator/./src/options/presets/NoCustomNodes.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/debug-protection/DebugProtectionFunctionCallCodeHelper.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/debug-protection/templates/debug-protection-function-call/DebugProtectionFunctionCallTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/debug-protection/DebugProtectionFunctionIntervalCodeHelper.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/debug-protection/templates/debug-protection-function-interval/DebugProtectionFunctionIntervalTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/debug-protection/DebugProtectionFunctionCodeHelper.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/debug-protection/templates/debug-protection-function/DebuggerTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/debug-protection/templates/debug-protection-function/DebuggerTemplateNoEval.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/debug-protection/templates/debug-protection-function/DebugProtectionFunctionTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/domain-lock/DomainLockCodeHelper.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/domain-lock/templates/DomainLockTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/calls-controller/CallsControllerFunctionCodeHelper.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/common/templates/SingleCallControllerTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/self-defending/SelfDefendingUnicodeCodeHelper.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/self-defending/templates/SelfDefendingTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/StringArrayCallsWrapperCodeHelper.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/AtobTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/Rc4Template.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/SelfDefendingTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/StringArrayBase64DecodeTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/StringArrayCallsWrapperTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/templates/string-array-calls-wrapper/StringArrayRC4DecodeTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/StringArrayCodeHelper.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/templates/string-array/StringArrayTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/StringArrayRotateFunctionCodeHelper.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/templates/string-array-rotate-function/SelfDefendingTemplate.ts","webpack://JavaScriptObfuscator/./src/custom-code-helpers/string-array/templates/string-array-rotate-function/StringArrayRotateFunctionTemplate.ts","webpack://JavaScriptObfuscator/./src/container/modules/custom-nodes/CustomNodesModule.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/object-expression-keys-transformer-nodes/ObjectExpressionVariableDeclarationHostNode.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/control-flow-flattening-nodes/BinaryExpressionFunctionNode.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/control-flow-flattening-nodes/BlockStatementControlFlowFlatteningNode.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/dead-code-injection-nodes/BlockStatementDeadCodeInjectionNode.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/CallExpressionControlFlowStorageCallNode.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/control-flow-flattening-nodes/CallExpressionFunctionNode.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ControlFlowStorageNode.ts","webpack://JavaScriptObfuscator/./src/types/storages/TControlFlowStorage.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/ExpressionWithOperatorControlFlowStorageCallNode.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/control-flow-flattening-nodes/LogicalExpressionFunctionNode.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/control-flow-flattening-nodes/control-flow-storage-nodes/StringLiteralControlFlowStorageCallNode.ts","webpack://JavaScriptObfuscator/./src/custom-nodes/control-flow-flattening-nodes/StringLiteralNode.ts","webpack://JavaScriptObfuscator/./src/container/modules/node-transformers/FinalizingTransformersModule.ts","webpack://JavaScriptObfuscator/./src/container/modules/generators/GeneratorsModule.ts","webpack://JavaScriptObfuscator/./src/generators/identifier-names-generators/DictionaryIdentifierNamesGenerator.ts","webpack://JavaScriptObfuscator/./src/generators/identifier-names-generators/HexadecimalIdentifierNamesGenerator.ts","webpack://JavaScriptObfuscator/./src/generators/identifier-names-generators/MangledIdentifierNamesGenerator.ts","webpack://JavaScriptObfuscator/./src/container/modules/node-transformers/InitializingTransformersModule.ts","webpack://JavaScriptObfuscator/./src/node-transformers/initializing-transformers/CommentsTransformer.ts","webpack://JavaScriptObfuscator/./src/container/modules/node/NodeModule.ts","webpack://JavaScriptObfuscator/./src/node/ScopeIdentifiersTraverser.ts","webpack://JavaScriptObfuscator/./src/interfaces/analyzers/scope-analyzer/IScopeAnalyzer.ts","webpack://JavaScriptObfuscator/./src/container/modules/node-transformers/NodeTransformersModule.ts","webpack://JavaScriptObfuscator/./src/node-transformers/NodeTransformerNamesGroupsBuilder.ts","webpack://JavaScriptObfuscator/./src/container/modules/node-transformers/ObfuscatingTransformersModule.ts","webpack://JavaScriptObfuscator/./src/node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/obfuscating-transformers/LabeledStatementTransformer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/obfuscating-transformers/LiteralTransformer.ts","webpack://JavaScriptObfuscator/./src/types/container/node-transformers/TLiteralObfuscatingReplacerFactory.ts","webpack://JavaScriptObfuscator/./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/obfuscating-transformers/ScopeIdentifiersTransformer.ts","webpack://JavaScriptObfuscator/./src/container/modules/options/OptionsModule.ts","webpack://JavaScriptObfuscator/./src/options/Options.ts","webpack://JavaScriptObfuscator/./src/types/options/TInputOptions.ts","webpack://JavaScriptObfuscator/./src/types/options/TStringArrayEncoding.ts","webpack://JavaScriptObfuscator/./src/interfaces/options/IOptionsNormalizer.ts","webpack://JavaScriptObfuscator/./src/options/ValidationErrorsFormatter.ts","webpack://JavaScriptObfuscator/./src/options/validators/IsAllowedForObfuscationTargets.ts","webpack://JavaScriptObfuscator/external \"fast-deep-equal\"","webpack://JavaScriptObfuscator/./src/options/OptionsNormalizer.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/ControlFlowFlatteningThresholdRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/DeadCodeInjectionRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/DeadCodeInjectionThresholdRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/DomainLockRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/InputFileNameRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/SeedRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/SelfDefendingRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/SourceMapBaseUrlRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/SourceMapFileNameRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/SplitStringsChunkLengthRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/StringArrayRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/StringArrayEncodingRule.ts","webpack://JavaScriptObfuscator/./src/options/normalizer-rules/StringArrayThresholdRule.ts","webpack://JavaScriptObfuscator/./src/container/modules/node-transformers/PreparingTransformersModule.ts","webpack://JavaScriptObfuscator/./src/node-transformers/preparing-transformers/obfuscating-guards/BlackListObfuscatingGuard.ts","webpack://JavaScriptObfuscator/./src/node-transformers/preparing-transformers/CustomCodeHelpersTransformer.ts","webpack://JavaScriptObfuscator/./src/types/storages/TCustomCodeHelperGroupStorage.ts","webpack://JavaScriptObfuscator/./src/interfaces/event-emitters/IObfuscationEventEmitter.ts","webpack://JavaScriptObfuscator/./src/interfaces/analyzers/calls-graph-analyzer/ICallsGraphAnalyzer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/preparing-transformers/EvalCallExpressionTransformer.ts","webpack://JavaScriptObfuscator/external \"js-string-escape\"","webpack://JavaScriptObfuscator/./src/node-transformers/preparing-transformers/MetadataTransformer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/preparing-transformers/ObfuscatingGuardsTransformer.ts","webpack://JavaScriptObfuscator/./src/types/container/node-transformers/TObfuscatingGuardFactory.ts","webpack://JavaScriptObfuscator/./src/node-transformers/preparing-transformers/ParentificationTransformer.ts","webpack://JavaScriptObfuscator/./src/node-transformers/preparing-transformers/obfuscating-guards/ReservedStringObfuscatingGuard.ts","webpack://JavaScriptObfuscator/./src/node-transformers/preparing-transformers/VariablePreserveTransformer.ts","webpack://JavaScriptObfuscator/./src/container/modules/storages/StoragesModule.ts","webpack://JavaScriptObfuscator/./src/storages/custom-nodes/ControlFlowStorage.ts","webpack://JavaScriptObfuscator/./src/storages/custom-code-helpers/CustomCodeHelperGroupStorage.ts","webpack://JavaScriptObfuscator/./src/types/container/custom-code-helpers/TCustomCodeHelperGroupFactory.ts","webpack://JavaScriptObfuscator/./src/storages/string-array/StringArrayStorage.ts","webpack://JavaScriptObfuscator/./src/container/modules/utils/UtilsModule.ts","webpack://JavaScriptObfuscator/./src/utils/ArrayUtils.ts","webpack://JavaScriptObfuscator/./src/utils/CryptUtils.ts","webpack://JavaScriptObfuscator/external \"md5\"","webpack://JavaScriptObfuscator/external \"chance\"","webpack://JavaScriptObfuscator/./src/interfaces/source-code/ISourceCode.ts","webpack://JavaScriptObfuscator/./src/utils/EscapeSequenceEncoder.ts","webpack://JavaScriptObfuscator/./src/utils/LevelledTopologicalSorter.ts","webpack://JavaScriptObfuscator/./src/code-transformers/CodeTransformersRunner.ts","webpack://JavaScriptObfuscator/./src/types/container/code-transformers/TCodeTransformerFactory.ts","webpack://JavaScriptObfuscator/./src/JavaScriptObfuscator.ts","webpack://JavaScriptObfuscator/./src/types/container/source-code/TObfuscatedCodeFactory.ts","webpack://JavaScriptObfuscator/./src/interfaces/code-transformers/ICodeTransformersRunner.ts","webpack://JavaScriptObfuscator/./src/interfaces/logger/ILogger.ts","webpack://JavaScriptObfuscator/./src/enums/logger/LoggingMessage.ts","webpack://JavaScriptObfuscator/./src/node-transformers/NodeTransformersRunner.ts","webpack://JavaScriptObfuscator/./src/types/container/node-transformers/TNodeTransformerFactory.ts","webpack://JavaScriptObfuscator/./src/enums/node-transformers/VisitorDirection.ts","webpack://JavaScriptObfuscator/./src/event-emitters/ObfuscationEventEmitter.ts","webpack://JavaScriptObfuscator/external \"eventemitter3\"","webpack://JavaScriptObfuscator/./src/source-code/ObfuscatedCode.ts","webpack://JavaScriptObfuscator/./src/source-code/SourceCode.ts","webpack://JavaScriptObfuscator/./index.ts"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","require","ServiceIdentifiers","NodeType_1","NodeGuards","node","type","NodeType","ArrayPattern","ArrowFunctionExpression","AssignmentExpression","AssignmentPattern","AwaitExpression","BlockStatement","BreakStatement","CallExpression","ClassDeclaration","id","ContinueStatement","ExpressionStatement","ExportNamedDeclaration","isFunctionDeclarationNode","isFunctionExpressionNode","isArrowFunctionExpressionNode","FunctionDeclaration","FunctionExpression","Identifier","ImportDeclaration","ImportSpecifier","parentNode","parentNodeIsLabeledStatementNode","isLabeledStatementNode","label","parentNodeIsContinueStatementNode","isContinueStatementNode","parentNodeIsBreakStatementNode","isBreakStatementNode","LabeledStatement","Literal","MemberExpression","MethodDefinition","undefined","isProgramNode","isFunctionNode","isNodeWithLexicalScope","isBlockStatementNode","nodesWithLexicalStatements","includes","isSwitchCaseNode","Boolean","leadingComments","trailingComments","ObjectPattern","ObjectExpression","Program","Property","RestElement","ReturnStatement","SequenceExpression","Super","SwitchCase","TaggedTemplateExpression","TemplateLiteral","UnaryExpression","isDirectiveNode","directive","VariableDeclaration","VariableDeclarator","WhileStatement","__importStar","this","mod","result","k","escodegen","estraverse","EcmaVersion_1","ASTParserFacade_1","NodeGuards_1","NodeMetadata_1","NodeUtils","literalNode","content","raw","precedence","Precedence","Primary","astTree","parentizeAst","cloneRecursive","code","structure","ASTParserFacade","parse","ecmaVersion","sourceType","replace","enter","parentizeNode","isLiteralNode","addXVerbatimPropertyTo","NodeMetadata","set","ignoredNode","body","reduce","generate","sourceMapWithCode","unaryExpressionNode","isUnaryExpressionNode","argument","getUnaryExpressionArgumentNode","_a","copy","keys","forEach","clonedValue","RegExp","Array","isArray","map","defaultDescriptor","configurable","initializeTargetMetadata","metadataKey","metadataValue","target","Reflect","hasMetadata","defineMetadata","initializable","initializeMethodName","decoratorName","propertyKey","initializeMethod","Error","Set","ownPropertyNames","getOwnPropertyNames","prohibitedPropertyNames","propertyName","initializablePropertiesSet","getMetadata","wrappedMethodsSet","has","methodDescriptor","getOwnPropertyDescriptor","originalMethod","assign","apply","arguments","add","wrapTargetMethodsInInitializedCheck","wrapInitializeMethodInInitializeCheck","initializablePropertyMetadataKey","toString","propertyDescriptor","newVal","wrapInitializableProperty","NodeFactory","metadata","elements","ArrayExpression","operator","left","right","BinaryExpression","callee","args","expression","functionName","params","identifierNode","generator","test","consequent","alternate","IfStatement","specifiers","source","LogicalExpression","computed","properties","kind","method","shorthand","discriminant","cases","SwitchStatement","prefix","argumentExpr","UpdateExpression","declarations","init","NodeTransformationStage","_b","__decorate","decorators","desc","length","decorate","__metadata","v","__param","paramIndex","decorator","inversify_1","ServiceIdentifiers_1","IOptions_1","IRandomGenerator_1","AbstractNodeTransformer","randomGenerator","options","injectable","inject","IRandomGenerator","IOptions","NodeTransformer","_c","_d","TIdentifierNamesGeneratorFactory_1","ICustomCodeHelperFormatter_1","AbstractCustomNode","identifierNamesGeneratorFactory","customCodeHelperFormatter","cachedNode","identifierNamesGenerator","formatStructure","getNodeStructure","Factory__IIdentifierNamesGenerator","ICustomCodeHelperFormatter","TIdentifierNamesGeneratorFactory","AnalyzersModule_1","CodeTransformersModule_1","ControlFlowTransformersModule_1","ConvertingTransformersModule_1","CustomCodeHelpersModule_1","CustomNodesModule_1","FinalizingTransformersModule_1","GeneratorsModule_1","InitializingTransformersModule_1","NodeModule_1","NodeTransformersModule_1","ObfuscatingTransformersModule_1","OptionsModule_1","PreparingTransformersModule_1","StoragesModule_1","UtilsModule_1","CodeTransformersRunner_1","JavaScriptObfuscator_1","Logger_1","NodeTransformersRunner_1","ObfuscationEventEmitter_1","ObfuscatedCode_1","SourceCode_1","InversifyContainerFacade","container","Container","serviceIdentifier","context","bindingName","getNamed","cache","Map","dependencies","cachedDependencies","dependency","index","constructor","named","sourceCode","sourceMap","ISourceCode","toDynamicValue","SourceCode","inSingletonScope","TInputOptions","ILogger","to","Logger","IJavaScriptObfuscator","JavaScriptObfuscator","ICodeTransformersRunner","CodeTransformersRunner","INodeTransformersRunner","NodeTransformersRunner","IObfuscatedCode","ObfuscatedCode","Factory__IObfuscatedCode","toFactory","obfuscatedCodeAsString","sourceMapAsString","obfuscatedCode","initialize","IObfuscationEventEmitter","ObfuscationEventEmitter","load","analyzersModule","codeTransformersModule","controlFlowTransformersModule","convertingTransformersModule","customCodeHelpersModule","customNodesModule","finalizingTransformersModule","generatorsModule","initializingTransformersModule","nodeModule","nodeTransformersModule","obfuscatingTransformersModule","optionsModule","preparingTransformersModule","storagesModule","utilsModule","unbindAll","AbstractCustomCodeHelper_1","_e","ICustomCodeHelperObfuscator_1","GlobalVariableTemplate1_1","GlobalVariableTemplate2_1","AbstractCustomCodeHelper","customCodeHelperObfuscator","codeHelperTemplate","getCodeHelperTemplate","getRandomGenerator","pickone","globalVariableTemplateFunctions","GlobalVariableTemplate1","GlobalVariableTemplate2","ICustomCodeHelperObfuscator","NodeStatementUtils","getParentNodesWithStatementsRecursive","statement","getSiblingStatementByOffset","ReferenceError","isNodeWithStatements","getRootStatementOfNode","getScopeOfNode","maxSize","Infinity","nodesWithStatements","depth","isNodeWithLexicalScopeStatements","push","offset","scopeNode","scopeBody","indexInScope","indexOf","ControlFlowCustomNode","NodeAppender","nodeWithStatements","statements","parentizeScopeStatementsBeforeAppend","setScopeStatements","getScopeStatements","callsGraphData","bodyStatements","targetBlockScope","getOptimalBlockScope","prepend","deep","firstCall","callsGraph","indexInScopeStatement","insertAtIndex","slice","NodeLexicalScopeUtils","getLexicalScopesRecursive","nodesWithLexicalScope","tsenum_1","ObfuscationTarget","MakeEnum","Browser","BrowserNoEval","Node","ObfuscationEvent","Utils","version","buildTimestamp","Date","parseInt","toISOString","url","domain","split","identifiersPrefix","sourceCodeIndex","baseMultipleSourcesIdentifiersPrefix","hexadecimalPrefix","CustomCodeHelper","StringArrayEncoding","Base64","Rc4","AbstractCustomCodeHelperGroup","appendEvent","customCodeHelpers","customCodeHelperName","callback","customCodeHelper","callsGraphLength","getRandomInteger","Math","max","round","SourceMapMode","Inline","Separate","IdentifierNamesGenerator","DictionaryIdentifierNamesGenerator","HexadecimalIdentifierNamesGenerator","MangledIdentifierNamesGenerator","Utils_1","NumberUtils","number","basePart","IdentifierObfuscatingReplacer","AbstractObfuscatingReplacer","IdentifierNamesGenerator_1","ObfuscationTarget_1","SourceMapMode_1","DEFAULT_PRESET","freeze","compact","config","controlFlowFlattening","controlFlowFlatteningThreshold","deadCodeInjection","deadCodeInjectionThreshold","debugProtection","debugProtectionInterval","disableConsoleOutput","domainLock","exclude","identifiersDictionary","inputFileName","log","renameGlobals","reservedNames","reservedStrings","rotateStringArray","seed","selfDefending","shuffleStringArray","sourceMapBaseUrl","sourceMapFileName","sourceMapMode","splitStrings","splitStringsChunkLength","stringArray","stringArrayEncoding","stringArrayThreshold","transformObjectKeys","unicodeEscapeSequence","StringSeparator","AbstractCalleeDataExtractor","NodeLiteralUtils","isPropertyNode","isImportDeclarationNode","AbstractControlFlowReplacer_1","TControlFlowCustomNodeFactory_1","AbstractControlFlowReplacer","controlFlowCustomNodeFactory","replacerDataByControlFlowStorageId","identifierDataByControlFlowStorageId","controlFlowStorageId","storageKeysById","customNode","controlFlowStorage","replacerId","usingExistingIdentifierChance","getStorageId","getStorageKeysByIdForCurrentStorage","storageKeysForCurrentId","getMathRandom","generateStorageKey","getRandomString","getStorage","storageKey","Factory__IControlFlowCustomNode","TControlFlowCustomNodeFactory","GlobalVariableNoEvalTemplate","AbstractIdentifierNamesGenerator","preservedNamesSet","lexicalScopesPreservedNamesMap","lexicalScopeNode","nameLength","generateForGlobalScope","generateForLexicalScope","preservedNamesForLexicalScopeSet","notReservedName","lexicalScopeNodes","isValidIdentifierName","lexicalScope","some","reservedName","exec","Initializable_1","MapStorage","storage","storageId","storageValue","size","mergeId","String","postConstruct","Function","InversifyContainerFacade_1","JavaScriptObfuscatorFacade","inputOptions","inversifyContainerFacade","obfuscate","unload","sourceCodesObject","acc","sourceCodeIdentifier","getIdentifiersPrefixForMultipleSources","sourceCodeOptions","CalleeDataExtractor","CodeTransformer","ILevelledTopologicalSorter_1","AbstractTransformerNamesGroupsBuilder","levelledTopologicalSorter","normalizedTransformers","transformerNames","relationEdges","buildTransformersRelationEdges","precedent","sortByGroups","transformerName","runAfterRelations","runAfter","runAfterRelation","ILevelledTopologicalSorter","CodeTransformationStage","ControlFlowReplacer","ControlFlowCustomNode_1","ExpressionWithOperatorControlFlowReplacer","super","leftExpression","rightExpression","controlFlowStorageCallCustomNode","ExpressionWithOperatorControlFlowStorageCallNode","statementNode","getNode","isExpressionStatementNode","__importDefault","acorn","acorn_import_meta_1","chalk_1","sourceTypeLength","sourceTypes","parseType","error","processParsingError","message","loc","inputConfig","comments","onComment","program","Parser","extend","default","errorMessage","position","line","column","errorLine","startErrorIndex","nearestSymbolsCount","endErrorIndex","min","formattedPointer","colorError","formattedCodeSlice","substring","red","DeadCodeInjectionCustomNode","ObjectExpressionExtractor","ObjectExpressionKeysTransformerCustomNode","CustomCodeHelperGroup","ConditionalCommentObfuscatingGuard_1","ConditionalCommentObfuscatingGuard","obfuscationAllowed","comment","obfuscationEnableCommentRegExp","obfuscationDisableCommentRegExp","isNodeWithComments","checkComments","commentsLength","LiteralObfuscatingReplacer","ObfuscatingGuard","RandomGenerator_1","md5_1","chance_1","ISourceCode_1","RandomGenerator","Chance","getRawSeed","integer","pool","randomGeneratorPool","string","inputSeed","getInputSeed","getSourceCode","LoggingPrefix_1","loggingLevelColor","loggingPrefix","loggingMessage","processedMessage","console","colorInfo","LoggingPrefix","Base","colorSuccess","colorWarn","cyan","green","yellow","CalleeDataExtractor_1","CallsGraphAnalyzer_1","FunctionDeclarationCalleeDataExtractor_1","FunctionExpressionCalleeDataExtractor_1","ObjectExpressionCalleeDataExtractor_1","PrevailingKindOfVariablesAnalyzer_1","ScopeAnalyzer_1","StringArrayStorageAnalyzer_1","ContainerModule","ICallsGraphAnalyzer","CallsGraphAnalyzer","IPrevailingKindOfVariablesAnalyzer","PrevailingKindOfVariablesAnalyzer","IScopeAnalyzer","ScopeAnalyzer","IStringArrayStorageAnalyzer","StringArrayStorageAnalyzer","ICalleeDataExtractor","FunctionDeclarationCalleeDataExtractor","whenTargetNamed","FunctionExpressionCalleeDataExtractor","ObjectExpressionCalleeDataExtractor","Factory__ICalleeDataExtractor","getCacheFactory","TCalleeDataExtractorFactory_1","NodeStatementUtils_1","calleeDataExtractorFactory","blockScopeBodyLength","lastIndex","limitThresholdActivationIndex","limitThresholdActivationLength","limitIndex","limitThreshold","analyzeRecursive","blockScopeBody","getLimitIndex","blockScopeBodyNode","traverse","isCallExpressionNode","getParentNodeWithStatements","VisitorOption","Skip","analyzeCallExpressionNode","callExpressionNode","calleeDataExtractorsList","calleeDataExtractorName","calleeData","extract","TCalleeDataExtractorFactory","AbstractCalleeDataExtractor_1","isIdentifierNode","calleeBlockStatement","getCalleeBlockStatement","targetNode","Break","isVariableDeclaratorNode","propertyNode","nextItemInCallsChain","isTargetPropertyNodeWithIdentifierKey","isTargetPropertyNodeWithLiteralKey","isMemberExpressionNode","objectMembersCallsChain","createObjectMembersCallsChain","functionExpressionName","currentChain","memberExpression","unshift","objectName","shift","isObjectExpressionNode","findCalleeBlockStatement","objectExpressionProperties","isValidTargetPropertyNode","IArrayUtils_1","arrayUtils","prevailingKindOfVariables","defaultKindOfVariables","variableKinds","isVariableDeclarationNode","findMostOccurringElement","IArrayUtils","eslintScope","scopeManager","_f","range","emptyRangeValue","attachMissingRanges","analyze","eslintScopeOptions","scope","acquire","isRootNode","sanitizeScopes","childScopes","childScope","upper","variables","classNameVariable","upperVariable","find","variable","defs","definition","references","optimistic","IStringArrayStorage_1","NodeLiteralUtils_1","stringArrayStorage","stringArrayStorageData","isIgnoredNode","analyzeLiteralNode","isProhibitedLiteralNode","shouldAddValueToStringArray","getOrThrow","minimumLengthForStringArray","IStringArrayStorage","CodeTransformer_1","CodeTransformerNamesGroupsBuilder_1","HashbangOperatorTransformer_1","Factory__ICodeTransformer","ICodeTransformer","ICodeTransformerNamesGroupsBuilder","CodeTransformerNamesGroupsBuilder","HashbangOperatorTransformer","AbstractTransformerNamesGroupsBuilder_1","CodeTransformationStage_1","AbstractCodeTransformer_1","AbstractCodeTransformer","hashbangOperatorLine","codeTransformationStage","PreparingTransformers","removeAndSaveHashbangOperatorLine","FinalizingTransformers","appendSavedHashbangOperatorLine","trim","ControlFlowReplacer_1","NodeTransformer_1","BinaryExpressionControlFlowReplacer_1","BlockStatementControlFlowTransformer_1","CallExpressionControlFlowReplacer_1","DeadCodeInjectionTransformer_1","FunctionControlFlowTransformer_1","LogicalExpressionControlFlowReplacer_1","StringLiteralControlFlowReplacer_1","INodeTransformer","BlockStatementControlFlowTransformer","DeadCodeInjectionTransformer","FunctionControlFlowTransformer","IControlFlowReplacer","BinaryExpressionControlFlowReplacer","CallExpressionControlFlowReplacer","LogicalExpressionControlFlowReplacer","StringLiteralControlFlowReplacer","Factory__IControlFlowReplacer","ExpressionWithOperatorControlFlowReplacer_1","binaryExpressionNode","binaryExpressionFunctionCustomNode","BinaryExpressionFunctionNode","insertCustomNodeToControlFlowStorage","getControlFlowStorageCallNode","NodeTransformationStage_1","AbstractNodeTransformer_1","NodeUtils_1","isBreakOrContinueStatement","isVariableDeclarationWithLetOrConstKind","isClassDeclaration","isClassDeclarationNode","blockStatementNode","canTransform","isWhileStatementNode","isProhibitedStatementNode","nodeTransformationStage","ControlFlowFlattening","leave","transformNode","canTransformBlockStatementNode","blockStatementBody","originalKeys","createWithRange","shuffledKeys","shuffle","originalKeysIndexesInShuffledArray","blockStatementControlFlowFlatteningCustomNode","BlockStatementControlFlowFlatteningNode","newBlockStatementNode","callExpressionFunctionCustomNode","CallExpressionFunctionNode","expressionArguments","CallExpressionControlFlowStorageCallNode","TDeadNodeInjectionCustomNodeFactory_1","INodeTransformersRunner_1","DeadCodeInjectionCustomNode_1","NodeFactory_1","deadCodeInjectionCustomNodeFactory","transformersRunner","deadCodeInjectionRootAstHostNodeSet","collectedBlockStatements","collectedBlockStatementsTotalLength","isAwaitExpressionNode","isSuperNode","slicedBody","hostBlockStatementNode","functionDeclarationName","isScopeHoistedFunctionDeclaration","nestedBlockStatementsCount","isValidBlockStatementNode","maxNestedBlockStatementsCount","isProhibitedNodeInsideCollectedBlockStatement","isScopeHoistingFunctionDeclaration","DeadCodeInjection","analyzeNode","Finalizing","isDeadCodeInjectionRootAstHostNode","restoreNode","programNode","clonedBlockStatementNode","clone","isValidCollectedBlockStatementNode","transformedBlockStatementNode","makeClonedBlockStatementNodeUnique","minCollectedBlockStatementsCount","isValidWrappedBlockStatementNode","maxInteger","randomIndex","randomBlockStatementNode","splice","replaceBlockStatementNode","deadCodeInjectionRootAstHostNode","hostNodeFirstStatement","hostNode","expressionStatementNode","functionExpressionNode","transform","transformersToRenameBlockScopeIdentifiers","Obfuscating","functionDeclarationNode","deadCodeInjectionRootAstHostNodeName","blockStatementDeadCodeInjectionCustomNode","BlockStatementDeadCodeInjectionNode","LabeledStatementTransformer","ScopeIdentifiersTransformer","Factory__IDeadCodeInjectionCustomNode","TDeadNodeInjectionCustomNodeFactory","TControlFlowReplacerFactory_1","TControlFlowStorageFactory_1","NodeAppender_1","controlFlowStorageFactory","controlFlowReplacerFactory","controlFlowData","visitedFunctionNodes","hostNodesWithControlFlowNode","functionNode","getHostNode","getControlFlowStorage","transformFunctionBody","getLength","controlFlowStorageCustomNode","ControlFlowStorageNode","hostControlFlowStorage","mergeWith","functionNodeBody","blockScopesOfNode","getParentNodesWithStatements","pop","hostNodeSearchMinDepth","hostNodeSearchMaxDepth","isVisitedFunctionNode","controlFlowReplacersMap","controlFlowReplacerName","Factory__TControlFlowStorage","TControlFlowStorageFactory","TControlFlowReplacerFactory","logicalExpressionNode","checkForProhibitedExpressions","logicalExpressionFunctionCustomNode","LogicalExpressionFunctionNode","expressionNode","nodeForCheck","literalFunctionCustomNode","StringLiteralNode","StringLiteralControlFlowStorageCallNode","ObjectExpressionExtractor_1","ObjectExpressionToVariableDeclarationExtractor_1","MemberExpressionTransformer_1","MethodDefinitionTransformer_1","ObjectExpressionKeysTransformer_1","ObjectExpressionTransformer_1","SplitStringTransformer_1","TemplateLiteralTransformer_1","BasePropertiesExtractor_1","MemberExpressionTransformer","MethodDefinitionTransformer","ObjectExpressionKeysTransformer","ObjectExpressionTransformer","SplitStringTransformer","TemplateLiteralTransformer","IObjectExpressionExtractor","ObjectExpressionToVariableDeclarationExtractor","BasePropertiesExtractor","Factory__IObjectExpressionExtractor","TObjectExpressionKeysTransformerCustomNodeFactory_1","ObjectExpressionKeysTransformerCustomNode_1","NodeLexicalScopeUtils_1","objectExpressionKeysTransformerCustomNodeFactory","objectExpressionNode","hostStatement","transformObjectExpressionToVariableDeclaration","hostNodeWithStatements","getLexicalScope","newObjectExpressionHostStatement","getObjectExpressionHostNode","statementsToInsert","insertBefore","nodeToReplace","getObjectExpressionIdentifierNode","objectExpressionHostStatement","getObjectExpressionNode","variableDeclarationHostNodeCustomNode","ObjectExpressionVariableDeclarationHostNode","objectExpressionHostNode","newObjectExpressionIdentifierNode","newObjectExpressionNode","Factory__IObjectExpressionKeysTransformerCustomNode","TObjectExpressionKeysTransformerCustomNodeFactory","Converting","memberExpressionNode","isMethodDefinitionNode","methodDefinitionNode","replaceIdentifierKey","replaceLiteralKey","keyNode","ignoredNames","TObjectExpressionExtractorFactory_1","objectExpressionExtractorFactory","isReferencedIdentifierName","isProhibitedSequenceExpression","identifierNamesSet","isCurrentNode","isSequenceExpressionNode","expressions","isProhibitedHostStatement","applyObjectExpressionKeysExtractorsRecursive","objectExpressionExtractorNames","newObjectExpressionExtractorNames","objectExpressionExtractor","TObjectExpressionExtractorFactory","transformComputedProperty","transformBaseProperty","chunkSize","chunksCount","ceil","chunks","nextChunkStartIndex","chunkIndex","substr","firstPassChunksNode","transformLiteralNodeByChunkLength","firstPassChunkLength","chunkLength","stringChunks","chunkString","transformStringChunksToBinaryExpressionNode","firstChunk","secondChunk","initialBinaryExpressionNode","chunk","chunkLiteralNode","isTemplateLiteralNode","isTaggedTemplateExpressionNode","isValidTemplateLiteralNode","templateLiteralNode","templateLiteralExpressions","transformedNode","nodes","quasis","templateElement","cooked","filter","isLiteralNodeWithStringValue","root","propertyKeyNode","isObjectPatternNode","isArrayPatternNode","isAssignmentPatternNode","isRestElementNode","transformObjectExpressionNode","memberExpressionHostNode","expressionStatements","removablePropertyIds","extractPropertiesToExpressionStatements","filterExtractedObjectExpressionProperties","insertAfter","propertiesLength","propertyValue","isProhibitedPattern","propertyKeyName","getPropertyNodeKeyName","memberExpressionProperty","assignmentExpressionNode","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","StringArrayCodeHelper_1","StringArrayRotateFunctionCodeHelper_1","ICustomCodeHelper","ConsoleOutputDisableCodeHelper","ConsoleOutputDisable","DebugProtectionFunctionCallCodeHelper","DebugProtectionFunctionCall","DebugProtectionFunctionIntervalCodeHelper","DebugProtectionFunctionInterval","DebugProtectionFunctionCodeHelper","DebugProtectionFunction","DomainLockCodeHelper","DomainLock","CallsControllerFunctionCodeHelper","CallsControllerFunction","SelfDefendingUnicodeCodeHelper","SelfDefendingUnicode","StringArrayCallsWrapperCodeHelper","StringArrayCallsWrapper","StringArrayCodeHelper","StringArray","StringArrayRotateFunctionCodeHelper","StringArrayRotateFunction","ICustomCodeHelperGroup","ConsoleOutputCodeHelperGroup","ConsoleOutput","DebugProtectionCodeHelperGroup","DebugProtection","DomainLockCustomCodeHelperGroup","SelfDefendingCodeHelperGroup","SelfDefending","StringArrayCodeHelperGroup","Factory__ICustomCodeHelper","getFactory","Factory__ICustomCodeHelperGroup","CustomCodeHelperFormatter","CustomCodeHelperObfuscator","TCustomCodeHelperFactory_1","ObfuscationEvent_1","AbstractCustomCodeHelperGroup_1","customCodeHelperFactory","BeforeObfuscation","randomCallsGraphIndex","getRandomCallsGraphIndex","consoleOutputDisableHostNode","callsControllerHostNode","consoleOutputDisableLexicalScopeNode","consoleOutputDisableFunctionName","callsControllerFunctionName","appendCustomNodeIfExist","consoleOutputDisableExpressionCodeHelper","callsControllerFunctionCodeHelper","TCustomCodeHelperFactory","debugProtectionFunctionCallHostNode","debugProtectionFunctionCallScopeNode","debugProtectionFunctionName","append","programBodyLength","debugProtectionFunctionCodeHelper","debugProtectionFunctionCallCodeHelper","debugProtectionFunctionIntervalCodeHelper","domainLockFunctionHostNode","domainLockFunctionLexicalScopeNode","domainLockFunctionName","generateNext","domainLockCodeHelper","selfDefendingFunctionHostNode","selfDefendingFunctionLexicalScopeNode","selfDefendingFunctionName","selfDefendingUnicodeCodeHelper","AfterObfuscation","stringArrayCodeHelper","stringArrayCallsWrapperCodeHelper","stringArrayRotateFunctionCodeHelper","stringArrayName","getStorageName","stringArrayCallsWrapperName","getStorageCallsWrapperName","stringArrayRotationAmount","getRotationAmount","ConsoleOutputDisableExpressionTemplate_1","GlobalVariableNoEvalTemplate_1","convertCodeToStructure","globalVariableTemplate","getGlobalVariableTemplate","formatTemplate","ConsoleOutputDisableExpressionTemplate","callControllerFunctionName","consoleLogDisableFunctionName","string_template_1","IPrevailingKindOfVariablesAnalyzer_1","prevailingKindOfVariablesAnalyzer","getPrevailingKind","template","mapping","NoCustomNodes_1","JavaScriptObfuscatorFacade_1","additionalOptions","NO_ADDITIONAL_NODES_PRESET","getObfuscatedCode","DebugProtectionFunctionCallTemplate_1","DebugProtectionFunctionCallTemplate","DebugProtectionFunctionIntervalTemplate_1","DebugProtectionFunctionIntervalTemplate","DebuggerTemplate_1","DebuggerTemplateNoEval_1","DebugProtectionFunctionTemplate_1","debuggerTemplate","DebuggerTemplate","DebuggerTemplateNoEval","DebugProtectionFunctionTemplate","ICryptUtils_1","DomainLockTemplate_1","cryptUtils","domainsString","join","hiddenDomainsString","diff","hideString","DomainLockTemplate","domains","ICryptUtils","SingleCallControllerTemplate_1","obfuscateTemplate","SingleCallControllerTemplate","IEscapeSequenceEncoder_1","SelfDefendingTemplate_1","escapeSequenceEncoder","SelfDefendingTemplate","IEscapeSequenceEncoder","StringArrayEncoding_1","AtobTemplate_1","Rc4Template_1","StringArrayBase64DecodeTemplate_1","StringArrayCallsWrapperTemplate_1","StringArrayRC4DecodeTemplate_1","decodeCodeHelperTemplate","getDecodeStringArrayTemplate","preservedNames","StringArrayCallsWrapperTemplate","atobPolyfill","AtobTemplate","decodeStringArrayTemplate","selfDefendingCode","StringArrayRC4DecodeTemplate","rc4Polyfill","Rc4Template","StringArrayBase64DecodeTemplate","rc4BytesIdentifier","statesIdentifier","newStateIdentifier","firstStateIdentifier","secondStateIdentifier","checkStateIdentifier","runStateIdentifier","getStateIdentifier","stateResultIdentifier","encode","initializedIdentifier","base64DecodeFunctionIdentifier","dataIdentifier","rc4Identifier","onceIdentifier","StringArrayTemplate_1","StringArrayTemplate","StringArrayRotateFunctionTemplate_1","NumberUtils_1","timesName","whileFunctionName","StringArrayRotateFunctionTemplate","toHex","Number","ObjectExpressionVariableDeclarationHostNode_1","BinaryExpressionFunctionNode_1","BlockStatementControlFlowFlatteningNode_1","BlockStatementDeadCodeInjectionNode_1","CallExpressionControlFlowStorageCallNode_1","CallExpressionFunctionNode_1","ControlFlowStorageNode_1","ExpressionWithOperatorControlFlowStorageCallNode_1","LogicalExpressionFunctionNode_1","StringLiteralControlFlowStorageCallNode_1","StringLiteralNode_1","Newable__ICustomNode","toConstructor","getConstructorFactory","AbstractCustomNode_1","variableDeclarationName","variableDeclarationNode","variableDeclaratorNode","returnStatementNode","controllerIdentifierName","indexIdentifierName","whileStatementNode","switchStatementNode","updateExpressionNode","isReturnStatementNode","continueStatement","switchCaseNode","breakStatement","random1","random2","leftString","rightString","ifStatementNode","controlFlowStorageName","controlFlowStorageKey","ESTree","Expression","calleeIdentifier","argumentsLength","TControlFlowStorage_1","propertyNodes","from","TControlFlowStorage","leftValue","rightValue","literalValue","DictionaryIdentifierNamesGenerator_1","HexadecimalIdentifierNamesGenerator_1","MangledIdentifierNamesGenerator_1","IIdentifierNamesGenerator","cachedIdentifierNamesGenerator","identifierNameGeneratorFactory","AbstractIdentifierNamesGenerator_1","getInitialIdentifierNames","identifiersIterator","values","identifierName","newIdentifierName","isSuccess","character","toUpperCase","toLowerCase","generateNewDictionaryName","preserveName","identifierNameWithPrefix","lexicalScopes","getLexicalScopes","isValidIdentifierNameInLexicalScopes","preserveNameForLexicalScope","iteratorResult","next","done","getIncrementedIdentifierNames","identifierNames","formattedIdentifierNames","incrementIdentifierName","randomInteger","hexadecimalNumber","prefixLength","baseNameLength","baseIdentifierNameLength","previousMangledName","initMangledNameCharacter","generateNewMangledName","getLastMangledNameForScopes","lastMangledNameInScopeMap","mangledName","reservedNamesSet","newMangledName","nameSequence","nameSequenceLength","zeroSequence","num","repeat","indexInSequence","lastMangledName","CommentsTransformer_1","CommentsTransformer","Initializing","rootNode","transformComments","isFirstNode","commentIdx","findIndex","reverse","preservedWords","preservedWord","isConditionalComment","ScopeIdentifiersTraverser_1","IScopeIdentifiersTraverser","ScopeIdentifiersTraverser","IScopeAnalyzer_1","scopeAnalyzer","globalScope","acquireScope","traverseScopeVariables","rootScope","currentScope","variableScope","variableLexicalScopeNode","isNodeWithBlockLexicalScope","block","isGlobalDeclaration","globalScopeNames","argumentsVariableName","isBubblingDeclaration","identifiers","identifier","NodeTransformerNamesGroupsBuilder_1","Factory__INodeTransformer","INodeTransformerNamesGroupsBuilder","NodeTransformerNamesGroupsBuilder","IdentifierObfuscatingReplacer_1","LiteralObfuscatingReplacer_1","BaseIdentifierObfuscatingReplacer_1","BooleanLiteralObfuscatingReplacer_1","LabeledStatementTransformer_1","LiteralTransformer_1","NumberLiteralObfuscatingReplacer_1","StringLiteralObfuscatingReplacer_1","ScopeIdentifiersTransformer_1","LiteralTransformer","IObfuscatingReplacer","BooleanLiteralObfuscatingReplacer","NumberLiteralObfuscatingReplacer","StringLiteralObfuscatingReplacer","IIdentifierObfuscatingReplacer","BaseIdentifierObfuscatingReplacer","Factory__IObfuscatingReplacer","Factory__IIdentifierObfuscatingReplacer","AbstractObfuscatingReplacer_1","blockScopesMap","namesMap","isReservedName","getFalseUnaryExpressionNode","arrayExpressionNode","getTrueUnaryExpressionNode","TIdentifierObfuscatingReplacerFactory_1","identifierObfuscatingReplacerFactory","identifierObfuscatingReplacer","labeledStatementNode","storeLabeledStatementName","replaceLabeledStatementName","storeLocalName","isLabelIdentifierNode","newIdentifier","TIdentifierObfuscatingReplacerFactory","TLiteralObfuscatingReplacerFactory_1","IStringArrayStorageAnalyzer_1","literalObfuscatingReplacerFactory","stringArrayStorageAnalyzer","isReplacedLiteral","encodeLiteralNodeToEscapeSequence","newLiteralNode","TLiteralObfuscatingReplacerFactory","numberLiteralCache","rawValue","isCeil","nodesCache","hexadecimalIndex","hexadecimalLiteralNode","replacedLiteral","rc4KeyLiteralNode","shuffleStorage","rotateStorage","stringArrayStorageItemData","getItemDataForLiteralNode","cacheKey","resultNode","replaceWithStringArrayCallNode","replaceWithLiteralNode","decodeKey","callExpressionArgs","getHexadecimalLiteralNode","getRc4KeyLiteralNode","stringArrayIdentifierNode","IScopeIdentifiersTraverser_1","scopeIdentifiersTraverser","lexicalScopesWithObjectPatternWithoutDeclarationMap","data","every","transformScopeVariableIdentifiers","firstIdentifier","isReplaceableIdentifierNode","storeIdentifierName","replaceIdentifierName","storeGlobalName","reference","isProhibitedPropertyNode","isProhibitedClassDeclarationNameIdentifierNode","isProhibitedExportNamedClassDeclarationIdentifierNode","isProhibitedExportNamedFunctionDeclarationIdentifierNode","isProhibitedExportNamedVariableDeclarationIdentifierNode","isProhibitedImportSpecifierNode","isProhibitedVariableNameUsedInObjectPatternNode","isExportNamedDeclarationNode","isImportSpecifierNode","imported","local","isProhibitedPropertyIdentifier","isProhibitedPropertyAssignmentPatternIdentifier","isLexicalScopeHasObjectPatternWithoutDeclaration","isProhibitedVariableDeclaration","isAssignmentExpressionNode","Options_1","OptionsNormalizer_1","Options","IOptionsNormalizer","OptionsNormalizer","class_validator_1","TInputOptions_1","TStringArrayEncoding_1","IOptionsNormalizer_1","Default_1","ValidationErrorsFormatter_1","IsAllowedForObfuscationTargets_1","optionsNormalizer","errors","validateSync","validatorOptions","ValidationErrorsFormatter","format","normalize","validationError","IsBoolean","IsNumber","Min","Max","IsArray","ArrayUnique","IsString","each","IsAllowedForObfuscationTargets","IsIn","TypeFromEnum","ValidateIf","ArrayNotEmpty","IsUrl","require_protocol","require_tld","require_valid_protocol","TStringArrayEncoding","errorMessages","formatWithNestedConstraints","constraints","constraint","fast_deep_equal_1","StringSeparator_1","obfuscationTargets","validationOptions","optionsObject","registerDecorator","validator","validationArguments","defaultValue","defaultMessage","Comma","ControlFlowFlatteningThresholdRule_1","DeadCodeInjectionRule_1","DeadCodeInjectionThresholdRule_1","DomainLockRule_1","InputFileNameRule_1","SeedRule_1","SelfDefendingRule_1","SourceMapBaseUrlRule_1","SourceMapFileNameRule_1","SplitStringsChunkLengthRule_1","StringArrayRule_1","StringArrayEncodingRule_1","StringArrayThresholdRule_1","normalizedOptions","normalizerRule","normalizerRules","ControlFlowFlatteningThresholdRule","DeadCodeInjectionRule","DeadCodeInjectionThresholdRule","DomainLockRule","InputFileNameRule","SeedRule","SelfDefendingRule","SourceMapBaseUrlRule","SourceMapFileNameRule","SplitStringsChunkLengthRule","StringArrayRule","StringArrayEncodingRule","StringArrayThresholdRule","normalizedDomains","extractDomainFrom","Dot","floor","random","endsWith","sourceMapFileNameParts","sourceMapFileNamePartsCount","lastPart","ObfuscatingGuard_1","BlackListObfuscatingGuard_1","CustomCodeHelpersTransformer_1","EvalCallExpressionTransformer_1","MetadataTransformer_1","ObfuscatingGuardsTransformer_1","ParentificationTransformer_1","ReservedStringObfuscatingGuard_1","VariablePreserveTransformer_1","CustomCodeHelpersTransformer","EvalCallExpressionTransformer","MetadataTransformer","ObfuscatingGuardsTransformer","ParentificationTransformer","INodeGuard","BlackListObfuscatingGuard","ReservedStringObfuscatingGuard","VariablePreserveTransformer","Factory__INodeGuard","blackListGuardsLength","blackListGuards","isUseStrictOperator","TCustomCodeHelperGroupStorage_1","IObfuscationEventEmitter_1","ICallsGraphAnalyzer_1","callsGraphAnalyzer","obfuscationEventEmitter","customCodeHelperGroupStorage","Preparing","appendCustomNodesBeforeObfuscation","appendCustomNodesAfterObfuscation","customCodeHelperGroup","once","getAppendEvent","appendNodes","emit","TCustomNodeGroupStorage","TCustomCodeHelperGroupStorage","js_string_escape_1","evalRootAstHostNodeSet","extractEvalStringFromLiteralNode","extractEvalStringFromTemplateLiteralNode","isEvalRootAstHostNode","callExpressionFirstArgument","evalString","extractEvalStringFromCallExpressionArgument","ast","evalRootAstHostNode","targetAst","convertStructureToCode","TObfuscatingGuardFactory_1","obfuscatingGuardFactory","obfuscatingGuards","obfuscatingGuardsList","nodeGuard","check","TObfuscatingGuardFactory","isReservedString","reservedString","preserveScopeVariableIdentifiers","preserveIdentifierNameForRootLexicalScope","preserveIdentifierNameForLexicalScope","ControlFlowStorage_1","CustomCodeHelperGroupStorage_1","StringArrayStorage_1","CustomCodeHelperGroupStorage","StringArrayStorage","Newable__TControlFlowStorage","ControlFlowStorage","MapStorage_1","TCustomCodeHelperGroupFactory_1","customCodeHelperGroupFactory","customCodeHelperGroupsList","customCodeHelperGroupName","TCustomCodeHelperGroupFactory","rc4EncodedValuesSourcesCache","rotationAmount","rc4Keys","rc4KeyLength","rc4KeysCount","minimumRotationAmount","maximumRotationAmount","getOrSetIfDoesNotExist","stringArrayStorageName","stringArrayNameLength","stringArrayStorageCallsWrapperName","rotate","entries","sort","stringArrayStorageItemDataA","stringArrayStorageItemDataB","encodedValue","getEncodedValue","storedStringArrayStorageItemData","btoa","rc4","encodedValueSources","encodedValueSourcesLength","ArrayUtils_1","CryptUtils_1","EscapeSequenceEncoder_1","LevelledTopologicalSorter_1","ArrayUtils","CryptUtils","EscapeSequenceEncoder","LevelledTopologicalSorter","array","elementsMap","mostOccurringElement","mostOccurringElementCount","element","updatedElementCount","times","newArray","temp","shuffledArray","j","output","encodeURIComponent","match","p1","fromCharCode","charCode","idx","charAt","charCodeAt","str","randomStringDiff","randomStringDiffArray","s1","s2","i1","i2","randomMerge","x","y","stringsCache","encodeAllSymbols","replaceRegExp","escapeSequenceRegExp","regExp","graph","link","register","consequents","results","marks","visit","resultItemsGroups","hasNodes","rootNodes","findRootNodes","delete","getPrecedents","precedentsGroups","precedentsGroup","hasPrecedents","precedents","mark","TCodeTransformerFactory_1","ITransformerNamesGroupsBuilder_1","codeTransformerFactory","codeTransformerNamesGroupsBuilder","codeTransformerNames","normalizedCodeTransformers","buildNormalizedCodeTransformers","codeTransformerNamesGroups","build","nodeTransformerNamesGroup","nodeTransformerName","transformCode","codeTransformerName","codeTransformer","TCodeTransformerFactory","ITransformerNamesGroupsBuilder","TObfuscatedCodeFactory_1","ICodeTransformersRunner_1","ILogger_1","LoggingMessage_1","codeTransformersRunner","nodeTransformersRunner","obfuscatedCodeFactory","logger","timeStart","now","info","LoggingMessage","Version","buildVersionMessage","ObfuscationStarted","RandomGeneratorSeed","runCodeTransformationStage","parseCode","obfuscatedAstTree","transformAstTree","generatorOutput","generateCode","obfuscationTime","success","ObfuscationCompleted","parseOptions","runNodeTransformationStage","warn","EmptySourceCode","escodegenParams","sourceContent","codeTransformersList","nodeTransformersList","allowHashBang","allowImportExportEverywhere","allowReturnOutsideFunction","locations","ranges","verbatim","TObfuscatedCodeFactory","TNodeTransformerFactory_1","VisitorDirection_1","nodeTransformerFactory","nodeTransformerNamesGroupsBuilder","nodeTransformerNames","normalizedNodeTransformers","buildNormalizedNodeTransformers","nodeTransformerNamesGroups","enterVisitors","leaveVisitors","visitor","getVisitor","mergeVisitorsForDirection","VisitorDirection","Enter","Leave","nodeTransformer","visitors","direction","visitorsLength","visitorFunction","visitorResult","isNode","TNodeTransformerFactory","eventemitter3_1","correctObfuscatedCode","sourceMapUrl","sourceMappingUrl"],"mappings":"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","file":"index.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 258);\n","module.exports = require(\"inversify\");","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ServiceIdentifiers;\n(function (ServiceIdentifiers) {\n ServiceIdentifiers[\"Factory__ICalleeDataExtractor\"] = \"Factory<ICalleeDataExtractor>\";\n ServiceIdentifiers[\"Factory__ICodeTransformer\"] = \"Factory<ICodeTransformer[]>\";\n ServiceIdentifiers[\"Factory__IControlFlowCustomNode\"] = \"Factory<IControlFlowCustomNode>\";\n ServiceIdentifiers[\"Factory__IControlFlowReplacer\"] = \"Factory<IControlFlowReplacer>\";\n ServiceIdentifiers[\"Factory__ICustomCodeHelper\"] = \"Factory<ICustomCodeHelper>\";\n ServiceIdentifiers[\"Factory__ICustomCodeHelperGroup\"] = \"Factory<ICustomCodeHelperGroup>\";\n ServiceIdentifiers[\"Factory__IDeadCodeInjectionCustomNode\"] = \"Factory<IDeadCodeInjectionCustomNode>\";\n ServiceIdentifiers[\"Factory__IIdentifierNamesGenerator\"] = \"Factory<IIdentifierNamesGenerator>\";\n ServiceIdentifiers[\"Factory__IIdentifierObfuscatingReplacer\"] = \"Factory<IIdentifierObfuscatingReplacer>\";\n ServiceIdentifiers[\"Factory__INodeGuard\"] = \"Factory<INodeGuard>\";\n ServiceIdentifiers[\"Factory__INodeTransformer\"] = \"Factory<INodeTransformer[]>\";\n ServiceIdentifiers[\"Factory__IObfuscatedCode\"] = \"Factory<IObfuscatedCode>\";\n ServiceIdentifiers[\"Factory__IObfuscatingReplacer\"] = \"Factory<IObfuscatingReplacer>\";\n ServiceIdentifiers[\"Factory__IObjectExpressionKeysTransformerCustomNode\"] = \"Factory<IObjectExpressionKeysTransformerCustomNode>\";\n ServiceIdentifiers[\"Factory__IObjectExpressionExtractor\"] = \"Factory<IObjectExpressionExtractor>\";\n ServiceIdentifiers[\"Factory__TControlFlowStorage\"] = \"Factory<TControlFlowStorage>\";\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[\"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[\"IIdentifierObfuscatingReplacer\"] = \"IIdentifierObfuscatingReplacer\";\n ServiceIdentifiers[\"IJavaScriptObfuscator\"] = \"IJavaScriptObfuscator\";\n ServiceIdentifiers[\"ILevelledTopologicalSorter\"] = \"ILevelledTopologicalSorter\";\n ServiceIdentifiers[\"ILogger\"] = \"ILogger\";\n ServiceIdentifiers[\"INodeGuard\"] = \"INodeGuard\";\n ServiceIdentifiers[\"INodeTransformer\"] = \"INodeTransformer\";\n ServiceIdentifiers[\"INodeTransformerNamesGroupsBuilder\"] = \"INodeTransformerNamesGroupsBuilder\";\n ServiceIdentifiers[\"IObfuscationEventEmitter\"] = \"IObfuscationEventEmitter\";\n ServiceIdentifiers[\"IObfuscatedCode\"] = \"IObfuscatedCode\";\n ServiceIdentifiers[\"IOptions\"] = \"IOptions\";\n ServiceIdentifiers[\"IOptionsNormalizer\"] = \"IOptionsNormalizer\";\n ServiceIdentifiers[\"IObfuscatingReplacer\"] = \"IObfuscatingReplacer\";\n ServiceIdentifiers[\"IPrevailingKindOfVariablesAnalyzer\"] = \"IPrevailingKindOfVariablesAnalyzer\";\n ServiceIdentifiers[\"IObjectExpressionExtractor\"] = \"IObjectExpressionExtractor\";\n ServiceIdentifiers[\"IRandomGenerator\"] = \"IRandomGenerator\";\n ServiceIdentifiers[\"IScopeIdentifiersTraverser\"] = \"IScopeIdentifiersTraverser\";\n ServiceIdentifiers[\"ISourceCode\"] = \"ISourceCode\";\n ServiceIdentifiers[\"IScopeAnalyzer\"] = \"IScopeAnalyzer\";\n ServiceIdentifiers[\"IStringArrayStorage\"] = \"IStringArrayStorage\";\n ServiceIdentifiers[\"IStringArrayStorageAnalyzer\"] = \"IStringArrayStorageAnalyzer\";\n ServiceIdentifiers[\"INodeTransformersRunner\"] = \"INodeTransformersRunner\";\n ServiceIdentifiers[\"Newable__ICustomNode\"] = \"Newable<ICustomNode>\";\n ServiceIdentifiers[\"Newable__TControlFlowStorage\"] = \"Newable<TControlFlowStorage>\";\n ServiceIdentifiers[\"TCustomNodeGroupStorage\"] = \"TCustomNodeGroupStorage\";\n ServiceIdentifiers[\"TInputOptions\"] = \"TInputOptions\";\n})(ServiceIdentifiers = exports.ServiceIdentifiers || (exports.ServiceIdentifiers = {}));\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 });\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 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 isExportNamedDeclarationNode(node) {\n return node.type === NodeType_1.NodeType.ExportNamedDeclaration;\n }\n static isExpressionStatementNode(node) {\n return node.type === NodeType_1.NodeType.ExpressionStatement\n && !('directive' in node);\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 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 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}\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 });\n","\"use strict\";\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst escodegen = __importStar(require(\"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 if (property === 'parentNode') {\n return;\n }\n const value = node[property];\n let clonedValue;\n if (value === null || value instanceof RegExp) {\n clonedValue = value;\n }\n else if (Array.isArray(value)) {\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 = [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.includes(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\";\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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst escodegen = __importStar(require(\"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 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 = []) {\n return {\n type: NodeType_1.NodeType.CallExpression,\n callee,\n arguments: args,\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 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) {\n return {\n type: NodeType_1.NodeType.MemberExpression,\n computed,\n object,\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 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 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 });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar NodeTransformationStage;\n(function (NodeTransformationStage) {\n NodeTransformationStage[\"Initializing\"] = \"Initializing\";\n NodeTransformationStage[\"Preparing\"] = \"Preparing\";\n NodeTransformationStage[\"DeadCodeInjection\"] = \"DeadCodeInjection\";\n NodeTransformationStage[\"ControlFlowFlattening\"] = \"ControlFlowFlattening\";\n NodeTransformationStage[\"Converting\"] = \"Converting\";\n NodeTransformationStage[\"Obfuscating\"] = \"Obfuscating\";\n NodeTransformationStage[\"Finalizing\"] = \"Finalizing\";\n})(NodeTransformationStage = exports.NodeTransformationStage || (exports.NodeTransformationStage = {}));\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 });\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","module.exports = require(\"estraverse\");","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar NodeTransformer;\n(function (NodeTransformer) {\n NodeTransformer[\"BlockStatementControlFlowTransformer\"] = \"BlockStatementControlFlowTransformer\";\n NodeTransformer[\"CommentsTransformer\"] = \"CommentsTransformer\";\n NodeTransformer[\"CustomCodeHelpersTransformer\"] = \"CustomCodeHelpersTransformer\";\n NodeTransformer[\"DeadCodeInjectionTransformer\"] = \"DeadCodeInjectionTransformer\";\n NodeTransformer[\"EvalCallExpressionTransformer\"] = \"EvalCallExpressionTransformer\";\n NodeTransformer[\"FunctionControlFlowTransformer\"] = \"FunctionControlFlowTransformer\";\n NodeTransformer[\"LabeledStatementTransformer\"] = \"LabeledStatementTransformer\";\n NodeTransformer[\"LiteralTransformer\"] = \"LiteralTransformer\";\n NodeTransformer[\"MemberExpressionTransformer\"] = \"MemberExpressionTransformer\";\n NodeTransformer[\"MetadataTransformer\"] = \"MetadataTransformer\";\n NodeTransformer[\"MethodDefinitionTransformer\"] = \"MethodDefinitionTransformer\";\n NodeTransformer[\"ObfuscatingGuardsTransformer\"] = \"ObfuscatingGuardsTransformer\";\n NodeTransformer[\"ObjectExpressionKeysTransformer\"] = \"ObjectExpressionKeysTransformer\";\n NodeTransformer[\"ObjectExpressionTransformer\"] = \"ObjectExpressionTransformer\";\n NodeTransformer[\"ParentificationTransformer\"] = \"ParentificationTransformer\";\n NodeTransformer[\"ScopeIdentifiersTransformer\"] = \"ScopeIdentifiersTransformer\";\n NodeTransformer[\"SplitStringTransformer\"] = \"SplitStringTransformer\";\n NodeTransformer[\"TemplateLiteralTransformer\"] = \"TemplateLiteralTransformer\";\n NodeTransformer[\"VariablePreserveTransformer\"] = \"VariablePreserveTransformer\";\n})(NodeTransformer = exports.NodeTransformer || (exports.NodeTransformer = {}));\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, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 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 ObfuscatingTransformersModule_1 = require(\"./modules/node-transformers/ObfuscatingTransformersModule\");\nconst OptionsModule_1 = require(\"./modules/options/OptionsModule\");\nconst PreparingTransformersModule_1 = require(\"./modules/node-transformers/PreparingTransformersModule\");\nconst StoragesModule_1 = require(\"./modules/storages/StoragesModule\");\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(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(ObfuscatingTransformersModule_1.obfuscatingTransformersModule);\n this.container.load(OptionsModule_1.optionsModule);\n this.container.load(PreparingTransformersModule_1.preparingTransformersModule);\n this.container.load(StoragesModule_1.storagesModule);\n this.container.load(UtilsModule_1.utilsModule);\n }\n unload() {\n this.container.unbindAll();\n }\n}\nexports.InversifyContainerFacade = InversifyContainerFacade;\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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 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 });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\nconst tsenum_1 = require(\"@gradecam/tsenum\");\nexports.ObfuscationTarget = tsenum_1.MakeEnum({\n Browser: 'browser',\n BrowserNoEval: 'browser-no-eval',\n Node: 'node'\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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}\nexports.Utils = Utils;\nUtils.baseMultipleSourcesIdentifiersPrefix = 'a';\nUtils.hexadecimalPrefix = '0x';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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[\"StringArrayCallsWrapper\"] = \"StringArrayCallsWrapper\";\n CustomCodeHelper[\"StringArray\"] = \"StringArray\";\n CustomCodeHelper[\"StringArrayRotateFunction\"] = \"StringArrayRotateFunction\";\n})(CustomCodeHelper = exports.CustomCodeHelper || (exports.CustomCodeHelper = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tsenum_1 = require(\"@gradecam/tsenum\");\nexports.StringArrayEncoding = tsenum_1.MakeEnum({\n Base64: 'base64',\n Rc4: 'rc4'\n});\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, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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","module.exports = require(\"@gradecam/tsenum\");","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tsenum_1 = require(\"@gradecam/tsenum\");\nexports.SourceMapMode = tsenum_1.MakeEnum({\n Inline: 'inline',\n Separate: 'separate'\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tsenum_1 = require(\"@gradecam/tsenum\");\nexports.IdentifierNamesGenerator = tsenum_1.MakeEnum({\n DictionaryIdentifierNamesGenerator: 'dictionary',\n HexadecimalIdentifierNamesGenerator: 'hexadecimal',\n MangledIdentifierNamesGenerator: 'mangled'\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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[\"ClassDeclaration\"] = \"ClassDeclaration\";\n NodeType[\"ConditionalExpression\"] = \"ConditionalExpression\";\n NodeType[\"ContinueStatement\"] = \"ContinueStatement\";\n NodeType[\"ExportNamedDeclaration\"] = \"ExportNamedDeclaration\";\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[\"Super\"] = \"Super\";\n NodeType[\"SwitchCase\"] = \"SwitchCase\";\n NodeType[\"SwitchStatement\"] = \"SwitchStatement\";\n NodeType[\"TaggedTemplateExpression\"] = \"TaggedTemplateExpression\";\n NodeType[\"TemplateLiteral\"] = \"TemplateLiteral\";\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 = exports.NodeType || (exports.NodeType = {}));\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 });\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}\nexports.NumberUtils = NumberUtils;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar IdentifierObfuscatingReplacer;\n(function (IdentifierObfuscatingReplacer) {\n IdentifierObfuscatingReplacer[\"BaseIdentifierObfuscatingReplacer\"] = \"BaseIdentifierObfuscatingReplacer\";\n})(IdentifierObfuscatingReplacer = exports.IdentifierObfuscatingReplacer || (exports.IdentifierObfuscatingReplacer = {}));\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 });\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\nlet AbstractObfuscatingReplacer = class AbstractObfuscatingReplacer {\n constructor(options) {\n this.options = options;\n }\n};\nAbstractObfuscatingReplacer = __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], AbstractObfuscatingReplacer);\nexports.AbstractObfuscatingReplacer = AbstractObfuscatingReplacer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst IdentifierNamesGenerator_1 = require(\"../../enums/generators/identifier-names-generators/IdentifierNamesGenerator\");\nconst ObfuscationTarget_1 = require(\"../../enums/ObfuscationTarget\");\nconst SourceMapMode_1 = require(\"../../enums/source-map/SourceMapMode\");\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 identifierNamesGenerator: IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator,\n identifiersPrefix: '',\n identifiersDictionary: [],\n inputFileName: '',\n log: false,\n renameGlobals: false,\n reservedNames: [],\n reservedStrings: [],\n rotateStringArray: true,\n seed: 0,\n selfDefending: false,\n shuffleStringArray: 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: false,\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 });\nvar StringSeparator;\n(function (StringSeparator) {\n StringSeparator[\"Dot\"] = \".\";\n StringSeparator[\"Comma\"] = \",\";\n})(StringSeparator = exports.StringSeparator || (exports.StringSeparator = {}));\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 });\nconst inversify_1 = require(\"inversify\");\nlet AbstractCalleeDataExtractor = class AbstractCalleeDataExtractor {\n};\nAbstractCalleeDataExtractor = __decorate([\n inversify_1.injectable()\n], AbstractCalleeDataExtractor);\nexports.AbstractCalleeDataExtractor = AbstractCalleeDataExtractor;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ecmaVersion = 11;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst NodeGuards_1 = require(\"./NodeGuards\");\nclass NodeLiteralUtils {\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 return false;\n }\n}\nexports.NodeLiteralUtils = NodeLiteralUtils;\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 });\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","module.exports = require(\"escodegen\");","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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 });\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\";\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, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nrequire(\"reflect-metadata\");\nconst ServiceIdentifiers_1 = require(\"./container/ServiceIdentifiers\");\nconst InversifyContainerFacade_1 = require(\"./container/InversifyContainerFacade\");\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}\nexports.JavaScriptObfuscator = JavaScriptObfuscatorFacade;\nJavaScriptObfuscatorFacade.version = (_a = process.env.VERSION) !== null && _a !== void 0 ? _a : 'unknown';\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\nvar CodeTransformer;\n(function (CodeTransformer) {\n CodeTransformer[\"HashbangOperatorTransformer\"] = \"HashbangOperatorTransformer\";\n})(CodeTransformer = exports.CodeTransformer || (exports.CodeTransformer = {}));\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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = 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 });\nconst acorn = __importStar(require(\"acorn\"));\nconst acorn_import_meta_1 = __importDefault(require(\"acorn-import-meta\"));\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 .Parser.extend(acorn_import_meta_1.default)\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.substring(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","module.exports = require(\"chalk\");","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar DeadCodeInjectionCustomNode;\n(function (DeadCodeInjectionCustomNode) {\n DeadCodeInjectionCustomNode[\"BlockStatementDeadCodeInjectionNode\"] = \"BlockStatementDeadCodeInjectionNode\";\n})(DeadCodeInjectionCustomNode = exports.DeadCodeInjectionCustomNode || (exports.DeadCodeInjectionCustomNode = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\nvar ObjectExpressionKeysTransformerCustomNode;\n(function (ObjectExpressionKeysTransformerCustomNode) {\n ObjectExpressionKeysTransformerCustomNode[\"ObjectExpressionVariableDeclarationHostNode\"] = \"ObjectExpressionVariableDeclarationHostNode\";\n})(ObjectExpressionKeysTransformerCustomNode = exports.ObjectExpressionKeysTransformerCustomNode || (exports.ObjectExpressionKeysTransformerCustomNode = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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 });\nconst inversify_1 = require(\"inversify\");\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 return this.obfuscationAllowed;\n }\n const leadingComments = node.leadingComments;\n if (leadingComments) {\n this.obfuscationAllowed = this.checkComments(leadingComments);\n }\n return this.obfuscationAllowed;\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LiteralObfuscatingReplacer;\n(function (LiteralObfuscatingReplacer) {\n LiteralObfuscatingReplacer[\"BooleanLiteralObfuscatingReplacer\"] = \"BooleanLiteralObfuscatingReplacer\";\n LiteralObfuscatingReplacer[\"NumberLiteralObfuscatingReplacer\"] = \"NumberLiteralObfuscatingReplacer\";\n LiteralObfuscatingReplacer[\"StringLiteralObfuscatingReplacer\"] = \"StringLiteralObfuscatingReplacer\";\n})(LiteralObfuscatingReplacer = exports.LiteralObfuscatingReplacer || (exports.LiteralObfuscatingReplacer = {}));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","module.exports = require(\"class-validator\");","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ObfuscatingGuard;\n(function (ObfuscatingGuard) {\n ObfuscatingGuard[\"BlackListObfuscatingGuard\"] = \"BlackListObfuscatingGuard\";\n ObfuscatingGuard[\"ConditionalCommentObfuscatingGuard\"] = \"ConditionalCommentObfuscatingGuard\";\n ObfuscatingGuard[\"ReservedStringObfuscatingGuard\"] = \"ReservedStringObfuscatingGuard\";\n})(ObfuscatingGuard = exports.ObfuscatingGuard || (exports.ObfuscatingGuard = {}));\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 });\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\");\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 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 = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","module.exports = require(\"reflect-metadata\");","\"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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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 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.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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar CallsGraphAnalyzer_1, _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 var _a;\n let calleeBlockStatement = null;\n if (NodeGuards_1.NodeGuards.isIdentifierNode(callee)) {\n calleeBlockStatement = this.getCalleeBlockStatement(NodeStatementUtils_1.NodeStatementUtils.getParentNodeWithStatements(blockScopeBody[0]), callee.name);\n }\n if (NodeGuards_1.NodeGuards.isFunctionExpressionNode(callee)) {\n calleeBlockStatement = callee.body;\n }\n if (!calleeBlockStatement) {\n return null;\n }\n return {\n callee: calleeBlockStatement,\n name: (_a = callee.name) !== null && _a !== void 0 ? _a : null\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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar ObjectExpressionCalleeDataExtractor_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar PrevailingKindOfVariablesAnalyzer_1, _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar ScopeAnalyzer_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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) => {\n var _a, _b, _c, _d, _e, _f;\n if (!node.range) {\n node.range = [\n (_c = (_b = (_a = node.parentNode) === null || _a === void 0 ? void 0 : _a.range) === null || _b === void 0 ? void 0 : _b[0]) !== null && _c !== void 0 ? _c : ScopeAnalyzer_1.emptyRangeValue,\n (_f = (_e = (_d = node.parentNode) === null || _d === void 0 ? void 0 : _d.range) === null || _e === void 0 ? void 0 : _e[1]) !== null && _f !== void 0 ? _f : 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","module.exports = require(\"eslint-scope\");","\"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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar StringArrayStorageAnalyzer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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-storage/IStringArrayStorage\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeMetadata_1 = require(\"../../node/NodeMetadata\");\nconst NodeLiteralUtils_1 = require(\"../../node/NodeLiteralUtils\");\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 (typeof literalNode.value !== 'string') {\n return;\n }\n if (NodeLiteralUtils_1.NodeLiteralUtils.isProhibitedLiteralNode(literalNode, parentNode)) {\n return;\n }\n if (!this.shouldAddValueToStringArray(literalNode.value)) {\n return;\n }\n this.stringArrayStorageData.set(literalNode, this.stringArrayStorage.getOrThrow(literalNode.value));\n }\n shouldAddValueToStringArray(value) {\n return 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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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\";\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, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst InversifyContainerFacade_1 = require(\"../../InversifyContainerFacade\");\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst ControlFlowReplacer_1 = require(\"../../../enums/node-transformers/obfuscating-transformers/obfuscating-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 DeadCodeInjectionTransformer_1 = require(\"../../../node-transformers/dead-code-injection-transformers/DeadCodeInjectionTransformer\");\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(DeadCodeInjectionTransformer_1.DeadCodeInjectionTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.DeadCodeInjectionTransformer);\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar BlockStatementControlFlowTransformer_1, _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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","module.exports = require(\"acorn\");","module.exports = require(\"acorn-import-meta\");","\"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 });\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar DeadCodeInjectionTransformer_1, _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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.isBreakStatementNode(targetNode)\n || NodeGuards_1.NodeGuards.isContinueStatementNode(targetNode)\n || NodeGuards_1.NodeGuards.isAwaitExpressionNode(targetNode)\n || NodeGuards_1.NodeGuards.isSuperNode(targetNode);\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.analyzeNode(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 analyzeNode(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.Obfuscating);\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];\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\";\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar FunctionControlFlowTransformer_1, _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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/obfuscating-transformers/obfuscating-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\";\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 LogicalExpressionControlFlowReplacer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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 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 (typeof literalNode.value !== 'string' || 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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 ObjectExpressionToVariableDeclarationExtractor_1 = require(\"../../../node-transformers/converting-transformers/object-expression-extractors/ObjectExpressionToVariableDeclarationExtractor\");\nconst MemberExpressionTransformer_1 = require(\"../../../node-transformers/converting-transformers/MemberExpressionTransformer\");\nconst MethodDefinitionTransformer_1 = require(\"../../../node-transformers/converting-transformers/MethodDefinitionTransformer\");\nconst ObjectExpressionKeysTransformer_1 = require(\"../../../node-transformers/converting-transformers/ObjectExpressionKeysTransformer\");\nconst ObjectExpressionTransformer_1 = require(\"../../../node-transformers/converting-transformers/ObjectExpressionTransformer\");\nconst SplitStringTransformer_1 = require(\"../../../node-transformers/converting-transformers/SplitStringTransformer\");\nconst TemplateLiteralTransformer_1 = require(\"../../../node-transformers/converting-transformers/TemplateLiteralTransformer\");\nconst BasePropertiesExtractor_1 = require(\"../../../node-transformers/converting-transformers/object-expression-extractors/BasePropertiesExtractor\");\nexports.convertingTransformersModule = new inversify_1.ContainerModule((bind) => {\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(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(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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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\";\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, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar ObjectExpressionKeysTransformer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 AbstractNodeTransformer_1 = require(\"../AbstractNodeTransformer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nconst NodeStatementUtils_1 = require(\"../../node/NodeStatementUtils\");\nconst ObjectExpressionExtractor_1 = require(\"../../enums/node-transformers/converting-transformers/properties-extractors/ObjectExpressionExtractor\");\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 isProhibitedHostStatement(objectExpressionNode, hostStatement) {\n return ObjectExpressionKeysTransformer_1.isReferencedIdentifierName(objectExpressionNode, hostStatement)\n || ObjectExpressionKeysTransformer_1.isProhibitedSequenceExpression(objectExpressionNode, hostStatement);\n }\n static isReferencedIdentifierName(objectExpressionNode, hostNode) {\n const identifierNamesSet = [];\n let isReferencedIdentifierName = false;\n let isCurrentNode = false;\n estraverse.traverse(hostNode, {\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 isProhibitedSequenceExpression(objectExpressionNode, hostNode) {\n return NodeGuards_1.NodeGuards.isExpressionStatementNode(hostNode)\n && NodeGuards_1.NodeGuards.isSequenceExpressionNode(hostNode.expression)\n && hostNode.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.isProhibitedHostStatement(objectExpressionNode, 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\";\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, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar SplitStringTransformer_1, _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 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, chunkSize) {\n const chunksCount = Math.ceil(string.length / chunkSize);\n const chunks = [];\n let nextChunkStartIndex = 0;\n for (let chunkIndex = 0; chunkIndex < chunksCount; ++chunkIndex, nextChunkStartIndex += chunkSize) {\n chunks[chunkIndex] = string.substr(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 (typeof literalNode.value !== 'string') {\n return literalNode;\n }\n if (chunkLength >= literalNode.value.length) {\n return literalNode;\n }\n const stringChunks = SplitStringTransformer_1.chunkString(literalNode.value, 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 });\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 static isValidTemplateLiteralNode(node, parentNode) {\n return NodeGuards_1.NodeGuards.isTemplateLiteralNode(node) && !NodeGuards_1.NodeGuards.isTaggedTemplateExpressionNode(parentNode);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Converting:\n return {\n enter: (node, parentNode) => {\n if (parentNode && TemplateLiteralTransformer_1.isValidTemplateLiteralNode(node, parentNode)) {\n return this.transformNode(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n transformNode(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 });\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 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 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 = 0; i < propertiesLength; i++) {\n const property = properties[i];\n if (!NodeGuards_1.NodeGuards.isPropertyNode(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 = !property.computed\n || (property.computed && !!property.key && NodeGuards_1.NodeGuards.isLiteralNode(property.key));\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.push(expressionStatementNode);\n removablePropertyIds.push(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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 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(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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\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 && NodeGuards_1.NodeGuards.isProgramNode(consoleOutputDisableLexicalScopeNode)\n ? this.identifierNamesGenerator.generate(consoleOutputDisableLexicalScopeNode)\n : this.randomGenerator.getRandomString(5);\n const callsControllerFunctionName = consoleOutputDisableLexicalScopeNode\n && NodeGuards_1.NodeGuards.isProgramNode(consoleOutputDisableLexicalScopeNode)\n ? this.identifierNamesGenerator.generate(consoleOutputDisableLexicalScopeNode)\n : this.randomGenerator.getRandomString(5);\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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 && NodeGuards_1.NodeGuards.isProgramNode(debugProtectionFunctionCallScopeNode)\n ? this.identifierNamesGenerator.generate(debugProtectionFunctionCallScopeNode)\n : this.randomGenerator.getRandomString(5);\n const callsControllerFunctionName = debugProtectionFunctionCallScopeNode\n && NodeGuards_1.NodeGuards.isProgramNode(debugProtectionFunctionCallScopeNode)\n ? this.identifierNamesGenerator.generate(debugProtectionFunctionCallScopeNode)\n : this.randomGenerator.getRandomString(5);\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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\");\nconst NodeGuards_1 = require(\"../../../node/NodeGuards\");\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 && NodeGuards_1.NodeGuards.isProgramNode(domainLockFunctionLexicalScopeNode)\n ? this.identifierNamesGenerator.generate(domainLockFunctionLexicalScopeNode)\n : this.identifierNamesGenerator.generateNext();\n const callsControllerFunctionName = domainLockFunctionLexicalScopeNode\n && NodeGuards_1.NodeGuards.isProgramNode(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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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-storage/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 AbstractCustomCodeHelperGroup_1 = require(\"../../AbstractCustomCodeHelperGroup\");\nconst NodeAppender_1 = require(\"../../../node/NodeAppender\");\nlet StringArrayCodeHelperGroup = 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 this.appendCustomNodeIfExist(CustomCodeHelper_1.CustomCodeHelper.StringArrayCallsWrapper, (customCodeHelper) => {\n NodeAppender_1.NodeAppender.insertAtIndex(nodeWithStatements, customCodeHelper.getNode(), 1);\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 stringArrayCallsWrapperCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.StringArrayCallsWrapper);\n const stringArrayRotateFunctionCodeHelper = this.customCodeHelperFactory(CustomCodeHelper_1.CustomCodeHelper.StringArrayRotateFunction);\n const stringArrayName = this.stringArrayStorage.getStorageName();\n const stringArrayCallsWrapperName = this.stringArrayStorage.getStorageCallsWrapperName();\n const stringArrayRotationAmount = this.stringArrayStorage.getRotationAmount();\n stringArrayCodeHelper.initialize(this.stringArrayStorage, stringArrayName);\n stringArrayCallsWrapperCodeHelper.initialize(stringArrayName, stringArrayCallsWrapperName);\n stringArrayRotateFunctionCodeHelper.initialize(stringArrayName, stringArrayRotationAmount);\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.StringArray, stringArrayCodeHelper);\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.StringArrayCallsWrapper, stringArrayCallsWrapperCodeHelper);\n if (this.options.rotateStringArray) {\n this.customCodeHelpers.set(CustomCodeHelper_1.CustomCodeHelper.StringArrayRotateFunction, stringArrayRotateFunctionCodeHelper);\n }\n }\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 = __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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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 ConsoleOutputDisableExpressionTemplate_1 = require(\"./templates/ConsoleOutputDisableExpressionTemplate\");\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(ConsoleOutputDisableExpressionTemplate_1.ConsoleOutputDisableExpressionTemplate(), {\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction ConsoleOutputDisableExpressionTemplate() {\n return `\n const {consoleLogDisableFunctionName} = {callControllerFunctionName}(this, function () {\n const func = function () {};\n \n {globalVariableTemplate}\n \n if (!that.console) {\n that.console = (function (func){\n const c = {};\n \n c.log = func;\n c.warn = func;\n c.debug = func;\n c.info = func;\n c.error = func;\n c.exception = func;\n c.table = func;\n c.trace = func;\n \n return c;\n })(func);\n } else {\n that.console.log = func;\n that.console.warn = func;\n that.console.debug = func;\n that.console.info = func;\n that.console.error = func;\n that.console.exception = func;\n that.console.table = func;\n that.console.trace = func;\n }\n });\n \n {consoleLogDisableFunctionName}();\n `;\n}\nexports.ConsoleOutputDisableExpressionTemplate = ConsoleOutputDisableExpressionTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\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 });\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","module.exports = require(\"string-template\");","\"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 });\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, 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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst IdentifierNamesGenerator_1 = require(\"../../enums/generators/identifier-names-generators/IdentifierNamesGenerator\");\nconst ObfuscationTarget_1 = require(\"../../enums/ObfuscationTarget\");\nconst SourceMapMode_1 = require(\"../../enums/source-map/SourceMapMode\");\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 identifierNamesGenerator: IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator,\n identifiersPrefix: '',\n identifiersDictionary: [],\n inputFileName: '',\n log: false,\n renameGlobals: false,\n reservedNames: [],\n reservedStrings: [],\n rotateStringArray: false,\n seed: 0,\n selfDefending: false,\n shuffleStringArray: 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: false,\n stringArrayThreshold: 0,\n target: ObfuscationTarget_1.ObfuscationTarget.Browser,\n transformObjectKeys: false,\n unicodeEscapeSequence: false\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 _a, _b, _c, _d, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction DebugProtectionFunctionIntervalTemplate() {\n return `\n setInterval(function () {\n {debugProtectionFunctionName}();\n }, 4000);\n `;\n}\nexports.DebugProtectionFunctionIntervalTemplate = DebugProtectionFunctionIntervalTemplate;\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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 position = currentDomain.length - domain.length;\n const lastIndex = currentDomain.indexOf(domain, 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, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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/SelfDefendingTemplate\");\nconst AbstractCustomCodeHelper_1 = require(\"../AbstractCustomCodeHelper\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet SelfDefendingUnicodeCodeHelper = class SelfDefendingUnicodeCodeHelper 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(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 return this.customCodeHelperFormatter.formatTemplate(SelfDefendingTemplate_1.SelfDefendingTemplate(this.escapeSequenceEncoder), {\n callControllerFunctionName: this.callsControllerFunctionName,\n selfDefendingFunctionName: this.selfDefendingFunctionName\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 __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], SelfDefendingUnicodeCodeHelper);\nexports.SelfDefendingUnicodeCodeHelper = SelfDefendingUnicodeCodeHelper;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction SelfDefendingTemplate(escapeSequenceEncoder) {\n return `\n const {selfDefendingFunctionName} = {callControllerFunctionName}(this, function () {\n const test = function () {\n const regExp = test\n .constructor('return /\" + this + \"/')()\n .compile('^([^ ]+( +[^ ]+)+)+[^ ]}');\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};\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 });\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 ObfuscationTarget_1 = require(\"../../enums/ObfuscationTarget\");\nconst StringArrayEncoding_1 = require(\"../../enums/StringArrayEncoding\");\nconst Initializable_1 = require(\"../../decorators/Initializable\");\nconst AtobTemplate_1 = require(\"./templates/string-array-calls-wrapper/AtobTemplate\");\nconst GlobalVariableNoEvalTemplate_1 = require(\"../common/templates/GlobalVariableNoEvalTemplate\");\nconst Rc4Template_1 = require(\"./templates/string-array-calls-wrapper/Rc4Template\");\nconst SelfDefendingTemplate_1 = require(\"./templates/string-array-calls-wrapper/SelfDefendingTemplate\");\nconst StringArrayBase64DecodeTemplate_1 = require(\"./templates/string-array-calls-wrapper/StringArrayBase64DecodeTemplate\");\nconst StringArrayCallsWrapperTemplate_1 = require(\"./templates/string-array-calls-wrapper/StringArrayCallsWrapperTemplate\");\nconst StringArrayRC4DecodeTemplate_1 = require(\"./templates/string-array-calls-wrapper/StringArrayRC4DecodeTemplate\");\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) {\n this.stringArrayName = stringArrayName;\n this.stringArrayCallsWrapperName = stringArrayCallsWrapperName;\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 }), {\n reservedNames: preservedNames\n });\n }\n getDecodeStringArrayTemplate() {\n const globalVariableTemplate = this.options.target !== ObfuscationTarget_1.ObfuscationTarget.BrowserNoEval\n ? this.getGlobalVariableTemplate()\n : GlobalVariableNoEvalTemplate_1.GlobalVariableNoEvalTemplate();\n const atobPolyfill = this.customCodeHelperFormatter.formatTemplate(AtobTemplate_1.AtobTemplate(), { globalVariableTemplate });\n let decodeStringArrayTemplate = '';\n let selfDefendingCode = '';\n if (this.options.selfDefending) {\n selfDefendingCode = this.customCodeHelperFormatter.formatTemplate(SelfDefendingTemplate_1.SelfDefendingTemplate(this.randomGenerator, this.escapeSequenceEncoder), {\n stringArrayCallsWrapperName: this.stringArrayCallsWrapperName,\n stringArrayName: this.stringArrayName\n });\n }\n switch (this.options.stringArrayEncoding) {\n case StringArrayEncoding_1.StringArrayEncoding.Rc4:\n decodeStringArrayTemplate = this.customCodeHelperFormatter.formatTemplate(StringArrayRC4DecodeTemplate_1.StringArrayRC4DecodeTemplate(this.randomGenerator), {\n atobPolyfill,\n selfDefendingCode,\n rc4Polyfill: Rc4Template_1.Rc4Template(),\n stringArrayCallsWrapperName: this.stringArrayCallsWrapperName\n });\n break;\n case StringArrayEncoding_1.StringArrayEncoding.Base64:\n decodeStringArrayTemplate = this.customCodeHelperFormatter.formatTemplate(StringArrayBase64DecodeTemplate_1.StringArrayBase64DecodeTemplate(this.randomGenerator), {\n atobPolyfill,\n selfDefendingCode,\n stringArrayCallsWrapperName: this.stringArrayCallsWrapperName\n });\n }\n return decodeStringArrayTemplate;\n }\n};\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction AtobTemplate() {\n return `\n (function () {\n {globalVariableTemplate}\n \n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\n that.atob || (\n that.atob = function(input) {\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 })();\n `;\n}\nexports.AtobTemplate = AtobTemplate;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction Rc4Template() {\n return `\n const rc4 = function (str, key) {\n let s = [], j = 0, x, res = '', newStr = '';\n \n str = atob(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\t 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 });\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 });\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 = atob(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 });\nfunction StringArrayCallsWrapperTemplate() {\n return `\n const {stringArrayCallsWrapperName} = function (index, key) {\n index = index - 0;\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 });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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-storage/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\");\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 stringArray: this.stringArrayStorage.toString()\n });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction StringArrayTemplate() {\n return `\n const {stringArrayName} = [{stringArray}];\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, _e, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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 });\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 ObjectExpressionVariableDeclarationHostNode_1 = require(\"../../../custom-nodes/object-expression-keys-transformer-nodes/ObjectExpressionVariableDeclarationHostNode\");\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 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.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, ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer));\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, ServiceIdentifiers_1.ServiceIdentifiers.IPrevailingKindOfVariablesAnalyzer));\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 _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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 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('|')), NodeFactory_1.NodeFactory.identifierNode('split')), [\n NodeFactory_1.NodeFactory.literalNode('|')\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 });\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 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, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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, _e;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\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, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 });\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 });\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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inversify_1 = require(\"inversify\");\nexports.finalizingTransformersModule = new inversify_1.ContainerModule((bind) => {\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\");\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 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.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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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 });\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.substr(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 });\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 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.previousMangledName = 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.previousMangledName = 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.preserveNameForLexicalScope(identifierName, lexicalScopeNode);\n return identifierName;\n }\n isValidIdentifierName(mangledName) {\n return super.isValidIdentifierName(mangledName)\n && !MangledIdentifierNamesGenerator_1.reservedNamesSet.has(mangledName);\n }\n generateNewMangledName(previousMangledName) {\n const generateNewMangledName = (name) => {\n const nameSequence = MangledIdentifierNamesGenerator_1.nameSequence;\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.substring(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 return `a${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 Map();\nMangledIdentifierNamesGenerator.nameSequence = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar CommentsTransformer_1, _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 default:\n return null;\n }\n }\n transformNode(rootNode) {\n if (!rootNode.comments || !rootNode.comments.length) {\n return rootNode;\n }\n const comments = this.transformComments(rootNode.comments);\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 transformComments(comments) {\n return comments.filter((comment) => CommentsTransformer_1.preservedWords\n .some((preservedWord) => comment.value.includes(preservedWord)) ||\n ConditionalCommentObfuscatingGuard_1.ConditionalCommentObfuscatingGuard.isConditionalComment(comment)).reverse();\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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 traverse(programNode, parentNode, callback) {\n this.scopeAnalyzer.analyze(programNode);\n const globalScope = this.scopeAnalyzer.acquireScope(programNode);\n this.traverseScopeVariables(globalScope, globalScope, callback);\n }\n traverseScopeVariables(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.traverseScopeVariables(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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst InversifyContainerFacade_1 = require(\"../../InversifyContainerFacade\");\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst IdentifierObfuscatingReplacer_1 = require(\"../../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer\");\nconst LiteralObfuscatingReplacer_1 = require(\"../../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/LiteralObfuscatingReplacer\");\nconst NodeTransformer_1 = require(\"../../../enums/node-transformers/NodeTransformer\");\nconst BaseIdentifierObfuscatingReplacer_1 = require(\"../../../node-transformers/obfuscating-transformers/obfuscating-replacers/identifier-obfuscating-replacers/BaseIdentifierObfuscatingReplacer\");\nconst BooleanLiteralObfuscatingReplacer_1 = require(\"../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/BooleanLiteralObfuscatingReplacer\");\nconst LabeledStatementTransformer_1 = require(\"../../../node-transformers/obfuscating-transformers/LabeledStatementTransformer\");\nconst LiteralTransformer_1 = require(\"../../../node-transformers/obfuscating-transformers/LiteralTransformer\");\nconst NumberLiteralObfuscatingReplacer_1 = require(\"../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/NumberLiteralObfuscatingReplacer\");\nconst StringLiteralObfuscatingReplacer_1 = require(\"../../../node-transformers/obfuscating-transformers/obfuscating-replacers/literal-obfuscating-replacers/StringLiteralObfuscatingReplacer\");\nconst ScopeIdentifiersTransformer_1 = require(\"../../../node-transformers/obfuscating-transformers/ScopeIdentifiersTransformer\");\nexports.obfuscatingTransformersModule = 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(LiteralTransformer_1.LiteralTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.LiteralTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(ScopeIdentifiersTransformer_1.ScopeIdentifiersTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.ScopeIdentifiersTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer)\n .to(BooleanLiteralObfuscatingReplacer_1.BooleanLiteralObfuscatingReplacer)\n .whenTargetNamed(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.BooleanLiteralObfuscatingReplacer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer)\n .to(NumberLiteralObfuscatingReplacer_1.NumberLiteralObfuscatingReplacer)\n .whenTargetNamed(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.NumberLiteralObfuscatingReplacer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer)\n .to(StringLiteralObfuscatingReplacer_1.StringLiteralObfuscatingReplacer)\n .whenTargetNamed(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.StringLiteralObfuscatingReplacer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierObfuscatingReplacer)\n .to(BaseIdentifierObfuscatingReplacer_1.BaseIdentifierObfuscatingReplacer)\n .whenTargetNamed(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatingReplacer)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.IObfuscatingReplacer));\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.IIdentifierObfuscatingReplacer));\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 _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 AbstractObfuscatingReplacer_1 = require(\"../AbstractObfuscatingReplacer\");\nconst NodeFactory_1 = require(\"../../../../node/NodeFactory\");\nlet BaseIdentifierObfuscatingReplacer = class BaseIdentifierObfuscatingReplacer extends AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer {\n constructor(identifierNamesGeneratorFactory, options) {\n super(options);\n this.blockScopesMap = new Map();\n this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);\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 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 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};\nBaseIdentifierObfuscatingReplacer = __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], BaseIdentifierObfuscatingReplacer);\nexports.BaseIdentifierObfuscatingReplacer = BaseIdentifierObfuscatingReplacer;\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 BooleanLiteralObfuscatingReplacer_1, _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../../../interfaces/options/IOptions\");\nconst AbstractObfuscatingReplacer_1 = require(\"../AbstractObfuscatingReplacer\");\nconst NodeFactory_1 = require(\"../../../../node/NodeFactory\");\nlet BooleanLiteralObfuscatingReplacer = BooleanLiteralObfuscatingReplacer_1 = class BooleanLiteralObfuscatingReplacer extends AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer {\n constructor(options) {\n super(options);\n }\n static getTrueUnaryExpressionNode() {\n return NodeFactory_1.NodeFactory.unaryExpressionNode('!', BooleanLiteralObfuscatingReplacer_1.getFalseUnaryExpressionNode());\n }\n static getFalseUnaryExpressionNode() {\n return NodeFactory_1.NodeFactory.unaryExpressionNode('!', NodeFactory_1.NodeFactory.arrayExpressionNode());\n }\n replace(literalNode) {\n const literalValue = literalNode.value;\n if (typeof literalValue !== 'boolean') {\n throw new Error('`BooleanLiteralObfuscatingReplacer` should accept only literals with `boolean` value');\n }\n return literalValue\n ? BooleanLiteralObfuscatingReplacer_1.getTrueUnaryExpressionNode()\n : BooleanLiteralObfuscatingReplacer_1.getFalseUnaryExpressionNode();\n }\n};\nBooleanLiteralObfuscatingReplacer = BooleanLiteralObfuscatingReplacer_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], BooleanLiteralObfuscatingReplacer);\nexports.BooleanLiteralObfuscatingReplacer = BooleanLiteralObfuscatingReplacer;\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst TIdentifierObfuscatingReplacerFactory_1 = require(\"../../types/container/node-transformers/TIdentifierObfuscatingReplacerFactory\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IdentifierObfuscatingReplacer_1 = require(\"../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer\");\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(identifierObfuscatingReplacerFactory, randomGenerator, options) {\n super(randomGenerator, options);\n this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Obfuscating:\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.identifierObfuscatingReplacer.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.identifierObfuscatingReplacer\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.Factory__IIdentifierObfuscatingReplacer)),\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 TIdentifierObfuscatingReplacerFactory_1.TIdentifierObfuscatingReplacerFactory !== \"undefined\" && TIdentifierObfuscatingReplacerFactory_1.TIdentifierObfuscatingReplacerFactory) === \"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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst TLiteralObfuscatingReplacerFactory_1 = require(\"../../types/container/node-transformers/TLiteralObfuscatingReplacerFactory\");\nconst IEscapeSequenceEncoder_1 = require(\"../../interfaces/utils/IEscapeSequenceEncoder\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IStringArrayStorageAnalyzer_1 = require(\"../../interfaces/analyzers/string-array-storage-analyzer/IStringArrayStorageAnalyzer\");\nconst LiteralObfuscatingReplacer_1 = require(\"../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/LiteralObfuscatingReplacer\");\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 NodeMetadata_1 = require(\"../../node/NodeMetadata\");\nconst NodeUtils_1 = require(\"../../node/NodeUtils\");\nlet LiteralTransformer = class LiteralTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(literalObfuscatingReplacerFactory, randomGenerator, options, stringArrayStorageAnalyzer, escapeSequenceEncoder) {\n super(randomGenerator, options);\n this.literalObfuscatingReplacerFactory = literalObfuscatingReplacerFactory;\n this.stringArrayStorageAnalyzer = stringArrayStorageAnalyzer;\n this.escapeSequenceEncoder = escapeSequenceEncoder;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Obfuscating:\n return {\n enter: (node, parentNode) => {\n if (NodeGuards_1.NodeGuards.isProgramNode(node)) {\n this.analyzeNode(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 case NodeTransformationStage_1.NodeTransformationStage.Finalizing:\n return {\n enter: (node, parentNode) => {\n if (parentNode && NodeGuards_1.NodeGuards.isLiteralNode(node)) {\n return this.encodeLiteralNodeToEscapeSequence(node, parentNode);\n }\n }\n };\n default:\n return null;\n }\n }\n analyzeNode(programNode) {\n this.stringArrayStorageAnalyzer.analyze(programNode);\n }\n transformNode(literalNode, parentNode) {\n if (NodeLiteralUtils_1.NodeLiteralUtils.isProhibitedLiteralNode(literalNode, parentNode)) {\n return literalNode;\n }\n let newLiteralNode;\n switch (typeof literalNode.value) {\n case 'boolean':\n newLiteralNode = this.literalObfuscatingReplacerFactory(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.BooleanLiteralObfuscatingReplacer).replace(literalNode);\n break;\n case 'number':\n case 'bigint':\n newLiteralNode = this.literalObfuscatingReplacerFactory(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.NumberLiteralObfuscatingReplacer).replace(literalNode);\n break;\n case 'string':\n newLiteralNode = this.literalObfuscatingReplacerFactory(LiteralObfuscatingReplacer_1.LiteralObfuscatingReplacer.StringLiteralObfuscatingReplacer).replace(literalNode);\n break;\n default:\n newLiteralNode = literalNode;\n }\n NodeUtils_1.NodeUtils.parentizeNode(newLiteralNode, parentNode);\n return newLiteralNode;\n }\n encodeLiteralNodeToEscapeSequence(literalNode, parentNode) {\n if (typeof literalNode.value !== 'string') {\n return literalNode;\n }\n return NodeFactory_1.NodeFactory.literalNode(this.escapeSequenceEncoder.encode(literalNode.value, this.options.unicodeEscapeSequence));\n }\n};\nLiteralTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IObfuscatingReplacer)),\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.IStringArrayStorageAnalyzer)),\n __param(4, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.IEscapeSequenceEncoder)),\n __metadata(\"design:paramtypes\", [typeof (_a = typeof TLiteralObfuscatingReplacerFactory_1.TLiteralObfuscatingReplacerFactory !== \"undefined\" && TLiteralObfuscatingReplacerFactory_1.TLiteralObfuscatingReplacerFactory) === \"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 IStringArrayStorageAnalyzer_1.IStringArrayStorageAnalyzer !== \"undefined\" && IStringArrayStorageAnalyzer_1.IStringArrayStorageAnalyzer) === \"function\" ? _d : Object, typeof (_e = typeof IEscapeSequenceEncoder_1.IEscapeSequenceEncoder !== \"undefined\" && IEscapeSequenceEncoder_1.IEscapeSequenceEncoder) === \"function\" ? _e : Object])\n], LiteralTransformer);\nexports.LiteralTransformer = LiteralTransformer;\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 });\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../../../interfaces/options/IOptions\");\nconst AbstractObfuscatingReplacer_1 = require(\"../AbstractObfuscatingReplacer\");\nconst NodeFactory_1 = require(\"../../../../node/NodeFactory\");\nconst NumberUtils_1 = require(\"../../../../utils/NumberUtils\");\nlet NumberLiteralObfuscatingReplacer = class NumberLiteralObfuscatingReplacer extends AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer {\n constructor(options) {\n super(options);\n this.numberLiteralCache = new Map();\n }\n replace(literalNode) {\n const literalValue = literalNode.value;\n if (typeof literalValue !== 'number' && typeof literalValue !== 'bigint') {\n throw new Error('`NumberLiteralObfuscatingReplacer` should accept only literals with `number` and `bigint` value');\n }\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};\nNumberLiteralObfuscatingReplacer = __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], NumberLiteralObfuscatingReplacer);\nexports.NumberLiteralObfuscatingReplacer = NumberLiteralObfuscatingReplacer;\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 StringLiteralObfuscatingReplacer_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../../../container/ServiceIdentifiers\");\nconst IOptions_1 = require(\"../../../../interfaces/options/IOptions\");\nconst IStringArrayStorage_1 = require(\"../../../../interfaces/storages/string-array-storage/IStringArrayStorage\");\nconst IStringArrayStorageAnalyzer_1 = require(\"../../../../interfaces/analyzers/string-array-storage-analyzer/IStringArrayStorageAnalyzer\");\nconst StringArrayEncoding_1 = require(\"../../../../enums/StringArrayEncoding\");\nconst AbstractObfuscatingReplacer_1 = require(\"../AbstractObfuscatingReplacer\");\nconst NodeMetadata_1 = require(\"../../../../node/NodeMetadata\");\nconst NodeFactory_1 = require(\"../../../../node/NodeFactory\");\nconst NumberUtils_1 = require(\"../../../../utils/NumberUtils\");\nlet StringLiteralObfuscatingReplacer = StringLiteralObfuscatingReplacer_1 = class StringLiteralObfuscatingReplacer extends AbstractObfuscatingReplacer_1.AbstractObfuscatingReplacer {\n constructor(stringArrayStorage, stringArrayStorageAnalyzer, options) {\n super(options);\n this.nodesCache = new Map();\n this.stringArrayStorage = stringArrayStorage;\n this.stringArrayStorageAnalyzer = stringArrayStorageAnalyzer;\n }\n static getHexadecimalLiteralNode(hexadecimalIndex) {\n const hexadecimalLiteralNode = NodeFactory_1.NodeFactory.literalNode(hexadecimalIndex);\n NodeMetadata_1.NodeMetadata.set(hexadecimalLiteralNode, { replacedLiteral: true });\n return hexadecimalLiteralNode;\n }\n static getRc4KeyLiteralNode(literalValue) {\n const rc4KeyLiteralNode = NodeFactory_1.NodeFactory.literalNode(literalValue);\n NodeMetadata_1.NodeMetadata.set(rc4KeyLiteralNode, { replacedLiteral: true });\n return rc4KeyLiteralNode;\n }\n initialize() {\n if (this.options.shuffleStringArray) {\n this.stringArrayStorage.shuffleStorage();\n }\n if (this.options.rotateStringArray) {\n this.stringArrayStorage.rotateStorage();\n }\n }\n replace(literalNode) {\n const literalValue = literalNode.value;\n if (typeof literalValue !== 'string') {\n throw new Error('`StringLiteralObfuscatingReplacer` should accept only literals with `string` value');\n }\n const stringArrayStorageItemData = this.stringArrayStorageAnalyzer\n .getItemDataForLiteralNode(literalNode);\n const cacheKey = `${literalValue}-${Boolean(stringArrayStorageItemData)}`;\n const useCachedValue = this.nodesCache.has(cacheKey) && this.options.stringArrayEncoding !== StringArrayEncoding_1.StringArrayEncoding.Rc4;\n if (useCachedValue) {\n return this.nodesCache.get(cacheKey);\n }\n const resultNode = stringArrayStorageItemData\n ? this.replaceWithStringArrayCallNode(stringArrayStorageItemData)\n : this.replaceWithLiteralNode(literalValue);\n this.nodesCache.set(cacheKey, resultNode);\n return resultNode;\n }\n replaceWithLiteralNode(value) {\n return NodeFactory_1.NodeFactory.literalNode(value);\n }\n replaceWithStringArrayCallNode(stringArrayStorageItemData) {\n const { index, decodeKey } = stringArrayStorageItemData;\n const hexadecimalIndex = NumberUtils_1.NumberUtils.toHex(index);\n const callExpressionArgs = [\n StringLiteralObfuscatingReplacer_1.getHexadecimalLiteralNode(hexadecimalIndex)\n ];\n if (decodeKey) {\n callExpressionArgs.push(StringLiteralObfuscatingReplacer_1.getRc4KeyLiteralNode(decodeKey));\n }\n const stringArrayIdentifierNode = NodeFactory_1.NodeFactory.identifierNode(this.stringArrayStorage.getStorageCallsWrapperName());\n return NodeFactory_1.NodeFactory.callExpressionNode(stringArrayIdentifierNode, callExpressionArgs);\n }\n};\n__decorate([\n inversify_1.postConstruct(),\n __metadata(\"design:type\", Function),\n __metadata(\"design:paramtypes\", []),\n __metadata(\"design:returntype\", void 0)\n], StringLiteralObfuscatingReplacer.prototype, \"initialize\", null);\nStringLiteralObfuscatingReplacer = StringLiteralObfuscatingReplacer_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.IStringArrayStorageAnalyzer)),\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 IStringArrayStorageAnalyzer_1.IStringArrayStorageAnalyzer !== \"undefined\" && IStringArrayStorageAnalyzer_1.IStringArrayStorageAnalyzer) === \"function\" ? _b : Object, typeof (_c = typeof IOptions_1.IOptions !== \"undefined\" && IOptions_1.IOptions) === \"function\" ? _c : Object])\n], StringLiteralObfuscatingReplacer);\nexports.StringLiteralObfuscatingReplacer = StringLiteralObfuscatingReplacer;\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar _a, _b, _c, _d;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst estraverse = __importStar(require(\"estraverse\"));\nconst TIdentifierObfuscatingReplacerFactory_1 = require(\"../../types/container/node-transformers/TIdentifierObfuscatingReplacerFactory\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst IScopeIdentifiersTraverser_1 = require(\"../../interfaces/node/IScopeIdentifiersTraverser\");\nconst IdentifierObfuscatingReplacer_1 = require(\"../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer\");\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(identifierObfuscatingReplacerFactory, randomGenerator, options, scopeIdentifiersTraverser) {\n super(randomGenerator, options);\n this.lexicalScopesWithObjectPatternWithoutDeclarationMap = new Map();\n this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);\n this.scopeIdentifiersTraverser = scopeIdentifiersTraverser;\n }\n getVisitor(nodeTransformationStage) {\n switch (nodeTransformationStage) {\n case NodeTransformationStage_1.NodeTransformationStage.Obfuscating:\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.traverse(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.identifierObfuscatingReplacer.storeGlobalName(identifierNode, lexicalScopeNode);\n }\n else {\n this.identifierObfuscatingReplacer.storeLocalName(identifierNode, lexicalScopeNode);\n }\n }\n replaceIdentifierName(identifierNode, lexicalScopeNode, variable) {\n const newIdentifier = this.identifierObfuscatingReplacer\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.isProhibitedPropertyNode(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 isProhibitedPropertyNode(node, parentNode) {\n const isProhibitedPropertyIdentifier = NodeGuards_1.NodeGuards.isPropertyNode(parentNode)\n && !parentNode.computed\n && parentNode.key === node;\n const isProhibitedPropertyAssignmentPatternIdentifier = NodeGuards_1.NodeGuards.isAssignmentPatternNode(parentNode)\n && parentNode.left === node\n && !!parentNode.parentNode\n && NodeGuards_1.NodeGuards.isPropertyNode(parentNode.parentNode)\n && parentNode.left === parentNode.parentNode.key;\n return isProhibitedPropertyIdentifier\n || isProhibitedPropertyAssignmentPatternIdentifier;\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.Factory__IIdentifierObfuscatingReplacer)),\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 TIdentifierObfuscatingReplacerFactory_1.TIdentifierObfuscatingReplacerFactory !== \"undefined\" && TIdentifierObfuscatingReplacerFactory_1.TIdentifierObfuscatingReplacerFactory) === \"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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tsenum_1 = require(\"@gradecam/tsenum\");\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 TStringArrayEncoding_1 = require(\"../types/options/TStringArrayEncoding\");\nconst IOptionsNormalizer_1 = require(\"../interfaces/options/IOptionsNormalizer\");\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/StringArrayEncoding\");\nconst Default_1 = require(\"./presets/Default\");\nconst ValidationErrorsFormatter_1 = require(\"./ValidationErrorsFormatter\");\nconst IsAllowedForObfuscationTargets_1 = require(\"./validators/IsAllowedForObfuscationTargets\");\nlet Options = Options_1 = class Options {\n constructor(inputOptions, optionsNormalizer) {\n Object.assign(this, Default_1.DEFAULT_PRESET, 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};\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.IsIn([\n IdentifierNamesGenerator_1.IdentifierNamesGenerator.DictionaryIdentifierNamesGenerator,\n IdentifierNamesGenerator_1.IdentifierNamesGenerator.HexadecimalIdentifierNamesGenerator,\n IdentifierNamesGenerator_1.IdentifierNamesGenerator.MangledIdentifierNamesGenerator\n ]),\n __metadata(\"design:type\", typeof (_a = typeof tsenum_1.TypeFromEnum !== \"undefined\" && tsenum_1.TypeFromEnum) === \"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.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, \"renameGlobals\", 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, \"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 (_b = typeof tsenum_1.TypeFromEnum !== \"undefined\" && tsenum_1.TypeFromEnum) === \"function\" ? _b : 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.IsIn([true, false, StringArrayEncoding_1.StringArrayEncoding.Base64, StringArrayEncoding_1.StringArrayEncoding.Rc4]),\n __metadata(\"design:type\", typeof (_c = typeof TStringArrayEncoding_1.TStringArrayEncoding !== \"undefined\" && TStringArrayEncoding_1.TStringArrayEncoding) === \"function\" ? _c : Object)\n], Options.prototype, \"stringArrayEncoding\", 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 (_d = typeof tsenum_1.TypeFromEnum !== \"undefined\" && tsenum_1.TypeFromEnum) === \"function\" ? _d : 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 (_e = typeof TInputOptions_1.TInputOptions !== \"undefined\" && TInputOptions_1.TInputOptions) === \"function\" ? _e : Object, typeof (_f = typeof IOptionsNormalizer_1.IOptionsNormalizer !== \"undefined\" && IOptionsNormalizer_1.IOptionsNormalizer) === \"function\" ? _f : Object])\n], Options);\nexports.Options = Options;\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 });\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\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\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","module.exports = require(\"fast-deep-equal\");","\"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 });\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 StringArrayThresholdRule_1 = require(\"./normalizer-rules/StringArrayThresholdRule\");\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 StringArrayThresholdRule_1.StringArrayThresholdRule,\n];\nOptionsNormalizer = OptionsNormalizer_1 = __decorate([\n inversify_1.injectable()\n], OptionsNormalizer);\nexports.OptionsNormalizer = OptionsNormalizer;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ControlFlowFlatteningThresholdRule = (options) => {\n if (options.controlFlowFlatteningThreshold === 0) {\n options = Object.assign(Object.assign({}, options), { controlFlowFlattening: false, controlFlowFlatteningThreshold: 0 });\n }\n return options;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Default_1 = require(\"../presets/Default\");\nexports.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};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DeadCodeInjectionThresholdRule = (options) => {\n if (options.deadCodeInjectionThreshold === 0) {\n options = Object.assign(Object.assign({}, options), { deadCodeInjection: false, deadCodeInjectionThreshold: 0 });\n }\n return options;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Utils_1 = require(\"../../utils/Utils\");\nexports.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};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst StringSeparator_1 = require(\"../../enums/StringSeparator\");\nexports.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};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.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};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SelfDefendingRule = (options) => {\n if (options.selfDefending) {\n options = Object.assign(Object.assign({}, options), { compact: true, selfDefending: true });\n }\n return options;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.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};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst StringSeparator_1 = require(\"../../enums/StringSeparator\");\nexports.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};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.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};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayRule = (options) => {\n if (!options.stringArray) {\n options = Object.assign(Object.assign({}, options), { rotateStringArray: false, shuffleStringArray: false, stringArray: false, stringArrayEncoding: false, stringArrayThreshold: 0 });\n }\n return options;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst StringArrayEncoding_1 = require(\"../../enums/StringArrayEncoding\");\nexports.StringArrayEncodingRule = (options) => {\n if (options.stringArrayEncoding === true) {\n options = Object.assign(Object.assign({}, options), { stringArrayEncoding: StringArrayEncoding_1.StringArrayEncoding.Base64 });\n }\n return options;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StringArrayThresholdRule = (options) => {\n if (options.stringArrayThreshold === 0) {\n options = Object.assign(Object.assign({}, options), { rotateStringArray: false, stringArray: false, stringArrayEncoding: false, stringArrayThreshold: 0 });\n }\n return options;\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 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.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(ReservedStringObfuscatingGuard_1.ReservedStringObfuscatingGuard)\n .inSingletonScope()\n .whenTargetNamed(ObfuscatingGuard_1.ObfuscatingGuard.ReservedStringObfuscatingGuard);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.INodeTransformer)\n .to(VariablePreserveTransformer_1.VariablePreserveTransformer)\n .whenTargetNamed(NodeTransformer_1.NodeTransformer.VariablePreserveTransformer);\n bind(ServiceIdentifiers_1.ServiceIdentifiers.Factory__INodeGuard)\n .toFactory(InversifyContainerFacade_1.InversifyContainerFacade\n .getCacheFactory(ServiceIdentifiers_1.ServiceIdentifiers.INodeGuard));\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 BlackListObfuscatingGuard_1;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inversify_1 = require(\"inversify\");\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 false;\n }\n }\n return true;\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 __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 });\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.analyzeNode(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 analyzeNode(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\";\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 EvalCallExpressionTransformer_1, _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../container/ServiceIdentifiers\");\nconst js_string_escape_1 = __importDefault(require(\"js-string-escape\"));\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\");\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.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(js_string_escape_1.default(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","module.exports = require(\"js-string-escape\");","\"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 });\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 });\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 ObfuscatingGuard_1 = require(\"../../enums/node-transformers/preparing-transformers/obfuscating-guards/ObfuscatingGuard\");\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 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 obfuscationAllowed = this.obfuscatingGuards\n .every((nodeGuard) => nodeGuard.check(node));\n NodeMetadata_1.NodeMetadata.set(node, {\n ignoredNode: !(NodeGuards_1.NodeGuards.isProgramNode(node) || obfuscationAllowed)\n });\n return node;\n }\n};\nObfuscatingGuardsTransformer.obfuscatingGuardsList = [\n ObfuscatingGuard_1.ObfuscatingGuard.BlackListObfuscatingGuard,\n ObfuscatingGuard_1.ObfuscatingGuard.ConditionalCommentObfuscatingGuard,\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\";\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, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inversify_1 = require(\"inversify\");\nconst IOptions_1 = require(\"../../../interfaces/options/IOptions\");\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 }\n return true;\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 __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\nconst inversify_1 = require(\"inversify\");\nconst TIdentifierObfuscatingReplacerFactory_1 = require(\"../../types/container/node-transformers/TIdentifierObfuscatingReplacerFactory\");\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 IdentifierObfuscatingReplacer_1 = require(\"../../enums/node-transformers/obfuscating-transformers/obfuscating-replacers/IdentifierObfuscatingReplacer\");\nconst NodeGuards_1 = require(\"../../node/NodeGuards\");\nlet VariablePreserveTransformer = class VariablePreserveTransformer extends AbstractNodeTransformer_1.AbstractNodeTransformer {\n constructor(identifierObfuscatingReplacerFactory, randomGenerator, options, scopeIdentifiersTraverser) {\n super(randomGenerator, options);\n this.runAfter = [\n NodeTransformer_1.NodeTransformer.ParentificationTransformer\n ];\n this.identifierObfuscatingReplacer = identifierObfuscatingReplacerFactory(IdentifierObfuscatingReplacer_1.IdentifierObfuscatingReplacer.BaseIdentifierObfuscatingReplacer);\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.Obfuscating:\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.traverse(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.identifierObfuscatingReplacer.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.identifierObfuscatingReplacer.preserveNameForLexicalScope(identifierNode, lexicalScopeNode);\n }\n};\nVariablePreserveTransformer = __decorate([\n inversify_1.injectable(),\n __param(0, inversify_1.inject(ServiceIdentifiers_1.ServiceIdentifiers.Factory__IIdentifierObfuscatingReplacer)),\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 TIdentifierObfuscatingReplacerFactory_1.TIdentifierObfuscatingReplacerFactory !== \"undefined\" && TIdentifierObfuscatingReplacerFactory_1.TIdentifierObfuscatingReplacerFactory) === \"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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 StringArrayStorage_1 = require(\"../../../storages/string-array/StringArrayStorage\");\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.IStringArrayStorage)\n .to(StringArrayStorage_1.StringArrayStorage)\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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 CustomCodeHelperGroupStorage_1, _a, _b, _c;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\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 StringArrayStorage_1, _a, _b, _c, _d, _e, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 ICryptUtils_1 = require(\"../../interfaces/utils/ICryptUtils\");\nconst IEscapeSequenceEncoder_1 = require(\"../../interfaces/utils/IEscapeSequenceEncoder\");\nconst IOptions_1 = require(\"../../interfaces/options/IOptions\");\nconst IRandomGenerator_1 = require(\"../../interfaces/utils/IRandomGenerator\");\nconst StringArrayEncoding_1 = require(\"../../enums/StringArrayEncoding\");\nconst MapStorage_1 = require(\"../MapStorage\");\nlet StringArrayStorage = StringArrayStorage_1 = class StringArrayStorage extends MapStorage_1.MapStorage {\n constructor(identifierNamesGeneratorFactory, arrayUtils, randomGenerator, options, cryptUtils, escapeSequenceEncoder) {\n super(randomGenerator, options);\n this.rc4EncodedValuesSourcesCache = new Map();\n this.rotationAmount = 0;\n this.identifierNamesGenerator = identifierNamesGeneratorFactory(options);\n this.arrayUtils = arrayUtils;\n this.cryptUtils = cryptUtils;\n this.escapeSequenceEncoder = escapeSequenceEncoder;\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.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 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() {\n if (!this.stringArrayStorageCallsWrapperName) {\n this.stringArrayStorageCallsWrapperName = this.identifierNamesGenerator\n .generateForGlobalScope(StringArrayStorage_1.stringArrayNameLength);\n }\n return this.stringArrayStorageCallsWrapperName;\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 toString() {\n return Array\n .from(this.storage.values())\n .map((stringArrayStorageItemData) => {\n return `'${this.escapeSequenceEncoder.encode(stringArrayStorageItemData.encodedValue, this.options.unicodeEscapeSequence)}'`;\n }).toString();\n }\n getOrSetIfDoesNotExist(value) {\n const { encodedValue, decodeKey } = this.getEncodedValue(value);\n const storedStringArrayStorageItemData = this.storage.get(encodedValue);\n if (storedStringArrayStorageItemData) {\n return storedStringArrayStorageItemData;\n }\n const stringArrayStorageItemData = {\n encodedValue,\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 switch (this.options.stringArrayEncoding) {\n case StringArrayEncoding_1.StringArrayEncoding.Rc4: {\n const decodeKey = this.randomGenerator.getRandomGenerator().pickone(this.rc4Keys);\n const encodedValue = this.cryptUtils.btoa(this.cryptUtils.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, decodeKey };\n }\n case StringArrayEncoding_1.StringArrayEncoding.Base64: {\n const decodeKey = null;\n const encodedValue = this.cryptUtils.btoa(value);\n return { encodedValue, decodeKey };\n }\n default: {\n const decodeKey = null;\n const encodedValue = value;\n return { encodedValue, decodeKey };\n }\n }\n }\n};\nStringArrayStorage.minimumRotationAmount = 100;\nStringArrayStorage.maximumRotationAmount = 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.ICryptUtils)),\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 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 ICryptUtils_1.ICryptUtils !== \"undefined\" && ICryptUtils_1.ICryptUtils) === \"function\" ? _e : Object, typeof (_f = typeof IEscapeSequenceEncoder_1.IEscapeSequenceEncoder !== \"undefined\" && IEscapeSequenceEncoder_1.IEscapeSequenceEncoder) === \"function\" ? _f : Object])\n], StringArrayStorage);\nexports.StringArrayStorage = StringArrayStorage;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../../ServiceIdentifiers\");\nconst ArrayUtils_1 = require(\"../../../utils/ArrayUtils\");\nconst CryptUtils_1 = require(\"../../../utils/CryptUtils\");\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.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 _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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 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 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 });\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"../container/ServiceIdentifiers\");\nconst IRandomGenerator_1 = require(\"../interfaces/utils/IRandomGenerator\");\nconst RandomGenerator_1 = require(\"./RandomGenerator\");\nconst Utils_1 = require(\"./Utils\");\nlet CryptUtils = class CryptUtils {\n constructor(randomGenerator) {\n this.randomGenerator = randomGenerator;\n }\n btoa(string) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\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","module.exports = require(\"md5\");","module.exports = require(\"chance\");","\"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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inversify_1 = require(\"inversify\");\nlet EscapeSequenceEncoder = 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 const escapeSequenceRegExp = new RegExp('[\\'\\\"\\\\\\\\\\\\s]');\n const regExp = new RegExp('[\\\\x00-\\\\x7F]');\n let prefix;\n let template;\n const result = string.replace(replaceRegExp, (character) => {\n if (!encodeAllSymbols && !escapeSequenceRegExp.exec(character)) {\n return character;\n }\n if (regExp.exec(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 = __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 });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 });\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\";\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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar JavaScriptObfuscator_1, _a, _b, _c, _d, _e, _f;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst inversify_1 = require(\"inversify\");\nconst ServiceIdentifiers_1 = require(\"./container/ServiceIdentifiers\");\nconst escodegen = __importStar(require(\"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 astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.Converting);\n astTree = this.runNodeTransformationStage(astTree, NodeTransformationStage_1.NodeTransformationStage.Obfuscating);\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.BlockStatementControlFlowTransformer,\n NodeTransformer_1.NodeTransformer.CommentsTransformer,\n NodeTransformer_1.NodeTransformer.CustomCodeHelpersTransformer,\n NodeTransformer_1.NodeTransformer.DeadCodeInjectionTransformer,\n NodeTransformer_1.NodeTransformer.EvalCallExpressionTransformer,\n NodeTransformer_1.NodeTransformer.FunctionControlFlowTransformer,\n NodeTransformer_1.NodeTransformer.LabeledStatementTransformer,\n NodeTransformer_1.NodeTransformer.LiteralTransformer,\n NodeTransformer_1.NodeTransformer.MemberExpressionTransformer,\n NodeTransformer_1.NodeTransformer.MetadataTransformer,\n NodeTransformer_1.NodeTransformer.MethodDefinitionTransformer,\n NodeTransformer_1.NodeTransformer.ObfuscatingGuardsTransformer,\n NodeTransformer_1.NodeTransformer.ObjectExpressionKeysTransformer,\n NodeTransformer_1.NodeTransformer.ObjectExpressionTransformer,\n NodeTransformer_1.NodeTransformer.ParentificationTransformer,\n NodeTransformer_1.NodeTransformer.ScopeIdentifiersTransformer,\n NodeTransformer_1.NodeTransformer.SplitStringTransformer,\n NodeTransformer_1.NodeTransformer.TemplateLiteralTransformer,\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 });\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 });\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\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? 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 __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 (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\n result[\"default\"] = mod;\n return result;\n};\nvar _a, _b;\nObject.defineProperty(exports, \"__esModule\", { value: true });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar VisitorDirection;\n(function (VisitorDirection) {\n VisitorDirection[\"Enter\"] = \"enter\";\n VisitorDirection[\"Leave\"] = \"leave\";\n})(VisitorDirection = exports.VisitorDirection || (exports.VisitorDirection = {}));\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 });\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","module.exports = require(\"eventemitter3\");","\"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 });\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 });\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\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst JavaScriptObfuscatorFacade_1 = require(\"./src/JavaScriptObfuscatorFacade\");\nmodule.exports = JavaScriptObfuscatorFacade_1.JavaScriptObfuscator;\n"],"sourceRoot":""}
|