UNPKG

@neo-one/smart-contract-compiler

Version:

NEO•ONE TypeScript smart contract compiler.

346 lines (345 loc) 114 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const arr_1 = require("./arr"); const bind_1 = require("./bind"); const buffer_1 = require("./buffer"); const cache_1 = require("./cache"); const class_1 = require("./class"); const common_1 = require("./common"); const completionRecord_1 = require("./completionRecord"); const contract_1 = require("./contract"); const error_1 = require("./error"); const function_1 = require("./function"); const global_1 = require("./global"); const iterableIterator_1 = require("./iterableIterator"); const iterator_1 = require("./iterator"); const iteratorResult_1 = require("./iteratorResult"); const map_1 = require("./map"); const module_1 = require("./module"); const relational_1 = require("./relational"); const statement_1 = require("./statement"); const storage_1 = require("./storage"); const types_1 = require("./types"); const account_1 = require("./types/account"); const asset_1 = require("./types/asset"); const block_1 = require("./types/block"); const contract_2 = require("./types/contract"); const header_1 = require("./types/header"); exports.createHelpers = () => { const mutableCache = {}; function memoized(helperClass) { return (options) => { const key = helperClass.getKey(options); let value = mutableCache[key]; if (value === undefined) { mutableCache[key] = value = new helperClass(options); } return value; }; } return { isAccount: new account_1.IsAccountHelper(), wrapAccount: new account_1.WrapAccountHelper(), unwrapAccount: new account_1.UnwrapAccountHelper(), arrClone: new arr_1.ArrCloneHelper(), arrConcat: new arr_1.ArrConcatHelper(), arrEvery: (options) => new arr_1.ArrEveryHelper(options), arrEveryFunc: new arr_1.ArrEveryFuncHelper(), arrFind: (options) => new arr_1.ArrFindHelper(options), arrFilter: (options) => new arr_1.ArrFilterHelper(options), arrFilterFunc: new arr_1.ArrFilterFuncHelper(), arrLeft: new arr_1.ArrLeftHelper(), arrMap: (options) => new arr_1.ArrMapHelper(options), arrMapFunc: new arr_1.ArrMapFuncHelper(), arrForEach: (options) => new arr_1.ArrForEachHelper(options), arrForEachFunc: new arr_1.ArrForEachFuncHelper(), arrRange: (options) => new arr_1.ArrRangeHelper(options), arrReduce: (options) => new arr_1.ArrReduceHelper(options), arrReduceFunc: new arr_1.ArrReduceFuncHelper(), arrSomeFunc: new arr_1.ArrSomeFuncHelper(), arrSome: (options) => new arr_1.ArrSomeHelper(options), arrToString: (options) => new arr_1.ArrToStringHelper(options), extendArr: new arr_1.ExtendArrHelper(), isAsset: new asset_1.IsAssetHelper(), wrapAsset: new asset_1.WrapAssetHelper(), unwrapAsset: new asset_1.UnwrapAssetHelper(), arrayBinding: (options) => new bind_1.ArrayBindingHelper(options), objectBinding: (options) => new bind_1.ObjectBindingHelper(options), bufferSlice: (options) => new buffer_1.BufferSliceHelper(options), isBlock: new block_1.IsBlockHelper(), wrapBlock: new block_1.WrapBlockHelper(), unwrapBlock: new block_1.UnwrapBlockHelper(), getCachedValue: (options) => new cache_1.GetCachedValueHelper(options), getCache: new cache_1.GetCacheHelper(), createClass: (options) => new class_1.CreateClassHelper(options), didReceiveAssets: new contract_1.DidReceiveAssetsHelper(), didReceiveNonClaimAssets: new contract_1.DidReceiveNonClaimAssetsHelper(), didSendAssets: new contract_1.DidSendAssetsHelper(), invokeSmartContract: (options) => new contract_1.InvokeSmartContractHelper(options), invokeSmartContractMethod: (options) => new contract_1.InvokeSmartContractMethodHelper(options), getOutputAssetValueMap: new contract_1.GetOutputAssetValueMapHelper(), invocationIsCaller: new contract_1.InvocationIsCallerHelper(), isCaller: new contract_1.IsCallerHelper(), isProcessedTransaction: new contract_1.IsProcessedTransactionHelper(), refundAssets: new contract_1.RefundAssetsHelper(), mergeAssetValueMaps: (options) => new contract_1.MergeAssetValueMapsHelper(options), getSmartContractProperty: (options) => new contract_1.GetSmartContractPropertyHelper(options), isDeployed: new contract_1.IsDeployedHelper(), setDeployed: new contract_1.SetDeployedHelper(), isClaimedTransaction: new contract_1.IsClaimedTransactionHelper(), setProcessedTransaction: new contract_1.SetProcessedTransactionHelper(), completeSend: new contract_1.CompleteSendHelper(), deploy: (options) => new contract_1.DeployHelper(options), upgrade: (options) => new contract_1.UpgradeHelper(options), handleNormal: (options) => new contract_1.HandleNormalHelper(options), handleSend: (options) => new contract_1.HandleSendHelper(options), handleReceive: (options) => new contract_1.HandleReceiveHelper(options), handleSendUnsafe: (options) => new contract_1.HandleSendUnsafeHelper(options), applicationMatchesVerification: new contract_1.ApplicationMatchesVerificationHelper(), isContract: new contract_2.IsContractHelper(), wrapContract: new contract_2.WrapContractHelper(), unwrapContract: new contract_2.UnwrapContractHelper(), arrSlice: (options = {}) => new common_1.ArrSliceHelper(options), cloneArray: new common_1.CloneArrayHelper(), forType: (options) => new types_1.ForTypeHelper(options), genericLogSerialize: new common_1.GenericLogSerializeHelper(), exp: new common_1.ExpHelper(), consoleLog: new common_1.ConsoleLogHelper(), debugLog: (options) => new common_1.DebugLogHelper(options), equalsEqualsEquals: (options) => new relational_1.EqualsEqualsEqualsHelper(options), equalsEquals: (options) => new relational_1.EqualsEqualsHelper(options), lessThan: (options) => new relational_1.LessThanHelper(options), processStatements: (options) => new statement_1.ProcessStatementsHelper(options), args: new function_1.ArgumentsHelper(), bindFunctionThis: (options) => new function_1.BindFunctionThisHelper(options), call: new function_1.CallHelper(), callLike: new function_1.CallLikeHelper(), cloneFunction: new function_1.CloneFunctionHelper(), createCallArray: new function_1.CreateCallArrayHelper(), createConstructArray: (options) => new function_1.CreateConstructArrayHelper(options), createFunctionArray: (options) => new function_1.CreateFunctionArrayHelper(options), createFunctionObject: (options) => new function_1.CreateFunctionObjectHelper(options), function: (options) => new function_1.FunctionHelper(options), functionLike: new function_1.FunctionLikeHelper(), getCallable: memoized(function_1.GetCallableHelper), invokeCall: memoized(function_1.InvokeCallHelper), invokeConstruct: (options) => new function_1.InvokeConstructHelper(options), new: (options) => new function_1.NewHelper(options), parameters: (options) => new function_1.ParametersHelper(options), forLoop: (options) => new statement_1.ForLoopHelper(options), if: (options) => new statement_1.IfHelper(options), case: (cases, defaultCase) => new statement_1.CaseHelper(cases, defaultCase), handleCompletion: new completionRecord_1.HandleCompletionHelper(), return: new completionRecord_1.ReturnHelper(), throw: new completionRecord_1.ThrowHelper(), break: new completionRecord_1.BreakHelper(), continue: new completionRecord_1.ContinueHelper(), throwCompletion: new completionRecord_1.ThrowCompletionHelper(), throwCompletionBase: new completionRecord_1.ThrowCompletionBaseHelper(), throwTypeError: new error_1.ThrowTypeErrorHelper(), wrapBoolean: new types_1.WrapBooleanHelper(), wrapNull: new types_1.WrapNullHelper(), wrapNumber: new types_1.WrapNumberHelper(), createObject: new types_1.CreateObjectHelper(), wrapString: new types_1.WrapStringHelper(), wrapSymbol: new types_1.WrapSymbolHelper(), wrapUndefined: new types_1.WrapUndefinedHelper(), isBoolean: new types_1.IsBooleanHelper(), isNull: new types_1.IsNullHelper(), isNumber: new types_1.IsNumberHelper(), isObject: new types_1.IsObjectHelper(), isString: new types_1.IsStringHelper(), isSymbol: new types_1.IsSymbolHelper(), isUndefined: new types_1.IsUndefinedHelper(), isNullOrUndefined: (options) => new types_1.IsNullOrUndefinedHelper(options), unwrapBoolean: new types_1.UnwrapBooleanHelper(), unwrapNumber: new types_1.UnwrapNumberHelper(), unwrapString: new types_1.UnwrapStringHelper(), unwrapSymbol: new types_1.UnwrapSymbolHelper(), getObject: new types_1.GetObjectHelper(), toBoolean: (options) => new types_1.ToBooleanHelper(options), toString: (options) => new types_1.ToStringHelper(options), toNumber: (options) => new types_1.ToNumberHelper(options), toObject: (options) => new types_1.ToObjectHelper(options), toPrimitive: (options) => new types_1.ToPrimitiveHelper(options), getSymbolObject: new types_1.GetSymbolObjectHelper(), getSymbolObjectProperty: new types_1.GetSymbolObjectPropertyHelper(), setSymbolObjectProperty: new types_1.SetSymbolObjectPropertyHelper(), setDataSymbolObjectProperty: new types_1.SetDataSymbolObjectPropertyHelper(), setAccessorSymbolObjectProperty: (options) => new types_1.SetAccessorSymbolObjectPropertyHelper(options), getPropertyObject: new types_1.GetPropertyObjectHelper(), getPropertyObjectKeys: new types_1.GetPropertyObjectKeysHelper(), getPropertyObjectValues: new types_1.GetPropertyObjectValuesHelper(), getPropertyObjectProperty: new types_1.GetPropertyObjectPropertyHelper(), setPropertyObjectProperty: new types_1.SetPropertyObjectPropertyHelper(), setDataPropertyObjectProperty: new types_1.SetDataPropertyObjectPropertyHelper(), setAccessorPropertyObjectProperty: (options) => new types_1.SetAccessorPropertyObjectPropertyHelper(options), getInternalObject: new types_1.GetInternalObjectHelper(), getInternalObjectProperty: new types_1.GetInternalObjectPropertyHelper(), setInternalObjectProperty: new types_1.SetInternalObjectPropertyHelper(), packObject: new types_1.PackObjectHelper(), pickObjectProperties: new types_1.PickObjectPropertiesHelper(), pickPropertyObjectProperties: new types_1.PickPropertyObjectPropertiesHelper(), pickSymbolObjectProperties: new types_1.PickSymbolObjectPropertiesHelper(), omitObjectProperties: new types_1.OmitObjectPropertiesHelper(), omitPropertyObjectProperties: new types_1.OmitPropertyObjectPropertiesHelper(), omitSymbolObjectProperties: new types_1.OmitSymbolObjectPropertiesHelper(), wrapObject: new types_1.WrapObjectHelper(), unwrapObject: new types_1.UnwrapObjectHelper(), instanceof: new types_1.InstanceofHelper(), inObjectProperty: (options) => new types_1.InObjectPropertyHelper(options), inPropertyObjectProperty: new types_1.InPropertyObjectPropertyHelper(), inSymbolObjectProperty: new types_1.InSymbolObjectPropertyHelper(), createPropertyObject: new types_1.CreatePropertyObjectHelper(), findObjectProperty: (options) => new types_1.FindObjectPropertyHelper(options), findObjectPropertyBase: (options) => new types_1.FindObjectPropertyHelperBase(options), isHeader: new header_1.IsHeaderHelper(), wrapHeader: new header_1.WrapHeaderHelper(), unwrapHeader: new header_1.UnwrapHeaderHelper(), iterableIteratorForEach: (options) => new iterableIterator_1.IterableIteratorForEachHelper(options), iterableIteratorReduce: (options) => new iterableIterator_1.IterableIteratorReduceHelper(options), createEnumeratorIterableIterator: (options) => new iterableIterator_1.CreateEnumeratorIterableIteratorHelper(options), createIterableIteratorBase: (options) => new iterableIterator_1.CreateIterableIteratorBaseHelper(options), createIteratorIterableIterator: (options) => new iterableIterator_1.CreateIteratorIterableIteratorHelper(options), rawIteratorEvery: (options) => new iterator_1.RawIteratorEveryHelper(options), rawIteratorEveryBase: (options) => new iterator_1.RawIteratorEveryBaseHelper(options), rawIteratorSome: (options) => new iterator_1.RawIteratorSomeHelper(options), rawIteratorSomeBase: (options) => new iterator_1.RawIteratorSomeBaseHelper(options), rawIteratorForEach: (options) => new iterator_1.RawIteratorForEachHelper(options), rawIteratorForEachKey: (options) => new iterator_1.RawIteratorForEachKeyHelper(options), rawIteratorForEachBase: (options) => new iterator_1.RawIteratorForEachBaseHelper(options), rawIteratorForEachFunc: new iterator_1.RawIteratorForEachFuncHelper(), rawIteratorForEachFuncBase: (options) => new iterator_1.RawIteratorForEachFuncBaseHelper(options), rawEnumeratorForEachFunc: new iterator_1.RawEnumeratorForEachFuncHelper(), rawEnumeratorForEach: (options) => new iterator_1.RawEnumeratorForEachHelper(options), rawEnumeratorFilter: (options) => new iterator_1.RawEnumeratorFilterHelper(options), rawEnumeratorFind: (options) => new iterator_1.RawEnumeratorFindHelper(options), rawEnumeratorReduce: (options) => new iterator_1.RawEnumeratorReduceHelper(options), rawEnumeratorEvery: (options) => new iterator_1.RawEnumeratorEveryHelper(options), rawEnumeratorSome: (options) => new iterator_1.RawEnumeratorSomeHelper(options), rawIteratorReduce: (options) => new iterator_1.RawIteratorReduceHelper(options), rawIteratorReduceBase: (options) => new iterator_1.RawIteratorReduceBaseHelper(options), createIteratorResult: new iteratorResult_1.CreateIteratorResultHelper(), mapDelete: new map_1.MapDeleteHelper(), mapEvery: (options) => new map_1.MapEveryHelper(options), mapForEach: (options) => new map_1.MapForEachHelper(options), mapFilter: (options) => new map_1.MapFilterHelper(options), mapMap: (options) => new map_1.MapMapHelper(options), mapReduce: (options) => new map_1.MapReduceHelper(options), mapSome: (options) => new map_1.MapSomeHelper(options), cacheStorage: new storage_1.CacheStorageHelper(), putCommonStorage: new storage_1.PutCommonStorageHelper(), handleUndefinedStorage: (options) => new storage_1.HandleUndefinedStorageHelper(options), commonStorage: new storage_1.CommonStorageHelper(), deleteCacheStorage: new storage_1.DeleteCacheStorageHelper(), deleteStorageBase: new storage_1.DeleteStorageBaseHelper(), deleteStorage: new storage_1.DeleteStorageHelper(), iterStorage: new storage_1.IterStorageHelper(), putStorage: new storage_1.PutStorageHelper(), getStorageBase: new storage_1.GetStorageBaseHelper(), getStorage: new storage_1.GetStorageHelper(), getCommonStorage: new storage_1.GetCommonStorageHelper(), atStructuredStorage: (options) => new storage_1.AtStructuredStorageHelper(options), createIteratorStructuredStorage: (options) => new storage_1.CreateIteratorStructuredStorageHelper(options), createStructuredStorage: (options) => new storage_1.CreateStructuredStorageHelper(options), deleteStructuredStorage: (options) => new storage_1.DeleteStructuredStorageHelper(options), getKeyStructuredStorage: (options) => new storage_1.GetKeyStructuredStorageHelper(options), getStructuredStorage: (options) => new storage_1.GetStructuredStorageHelper(options), hasStructuredStorage: (options) => new storage_1.HasStructuredStorageHelper(options), setStructuredStorage: (options) => new storage_1.SetStructuredStorageHelper(options), setArrayStorage: new storage_1.SetArrayStorageHelper(), forEachFuncStructuredStorageBase: (options) => new storage_1.ForEachFuncStructuredStorageBaseHelper(options), forEachFuncStructuredStorage: (options) => new storage_1.ForEachFuncStructuredStorageHelper(options), forEachKeyFuncStructuredStorage: (options) => new storage_1.ForEachKeyFuncStructuredStorageHelper(options), forEachStructuredStorageBase: (options) => new storage_1.ForEachStructuredStorageBaseHelper(options), forEachKeyStructuredStorage: (options) => new storage_1.ForEachKeyStructuredStorageHelper(options), forEachStructuredStorage: (options) => new storage_1.ForEachStructuredStorageHelper(options), forEachValStructuredStorage: (options) => new storage_1.ForEachValStructuredStorageHelper(options), getStructuredStorageSize: (options) => new storage_1.GetStructuredStorageSizeHelper(options), handleValueStructuredStorage: new storage_1.HandleValueStructuredStorageHelper(), handleValValueStructuredStorage: new storage_1.HandleValValueStructuredStorageHelper(), handlePrefixKeyStructuredStorage: new storage_1.HandlePrefixKeyStructuredStorageHelper(), createIterableIteratorStructuredStorageBase: (options) => new storage_1.CreateIterableIteratorStructuredStorageBaseHelper(options), createIterableIteratorStructuredStorage: (options) => new storage_1.CreateIterableIteratorStructuredStorageHelper(options), createKeyIterableIteratorStructuredStorage: (options) => new storage_1.CreateKeyIterableIteratorStructuredStorageHelper(options), createValIterableIteratorStructuredStorage: (options) => new storage_1.CreateValIterableIteratorStructuredStorageHelper(options), getArrayStorageLength: new storage_1.GetArrayStorageLengthHelper(), putArrayStorageLength: new storage_1.PutArrayStorageLengthHelper(), handlePrefixArrayStructuredStorage: new storage_1.HandlePrefixArrayStructuredStorageHelper(), unwrapKeyStructuredStorage: (options) => new storage_1.UnwrapKeyStructuredStorageHelper(options), structuredStorageReduceBase: (options) => new storage_1.StructuredStorageReduceBaseHelper(options), structuredStorageReduce: (options) => new storage_1.StructuredStorageReduceHelper(options), structuredStorageReduceVal: (options) => new storage_1.StructuredStorageReduceValHelper(options), forBuiltinType: (options) => new types_1.ForBuiltinTypeHelper(options), forIterableType: (options) => new types_1.ForIterableTypeHelper(options), unwrapVal: (options) => new types_1.UnwrapValHelper(options), wrapVal: (options) => new types_1.WrapValHelper(options), wrapArrayVal: (options) => new types_1.WrapArrayValHelper(options), unwrapValRecursive: (options) => new types_1.UnwrapValRecursiveHelper(options), wrapValRecursive: (options) => new types_1.WrapValRecursiveHelper(options), arrayLength: new types_1.ArrayLengthHelper(), createArray: new types_1.CreateArrayHelper(), getArrayIndex: new types_1.GetArrayIndexHelper(), setArrayIndex: new types_1.SetArrayIndexHelper(), wrapArray: new types_1.WrapArrayHelper(), unwrapArray: new types_1.UnwrapArrayHelper(), isArray: new types_1.IsArrayHelper(), wrapArrayStorage: new types_1.WrapArrayStorageHelper(), unwrapArrayStorage: new types_1.UnwrapArrayStorageHelper(), isArrayStorage: new types_1.IsArrayStorageHelper(), wrapAttribute: new types_1.WrapAttributeHelper(), unwrapAttribute: new types_1.UnwrapAttributeHelper(), isAttribute: new types_1.IsAttributeHelper(), bufferLength: new types_1.BufferLengthHelper(), concatBuffer: new types_1.ConcatBufferHelper(), getBufferIndex: new types_1.GetBufferIndexHelper(), createBuffer: new types_1.WrapBufferHelper(), isBuffer: new types_1.IsBufferHelper(), unwrapBuffer: new types_1.UnwrapBufferHelper(), wrapBuffer: new types_1.WrapBufferHelper(), wrapError: new types_1.WrapErrorHelper(), unwrapError: new types_1.UnwrapErrorHelper(), isError: new types_1.IsErrorHelper(), wrapForwardValue: new types_1.WrapForwardValueHelper(), unwrapForwardValue: new types_1.UnwrapForwardValueHelper(), isForwardValue: new types_1.IsForwardValueHelper(), wrapInput: new types_1.WrapInputHelper(), unwrapInput: new types_1.UnwrapInputHelper(), isInput: new types_1.IsInputHelper(), isIterable: new types_1.IsIterableHelper(), wrapIteratorResult: new types_1.WrapIteratorResultHelper(), unwrapIteratorResult: new types_1.UnwrapIteratorResultHelper(), isIteratorResult: new types_1.IsIteratorResultHelper(), wrapIterableIterator: new types_1.WrapIterableIteratorHelper(), unwrapIterableIterator: new types_1.UnwrapIterableIteratorHelper(), isIterableIterator: new types_1.IsIterableIteratorHelper(), wrapMap: new types_1.WrapMapHelper(), unwrapMap: new types_1.UnwrapMapHelper(), isMap: new types_1.IsMapHelper(), wrapMapStorage: new types_1.WrapMapStorageHelper(), unwrapMapStorage: new types_1.UnwrapMapStorageHelper(), isMapStorage: new types_1.IsMapStorageHelper(), wrapOutput: new types_1.WrapOutputHelper(), unwrapOutput: new types_1.UnwrapOutputHelper(), isOutput: new types_1.IsOutputHelper(), wrapSet: new types_1.WrapSetHelper(), unwrapSet: new types_1.UnwrapSetHelper(), isSet: new types_1.IsSetHelper(), wrapSetStorage: new types_1.WrapSetStorageHelper(), unwrapSetStorage: new types_1.UnwrapSetStorageHelper(), isSetStorage: new types_1.IsSetStorageHelper(), wrapTransaction: new types_1.WrapTransactionHelper(), unwrapTransaction: new types_1.UnwrapTransactionHelper(), isTransaction: new types_1.IsTransactionHelper(), export: (options) => new module_1.ExportHelper(options), exportSingle: (options) => new module_1.ExportSingleHelper(options), getModule: (options) => new module_1.GetModuleHelper(options), getCurrentModule: new module_1.GetCurrentModuleHelper(), getModules: new module_1.GetModulesHelper(), addEmptyModule: new module_1.AddEmptyModuleHelper(), createGlobalObject: new global_1.CreateGlobalObjectHelper(), getArgument: new global_1.GetArgumentHelper(), getGlobalProperty: (options) => new global_1.GetGlobalPropertyHelper(options), }; }; //# sourceMappingURL=data:application/json;charset=utf8;base64,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RSxJQUFJLDRCQUFvQixFQUFFO1FBQzFDLGdCQUFnQixFQUFFLElBQUksOEJBQXNCLEVBQUU7UUFDOUMsWUFBWSxFQUFFLElBQUksMEJBQWtCLEVBQUU7UUFHdEMsZUFBZSxFQUFFLElBQUksNkJBQXFCLEVBQUU7UUFDNUMsaUJBQWlCLEVBQUUsSUFBSSwrQkFBdUIsRUFBRTtRQUNoRCxhQUFhLEVBQUUsSUFBSSwyQkFBbUIsRUFBRTtRQUV4QyxNQUFNLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUkscUJBQVksQ0FBQyxPQUFPLENBQUM7UUFDOUMsWUFBWSxFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLDJCQUFrQixDQUFDLE9BQU8sQ0FBQztRQUMxRCxTQUFTLEVBQUUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLElBQUksd0JBQWUsQ0FBQyxPQUFPLENBQUM7UUFDcEQsZ0JBQWdCLEVBQUUsSUFBSSwrQkFBc0IsRUFBRTtRQUM5QyxVQUFVLEVBQUUsSUFBSSx5QkFBZ0IsRUFBRTtRQUNsQyxjQUFjLEVBQUUsSUFBSSw2QkFBb0IsRUFBRTtRQUUxQyxrQkFBa0IsRUFBRSxJQUFJLGlDQUF3QixFQUFFO1FBQ2xELFdBQVcsRUFBRSxJQUFJLDBCQUFpQixFQUFFO1FBQ3BDLGlCQUFpQixFQUFFLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGdDQUF1QixDQUFDLE9BQU8sQ0FBQztLQUNyRSxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiZmlsZSI6Im5lby1vbmUtc21hcnQtY29udHJhY3QtY29tcGlsZXIvc3JjL2NvbXBpbGUvaGVscGVyL2NyZWF0ZUhlbHBlcnMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBcnJDbG9uZUhlbHBlcixcbiAgQXJyQ29uY2F0SGVscGVyLFxuICBBcnJFdmVyeUZ1bmNIZWxwZXIsXG4gIEFyckV2ZXJ5SGVscGVyLFxuICBBcnJFdmVyeUhlbHBlck9wdGlvbnMsXG4gIEFyckZpbHRlckZ1bmNIZWxwZXIsXG4gIEFyckZpbHRlckhlbHBlcixcbiAgQXJyRmlsdGVySGVscGVyT3B0aW9ucyxcbiAgQXJyRmluZEhlbHBlcixcbiAgQXJyRmluZEhlbHBlck9wdGlvbnMsXG4gIEFyckZvckVhY2hGdW5jSGVscGVyLFxuICBBcnJGb3JFYWNoSGVscGVyLFxuICBBcnJGb3JFYWNoSGVscGVyT3B0aW9ucyxcbiAgQXJyTGVmdEhlbHBlcixcbiAgQXJyTWFwRnVuY0hlbHBlcixcbiAgQXJyTWFwSGVscGVyLFxuICBBcnJNYXBIZWxwZXJPcHRpb25zLFxuICBBcnJSYW5nZUhlbHBlcixcbiAgQXJyUmFuZ2VIZWxwZXJPcHRpb25zLFxuICBBcnJSZWR1Y2VGdW5jSGVscGVyLFxuICBBcnJSZWR1Y2VIZWxwZXIsXG4gIEFyclJlZHVjZUhlbHBlck9wdGlvbnMsXG4gIEFyclNvbWVGdW5jSGVscGVyLFxuICBBcnJTb21lSGVscGVyLFxuICBBcnJTb21lSGVscGVyT3B0aW9ucyxcbiAgQXJyVG9TdHJpbmdIZWxwZXIsXG4gIEFyclRvU3RyaW5nSGVscGVyT3B0aW9ucyxcbiAgRXh0ZW5kQXJySGVscGVyLFxufSBmcm9tICcuL2Fycic7XG5pbXBvcnQgeyBBcnJheUJpbmRpbmdIZWxwZXIsIEFycmF5QmluZGluZ0hlbHBlck9wdGlvbnMsIE9iamVjdEJpbmRpbmdIZWxwZXIsIE9iamVjdEJpbmRpbmdIZWxwZXJPcHRpb25zIH0gZnJvbSAnLi9iaW5kJztcbmltcG9ydCB7IEJ1ZmZlclNsaWNlSGVscGVyLCBCdWZmZXJTbGljZUhlbHBlck9wdGlvbnMgfSBmcm9tICcuL2J1ZmZlcic7XG5pbXBvcnQgeyBHZXRDYWNoZWRWYWx1ZUhlbHBlciwgR2V0Q2FjaGVkVmFsdWVIZWxwZXJPcHRpb25zLCBHZXRDYWNoZUhlbHBlciB9IGZyb20gJy4vY2FjaGUnO1xuaW1wb3J0IHsgQ3JlYXRlQ2xhc3NIZWxwZXIsIENyZWF0ZUNsYXNzSGVscGVyT3B0aW9ucyB9IGZyb20gJy4vY2xhc3MnO1xuaW1wb3J0IHtcbiAgQXJyU2xpY2VIZWxwZXIsXG4gIEFyclNsaWNlSGVscGVyT3B0aW9ucyxcbiAgQ2xvbmVBcnJheUhlbHBlcixcbiAgQ29uc29sZUxvZ0hlbHBlcixcbiAgRGVidWdMb2dIZWxwZXIsXG4gIERlYnVnTG9nSGVscGVyT3B0aW9ucyxcbiAgRXhwSGVscGVyLFxuICBHZW5lcmljTG9nU2VyaWFsaXplSGVscGVyLFxufSBmcm9tICcuL2NvbW1vbic7XG5pbXBvcnQge1xuICBCcmVha0hlbHBlcixcbiAgQ29udGludWVIZWxwZXIsXG4gIEhhbmRsZUNvbXBsZXRpb25IZWxwZXIsXG4gIFJldHVybkhlbHBlcixcbiAgVGhyb3dDb21wbGV0aW9uQmFzZUhlbHBlcixcbiAgVGhyb3dDb21wbGV0aW9uSGVscGVyLFxuICBUaHJvd0hlbHBlcixcbn0gZnJvbSAnLi9jb21wbGV0aW9uUmVjb3JkJztcbmltcG9ydCB7XG4gIEFwcGxpY2F0aW9uTWF0Y2hlc1ZlcmlmaWNhdGlvbkhlbHBlcixcbiAgQ29tcGxldGVTZW5kSGVscGVyLFxuICBEZXBsb3lIZWxwZXIsXG4gIERlcGxveUhlbHBlck9wdGlvbnMsXG4gIERpZFJlY2VpdmVBc3NldHNIZWxwZXIsXG4gIERpZFJlY2VpdmVOb25DbGFpbUFzc2V0c0hlbHBlcixcbiAgRGlkU2VuZEFzc2V0c0hlbHBlcixcbiAgR2V0T3V0cHV0QXNzZXRWYWx1ZU1hcEhlbHBlcixcbiAgR2V0U21hcnRDb250cmFjdFByb3BlcnR5SGVscGVyLFxuICBHZXRTbWFydENvbnRyYWN0UHJvcGVydHlIZWxwZXJPcHRpb25zLFxuICBIYW5kbGVOb3JtYWxIZWxwZXIsXG4gIEhhbmRsZU5vcm1hbEhlbHBlck9wdGlvbnMsXG4gIEhhbmRsZVJlY2VpdmVIZWxwZXIsXG4gIEhhbmRsZVNlbmRIZWxwZXIsXG4gIEhhbmRsZVNlbmRIZWxwZXJPcHRpb25zLFxuICBIYW5kbGVTZW5kVW5zYWZlSGVscGVyLFxuICBJbnZvY2F0aW9uSXNDYWxsZXJIZWxwZXIsXG4gIEludm9rZVNtYXJ0Q29udHJhY3RIZWxwZXIsXG4gIEludm9rZVNtYXJ0Q29udHJhY3RIZWxwZXJPcHRpb25zLFxuICBJbnZva2VTbWFydENvbnRyYWN0TWV0aG9kSGVscGVyLFxuICBJbnZva2VTbWFydENvbnRyYWN0TWV0aG9kSGVscGVyT3B0aW9ucyxcbiAgSXNDYWxsZXJIZWxwZXIsXG4gIElzQ2xhaW1lZFRyYW5zYWN0aW9uSGVscGVyLFxuICBJc0RlcGxveWVkSGVscGVyLFxuICBJc1Byb2Nlc3NlZFRyYW5zYWN0aW9uSGVscGVyLFxuICBNZXJnZUFzc2V0VmFsdWVNYXBzSGVscGVyLFxuICBNZXJnZUFzc2V0VmFsdWVNYXBzSGVscGVyT3B0aW9ucyxcbiAgUmVmdW5kQXNzZXRzSGVscGVyLFxuICBTZXREZXBsb3llZEhlbHBlcixcbiAgU2V0UHJvY2Vzc2VkVHJhbnNhY3Rpb25IZWxwZXIsXG4gIFVwZ3JhZGVIZWxwZXIsXG4gIFVwZ3JhZGVIZWxwZXJPcHRpb25zLFxufSBmcm9tICcuL2NvbnRyYWN0JztcbmltcG9ydCB7IEhhbmRsZVNlbmRVbnNhZmVSZWNlaXZlSGVscGVyQmFzZU9wdGlvbnMgfSBmcm9tICcuL2NvbnRyYWN0L0hhbmRsZVNlbmRVbnNhZmVSZWNlaXZlSGVscGVyQmFzZSc7XG5pbXBvcnQgeyBUaHJvd1R5cGVFcnJvckhlbHBlciB9IGZyb20gJy4vZXJyb3InO1xuaW1wb3J0IHtcbiAgQXJndW1lbnRzSGVscGVyLFxuICBCaW5kRnVuY3Rpb25UaGlzSGVscGVyLFxuICBCaW5kRnVuY3Rpb25UaGlzSGVscGVyT3B0aW9ucyxcbiAgQ2FsbEhlbHBlcixcbiAgQ2FsbExpa2VIZWxwZXIsXG4gIENsb25lRnVuY3Rpb25IZWxwZXIsXG4gIENyZWF0ZUNhbGxBcnJheUhlbHBlcixcbiAgQ3JlYXRlQ29uc3RydWN0QXJyYXlIZWxwZXIsXG4gIENyZWF0ZUNvbnN0cnVjdEFycmF5SGVscGVyT3B0aW9ucyxcbiAgQ3JlYXRlRnVuY3Rpb25BcnJheUhlbHBlcixcbiAgQ3JlYXRlRnVuY3Rpb25BcnJheUhlbHBlck9wdGlvbnMsXG4gIENyZWF0ZUZ1bmN0aW9uT2JqZWN0SGVscGVyLFxuICBDcmVhdGVGdW5jdGlvbk9iamVjdEhlbHBlck9wdGlvbnMsXG4gIEZ1bmN0aW9uSGVscGVyLFxuICBGdW5jdGlvbkhlbHBlck9wdGlvbnMsXG4gIEZ1bmN0aW9uTGlrZUhlbHBlcixcbiAgR2V0Q2FsbGFibGVIZWxwZXIsXG4gIEdldENhbGxhYmxlSGVscGVyT3B0aW9ucyxcbiAgSW52b2tlQ2FsbEhlbHBlcixcbiAgSW52b2tlQ2FsbEhlbHBlck9wdGlvbnMsXG4gIEludm9rZUNvbnN0cnVjdEhlbHBlcixcbiAgSW52b2tlQ29uc3RydWN0SGVscGVyT3B0aW9ucyxcbiAgTmV3SGVscGVyLFxuICBOZXdIZWxwZXJPcHRpb25zLFxuICBQYXJhbWV0ZXJzSGVscGVyLFxuICBQYXJhbWV0ZXJzSGVscGVyT3B0aW9ucyxcbn0gZnJvbSAnLi9mdW5jdGlvbic7XG5pbXBvcnQge1xuICBDcmVhdGVHbG9iYWxPYmplY3RIZWxwZXIsXG4gIEdldEFyZ3VtZW50SGVscGVyLFxuICBHZXRHbG9iYWxQcm9wZXJ0eUhlbHBlcixcbiAgR2V0R2xvYmFsUHJvcGVydHlIZWxwZXJPcHRpb25zLFxufSBmcm9tICcuL2dsb2JhbCc7XG5pbXBvcnQgeyBIZWxwZXIgfSBmcm9tICcuL0hlbHBlcic7XG5pbXBvcnQge1xuICBDcmVhdGVFbnVtZXJhdG9ySXRlcmFibGVJdGVyYXRvckhlbHBlcixcbiAgQ3JlYXRlRW51bWVyYXRvckl0ZXJhYmxlSXRlcmF0b3JIZWxwZXJPcHRpb25zLFxuICBDcmVhdGVJdGVyYWJsZUl0ZXJhdG9yQmFzZUhlbHBlcixcbiAgQ3JlYXRlSXRlcmFibGVJdGVyYXRvckJhc2VIZWxwZXJPcHRpb25zLFxuICBDcmVhdGVJdGVyYXRvckl0ZXJhYmxlSXRlcmF0b3JIZWxwZXIsXG4gIENyZWF0ZUl0ZXJhdG9ySXRlcmFibGVJdGVyYXRvckhlbHBlck9wdGlvbnMsXG4gIEl0ZXJhYmxlSXRlcmF0b3JGb3JFYWNoSGVscGVyLFxuICBJdGVyYWJsZUl0ZXJhdG9yRm9yRWFjaEhlbHBlck9wdGlvbnMsXG4gIEl0ZXJhYmxlSXRlcmF0b3JSZWR1Y2VIZWxwZXIsXG4gIEl0ZXJhYmxlSXRlcmF0b3JSZWR1Y2VIZWxwZXJPcHRpb25zLFxufSBmcm9tICcuL2l0ZXJhYmxlSXRlcmF0b3InO1xuaW1wb3J0IHtcbiAgUmF3RW51bWVyYXRvckV2ZXJ5SGVscGVyLFxuICBSYXdFbnVtZXJhdG9yRXZlcnlIZWxwZXJPcHRpb25zLFxuICBSYXdFbnVtZXJhdG9yRmlsdGVySGVscGVyLFxuICBSYXdFbnVtZXJhdG9yRmlsdGVySGVscGVyT3B0aW9ucyxcbiAgUmF3RW51bWVyYXRvckZpbmRIZWxwZXIsXG4gIFJhd0VudW1lcmF0b3JGaW5kSGVscGVyT3B0aW9ucyxcbiAgUmF3RW51bWVyYXRvckZvckVhY2hGdW5jSGVscGVyLFxuICBSYXdFbnVtZXJhdG9yRm9yRWFjaEhlbHBlcixcbiAgUmF3RW51bWVyYXRvckZvckVhY2hIZWxwZXJPcHRpb25zLFxuICBSYXdFbnVtZXJhdG9yUmVkdWNlSGVscGVyLFxuICBSYXdFbnVtZXJhdG9yUmVkdWNlSGVscGVyT3B0aW9ucyxcbiAgUmF3RW51bWVyYXRvclNvbWVIZWxwZXIsXG4gIFJhd0VudW1lcmF0b3JTb21lSGVscGVyT3B0aW9ucyxcbiAgUmF3SXRlcmF0b3JFdmVyeUJhc2VIZWxwZXIsXG4gIFJhd0l0ZXJhdG9yRXZlcnlCYXNlSGVscGVyT3B0aW9ucyxcbiAgUmF3SXRlcmF0b3JFdmVyeUhlbHBlcixcbiAgUmF3SXRlcmF0b3JFdmVyeUhlbHBlck9wdGlvbnMsXG4gIFJhd0l0ZXJhdG9yRm9yRWFjaEJhc2VIZWxwZXIsXG4gIFJhd0l0ZXJhdG9yRm9yRWFjaEJhc2VIZWxwZXJPcHRpb25zLFxuICBSYXdJdGVyYXRvckZvckVhY2hGdW5jQmFzZUhlbHBlcixcbiAgUmF3SXRlcmF0b3JGb3JFYWNoRnVuY0Jhc2VIZWxwZXJPcHRpb25zLFxuICBSYXdJdGVyYXRvckZvckVhY2hGdW5jSGVscGVyLFxuICBSYXdJdGVyYXRvckZvckVhY2hIZWxwZXIsXG4gIFJhd0l0ZXJhdG9yRm9yRWFjaEhlbHBlck9wdGlvbnMsXG4gIFJhd0l0ZXJhdG9yRm9yRWFjaEtleUhlbHBlcixcbiAgUmF3SXRlcmF0b3JGb3JFYWNoS2V5SGVscGVyT3B0aW9ucyxcbiAgUmF3SXRlcmF0b3JSZWR1Y2VCYXNlSGVscGVyLFxuICBSYXdJdGVyYXRvclJlZHVjZUJhc2VIZWxwZXJPcHRpb25zLFxuICBSYXdJdGVyYXRvclJlZHVjZUhlbHBlcixcbiAgUmF3SXRlcmF0b3JSZWR1Y2VIZWxwZXJPcHRpb25zLFxuICBSYXdJdGVyYXRvclNvbWVCYXNlSGVscGVyLFxuICBSYXdJdGVyYXRvclNvbWVCYXNlSGVscGVyT3B0