{"version":3,"file":"smartargs-ngx-neoline.mjs","sources":["../tmp-esm2022/lib/neoline.service.js","../tmp-esm2022/lib/neoline.types.js","../tmp-esm2022/lib/provider.js","../tmp-esm2022/smartargs-ngx-neoline.js"],"sourcesContent":["import { Injectable, InjectionToken, inject } from '@angular/core';\nimport { Observable, ReplaySubject, firstValueFrom } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nconst NEO_READY_EVENT = 'NEOLine.NEO.EVENT.READY';\nconst N3_READY_EVENT = 'NEOLine.N3.EVENT.READY';\nexport const NEOLINE_DEBUG_LOGS = new InjectionToken('NEOLINE_DEBUG_LOGS', { providedIn: 'root', factory: () => false });\nexport class NeolineService {\n    neoSubject = new ReplaySubject(1);\n    n3Subject = new ReplaySubject(1);\n    debugEnabled = inject(NEOLINE_DEBUG_LOGS);\n    debug(method, ...args) {\n        if (this.debugEnabled) {\n            console.debug('[NeolineService]', method, ...args);\n        }\n    }\n    logError(method, err) {\n        console.error('[NeolineService]', method, err);\n    }\n    async call(method, args, fn) {\n        this.debug(`${method}:start`, ...args);\n        try {\n            const n3 = await this.getNeolineN3();\n            const result = await fn(n3);\n            this.debug(`${method}:success`, result);\n            return result;\n        }\n        catch (err) {\n            this.logError(`${method}:fail`, err);\n            throw err;\n        }\n    }\n    constructor() {\n        this.initializeEventListeners();\n    }\n    get neoline$() {\n        return this.neoSubject.asObservable();\n    }\n    get neolineN3$() {\n        return this.n3Subject.asObservable();\n    }\n    async getNeoline() {\n        this.debug('getNeoline:start');\n        try {\n            const instance = await firstValueFrom(this.neoline$);\n            this.debug('getNeoline:success');\n            return instance;\n        }\n        catch (err) {\n            this.logError('getNeoline:fail', err);\n            throw err;\n        }\n    }\n    async getNeolineN3() {\n        this.debug('getNeolineN3:start');\n        try {\n            const instance = await firstValueFrom(this.neolineN3$);\n            this.debug('getNeolineN3:success');\n            return instance;\n        }\n        catch (err) {\n            this.logError('getNeolineN3:fail', err);\n            throw err;\n        }\n    }\n    async getNetworks() {\n        return this.call('getNetworks', [], (n3) => n3.getNetworks());\n    }\n    async getAccount() {\n        return this.call('getAccount', [], (n3) => n3.getAccount());\n    }\n    async getPublicKey() {\n        return this.call('getPublicKey', [], (n3) => n3.getPublicKey());\n    }\n    async getProvider() {\n        return this.call('getProvider', [], (n3) => n3.getProvider());\n    }\n    async getStorage(params) {\n        return this.call('getStorage', [params], (n3) => n3.getStorage(params));\n    }\n    async getBalance() {\n        return this.call('getBalance', [], (n3) => n3.getBalance());\n    }\n    async invokeRead(params) {\n        return this.call('invokeRead', [params], (n3) => n3.invokeRead(params));\n    }\n    async invokeReadMulti(params) {\n        return this.call('invokeReadMulti', [params], (n3) => n3.invokeReadMulti(params));\n    }\n    async verifyMessageV2(params) {\n        return this.call('verifyMessageV2', [params], (n3) => n3.verifyMessageV2(params));\n    }\n    async getBlock(params) {\n        return this.call('getBlock', [params], (n3) => n3.getBlock(params));\n    }\n    async getTransaction(params) {\n        return this.call('getTransaction', [params], (n3) => n3.getTransaction(params));\n    }\n    async getApplicationLog(params) {\n        return this.call('getApplicationLog', [params], (n3) => n3.getApplicationLog(params));\n    }\n    async pickAddress() {\n        return this.call('pickAddress', [], (n3) => n3.pickAddress());\n    }\n    async addressToScriptHash(params) {\n        return this.call('AddressToScriptHash', [params], (n3) => n3.AddressToScriptHash(params));\n    }\n    async scriptHashToAddress(params) {\n        return this.call('ScriptHashToAddress', [params], (n3) => n3.ScriptHashToAddress(params));\n    }\n    async send(params) {\n        return this.call('send', [params], (n3) => n3.send(params));\n    }\n    async invoke(params) {\n        return this.call('invoke', [params], (n3) => n3.invoke(params));\n    }\n    async invokeMultiple(params) {\n        return this.call('invokeMultiple', [params], (n3) => n3.invokeMultiple(params));\n    }\n    async signMessageV2(params) {\n        return this.call('signMessageV2', [params], (n3) => n3.signMessageV2(params));\n    }\n    async signMessageWithoutSaltV2(params) {\n        return this.call('signMessageWithoutSaltV2', [params], (n3) => n3.signMessageWithoutSaltV2(params));\n    }\n    async signTransaction(params) {\n        return this.call('signTransaction', [params], (n3) => n3.signTransaction(params));\n    }\n    async switchWalletNetwork(params) {\n        return this.call('switchWalletNetwork', [params], (n3) => n3.switchWalletNetwork(params));\n    }\n    async switchWalletAccount() {\n        return this.call('switchWalletAccount', [], (n3) => n3.switchWalletAccount());\n    }\n    on(event) {\n        return new Observable((subscriber) => {\n            this.debug('on:subscribe:start', String(event));\n            let provider;\n            const handler = (payload) => {\n                this.debug('on:event', String(event), payload);\n                subscriber.next(payload);\n            };\n            this.getNeolineN3()\n                .then((n3) => {\n                provider = n3;\n                this.debug('on:listener:added', String(event));\n                n3.addEventListener(event, handler);\n            })\n                .catch((err) => {\n                this.logError('on:subscribe:fail', err);\n                subscriber.error(err);\n            });\n            return () => {\n                this.debug('on:unsubscribe', String(event));\n                if (provider) {\n                    try {\n                        provider.removeEventListener(event, handler);\n                        this.debug('on:listener:removed', String(event));\n                    }\n                    catch (err) {\n                        this.logError('on:unsubscribe:fail', err);\n                    }\n                }\n            };\n        });\n    }\n    initializeEventListeners() {\n        if (typeof window === 'undefined') {\n            this.debug('init:skipped:ssr');\n            return;\n        }\n        // If the extension already injected the objects, initialize immediately\n        try {\n            const w = window;\n            if (w.NEOLine?.Init) {\n                const instance = new w.NEOLine.Init();\n                if (instance) {\n                    this.neoSubject.next(instance);\n                    this.debug('init:NEOLine:injected');\n                }\n                else {\n                    this.neoSubject.error(new Error('common dAPI method failed to load.'));\n                    this.logError('init:NEOLine:injected:fail', new Error('common dAPI method failed to load.'));\n                }\n            }\n            if (w.NEOLineN3?.Init) {\n                const instanceN3 = new w.NEOLineN3.Init();\n                if (instanceN3) {\n                    this.n3Subject.next(instanceN3);\n                    this.debug('init:NEOLineN3:injected');\n                }\n                else {\n                    this.n3Subject.error(new Error('N3 dAPI method failed to load.'));\n                    this.logError('init:NEOLineN3:injected:fail', new Error('N3 dAPI method failed to load.'));\n                }\n            }\n        }\n        catch (err) {\n            this.debug('init:injected-check:error', err);\n            // Ignore and rely on events below\n        }\n        window.addEventListener(NEO_READY_EVENT, () => {\n            try {\n                const w = window;\n                if (!w.NEOLine?.Init) {\n                    this.neoSubject.error(new Error('NEOLine Init not available on READY event.'));\n                    this.logError('NEO_READY_EVENT:Init:missing', new Error('NEOLine Init not available on READY event.'));\n                    return;\n                }\n                const neoline = new w.NEOLine.Init();\n                if (neoline) {\n                    this.neoSubject.next(neoline);\n                    this.debug('NEO_READY_EVENT:provider:ready');\n                }\n                else {\n                    this.neoSubject.error(new Error('common dAPI method failed to load.'));\n                    this.logError('NEO_READY_EVENT:provider:fail', new Error('common dAPI method failed to load.'));\n                }\n            }\n            catch (err) {\n                const e = err instanceof Error ? err : new Error(String(err));\n                this.neoSubject.error(e);\n                this.logError('NEO_READY_EVENT:handler:error', e);\n            }\n        });\n        window.addEventListener(N3_READY_EVENT, () => {\n            try {\n                const w = window;\n                if (!w.NEOLineN3?.Init) {\n                    this.n3Subject.error(new Error('NEOLineN3 Init not available on READY event.'));\n                    this.logError('N3_READY_EVENT:Init:missing', new Error('NEOLineN3 Init not available on READY event.'));\n                    return;\n                }\n                const neolineN3 = new w.NEOLineN3.Init();\n                if (neolineN3) {\n                    this.n3Subject.next(neolineN3);\n                    this.debug('N3_READY_EVENT:provider:ready');\n                }\n                else {\n                    this.n3Subject.error(new Error('N3 dAPI method failed to load.'));\n                    this.logError('N3_READY_EVENT:provider:fail', new Error('N3 dAPI method failed to load.'));\n                }\n            }\n            catch (err) {\n                const e = err instanceof Error ? err : new Error(String(err));\n                this.n3Subject.error(e);\n                this.logError('N3_READY_EVENT:handler:error', e);\n            }\n        });\n    }\n    static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NeolineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });\n    static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NeolineService, providedIn: 'root' });\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"20.2.4\", ngImport: i0, type: NeolineService, decorators: [{\n            type: Injectable,\n            args: [{ providedIn: 'root' }]\n        }], ctorParameters: () => [] });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVvbGluZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGlicy9zcmMvbGliL25lb2xpbmUuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkUsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLE1BQU0sTUFBTSxDQUFDOztBQTRDakUsTUFBTSxlQUFlLEdBQUcseUJBQXlCLENBQUM7QUFDbEQsTUFBTSxjQUFjLEdBQUcsd0JBQXdCLENBQUM7QUFFaEQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsSUFBSSxjQUFjLENBQ2xELG9CQUFvQixFQUNwQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUM3QyxDQUFDO0FBR0YsTUFBTSxPQUFPLGNBQWM7SUFDUixVQUFVLEdBQUcsSUFBSSxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7SUFDM0MsU0FBUyxHQUFHLElBQUksYUFBYSxDQUFvQixDQUFDLENBQUMsQ0FBQztJQUNwRCxZQUFZLEdBQUcsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFFbkQsS0FBSyxDQUFDLE1BQWMsRUFBRSxHQUFHLElBQWU7UUFDOUMsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztRQUNyRCxDQUFDO0lBQ0gsQ0FBQztJQUVPLFFBQVEsQ0FBQyxNQUFjLEVBQUUsR0FBWTtRQUMzQyxPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sS0FBSyxDQUFDLElBQUks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LENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2dCQUM5RCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyw4QkFBOEIsRUFBRSxDQUFDLENBQUMsQ0FBQztZQUNuRCxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO3VHQXZWVSxjQUFjOzJHQUFkLGNBQWMsY0FERCxNQUFNOzsyRkFDbkIsY0FBYztrQkFEMUIsVUFBVTttQkFBQyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBJbmplY3Rpb25Ub2tlbiwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlLCBSZXBsYXlTdWJqZWN0LCBmaXJzdFZhbHVlRnJvbSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHR5cGUge1xuICBHZXROZXR3b3Jrc1Jlc3BvbnNlLFxuICBHZXRBY2NvdW50UmVzcG9uc2UsXG4gIEdldFB1YmxpY0tleVJlc3BvbnNlLFxuICBHZXRQcm92aWRlclJlc3BvbnNlLFxuICBHZXRTdG9yYWdlUGFyYW1zLFxuICBHZXRTdG9yYWdlUmVzcG9uc2UsXG4gIEdldEJhbGFuY2VSZXNwb25zZSxcbiAgSW52b2tlUmVhZFBhcmFtcyxcbiAgSW52b2tlUmVhZFJlc3BvbnNlLFxuICBJbnZva2VSZWFkTXVsdGlQYXJhbXMsXG4gIEludm9rZVJlYWRNdWx0aVJlc3BvbnNlLFxuICBWZXJpZnlNZXNzYWdlVjJQYXJhbXMsXG4gIFZlcmlmeU1lc3NhZ2VWMlJlc3BvbnNlLFxuICBHZXRCbG9ja1BhcmFtcyxcbiAgR2V0QmxvY2tSZXNwb25zZSxcbiAgR2V0VHJhbnNhY3Rpb25QYXJhbXMsXG4gIEdldFRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIEdldEFwcGxpY2F0aW9uTG9nUGFyYW1zLFxuICBHZXRBcHBsaWNhdGlvbkxvZ1Jlc3BvbnNlLFxuICBQaWNrQWRkcmVzc1Jlc3BvbnNlLFxuICBBZGRyZXNzVG9TY3JpcHRIYXNoUGFyYW1zLFxuICBBZGRyZXNzVG9TY3JpcHRIYXNoUmVzcG9uc2UsXG4gIFNjcmlwdEhhc2hUb0FkZHJlc3NQYXJhbXMsXG4gIFNjcmlwdEhhc2hUb0FkZHJlc3NSZXNwb25zZSxcbiAgU2VuZFBhcmFtcyxcbiAgU2VuZFJlc3BvbnNlLFxuICBJbnZva2VQYXJhbXMsXG4gIEludm9rZVJlc3BvbnNlLFxuICBJbnZva2VNdWx0aXBsZVBhcmFtcyxcbiAgTmVvbGluZU4zUHJvdmlkZXIsXG4gIENvbW1vbkV2ZW50TmFtZSxcbiAgQ29tbW9uRXZlbnRQYXlsb2FkTWFwLFxuICBTaWduTWVzc2FnZVYyUGFyYW1zLFxuICBTaWduTWVzc2FnZVYyUmVzcG9uc2UsXG4gIFNpZ25NZXNzYWdlV2l0aG91dFNhbHRWMlBhcmFtcyxcbiAgU2lnbk1lc3NhZ2VXaXRob3V0U2FsdFYyUmVzcG9uc2UsXG4gIFNpZ25UcmFuc2FjdGlvblBhcmFtcyxcbiAgU2lnblRyYW5zYWN0aW9uUmVzcG9uc2UsXG4gIFN3aXRjaFdhbGxldE5ldHdvcmtQYXJhbXMsXG59IGZyb20gJy4vbmVvbGluZS50eXBlcyc7XG5pbXBvcnQgdHlwZSB7fSBmcm9tICcuL2dsb2JhbCc7XG5cbmNvbnN0IE5FT19SRUFEWV9FVkVOVCA9ICdORU9MaW5lLk5FTy5FVkVOVC5SRUFEWSc7XG5jb25zdCBOM19SRUFEWV9FVkVOVCA9ICdORU9MaW5lLk4zLkVWRU5ULlJFQURZJztcblxuZXhwb3J0IGNvbnN0IE5FT0xJTkVfREVCVUdfTE9HUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxib29sZWFuPihcbiAgJ05FT0xJTkVfREVCVUdfTE9HUycsXG4gIHsgcHJvdmlkZWRJbjogJ3Jvb3QnLCBmYWN0b3J5OiAoKSA9PiBmYWxzZSB9XG4pO1xuXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIE5lb2xpbmVTZXJ2aWNlIHtcbiAgcHJpdmF0ZSByZWFkb25seSBuZW9TdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8dW5rbm93bj4oMSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgbjNTdWJqZWN0ID0gbmV3IFJlcGxheVN1YmplY3Q8TmVvbGluZU4zUHJvdmlkZXI+KDEpO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlYnVnRW5hYmxlZCA9IGluamVjdChORU9MSU5FX0RFQlVHX0xPR1MpO1xuXG4gIHByaXZhdGUgZGVidWcobWV0aG9kOiBzdHJpbmcsIC4uLmFyZ3M6IHVua25vd25bXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLmRlYnVnRW5hYmxlZCkge1xuICAgICAgY29uc29sZS5kZWJ1ZygnW05lb2xpbmVTZXJ2aWNlXScsIG1ldGhvZCwgLi4uYXJncyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsb2dFcnJvcihtZXRob2Q6IHN0cmluZywgZXJyOiB1bmtub3duKTogdm9pZCB7XG4gICAgY29uc29sZS5lcnJvcignW05lb2xpbmVTZXJ2aWNlXScsIG1ldGhvZCwgZXJyKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2FsbDxUPihcbiAgICBtZXRob2Q6IHN0cmluZyxcbiAgICBhcmdzOiB1bmtub3duW10sXG4gICAgZm46IChuMzogTmVvbGluZU4zUHJvdmlkZXIpID0+IFByb21pc2U8VD5cbiAgKTogUHJvbWlzZTxUPiB7XG4gICAgdGhpcy5kZWJ1ZyhgJHttZXRob2R9OnN0YXJ0YCwgLi4uYXJncyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG4zID0gYXdhaXQgdGhpcy5nZXROZW9saW5lTjMoKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZuKG4zKTtcbiAgICAgIHRoaXMuZGVidWcoYCR7bWV0aG9kfTpzdWNjZXNzYCwgcmVzdWx0KTtcbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZ0Vycm9yKGAke21ldGhvZH06ZmFpbGAsIGVycik7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5pbml0aWFsaXplRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfVxuXG4gIGdldCBuZW9saW5lJCgpOiBPYnNlcnZhYmxlPHVua25vd24+IHtcbiAgICByZXR1cm4gdGhpcy5uZW9TdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xuICB9XG5cbiAgZ2V0IG5lb2xpbmVOMyQoKTogT2JzZXJ2YWJsZTxOZW9saW5lTjNQcm92aWRlcj4ge1xuICAgIHJldHVybiB0aGlzLm4zU3ViamVjdC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIGFzeW5jIGdldE5lb2xpbmUoKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgdGhpcy5kZWJ1ZygnZ2V0TmVvbGluZTpzdGFydCcpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpbnN0YW5jZSA9IGF3YWl0IGZpcnN0VmFsdWVGcm9tKHRoaXMubmVvbGluZSQpO1xuICAgICAgdGhpcy5kZWJ1ZygnZ2V0TmVvbGluZTpzdWNjZXNzJyk7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZ0Vycm9yKCdnZXROZW9saW5lOmZhaWwnLCBlcnIpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGdldE5lb2xpbmVOMygpOiBQcm9taXNlPE5lb2xpbmVOM1Byb3ZpZGVyPiB7XG4gICAgdGhpcy5kZWJ1ZygnZ2V0TmVvbGluZU4zOnN0YXJ0Jyk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGluc3RhbmNlID0gYXdhaXQgZmlyc3RWYWx1ZUZyb20odGhpcy5uZW9saW5lTjMkKTtcbiAgICAgIHRoaXMuZGVidWcoJ2dldE5lb2xpbmVOMzpzdWNjZXNzJyk7XG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmxvZ0Vycm9yKCdnZXROZW9saW5lTjM6ZmFpbCcsIGVycik7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgZ2V0TmV0d29ya3MoKTogUHJvbWlzZTxHZXROZXR3b3Jrc1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbCgnZ2V0TmV0d29ya3MnLCBbXSwgKG4zKSA9PiBuMy5nZXROZXR3b3JrcygpKTtcbiAgfVxuXG4gIGFzeW5jIGdldEFjY291bnQoKTogUHJvbWlzZTxHZXRBY2NvdW50UmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKCdnZXRBY2NvdW50JywgW10sIChuMykgPT4gbjMuZ2V0QWNjb3VudCgpKTtcbiAgfVxuXG4gIGFzeW5jIGdldFB1YmxpY0tleSgpOiBQcm9taXNlPEdldFB1YmxpY0tleVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbCgnZ2V0UHVibGljS2V5JywgW10sIChuMykgPT4gbjMuZ2V0UHVibGljS2V5KCkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0UHJvdmlkZXIoKTogUHJvbWlzZTxHZXRQcm92aWRlclJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbCgnZ2V0UHJvdmlkZXInLCBbXSwgKG4zKSA9PiBuMy5nZXRQcm92aWRlcigpKTtcbiAgfVxuXG4gIGFzeW5jIGdldFN0b3JhZ2UocGFyYW1zOiBHZXRTdG9yYWdlUGFyYW1zKTogUHJvbWlzZTxHZXRTdG9yYWdlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKCdnZXRTdG9yYWdlJywgW3BhcmFtc10sIChuMykgPT4gbjMuZ2V0U3RvcmFnZShwYXJhbXMpKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJhbGFuY2UoKTogUHJvbWlzZTxHZXRCYWxhbmNlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKCdnZXRCYWxhbmNlJywgW10sIChuMykgPT4gbjMuZ2V0QmFsYW5jZSgpKTtcbiAgfVxuXG4gIGFzeW5jIGludm9rZVJlYWQocGFyYW1zOiBJbnZva2VSZWFkUGFyYW1zKTogUHJvbWlzZTxJbnZva2VSZWFkUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKCdpbnZva2VSZWFkJywgW3BhcmFtc10sIChuMykgPT4gbjMuaW52b2tlUmVhZChwYXJhbXMpKTtcbiAgfVxuXG4gIGFzeW5jIGludm9rZVJlYWRNdWx0aShcbiAgICBwYXJhbXM6IEludm9rZVJlYWRNdWx0aVBhcmFtc1xuICApOiBQcm9taXNlPEludm9rZVJlYWRNdWx0aVJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbCgnaW52b2tlUmVhZE11bHRpJywgW3BhcmFtc10sIChuMykgPT5cbiAgICAgIG4zLmludm9rZVJlYWRNdWx0aShwYXJhbXMpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHZlcmlmeU1lc3NhZ2VWMihcbiAgICBwYXJhbXM6IFZlcmlmeU1lc3NhZ2VWMlBhcmFtc1xuICApOiBQcm9taXNlPFZlcmlmeU1lc3NhZ2VWMlJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbCgndmVyaWZ5TWVzc2FnZVYyJywgW3BhcmFtc10sIChuMykgPT5cbiAgICAgIG4zLnZlcmlmeU1lc3NhZ2VWMihwYXJhbXMpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEJsb2NrKHBhcmFtczogR2V0QmxvY2tQYXJhbXMpOiBQcm9taXNlPEdldEJsb2NrUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKCdnZXRCbG9jaycsIFtwYXJhbXNdLCAobjMpID0+IG4zLmdldEJsb2NrKHBhcmFtcykpO1xuICB9XG5cbiAgYXN5bmMgZ2V0VHJhbnNhY3Rpb24oXG4gICAgcGFyYW1zOiBHZXRUcmFuc2FjdGlvblBhcmFtc1xuICApOiBQcm9taXNlPEdldFRyYW5zYWN0aW9uUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKCdnZXRUcmFuc2FjdGlvbicsIFtwYXJhbXNdLCAobjMpID0+XG4gICAgICBuMy5nZXRUcmFuc2FjdGlvbihwYXJhbXMpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGdldEFwcGxpY2F0aW9uTG9nKFxuICAgIHBhcmFtczogR2V0QXBwbGljYXRpb25Mb2dQYXJhbXNcbiAgKTogUHJvbWlzZTxHZXRBcHBsaWNhdGlvbkxvZ1Jlc3BvbnNlPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbCgnZ2V0QXBwbGljYXRpb25Mb2cnLCBbcGFyYW1zXSwgKG4zKSA9PlxuICAgICAgbjMuZ2V0QXBwbGljYXRpb25Mb2cocGFyYW1zKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBwaWNrQWRkcmVzcygpOiBQcm9taXNlPFBpY2tBZGRyZXNzUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKCdwaWNrQWRkcmVzcycsIFtdLCAobjMpID0+IG4zLnBpY2tBZGRyZXNzKCkpO1xuICB9XG5cbiAgYXN5bmMgYWRkcmVzc1RvU2NyaXB0SGFzaChcbiAgICBwYXJhbXM6IEFkZHJlc3NUb1NjcmlwdEhhc2hQYXJhbXNcbiAgKTogUHJvbWlzZTxBZGRyZXNzVG9TY3JpcHRIYXNoUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKCdBZGRyZXNzVG9TY3JpcHRIYXNoJywgW3BhcmFtc10sIChuMykgPT5cbiAgICAgIG4zLkFkZHJlc3NUb1NjcmlwdEhhc2gocGFyYW1zKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzY3JpcHRIYXNoVG9BZGRyZXNzKFxuICAgIHBhcmFtczogU2NyaXB0SGFzaFRvQWRkcmVzc1BhcmFtc1xuICApOiBQcm9taXNlPFNjcmlwdEhhc2hUb0FkZHJlc3NSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhbGwoJ1NjcmlwdEhhc2hUb0FkZHJlc3MnLCBbcGFyYW1zXSwgKG4zKSA9PlxuICAgICAgbjMuU2NyaXB0SGFzaFRvQWRkcmVzcyhwYXJhbXMpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHNlbmQocGFyYW1zOiBTZW5kUGFyYW1zKTogUHJvbWlzZTxTZW5kUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKCdzZW5kJywgW3BhcmFtc10sIChuMykgPT4gbjMuc2VuZChwYXJhbXMpKTtcbiAgfVxuXG4gIGFzeW5jIGludm9rZShwYXJhbXM6IEludm9rZVBhcmFtcyk6IFByb21pc2U8SW52b2tlUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKCdpbnZva2UnLCBbcGFyYW1zXSwgKG4zKSA9PiBuMy5pbnZva2UocGFyYW1zKSk7XG4gIH1cblxuICBhc3luYyBpbnZva2VNdWx0aXBsZShwYXJhbXM6IEludm9rZU11bHRpcGxlUGFyYW1zKTogUHJvbWlzZTxJbnZva2VSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhbGwoJ2ludm9rZU11bHRpcGxlJywgW3BhcmFtc10sIChuMykgPT5cbiAgICAgIG4zLmludm9rZU11bHRpcGxlKHBhcmFtcylcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgc2lnbk1lc3NhZ2VWMihcbiAgICBwYXJhbXM6IFNpZ25NZXNzYWdlVjJQYXJhbXNcbiAgKTogUHJvbWlzZTxTaWduTWVzc2FnZVYyUmVzcG9uc2U+IHtcbiAgICByZXR1cm4gdGhpcy5jYWxsKCdzaWduTWVzc2FnZVYyJywgW3BhcmFtc10sIChuMykgPT5cbiAgICAgIG4zLnNpZ25NZXNzYWdlVjIocGFyYW1zKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzaWduTWVzc2FnZVdpdGhvdXRTYWx0VjIoXG4gICAgcGFyYW1zOiBTaWduTWVzc2FnZVdpdGhvdXRTYWx0VjJQYXJhbXNcbiAgKTogUHJvbWlzZTxTaWduTWVzc2FnZVdpdGhvdXRTYWx0VjJSZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhbGwoJ3NpZ25NZXNzYWdlV2l0aG91dFNhbHRWMicsIFtwYXJhbXNdLCAobjMpID0+XG4gICAgICBuMy5zaWduTWVzc2FnZVdpdGhvdXRTYWx0VjIocGFyYW1zKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzaWduVHJhbnNhY3Rpb24oXG4gICAgcGFyYW1zOiBTaWduVHJhbnNhY3Rpb25QYXJhbXNcbiAgKTogUHJvbWlzZTxTaWduVHJhbnNhY3Rpb25SZXNwb25zZT4ge1xuICAgIHJldHVybiB0aGlzLmNhbGwoJ3NpZ25UcmFuc2FjdGlvbicsIFtwYXJhbXNdLCAobjMpID0+XG4gICAgICBuMy5zaWduVHJhbnNhY3Rpb24ocGFyYW1zKVxuICAgICk7XG4gIH1cblxuICBhc3luYyBzd2l0Y2hXYWxsZXROZXR3b3JrKHBhcmFtczogU3dpdGNoV2FsbGV0TmV0d29ya1BhcmFtcyk6IFByb21pc2U8bnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmNhbGwoJ3N3aXRjaFdhbGxldE5ldHdvcmsnLCBbcGFyYW1zXSwgKG4zKSA9PlxuICAgICAgbjMuc3dpdGNoV2FsbGV0TmV0d29yayhwYXJhbXMpXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIHN3aXRjaFdhbGxldEFjY291bnQoKTogUHJvbWlzZTxudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuY2FsbCgnc3dpdGNoV2FsbGV0QWNjb3VudCcsIFtdLCAobjMpID0+XG4gICAgICBuMy5zd2l0Y2hXYWxsZXRBY2NvdW50KClcbiAgICApO1xuICB9XG5cbiAgb248RSBleHRlbmRzIENvbW1vbkV2ZW50TmFtZT4oXG4gICAgZXZlbnQ6IEVcbiAgKTogT2JzZXJ2YWJsZTxDb21tb25FdmVudFBheWxvYWRNYXBbRV0+IHtcbiAgICByZXR1cm4gbmV3IE9ic2VydmFibGU8Q29tbW9uRXZlbnRQYXlsb2FkTWFwW0VdPigoc3Vic2NyaWJlcikgPT4ge1xuICAgICAgdGhpcy5kZWJ1Zygnb246c3Vic2NyaWJlOnN0YXJ0JywgU3RyaW5nKGV2ZW50KSk7XG4gICAgICBsZXQgcHJvdmlkZXI6IE5lb2xpbmVOM1Byb3ZpZGVyIHwgdW5kZWZpbmVkO1xuICAgICAgY29uc3QgaGFuZGxlciA9IChwYXlsb2FkOiBDb21tb25FdmVudFBheWxvYWRNYXBbRV0pID0+IHtcbiAgICAgICAgdGhpcy5kZWJ1Zygnb246ZXZlbnQnLCBTdHJpbmcoZXZlbnQpLCBwYXlsb2FkKTtcbiAgICAgICAgc3Vic2NyaWJlci5uZXh0KHBheWxvYWQpO1xuICAgICAgfTtcblxuICAgICAgdGhpcy5nZXROZW9saW5lTjMoKVxuICAgICAgICAudGhlbigobjMpID0+IHtcbiAgICAgICAgICBwcm92aWRlciA9IG4zO1xuICAgICAgICAgIHRoaXMuZGVidWcoJ29uOmxpc3RlbmVyOmFkZGVkJywgU3RyaW5nKGV2ZW50KSk7XG4gICAgICAgICAgbjMuYWRkRXZlbnRMaXN0ZW5lcihldmVudCwgaGFuZGxlcik7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7XG4gICAgICAgICAgdGhpcy5sb2dFcnJvcignb246c3Vic2NyaWJlOmZhaWwnLCBlcnIpO1xuICAgICAgICAgIHN1YnNjcmliZXIuZXJyb3IoZXJyKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMuZGVidWcoJ29uOnVuc3Vic2NyaWJlJywgU3RyaW5nKGV2ZW50KSk7XG4gICAgICAgIGlmIChwcm92aWRlcikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBwcm92aWRlci5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50LCBoYW5kbGVyKTtcbiAgICAgICAgICAgIHRoaXMuZGVidWcoJ29uOmxpc3RlbmVyOnJlbW92ZWQnLCBTdHJpbmcoZXZlbnQpKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIHRoaXMubG9nRXJyb3IoJ29uOnVuc3Vic2NyaWJlOmZhaWwnLCBlcnIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZUV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhpcy5kZWJ1ZygnaW5pdDpza2lwcGVkOnNzcicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIElmIHRoZSBleHRlbnNpb24gYWxyZWFkeSBpbmplY3RlZCB0aGUgb2JqZWN0cywgaW5pdGlhbGl6ZSBpbW1lZGlhdGVseVxuICAgIHRyeSB7XG4gICAgICBjb25zdCB3ID0gd2luZG93IGFzIFdpbmRvdztcbiAgICAgIGlmICh3Lk5FT0xpbmU/LkluaXQpIHtcbiAgICAgICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgdy5ORU9MaW5lLkluaXQoKTtcbiAgICAgICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICAgICAgdGhpcy5uZW9TdWJqZWN0Lm5leHQoaW5zdGFuY2UpO1xuICAgICAgICAgIHRoaXMuZGVidWcoJ2luaXQ6TkVPTGluZTppbmplY3RlZCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubmVvU3ViamVjdC5lcnJvcihcbiAgICAgICAgICAgIG5ldyBFcnJvcignY29tbW9uIGRBUEkgbWV0aG9kIGZhaWxlZCB0byBsb2FkLicpXG4gICAgICAgICAgKTtcbiAgICAgICAgICB0aGlzLmxvZ0Vycm9yKFxuICAgICAgICAgICAgJ2luaXQ6TkVPTGluZTppbmplY3RlZDpmYWlsJyxcbiAgICAgICAgICAgIG5ldyBFcnJvcignY29tbW9uIGRBUEkgbWV0aG9kIGZhaWxlZCB0byBsb2FkLicpXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHcuTkVPTGluZU4zPy5Jbml0KSB7XG4gICAgICAgIGNvbnN0IGluc3RhbmNlTjMgPSBuZXcgdy5ORU9MaW5lTjMuSW5pdCgpO1xuICAgICAgICBpZiAoaW5zdGFuY2VOMykge1xuICAgICAgICAgIHRoaXMubjNTdWJqZWN0Lm5leHQoaW5zdGFuY2VOMyk7XG4gICAgICAgICAgdGhpcy5kZWJ1ZygnaW5pdDpORU9MaW5lTjM6aW5qZWN0ZWQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm4zU3ViamVjdC5lcnJvcihuZXcgRXJyb3IoJ04zIGRBUEkgbWV0aG9kIGZhaWxlZCB0byBsb2FkLicpKTtcbiAgICAgICAgICB0aGlzLmxvZ0Vycm9yKFxuICAgICAgICAgICAgJ2luaXQ6TkVPTGluZU4zOmluamVjdGVkOmZhaWwnLFxuICAgICAgICAgICAgbmV3IEVycm9yKCdOMyBkQVBJIG1ldGhvZCBmYWlsZWQgdG8gbG9hZC4nKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZGVidWcoJ2luaXQ6aW5qZWN0ZWQtY2hlY2s6ZXJyb3InLCBlcnIpO1xuICAgICAgLy8gSWdub3JlIGFuZCByZWx5IG9uIGV2ZW50cyBiZWxvd1xuICAgIH1cblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKE5FT19SRUFEWV9FVkVOVCwgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgdyA9IHdpbmRvdyBhcyBXaW5kb3c7XG4gICAgICAgIGlmICghdy5ORU9MaW5lPy5Jbml0KSB7XG4gICAgICAgICAgdGhpcy5uZW9TdWJqZWN0LmVycm9yKFxuICAgICAgICAgICAgbmV3IEVycm9yKCdORU9MaW5lIEluaXQgbm90IGF2YWlsYWJsZSBvbiBSRUFEWSBldmVudC4nKVxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5sb2dFcnJvcihcbiAgICAgICAgICAgICdORU9fUkVBRFlfRVZFTlQ6SW5pdDptaXNzaW5nJyxcbiAgICAgICAgICAgIG5ldyBFcnJvcignTkVPTGluZSBJbml0IG5vdCBhdmFpbGFibGUgb24gUkVBRFkgZXZlbnQuJylcbiAgICAgICAgICApO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZW9saW5lID0gbmV3IHcuTkVPTGluZS5Jbml0KCk7XG4gICAgICAgIGlmIChuZW9saW5lKSB7XG4gICAgICAgICAgdGhpcy5uZW9TdWJqZWN0Lm5leHQobmVvbGluZSk7XG4gICAgICAgICAgdGhpcy5kZWJ1ZygnTkVPX1JFQURZX0VWRU5UOnByb3ZpZGVyOnJlYWR5Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5uZW9TdWJqZWN0LmVycm9yKFxuICAgICAgICAgICAgbmV3IEVycm9yKCdjb21tb24gZEFQSSBtZXRob2QgZmFpbGVkIHRvIGxvYWQuJylcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubG9nRXJyb3IoXG4gICAgICAgICAgICAnTkVPX1JFQURZX0VWRU5UOnByb3ZpZGVyOmZhaWwnLFxuICAgICAgICAgICAgbmV3IEVycm9yKCdjb21tb24gZEFQSSBtZXRob2QgZmFpbGVkIHRvIGxvYWQuJylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgY29uc3QgZSA9IGVyciBpbnN0YW5jZW9mIEVycm9yID8gZXJyIDogbmV3IEVycm9yKFN0cmluZyhlcnIpKTtcbiAgICAgICAgdGhpcy5uZW9TdWJqZWN0LmVycm9yKGUpO1xuICAgICAgICB0aGlzLmxvZ0Vycm9yKCdORU9fUkVBRFlfRVZFTlQ6aGFuZGxlcjplcnJvcicsIGUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoTjNfUkVBRFlfRVZFTlQsICgpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHcgPSB3aW5kb3cgYXMgV2luZG93O1xuICAgICAgICBpZiAoIXcuTkVPTGluZU4zPy5Jbml0KSB7XG4gICAgICAgICAgdGhpcy5uM1N1YmplY3QuZXJyb3IoXG4gICAgICAgICAgICBuZXcgRXJyb3IoJ05FT0xpbmVOMyBJbml0IG5vdCBhdmFpbGFibGUgb24gUkVBRFkgZXZlbnQuJylcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMubG9nRXJyb3IoXG4gICAgICAgICAgICAnTjNfUkVBRFlfRVZFTlQ6SW5pdDptaXNzaW5nJyxcbiAgICAgICAgICAgIG5ldyBFcnJvcignTkVPTGluZU4zIEluaXQgbm90IGF2YWlsYWJsZSBvbiBSRUFEWSBldmVudC4nKVxuICAgICAgICAgICk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5lb2xpbmVOMyA9IG5ldyB3Lk5FT0xpbmVOMy5Jbml0KCk7XG4gICAgICAgIGlmIChuZW9saW5lTjMpIHtcbiAgICAgICAgICB0aGlzLm4zU3ViamVjdC5uZXh0KG5lb2xpbmVOMyk7XG4gICAgICAgICAgdGhpcy5kZWJ1ZygnTjNfUkVBRFlfRVZFTlQ6cHJvdmlkZXI6cmVhZHknKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm4zU3ViamVjdC5lcnJvcihuZXcgRXJyb3IoJ04zIGRBUEkgbWV0aG9kIGZhaWxlZCB0byBsb2FkLicpKTtcbiAgICAgICAgICB0aGlzLmxvZ0Vycm9yKFxuICAgICAgICAgICAgJ04zX1JFQURZX0VWRU5UOnByb3ZpZGVyOmZhaWwnLFxuICAgICAgICAgICAgbmV3IEVycm9yKCdOMyBkQVBJIG1ldGhvZCBmYWlsZWQgdG8gbG9hZC4nKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zdCBlID0gZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIgOiBuZXcgRXJyb3IoU3RyaW5nKGVycikpO1xuICAgICAgICB0aGlzLm4zU3ViamVjdC5lcnJvcihlKTtcbiAgICAgICAgdGhpcy5sb2dFcnJvcignTjNfUkVBRFlfRVZFTlQ6aGFuZGxlcjplcnJvcicsIGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59XG4iXX0=","export function isNeolineError(err) {\n    if (!err || typeof err !== 'object')\n        return false;\n    const e = err;\n    return (typeof e['type'] === 'string' &&\n        typeof e['description'] === 'string' &&\n        typeof e['data'] === 'string');\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmVvbGluZS50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYnMvc3JjL2xpYi9uZW9saW5lLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNiQSxNQUFNLFVBQVUsY0FBYyxDQUFDLEdBQVk7SUFDekMsSUFBSSxDQUFDLEdBQUcsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxLQUFLLENBQUM7SUFDbEQsTUFBTSxDQUFDLEdBQUcsR0FBOEIsQ0FBQztJQUN6QyxPQUFPLENBQ0wsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssUUFBUTtRQUM3QixPQUFPLENBQUMsQ0FBQyxhQUFhLENBQUMsS0FBSyxRQUFRO1FBQ3BDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLFFBQVEsQ0FDOUIsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBOZW9DaGFpbklkID0gMCB8IDEgfCAyIHwgMyB8IDY7XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0TmV0d29ya3NSZXNwb25zZSB7XG4gIGNoYWluSWQ6IE5lb0NoYWluSWQ7XG4gIG5ldHdvcmtzOiBzdHJpbmdbXTtcbiAgZGVmYXVsdE5ldHdvcms6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBOZW9saW5lTjNQcm92aWRlciB7XG4gIGdldE5ldHdvcmtzKCk6IFByb21pc2U8R2V0TmV0d29ya3NSZXNwb25zZT47XG4gIGdldEFjY291bnQoKTogUHJvbWlzZTxHZXRBY2NvdW50UmVzcG9uc2U+O1xuICBnZXRQdWJsaWNLZXkoKTogUHJvbWlzZTxHZXRQdWJsaWNLZXlSZXNwb25zZT47XG4gIGdldFByb3ZpZGVyKCk6IFByb21pc2U8R2V0UHJvdmlkZXJSZXNwb25zZT47XG4gIGdldFN0b3JhZ2UocGFyYW1zOiBHZXRTdG9yYWdlUGFyYW1zKTogUHJvbWlzZTxHZXRTdG9yYWdlUmVzcG9uc2U+O1xuICBnZXRCYWxhbmNlKCk6IFByb21pc2U8R2V0QmFsYW5jZVJlc3BvbnNlPjtcbiAgaW52b2tlUmVhZChwYXJhbXM6IEludm9rZVJlYWRQYXJhbXMpOiBQcm9taXNlPEludm9rZVJlYWRSZXNwb25zZT47XG4gIGludm9rZVJlYWRNdWx0aShcbiAgICBwYXJhbXM6IEludm9rZVJlYWRNdWx0aVBhcmFtc1xuICApOiBQcm9taXNlPEludm9rZVJlYWRNdWx0aVJlc3BvbnNlPjtcbiAgdmVyaWZ5TWVzc2FnZVYyKFxuICAgIHBhcmFtczogVmVyaWZ5TWVzc2FnZVYyUGFyYW1zXG4gICk6IFByb21pc2U8VmVyaWZ5TWVzc2FnZVYyUmVzcG9uc2U+O1xuICBnZXRCbG9jayhwYXJhbXM6IEdldEJsb2NrUGFyYW1zKTogUHJvbWlzZTxHZXRCbG9ja1Jlc3BvbnNlPjtcbiAgZ2V0VHJhbnNhY3Rpb24ocGFyYW1zOiBHZXRUcmFuc2FjdGlvblBhcmFtcyk6IFByb21pc2U8R2V0VHJhbnNhY3Rpb25SZXNwb25zZT47XG4gIGdldEFwcGxpY2F0aW9uTG9nKFxuICAgIHBhcmFtczogR2V0QXBwbGljYXRpb25Mb2dQYXJhbXNcbiAgKTogUHJvbWlzZTxHZXRBcHBsaWNhdGlvbkxvZ1Jlc3BvbnNlPjtcbiAgcGlja0FkZHJlc3MoKTogUHJvbWlzZTxQaWNrQWRkcmVzc1Jlc3BvbnNlPjtcbiAgQWRkcmVzc1RvU2NyaXB0SGFzaChcbiAgICBwYXJhbXM6IEFkZHJlc3NUb1NjcmlwdEhhc2hQYXJhbXNcbiAgKTogUHJvbWlzZTxBZGRyZXNzVG9TY3JpcHRIYXNoUmVzcG9uc2U+O1xuICBTY3JpcHRIYXNoVG9BZGRyZXNzKFxuICAgIHBhcmFtczogU2NyaXB0SGFzaFRvQWRkcmVzc1BhcmFtc1xuICApOiBQcm9taXNlPFNjcmlwdEhhc2hUb0FkZHJlc3NSZXNwb25zZT47XG4gIHNlbmQocGFyYW1zOiBTZW5kUGFyYW1zKTogUHJvbWlzZTxTZW5kUmVzcG9uc2U+O1xuICBpbnZva2UocGFyYW1zOiBJbnZva2VQYXJhbXMpOiBQcm9taXNlPEludm9rZVJlc3BvbnNlPjtcbiAgaW52b2tlTXVsdGlwbGUocGFyYW1zOiBJbnZva2VNdWx0aXBsZVBhcmFtcyk6IFByb21pc2U8SW52b2tlUmVzcG9uc2U+O1xuICBzaWduTWVzc2FnZVYyKHBhcmFtczogU2lnbk1lc3NhZ2VWMlBhcmFtcyk6IFByb21pc2U8U2lnbk1lc3NhZ2VWMlJlc3BvbnNlPjtcbiAgc2lnbk1lc3NhZ2VXaXRob3V0U2FsdFYyKFxuICAgIHBhcmFtczogU2lnbk1lc3NhZ2VXaXRob3V0U2FsdFYyUGFyYW1zXG4gICk6IFByb21pc2U8U2lnbk1lc3NhZ2VXaXRob3V0U2FsdFYyUmVzcG9uc2U+O1xuICBzaWduVHJhbnNhY3Rpb24oXG4gICAgcGFyYW1zOiBTaWduVHJhbnNhY3Rpb25QYXJhbXNcbiAgKTogUHJvbWlzZTxTaWduVHJhbnNhY3Rpb25SZXNwb25zZT47XG4gIHN3aXRjaFdhbGxldE5ldHdvcmsocGFyYW1zOiBTd2l0Y2hXYWxsZXROZXR3b3JrUGFyYW1zKTogUHJvbWlzZTxudWxsPjtcbiAgc3dpdGNoV2FsbGV0QWNjb3VudCgpOiBQcm9taXNlPG51bGw+O1xuICBhZGRFdmVudExpc3RlbmVyPEUgZXh0ZW5kcyBDb21tb25FdmVudE5hbWU+KFxuICAgIGV2ZW50OiBFLFxuICAgIGhhbmRsZXI6IChwYXlsb2FkOiBDb21tb25FdmVudFBheWxvYWRNYXBbRV0pID0+IHZvaWRcbiAgKTogdm9pZDtcbiAgcmVtb3ZlRXZlbnRMaXN0ZW5lcjxFIGV4dGVuZHMgQ29tbW9uRXZlbnROYW1lPihcbiAgICBldmVudDogRSxcbiAgICBoYW5kbGVyOiAocGF5bG9hZDogQ29tbW9uRXZlbnRQYXlsb2FkTWFwW0VdKSA9PiB2b2lkXG4gICk6IHZvaWQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmVvbGluZU4zQ29uc3RydWN0b3Ige1xuICBJbml0OiBuZXcgKCkgPT4gTmVvbGluZU4zUHJvdmlkZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QWNjb3VudFJlc3BvbnNlIHtcbiAgYWRkcmVzczogc3RyaW5nO1xuICBsYWJlbD86IHN0cmluZztcbiAgaXNMZWRnZXI6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0UHVibGljS2V5UmVzcG9uc2Uge1xuICBhZGRyZXNzOiBzdHJpbmc7XG4gIHB1YmxpY0tleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFByb3ZpZGVyUmVzcG9uc2Uge1xuICBuYW1lOiBzdHJpbmc7XG4gIHdlYnNpdGU6IHN0cmluZztcbiAgdmVyc2lvbjogc3RyaW5nO1xuICBjb21wYXRpYmlsaXR5OiBzdHJpbmdbXTtcbiAgLy8gUHJvdmlkZXItc3BlY2lmaWMgYXR0cmlidXRlc1xuICAvLyBVc2UgYSBzYWZlIGluZGV4IHNpZ25hdHVyZSBpbnN0ZWFkIG9mIGBvYmplY3RgXG4gIGV4dHJhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRTdG9yYWdlUGFyYW1zIHtcbiAgc2NyaXB0SGFzaDogc3RyaW5nO1xuICBrZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRTdG9yYWdlUmVzcG9uc2Uge1xuICByZXN1bHQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRCYWxhbmNlSXRlbSB7XG4gIHN5bWJvbDogc3RyaW5nO1xuICBhbW91bnQ6IHN0cmluZztcbiAgY29udHJhY3Q6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgR2V0QmFsYW5jZVJlc3BvbnNlID0geyBbYWRkcmVzczogc3RyaW5nXTogR2V0QmFsYW5jZUl0ZW1bXSB9O1xuXG4vLyA9PT09PSBpbnZva2VSZWFkIHR5cGVzID09PT09XG5leHBvcnQgdHlwZSBBcmd1bWVudFR5cGUgPVxuICB8ICdTdHJpbmcnXG4gIHwgJ0Jvb2xlYW4nXG4gIHwgJ0hhc2gxNjAnXG4gIHwgJ0hhc2gyNTYnXG4gIHwgJ0ludGVnZXInXG4gIHwgJ0J5dGVBcnJheSdcbiAgfCAnQXJyYXknXG4gIHwgJ0FkZHJlc3MnO1xuXG5leHBvcnQgdHlwZSBBcmd1bWVudCA9XG4gIHwgeyB0eXBlOiAnQm9vbGVhbic7IHZhbHVlOiBib29sZWFuIH1cbiAgfCB7IHR5cGU6IEV4Y2x1ZGU8QXJndW1lbnRUeXBlLCAnQXJyYXknIHwgJ0Jvb2xlYW4nPjsgdmFsdWU6IHN0cmluZyB9XG4gIHwgeyB0eXBlOiAnQXJyYXknOyB2YWx1ZTogQXJndW1lbnRbXSB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpdG5lc3NSdWxlQmFzZTxUIGV4dGVuZHMgc3RyaW5nPiB7XG4gIHR5cGU6IFQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQm9vbGVhbldpdG5lc3NDb25kaXRpb24gZXh0ZW5kcyBXaXRuZXNzUnVsZUJhc2U8J0Jvb2xlYW4nPiB7XG4gIGV4cHJlc3Npb246IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQW5kV2l0bmVzc0NvbmRpdGlvbiBleHRlbmRzIFdpdG5lc3NSdWxlQmFzZTwnQW5kJz4ge1xuICBleHByZXNzaW9uczogV2l0bmVzc0NvbmRpdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5vdFdpdG5lc3NDb25kaXRpb24gZXh0ZW5kcyBXaXRuZXNzUnVsZUJhc2U8J05vdCc+IHtcbiAgZXhwcmVzc2lvbjogV2l0bmVzc0NvbmRpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcldpdG5lc3NDb25kaXRpb24gZXh0ZW5kcyBXaXRuZXNzUnVsZUJhc2U8J09yJz4ge1xuICBleHByZXNzaW9uczogV2l0bmVzc0NvbmRpdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdEhhc2hXaXRuZXNzQ29uZGl0aW9uXG4gIGV4dGVuZHMgV2l0bmVzc1J1bGVCYXNlPCdTY3JpcHRIYXNoJz4ge1xuICBoYXNoOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR3JvdXBXaXRuZXNzQ29uZGl0aW9uIGV4dGVuZHMgV2l0bmVzc1J1bGVCYXNlPCdHcm91cCc+IHtcbiAgZ3JvdXA6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgQ2FsbGVkQnlFbnRyeVdpdG5lc3NDb25kaXRpb24gPSBXaXRuZXNzUnVsZUJhc2U8J0NhbGxlZEJ5RW50cnknPjtcblxuZXhwb3J0IGludGVyZmFjZSBDYWxsZWRCeUNvbnRyYWN0V2l0bmVzc0NvbmRpdGlvblxuICBleHRlbmRzIFdpdG5lc3NSdWxlQmFzZTwnQ2FsbGVkQnlDb250cmFjdCc+IHtcbiAgaGFzaDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhbGxlZEJ5R3JvdXBXaXRuZXNzQ29uZGl0aW9uXG4gIGV4dGVuZHMgV2l0bmVzc1J1bGVCYXNlPCdDYWxsZWRCeUdyb3VwJz4ge1xuICBncm91cDogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBXaXRuZXNzQ29uZGl0aW9uID1cbiAgfCBCb29sZWFuV2l0bmVzc0NvbmRpdGlvblxuICB8IEFuZFdpdG5lc3NDb25kaXRpb25cbiAgfCBOb3RXaXRuZXNzQ29uZGl0aW9uXG4gIHwgT3JXaXRuZXNzQ29uZGl0aW9uXG4gIHwgU2NyaXB0SGFzaFdpdG5lc3NDb25kaXRpb25cbiAgfCBHcm91cFdpdG5lc3NDb25kaXRpb25cbiAgfCBDYWxsZWRCeUVudHJ5V2l0bmVzc0NvbmRpdGlvblxuICB8IENhbGxlZEJ5Q29udHJhY3RXaXRuZXNzQ29uZGl0aW9uXG4gIHwgQ2FsbGVkQnlHcm91cFdpdG5lc3NDb25kaXRpb247XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2l0bmVzc1J1bGUge1xuICBhY3Rpb246ICdEZW55JyB8ICdBbGxvdyc7XG4gIGNvbmRpdGlvbjogV2l0bmVzc0NvbmRpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduZXIge1xuICBhY2NvdW50OiBzdHJpbmc7IC8vIHNjcmlwdCBoYXNoXG4gIHNjb3BlczogbnVtYmVyO1xuICBhbGxvd2VkQ29udHJhY3RzPzogc3RyaW5nW107XG4gIGFsbG93ZWRHcm91cHM/OiBzdHJpbmdbXTtcbiAgcnVsZXM/OiBXaXRuZXNzUnVsZVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludm9rZVJlYWRQYXJhbXMge1xuICBzY3JpcHRIYXNoOiBzdHJpbmc7XG4gIG9wZXJhdGlvbjogc3RyaW5nO1xuICBhcmdzOiBBcmd1bWVudFtdO1xuICBzaWduZXJzPzogU2lnbmVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW52b2tlUmVhZFJlc3BvbnNlIHtcbiAgc2NyaXB0OiBzdHJpbmc7XG4gIHN0YXRlOiBzdHJpbmc7XG4gIGdhc19jb25zdW1lZDogc3RyaW5nO1xuICBzdGFjazogQXJndW1lbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZva2VSZWFkTXVsdGlJdGVtIHtcbiAgc2NyaXB0SGFzaDogc3RyaW5nO1xuICBvcGVyYXRpb246IHN0cmluZztcbiAgYXJnczogQXJndW1lbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZva2VSZWFkTXVsdGlQYXJhbXMge1xuICBpbnZva2VSZWFkQXJnczogSW52b2tlUmVhZE11bHRpSXRlbVtdO1xuICBzaWduZXJzPzogU2lnbmVyW107XG59XG5cbmV4cG9ydCB0eXBlIEludm9rZVJlYWRNdWx0aVJlc3BvbnNlID0gQXJyYXk8e1xuICBzY3JpcHQ6IHN0cmluZztcbiAgc3RhdGU6IHN0cmluZztcbiAgZ2FzX2NvbnN1bWVkPzogc3RyaW5nO1xuICBzdGFjazogQXJndW1lbnRbXTtcbn0+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFZlcmlmeU1lc3NhZ2VWMlBhcmFtcyB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgZGF0YTogc3RyaW5nO1xuICBwdWJsaWNLZXk6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBWZXJpZnlNZXNzYWdlVjJSZXNwb25zZSB7XG4gIHJlc3VsdDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRCbG9ja1BhcmFtcyB7XG4gIC8vIFNvbWUgd2FsbGV0cyBhY2NlcHQgaGFzaCBvciBpbmRleDsga2VlcCBicm9hZFxuICBibG9ja0hhc2hPckluZGV4OiBzdHJpbmcgfCBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUnBjV2l0bmVzcyB7XG4gIGludm9jYXRpb246IHN0cmluZztcbiAgdmVyaWZpY2F0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2V0QmxvY2tSZXNwb25zZSB7XG4gIGhhc2g6IHN0cmluZztcbiAgc2l6ZTogbnVtYmVyO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIHByZXZpb3VzYmxvY2toYXNoOiBzdHJpbmcgfCBudWxsO1xuICBtZXJrbGVyb290OiBzdHJpbmc7XG4gIHRpbWU6IG51bWJlcjtcbiAgaW5kZXg6IG51bWJlcjtcbiAgcHJpbWFyeTogbnVtYmVyO1xuICBuZXh0Y29uc2Vuc3VzOiBzdHJpbmc7XG4gIHdpdG5lc3NlczogUnBjV2l0bmVzc1tdO1xuICB0eDogR2V0VHJhbnNhY3Rpb25SZXNwb25zZVtdO1xuICBjb25maXJtYXRpb25zOiBudW1iZXI7XG4gIG5leHRibG9ja2hhc2g/OiBzdHJpbmcgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFRyYW5zYWN0aW9uUGFyYW1zIHtcbiAgdHhpZDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uVHJhbnNmZXIge1xuICBoYXNoOiBzdHJpbmc7XG4gIHNyYzogc3RyaW5nO1xuICBjb250cmFjdDogc3RyaW5nO1xuICBmcm9tOiBzdHJpbmc7XG4gIHRvOiBzdHJpbmc7XG4gIGFtb3VudDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdldFRyYW5zYWN0aW9uUmVzcG9uc2Uge1xuICBoYXNoOiBzdHJpbmc7XG4gIHNpemU6IG51bWJlcjtcbiAgc3lzX2ZlZTogc3RyaW5nO1xuICBuZXRfZmVlOiBzdHJpbmc7XG4gIGJsb2NrX2luZGV4OiBudW1iZXI7XG4gIGJsb2NrX3RpbWU6IG51bWJlcjtcbiAgdmVyc2lvbjogbnVtYmVyO1xuICB0cmFuc2ZlcnM6IFRyYW5zYWN0aW9uVHJhbnNmZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRBcHBsaWNhdGlvbkxvZ1BhcmFtcyB7XG4gIHR4aWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgVm1TdGFja0l0ZW0gPVxuICB8IHsgdHlwZTogJ0FueScgfVxuICB8IHsgdHlwZTogJ0Jvb2xlYW4nOyB2YWx1ZTogYm9vbGVhbiB9XG4gIHwgeyB0eXBlOiAnSW50ZWdlcic7IHZhbHVlOiBzdHJpbmcgfVxuICB8IHsgdHlwZTogJ0J5dGVTdHJpbmcnOyB2YWx1ZTogc3RyaW5nIH1cbiAgfCB7IHR5cGU6ICdCdWZmZXInOyB2YWx1ZTogc3RyaW5nIH1cbiAgfCB7IHR5cGU6ICdBcnJheSc7IHZhbHVlOiBWbVN0YWNrSXRlbVtdIH1cbiAgfCB7IHR5cGU6ICdTdHJ1Y3QnOyB2YWx1ZTogVm1TdGFja0l0ZW1bXSB9XG4gIHwgeyB0eXBlOiAnTWFwJzsgdmFsdWU6IHsga2V5OiBWbVN0YWNrSXRlbTsgdmFsdWU6IFZtU3RhY2tJdGVtIH1bXSB9XG4gIHwgeyB0eXBlOiAnSW50ZXJvcEludGVyZmFjZScgfTtcblxuZXhwb3J0IGludGVyZmFjZSBBcHBsaWNhdGlvbk5vdGlmaWNhdGlvbiB7XG4gIGNvbnRyYWN0OiBzdHJpbmc7XG4gIGV2ZW50bmFtZTogc3RyaW5nO1xuICBzdGF0ZTogVm1TdGFja0l0ZW07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXBwbGljYXRpb25FeGVjdXRpb24ge1xuICB0cmlnZ2VyOiAnT25QZXJzaXN0JyB8ICdQb3N0UGVyc2lzdCcgfCAnQXBwbGljYXRpb24nO1xuICB2bXN0YXRlOiAnSEFMVCcgfCAnRkFVTFQnO1xuICBnYXNjb25zdW1lZDogc3RyaW5nO1xuICBzdGFjazogVm1TdGFja0l0ZW1bXTtcbiAgbm90aWZpY2F0aW9uczogQXBwbGljYXRpb25Ob3RpZmljYXRpb25bXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBHZXRBcHBsaWNhdGlvbkxvZ1Jlc3BvbnNlIHtcbiAgYmxvY2toYXNoOiBzdHJpbmc7XG4gIGV4ZWN1dGlvbnM6IEFwcGxpY2F0aW9uRXhlY3V0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGlja0FkZHJlc3NSZXNwb25zZSB7XG4gIGxhYmVsOiBzdHJpbmc7XG4gIGFkZHJlc3M6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBZGRyZXNzVG9TY3JpcHRIYXNoUGFyYW1zIHtcbiAgYWRkcmVzczogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NUb1NjcmlwdEhhc2hSZXNwb25zZSB7XG4gIHNjcmlwdEhhc2g6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHRIYXNoVG9BZGRyZXNzUGFyYW1zIHtcbiAgc2NyaXB0SGFzaDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdEhhc2hUb0FkZHJlc3NSZXNwb25zZSB7XG4gIGFkZHJlc3M6IHN0cmluZztcbn1cblxuLy8gPT09PT0gV3JpdGU6IHNlbmQgPT09PT1cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZFBhcmFtcyB7XG4gIGZyb21BZGRyZXNzOiBzdHJpbmc7XG4gIHRvQWRkcmVzczogc3RyaW5nO1xuICBhc3NldDogc3RyaW5nOyAvLyBzeW1ib2wgb3Igc2NyaXB0IGhhc2ggKHN5bWJvbCBhY2NlcHRlZCBvbmx5IG9uIE1haW5OZXQgcGVyIGRvY3MpXG4gIGFtb3VudDogc3RyaW5nOyAvLyBwYXJzZWQgYW1vdW50XG4gIGZlZT86IHN0cmluZzsgLy8gcGFyc2VkIEdBU1xuICBicm9hZGNhc3RPdmVycmlkZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VuZFJlc3BvbnNlIHtcbiAgdHhpZDogc3RyaW5nO1xuICBub2RlVVJMPzogc3RyaW5nO1xuICBzaWduZWRUeD86IHN0cmluZzsgLy8gcHJlc2VudCB3aGVuIGJyb2FkY2FzdE92ZXJyaWRlPXRydWVcbn1cblxuLy8gPT09PT0gV3JpdGU6IGludm9rZSA9PT09PVxuZXhwb3J0IGludGVyZmFjZSBJbnZva2VQYXJhbXMge1xuICBzY3JpcHRIYXNoOiBzdHJpbmc7XG4gIG9wZXJhdGlvbjogc3RyaW5nO1xuICBhcmdzOiBBcmd1bWVudFtdO1xuICBmZWU/OiBzdHJpbmc7XG4gIGV4dHJhU3lzdGVtRmVlPzogc3RyaW5nO1xuICBvdmVycmlkZVN5c3RlbUZlZT86IHN0cmluZztcbiAgYnJvYWRjYXN0T3ZlcnJpZGU/OiBib29sZWFuO1xuICBzaWduZXJzOiBTaWduZXJbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZva2VSZXNwb25zZSB7XG4gIHR4aWQ6IHN0cmluZztcbiAgbm9kZVVSTD86IHN0cmluZztcbiAgc2lnbmVkVHg/OiBzdHJpbmc7IC8vIHByZXNlbnQgd2hlbiBicm9hZGNhc3RPdmVycmlkZT10cnVlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSW52b2tlQXJndW1lbnRzIHtcbiAgc2NyaXB0SGFzaDogc3RyaW5nO1xuICBvcGVyYXRpb246IHN0cmluZztcbiAgYXJnczogQXJndW1lbnRbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZva2VNdWx0aXBsZVBhcmFtcyB7XG4gIGZlZT86IHN0cmluZztcbiAgZXh0cmFTeXN0ZW1GZWU/OiBzdHJpbmc7XG4gIG92ZXJyaWRlU3lzdGVtRmVlPzogc3RyaW5nO1xuICBpbnZva2VBcmdzPzogSW52b2tlQXJndW1lbnRzW107XG4gIGJyb2FkY2FzdE92ZXJyaWRlPzogYm9vbGVhbjtcbiAgc2lnbmVyczogU2lnbmVyW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbk1lc3NhZ2VWMlBhcmFtcyB7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgaXNKc29uT2JqZWN0PzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduTWVzc2FnZVYyUmVzcG9uc2Uge1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgZGF0YTogc3RyaW5nO1xuICBzYWx0OiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTaWduTWVzc2FnZVdpdGhvdXRTYWx0VjJQYXJhbXMge1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIGlzSnNvbk9iamVjdD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbk1lc3NhZ2VXaXRob3V0U2FsdFYyUmVzcG9uc2Uge1xuICBwdWJsaWNLZXk6IHN0cmluZztcbiAgZGF0YTogc3RyaW5nO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25MaWtlIHtcbiAgdmVyc2lvbjogbnVtYmVyO1xuICBub25jZTogbnVtYmVyO1xuICBzeXN0ZW1GZWU6IG51bWJlcjtcbiAgbmV0d29ya0ZlZTogbnVtYmVyO1xuICB2YWxpZFVudGlsQmxvY2s6IG51bWJlcjtcbiAgYXR0cmlidXRlczogdW5rbm93bltdO1xuICBzaWduZXJzOiBBcnJheTx7IGFjY291bnQ6IHN0cmluZzsgc2NvcGVzOiBudW1iZXIgfT47XG4gIHdpdG5lc3NlczogeyBpbnZvY2F0aW9uU2NyaXB0OiBzdHJpbmc7IHZlcmlmaWNhdGlvblNjcmlwdDogc3RyaW5nIH1bXTtcbiAgc2NyaXB0OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2lnblRyYW5zYWN0aW9uUGFyYW1zIHtcbiAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uTGlrZTtcbiAgbWFnaWNOdW1iZXI/OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFNpZ25UcmFuc2FjdGlvblJlc3BvbnNlID0gVHJhbnNhY3Rpb25MaWtlO1xuXG5leHBvcnQgaW50ZXJmYWNlIFN3aXRjaFdhbGxldE5ldHdvcmtQYXJhbXMge1xuICBjaGFpbklkOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIE5lb2xpbmVFcnJvclR5cGUgPVxuICB8ICdOT19QUk9WSURFUidcbiAgfCAnQ09OTkVDVElPTl9ERU5JRUQnXG4gIHwgJ1JQQ19FUlJPUidcbiAgfCAnTUFMRk9STUVEX0lOUFVUJ1xuICB8ICdDQU5DRUxFRCdcbiAgfCAnSU5TVUZGSUNJRU5UX0ZVTkRTJ1xuICB8ICdDSEFJTl9OT1RfTUFUQ0gnXG4gIHwgJ1NDUklQVF9FUlJPUidcbiAgfCAnRkFJTCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTmVvbGluZUVycm9yIHtcbiAgdHlwZTogTmVvbGluZUVycm9yVHlwZSB8ICdVTktOT1dOJztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgZGF0YTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOZW9saW5lRXJyb3IoZXJyOiB1bmtub3duKTogZXJyIGlzIE5lb2xpbmVFcnJvciB7XG4gIGlmICghZXJyIHx8IHR5cGVvZiBlcnIgIT09ICdvYmplY3QnKSByZXR1cm4gZmFsc2U7XG4gIGNvbnN0IGUgPSBlcnIgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIGVbJ3R5cGUnXSA9PT0gJ3N0cmluZycgJiZcbiAgICB0eXBlb2YgZVsnZGVzY3JpcHRpb24nXSA9PT0gJ3N0cmluZycgJiZcbiAgICB0eXBlb2YgZVsnZGF0YSddID09PSAnc3RyaW5nJ1xuICApO1xufVxuXG5leHBvcnQgdHlwZSBDb21tb25FdmVudE5hbWUgPVxuICB8ICdBQ0NPVU5UX0NIQU5HRUQnXG4gIHwgJ0NPTk5FQ1RFRCdcbiAgfCAnRElTQ09OTkVDVEVEJ1xuICB8ICdORVRXT1JLX0NIQU5HRUQnXG4gIHwgJ0JMT0NLX0hFSUdIVF9DSEFOR0VEJ1xuICB8ICdUUkFOU0FDVElPTl9DT05GSVJNRUQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1vbkV2ZW50UGF5bG9hZE1hcCB7XG4gIEFDQ09VTlRfQ0hBTkdFRDogdW5rbm93bjtcbiAgQ09OTkVDVEVEOiB1bmtub3duO1xuICBESVNDT05ORUNURUQ6IHVua25vd247XG4gIE5FVFdPUktfQ0hBTkdFRDogdW5rbm93bjtcbiAgQkxPQ0tfSEVJR0hUX0NIQU5HRUQ6IHVua25vd247XG4gIFRSQU5TQUNUSU9OX0NPTkZJUk1FRDogdW5rbm93bjtcbn1cbiJdfQ==","import { NEOLINE_DEBUG_LOGS } from './neoline.service';\nexport function provideNeolineDebug(enabled) {\n    return { provide: NEOLINE_DEBUG_LOGS, useValue: enabled };\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWJzL3NyYy9saWIvcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFdkQsTUFBTSxVQUFVLG1CQUFtQixDQUFDLE9BQWdCO0lBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxDQUFDO0FBQzVELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTkVPTElORV9ERUJVR19MT0dTIH0gZnJvbSAnLi9uZW9saW5lLnNlcnZpY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gcHJvdmlkZU5lb2xpbmVEZWJ1ZyhlbmFibGVkOiBib29sZWFuKTogUHJvdmlkZXIge1xuICByZXR1cm4geyBwcm92aWRlOiBORU9MSU5FX0RFQlVHX0xPR1MsIHVzZVZhbHVlOiBlbmFibGVkIH07XG59XG4iXX0=","/**\n * Generated bundle index. Do not edit.\n */\nexport * from './index';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic21hcnRhcmdzLW5neC1uZW9saW5lLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vbGlicy9zcmMvc21hcnRhcmdzLW5neC1uZW9saW5lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19"],"names":[],"mappings":"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"}