UNPKG

emailjs-imap-client

Version:
369 lines (367 loc) 34.9 kB
"use strict"; var _commandBuilder = require("./command-builder"); describe('buildFETCHCommand', () => { it('should build single ALL', () => { expect((0, _commandBuilder.buildFETCHCommand)('1:*', ['all'], {})).to.deep.equal({ command: 'FETCH', attributes: [{ type: 'SEQUENCE', value: '1:*' }, { type: 'ATOM', value: 'ALL' }] }); }); it('should build FETCH with uid', () => { expect((0, _commandBuilder.buildFETCHCommand)('1:*', ['all'], { byUid: true })).to.deep.equal({ command: 'UID FETCH', attributes: [{ type: 'SEQUENCE', value: '1:*' }, { type: 'ATOM', value: 'ALL' }] }); }); it('should build FETCH with uid, envelope', () => { expect((0, _commandBuilder.buildFETCHCommand)('1:*', ['uid', 'envelope'], {})).to.deep.equal({ command: 'FETCH', attributes: [{ type: 'SEQUENCE', value: '1:*' }, [{ type: 'ATOM', value: 'UID' }, { type: 'ATOM', value: 'ENVELOPE' }]] }); }); it('should build FETCH with modseq', () => { expect((0, _commandBuilder.buildFETCHCommand)('1:*', ['modseq (1234567)'], {})).to.deep.equal({ command: 'FETCH', attributes: [{ type: 'SEQUENCE', value: '1:*' }, [{ type: 'ATOM', value: 'MODSEQ' }, [{ type: 'ATOM', value: '1234567' }]]] }); }); it('should build FETCH with section', () => { expect((0, _commandBuilder.buildFETCHCommand)('1:*', ['body[text]'], {})).to.deep.equal({ command: 'FETCH', attributes: [{ type: 'SEQUENCE', value: '1:*' }, { type: 'ATOM', value: 'BODY', section: [{ type: 'ATOM', value: 'TEXT' }] }] }); }); it('should build FETCH with section and list', () => { expect((0, _commandBuilder.buildFETCHCommand)('1:*', ['body[header.fields (date in-reply-to)]'], {})).to.deep.equal({ command: 'FETCH', attributes: [{ type: 'SEQUENCE', value: '1:*' }, { type: 'ATOM', value: 'BODY', section: [{ type: 'ATOM', value: 'HEADER.FIELDS' }, [{ type: 'ATOM', value: 'DATE' }, { type: 'ATOM', value: 'IN-REPLY-TO' }]] }] }); }); it('should build FETCH with ', () => { expect((0, _commandBuilder.buildFETCHCommand)('1:*', ['all'], { changedSince: '123456' })).to.deep.equal({ command: 'FETCH', attributes: [{ type: 'SEQUENCE', value: '1:*' }, { type: 'ATOM', value: 'ALL' }, [{ type: 'ATOM', value: 'CHANGEDSINCE' }, { type: 'ATOM', value: '123456' }]] }); }); it('should build FETCH with partial', () => { expect((0, _commandBuilder.buildFETCHCommand)('1:*', ['body[]'], {})).to.deep.equal({ command: 'FETCH', attributes: [{ type: 'SEQUENCE', value: '1:*' }, { type: 'ATOM', value: 'BODY', section: [] }] }); }); it('should build FETCH with the valueAsString option', () => { expect((0, _commandBuilder.buildFETCHCommand)('1:*', ['body[]'], { valueAsString: false })).to.deep.equal({ command: 'FETCH', attributes: [{ type: 'SEQUENCE', value: '1:*' }, { type: 'ATOM', value: 'BODY', section: [] }], valueAsString: false }); }); }); describe('#_buildXOAuth2Token', () => { it('should return base64 encoded XOAUTH2 token', () => { expect((0, _commandBuilder.buildXOAuth2Token)('user@host', 'abcde')).to.equal('dXNlcj11c2VyQGhvc3QBYXV0aD1CZWFyZXIgYWJjZGUBAQ=='); }); }); describe('buildSEARCHCommand', () => { it('should compose a search command', () => { expect((0, _commandBuilder.buildSEARCHCommand)({ unseen: true, header: ['subject', 'hello world'], or: { unseen: true, seen: true }, not: { seen: true }, sentbefore: new Date(2011, 1, 3, 12, 0, 0), since: new Date(2011, 11, 23, 12, 0, 0), uid: '1:*', 'X-GM-MSGID': '1499257647490662970', 'X-GM-THRID': '1499257647490662971' }, {})).to.deep.equal({ command: 'SEARCH', attributes: [{ type: 'atom', value: 'UNSEEN' }, { type: 'atom', value: 'HEADER' }, { type: 'string', value: 'subject' }, { type: 'string', value: 'hello world' }, { type: 'atom', value: 'OR' }, { type: 'atom', value: 'UNSEEN' }, { type: 'atom', value: 'SEEN' }, { type: 'atom', value: 'NOT' }, { type: 'atom', value: 'SEEN' }, { type: 'atom', value: 'SENTBEFORE' }, { type: 'atom', value: '3-Feb-2011' }, { type: 'atom', value: 'SINCE' }, { type: 'atom', value: '23-Dec-2011' }, { type: 'atom', value: 'UID' }, { type: 'sequence', value: '1:*' }, { type: 'atom', value: 'X-GM-MSGID' }, { type: 'number', value: '1499257647490662970' }, { type: 'atom', value: 'X-GM-THRID' }, { type: 'number', value: '1499257647490662971' }] }); }); it('should compose an unicode search command', () => { expect((0, _commandBuilder.buildSEARCHCommand)({ body: 'jõgeva' }, {})).to.deep.equal({ command: 'SEARCH', attributes: [{ type: 'atom', value: 'CHARSET' }, { type: 'atom', value: 'UTF-8' }, { type: 'atom', value: 'BODY' }, { type: 'literal', value: 'jõgeva' }] }); }); }); describe('#_buildSTORECommand', () => { it('should compose a store command from an array', () => { expect((0, _commandBuilder.buildSTORECommand)('1,2,3', 'FLAGS', ['a', 'b'], {})).to.deep.equal({ command: 'STORE', attributes: [{ type: 'sequence', value: '1,2,3' }, { type: 'atom', value: 'FLAGS' }, [{ type: 'atom', value: 'a' }, { type: 'atom', value: 'b' }]] }); }); it('should compose a store set flags command', () => { expect((0, _commandBuilder.buildSTORECommand)('1,2,3', 'FLAGS', ['a', 'b'], {})).to.deep.equal({ command: 'STORE', attributes: [{ type: 'sequence', value: '1,2,3' }, { type: 'atom', value: 'FLAGS' }, [{ type: 'atom', value: 'a' }, { type: 'atom', value: 'b' }]] }); }); it('should compose a store add flags command', () => { expect((0, _commandBuilder.buildSTORECommand)('1,2,3', '+FLAGS', ['a', 'b'], {})).to.deep.equal({ command: 'STORE', attributes: [{ type: 'sequence', value: '1,2,3' }, { type: 'atom', value: '+FLAGS' }, [{ type: 'atom', value: 'a' }, { type: 'atom', value: 'b' }]] }); }); it('should compose a store remove flags command', () => { expect((0, _commandBuilder.buildSTORECommand)('1,2,3', '-FLAGS', ['a', 'b'], {})).to.deep.equal({ command: 'STORE', attributes: [{ type: 'sequence', value: '1,2,3' }, { type: 'atom', value: '-FLAGS' }, [{ type: 'atom', value: 'a' }, { type: 'atom', value: 'b' }]] }); }); it('should compose a store remove silent flags command', () => { expect((0, _commandBuilder.buildSTORECommand)('1,2,3', '-FLAGS', ['a', 'b'], { silent: true })).to.deep.equal({ command: 'STORE', attributes: [{ type: 'sequence', value: '1,2,3' }, { type: 'atom', value: '-FLAGS.SILENT' }, [{ type: 'atom', value: 'a' }, { type: 'atom', value: 'b' }]] }); }); it('should compose a uid store flags command', () => { expect((0, _commandBuilder.buildSTORECommand)('1,2,3', 'FLAGS', ['a', 'b'], { byUid: true })).to.deep.equal({ command: 'UID STORE', attributes: [{ type: 'sequence', value: '1,2,3' }, { type: 'atom', value: 'FLAGS' }, [{ type: 'atom', value: 'a' }, { type: 'atom', value: 'b' }]] }); }); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tYW5kLWJ1aWxkZXItdW5pdC5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsIml0IiwiZXhwZWN0IiwidG8iLCJkZWVwIiwiZXF1YWwiLCJjb21tYW5kIiwiYXR0cmlidXRlcyIsInR5cGUiLCJ2YWx1ZSIsImJ5VWlkIiwic2VjdGlvbiIsImNoYW5nZWRTaW5jZSIsInZhbHVlQXNTdHJpbmciLCJ1bnNlZW4iLCJoZWFkZXIiLCJvciIsInNlZW4iLCJub3QiLCJzZW50YmVmb3JlIiwiRGF0ZSIsInNpbmNlIiwidWlkIiwiYm9keSIsInNpbGVudCJdLCJtYXBwaW5ncyI6Ijs7QUFBQTs7QUFPQUEsUUFBUSxDQUFDLG1CQUFELEVBQXNCLE1BQU07QUFDbENDLEVBQUFBLEVBQUUsQ0FBQyx5QkFBRCxFQUE0QixNQUFNO0FBQ2xDQyxJQUFBQSxNQUFNLENBQUMsdUNBQWtCLEtBQWxCLEVBQXlCLENBQUMsS0FBRCxDQUF6QixFQUFrQyxFQUFsQyxDQUFELENBQU4sQ0FBOENDLEVBQTlDLENBQWlEQyxJQUFqRCxDQUFzREMsS0FBdEQsQ0FBNEQ7QUFDMURDLE1BQUFBLE9BQU8sRUFBRSxPQURpRDtBQUUxREMsTUFBQUEsVUFBVSxFQUFFLENBQUM7QUFDWEMsUUFBQUEsSUFBSSxFQUFFLFVBREs7QUFFWEMsUUFBQUEsS0FBSyxFQUFFO0FBRkksT0FBRCxFQUdUO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtBQUssRUFBRTtBQUZOLE9BSFM7QUFGOEMsS0FBNUQ7QUFVRCxHQVhDLENBQUY7QUFhQVIsRUFBQUEsRUFBRSxDQUFDLDZCQUFELEVBQWdDLE1BQU07QUFDdENDLElBQUFBLE1BQU0sQ0FBQyx1Q0FBa0IsS0FBbEIsRUFBeUIsQ0FBQyxLQUFELENBQXpCLEVBQWtDO0FBQ3ZDUSxNQUFBQSxLQUFLLEVBQUU7QUFEZ0MsS0FBbEMsQ0FBRCxDQUFOLENBRUlQLEVBRkosQ0FFT0MsSUFGUCxDQUVZQyxLQUZaLENBRWtCO0FB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VSxFQUFFLENBQUM7QUFDWEMsUUFBQUEsSUFBSSxFQUFFLE1BREs7QUFFWEMsUUFBQUEsS0FBSyxFQUFFO0FBRkksT0FBRCxFQUdUO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtBQUssRUFBRTtBQUZOLE9BSFMsRUFNVDtBQUNERCxRQUFBQSxJQUFJLEVBQUUsUUFETDtBQUVEQyxRQUFBQSxLQUFLLEVBQUU7QUFGTixPQU5TLEVBU1Q7QUFDREQsUUFBQUEsSUFBSSxFQUFFLFFBREw7QUFFREMsUUFBQUEsS0FBSyxFQUFFO0FBRk4sT0FUUyxFQVlUO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtBQUssRUFBRTtBQUZOLE9BWlMsRUFlVDtBQUNERCxRQUFBQSxJQUFJLEVBQUUsTUFETDtBQUVEQyxRQUFBQSxLQUFLLEVBQUU7QUFGTixPQWZTLEVBa0JUO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtBQUssRUFBRTtBQUZOLE9BbEJTLEVBcUJUO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtBQUssRUFBRTtBQUZOLE9BckJTLEVBd0JUO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtBQUssRUFBRTtBQUZOLE9BeEJTLEVBMkJUO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtBQUssRUFBRTtBQUZOLE9BM0JTLEVBOEJUO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtBQUssRUFBRTtBQUZOLE9BOUJTLEVBaUNUO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtBQUssRUFBRTtBQUZOLE9BakNTLEVBb0NUO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtBQUssRUFBRTtBQUZOLE9BcENTLEVBdUNUO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtB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LEtBRmxCO0FBb0JELEdBckJDLENBQUY7QUF1QkFSLEVBQUFBLEVBQUUsQ0FBQywwQ0FBRCxFQUE2QyxNQUFNO0FBQ25EQyxJQUFBQSxNQUFNLENBQUMsdUNBQWtCLE9BQWxCLEVBQTJCLE9BQTNCLEVBQW9DLENBQUMsR0FBRCxFQUFNLEdBQU4sQ0FBcEMsRUFBZ0Q7QUFDckRRLE1BQUFBLEtBQUssRUFBRTtBQUQ4QyxLQUFoRCxDQUFELENBQU4sQ0FFSVAsRUFGSixDQUVPQyxJQUZQLENBRVlDLEtBRlosQ0FFa0I7QUFDaEJDLE1BQUFBLE9BQU8sRUFBRSxXQURPO0FBRWhCQyxNQUFBQSxVQUFVLEVBQUUsQ0FBQztBQUNYQyxRQUFBQSxJQUFJLEVBQUUsVUFESztBQUVYQyxRQUFBQSxLQUFLLEVBQUU7QUFGSSxPQUFELEVBR1Q7QUFDREQsUUFBQUEsSUFBSSxFQUFFLE1BREw7QUFFREMsUUFBQUEsS0FBSyxFQUFFO0FBRk4sT0FIUyxFQU9aLENBQUM7QUFDQ0QsUUFBQUEsSUFBSSxFQUFFLE1BRFA7QUFFQ0MsUUFBQUEsS0FBSyxFQUFFO0FBRlIsT0FBRCxFQUdHO0FBQ0RELFFBQUFBLElBQUksRUFBRSxNQURMO0FBRURDLFFBQUFBLEtBQUssRUFBRTtBQUZOLE9BSEgsQ0FQWTtBQUZJLEtBRmxCO0FBb0JELEdBckJDLENBQUY7QUFzQkQsQ0FsSU8sQ0FBUiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGJ1aWxkU1RPUkVDb21tYW5kLFxuICBidWlsZEZFVENIQ29tbWFuZCxcbiAgYnVpbGRYT0F1dGgyVG9rZW4sXG4gIGJ1aWxkU0VBUkNIQ29tbWFuZFxufSBmcm9tICcuL2NvbW1hbmQtYnVpbGRlcidcblxuZGVzY3JpYmUoJ2J1aWxkRkVUQ0hDb21tYW5kJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGJ1aWxkIHNpbmdsZSBBTEwnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGJ1aWxkRkVUQ0hDb21tYW5kKCcxOionLCBbJ2FsbCddLCB7fSkpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY29tbWFuZDogJ0ZFVENIJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgIHR5cGU6ICdTRVFVRU5DRScsXG4gICAgICAgIHZhbHVlOiAnMToqJ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiAnQVRPTScsXG4gICAgICAgIHZhbHVlOiAnQUxMJ1xuICAgICAgfV1cbiAgICB9KVxuICB9KVxuXG4gIGl0KCdzaG91bGQgYnVpbGQgRkVUQ0ggd2l0aCB1aWQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGJ1aWxkRkVUQ0hDb21tYW5kKCcxOionLCBbJ2FsbCddLCB7XG4gICAgICBieVVpZDogdHJ1ZVxuICAgIH0pKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGNvbW1hbmQ6ICdVSUQgRkVUQ0gnLFxuICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgdHlwZTogJ1NFUVVFTkNFJyxcbiAgICAgICAgdmFsdWU6ICcxOionXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdBVE9NJyxcbiAgICAgICAgdmFsdWU6ICdBTEwnXG4gICAgICB9XVxuICAgIH0pXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBGRVRDSCB3aXRoIHVpZCwgZW52ZWxvcGUnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGJ1aWxkRkVUQ0hDb21tYW5kKCcxOionLCBbJ3VpZCcsICdlbnZlbG9wZSddLCB7fSkpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY29tbWFuZDogJ0ZFVENIJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgIHR5cGU6ICdTRVFVRU5DRScsXG4gICAgICAgIHZhbHVlOiAnMToqJ1xuICAgICAgfSxcbiAgICAgIFt7XG4gICAgICAgIHR5cGU6ICdBVE9NJyxcbiAgICAgICAgdmFsdWU6ICdVSUQnXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdBVE9NJyxcbiAgICAgICAgdmFsdWU6ICdFTlZFTE9QRSdcbiAgICAgIH1dXG4gICAgICBdXG4gICAgfSlcbiAgfSlcblxuICBpdCgnc2hvdWxkIGJ1aWxkIEZFVENIIHdpdGggbW9kc2VxJywgKCkgPT4ge1xuICAgIGV4cGVjdChidWlsZEZFVENIQ29tbWFuZCgnMToqJywgWydtb2RzZXEgKDEyMzQ1NjcpJ10sIHt9KSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBjb21tYW5kOiAnRkVUQ0gnLFxuICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgdHlwZTogJ1NFUVVFTkNFJyxcbiAgICAgICAgdmFsdWU6ICcxOionXG4gICAgICB9LFxuICAgICAgW3tcbiAgICAgICAgdHlwZTogJ0FUT00nLFxuICAgICAgICB2YWx1ZTogJ01PRFNFUSdcbiAgICAgIH0sXG4gICAgICBbe1xuICAgICAgICB0eXBlOiAnQVRPTScsXG4gICAgICAgIHZhbHVlOiAnMTIzNDU2NydcbiAgICAgIH1dXG4gICAgICBdXG4gICAgICBdXG4gICAgfSlcbiAgfSlcblxuICBpdCgnc2hvdWxkIGJ1aWxkIEZFVENIIHdpdGggc2VjdGlvbicsICgpID0+IHtcbiAgICBleHBlY3QoYnVpbGRGRVRDSENvbW1hbmQoJzE6KicsIFsnYm9keVt0ZXh0XSddLCB7fSkpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY29tbWFuZDogJ0ZFVENIJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgIHR5cGU6ICdTRVFVRU5DRScsXG4gICAgICAgIHZhbHVlOiAnMToqJ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiAnQVRPTScsXG4gICAgICAgIHZhbHVlOiAnQk9EWScsXG4gICAgICAgIHNlY3Rpb246IFt7XG4gICAgICAgICAgdHlwZTogJ0FUT00nLFxuICAgICAgICAgIHZhbHVlOiAnVEVYVCdcbiAgICAgICAgfV1cbiAgICAgIH1dXG4gICAgfSlcbiAgfSlcblxuICBpdCgnc2hvdWxkIGJ1aWxkIEZFVENIIHdpdGggc2VjdGlvbiBhbmQgbGlzdCcsICgpID0+IHtcbiAgICBleHBlY3QoYnVpbGRGRVRDSENvbW1hbmQoJzE6KicsIFsnYm9keVtoZWFkZXIuZmllbGRzIChkYXRlIGluLXJlcGx5LXRvKV0nXSwge30pKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGNvbW1hbmQ6ICdGRVRDSCcsXG4gICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICB0eXBlOiAnU0VRVUVOQ0UnLFxuICAgICAgICB2YWx1ZTogJzE6KidcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ0FUT00nLFxuICAgICAgICB2YWx1ZTogJ0JPRFknLFxuICAgICAgICBzZWN0aW9uOiBbe1xuICAgICAgICAgIHR5cGU6ICdBVE9NJyxcbiAgICAgICAgICB2YWx1ZTogJ0hFQURFUi5GSUVMRFMnXG4gICAgICAgIH0sXG4gICAgICAgIFt7XG4gICAgICAgICAgdHlwZTogJ0FUT00nLFxuICAgICAgICAgIHZhbHVlOiAnREFURSdcbiAgICAgICAgfSwge1xuICAgICAgICAgIHR5cGU6ICdBVE9NJyxcbiAgICAgICAgICB2YWx1ZTogJ0lOLVJFUExZLVRPJ1xuICAgICAgICB9XVxuICAgICAgICBdXG4gICAgICB9XVxuICAgIH0pXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCBidWlsZCBGRVRDSCB3aXRoICcsICgpID0+IHtcbiAgICBleHBlY3QoYnVpbGRGRVRDSENvbW1hbmQoJzE6KicsIFsnYWxsJ10sIHtcbiAgICAgIGNoYW5nZWRTaW5jZTogJzEyMzQ1NidcbiAgICB9KSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBjb21tYW5kOiAnRkVUQ0gnLFxuICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgdHlwZTogJ1NFUVVFTkNFJyxcbiAgICAgICAgdmFsdWU6ICcxOionXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdBVE9NJyxcbiAgICAgICAgdmFsdWU6ICdBTEwnXG4gICAgICB9LFxuICAgICAgW3tcbiAgICAgICAgdHlwZTogJ0FUT00nLFxuICAgICAgICB2YWx1ZTogJ0NIQU5HRURTSU5DRSdcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ0FUT00nLFxuICAgICAgICB2YWx1ZTogJzEyMzQ1NidcbiAgICAgIH1dXG4gICAgICBdXG4gICAgfSlcbiAgfSlcblxuICBpdCgnc2hvdWxkIGJ1aWxkIEZFVENIIHdpdGggcGFydGlhbCcsICgpID0+IHtcbiAgICBleHBlY3QoYnVpbGRGRVRDSENvbW1hbmQoJzE6KicsIFsnYm9keVtdJ10sIHt9KSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBjb21tYW5kOiAnRkVUQ0gnLFxuICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgdHlwZTogJ1NFUVVFTkNFJyxcbiAgICAgICAgdmFsdWU6ICcxOionXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdBVE9NJyxcbiAgICAgICAgdmFsdWU6ICdCT0RZJyxcbiAgICAgICAgc2VjdGlvbjogW11cbiAgICAgIH1dXG4gICAgfSlcbiAgfSlcblxuICBpdCgnc2hvdWxkIGJ1aWxkIEZFVENIIHdpdGggdGhlIHZhbHVlQXNTdHJpbmcgb3B0aW9uJywgKCkgPT4ge1xuICAgIGV4cGVjdChidWlsZEZFVENIQ29tbWFuZCgnMToqJywgWydib2R5W10nXSwgeyB2YWx1ZUFzU3RyaW5nOiBmYWxzZSB9KSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBjb21tYW5kOiAnRkVUQ0gnLFxuICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgdHlwZTogJ1NFUVVFTkNFJyxcbiAgICAgICAgdmFsdWU6ICcxOionXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdBVE9NJyxcbiAgICAgICAgdmFsdWU6ICdCT0RZJyxcbiAgICAgICAgc2VjdGlvbjogW11cbiAgICAgIH1dLFxuICAgICAgdmFsdWVBc1N0cmluZzogZmFsc2VcbiAgICB9KVxuICB9KVxufSlcblxuZGVzY3JpYmUoJyNfYnVpbGRYT0F1dGgyVG9rZW4nLCAoKSA9PiB7XG4gIGl0KCdzaG91bGQgcmV0dXJuIGJhc2U2NCBlbmNvZGVkIFhPQVVUSDIgdG9rZW4nLCAoKSA9PiB7XG4gICAgZXhwZWN0KGJ1aWxkWE9BdXRoMlRva2VuKCd1c2VyQGhvc3QnLCAnYWJjZGUnKSkudG8uZXF1YWwoJ2RYTmxjajExYzJWeVFHaHZjM1FCWVhWMGFEMUNaV0Z5WlhJZ1lXSmpaR1VCQVE9PScpXG4gIH0pXG59KVxuXG5kZXNjcmliZSgnYnVpbGRTRUFSQ0hDb21tYW5kJywgKCkgPT4ge1xuICBpdCgnc2hvdWxkIGNvbXBvc2UgYSBzZWFyY2ggY29tbWFuZCcsICgpID0+IHtcbiAgICBleHBlY3QoYnVpbGRTRUFSQ0hDb21tYW5kKHtcbiAgICAgIHVuc2VlbjogdHJ1ZSxcbiAgICAgIGhlYWRlcjogWydzdWJqZWN0JywgJ2hlbGxvIHdvcmxkJ10sXG4gICAgICBvcjoge1xuICAgICAgICB1bnNlZW46IHRydWUsXG4gICAgICAgIHNlZW46IHRydWVcbiAgICAgIH0sXG4gICAgICBub3Q6IHtcbiAgICAgICAgc2VlbjogdHJ1ZVxuICAgICAgfSxcbiAgICAgIHNlbnRiZWZvcmU6IG5ldyBEYXRlKDIwMTEsIDEsIDMsIDEyLCAwLCAwKSxcbiAgICAgIHNpbmNlOiBuZXcgRGF0ZSgyMDExLCAxMSwgMjMsIDEyLCAwLCAwKSxcbiAgICAgIHVpZDogJzE6KicsXG4gICAgICAnWC1HTS1NU0dJRCc6ICcxNDk5MjU3NjQ3NDkwNjYyOTcwJyxcbiAgICAgICdYLUdNLVRIUklEJzogJzE0OTkyNTc2NDc0OTA2NjI5NzEnXG4gICAgfSwge30pKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGNvbW1hbmQ6ICdTRUFSQ0gnLFxuICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ1VOU0VFTidcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ0hFQURFUidcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHZhbHVlOiAnc3ViamVjdCdcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgIHZhbHVlOiAnaGVsbG8gd29ybGQnXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdhdG9tJyxcbiAgICAgICAgdmFsdWU6ICdPUidcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ1VOU0VFTidcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ1NFRU4nXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdhdG9tJyxcbiAgICAgICAgdmFsdWU6ICdOT1QnXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdhdG9tJyxcbiAgICAgICAgdmFsdWU6ICdTRUVOJ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiAnYXRvbScsXG4gICAgICAgIHZhbHVlOiAnU0VOVEJFRk9SRSdcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJzMtRmViLTIwMTEnXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdhdG9tJyxcbiAgICAgICAgdmFsdWU6ICdTSU5DRSdcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJzIzLURlYy0yMDExJ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiAnYXRvbScsXG4gICAgICAgIHZhbHVlOiAnVUlEJ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiAnc2VxdWVuY2UnLFxuICAgICAgICB2YWx1ZTogJzE6KidcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ1gtR00tTVNHSUQnXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdudW1iZXInLFxuICAgICAgICB2YWx1ZTogJzE0OTkyNTc2NDc0OTA2NjI5NzAnXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdhdG9tJyxcbiAgICAgICAgdmFsdWU6ICdYLUdNLVRIUklEJ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgdmFsdWU6ICcxNDk5MjU3NjQ3NDkwNjYyOTcxJ1xuICAgICAgfV1cbiAgICB9KVxuICB9KVxuXG4gIGl0KCdzaG91bGQgY29tcG9zZSBhbiB1bmljb2RlIHNlYXJjaCBjb21tYW5kJywgKCkgPT4ge1xuICAgIGV4cGVjdChidWlsZFNFQVJDSENvbW1hbmQoe1xuICAgICAgYm9keTogJ2rDtWdldmEnXG4gICAgfSwge30pKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGNvbW1hbmQ6ICdTRUFSQ0gnLFxuICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ0NIQVJTRVQnXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdhdG9tJyxcbiAgICAgICAgdmFsdWU6ICdVVEYtOCdcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ0JPRFknXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdsaXRlcmFsJyxcbiAgICAgICAgdmFsdWU6ICdqw4PCtWdldmEnXG4gICAgICB9XVxuICAgIH0pXG4gIH0pXG59KVxuXG5kZXNjcmliZSgnI19idWlsZFNUT1JFQ29tbWFuZCcsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBjb21wb3NlIGEgc3RvcmUgY29tbWFuZCBmcm9tIGFuIGFycmF5JywgKCkgPT4ge1xuICAgIGV4cGVjdChidWlsZFNUT1JFQ29tbWFuZCgnMSwyLDMnLCAnRkxBR1MnLCBbJ2EnLCAnYiddLCB7fSkpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY29tbWFuZDogJ1NUT1JFJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgIHR5cGU6ICdzZXF1ZW5jZScsXG4gICAgICAgIHZhbHVlOiAnMSwyLDMnXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdhdG9tJyxcbiAgICAgICAgdmFsdWU6ICdGTEFHUydcbiAgICAgIH0sXG4gICAgICBbe1xuICAgICAgICB0eXBlOiAnYXRvbScsXG4gICAgICAgIHZhbHVlOiAnYSdcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ2InXG4gICAgICB9XVxuICAgICAgXVxuICAgIH0pXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCBjb21wb3NlIGEgc3RvcmUgc2V0IGZsYWdzIGNvbW1hbmQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGJ1aWxkU1RPUkVDb21tYW5kKCcxLDIsMycsICdGTEFHUycsIFsnYScsICdiJ10sIHt9KSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBjb21tYW5kOiAnU1RPUkUnLFxuICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgdHlwZTogJ3NlcXVlbmNlJyxcbiAgICAgICAgdmFsdWU6ICcxLDIsMydcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ0ZMQUdTJ1xuICAgICAgfSxcbiAgICAgIFt7XG4gICAgICAgIHR5cGU6ICdhdG9tJyxcbiAgICAgICAgdmFsdWU6ICdhJ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiAnYXRvbScsXG4gICAgICAgIHZhbHVlOiAnYidcbiAgICAgIH1dXG4gICAgICBdXG4gICAgfSlcbiAgfSlcblxuICBpdCgnc2hvdWxkIGNvbXBvc2UgYSBzdG9yZSBhZGQgZmxhZ3MgY29tbWFuZCcsICgpID0+IHtcbiAgICBleHBlY3QoYnVpbGRTVE9SRUNvbW1hbmQoJzEsMiwzJywgJytGTEFHUycsIFsnYScsICdiJ10sIHt9KSkudG8uZGVlcC5lcXVhbCh7XG4gICAgICBjb21tYW5kOiAnU1RPUkUnLFxuICAgICAgYXR0cmlidXRlczogW3tcbiAgICAgICAgdHlwZTogJ3NlcXVlbmNlJyxcbiAgICAgICAgdmFsdWU6ICcxLDIsMydcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJytGTEFHUydcbiAgICAgIH0sXG4gICAgICBbe1xuICAgICAgICB0eXBlOiAnYXRvbScsXG4gICAgICAgIHZhbHVlOiAnYSdcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ2InXG4gICAgICB9XVxuICAgICAgXVxuICAgIH0pXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCBjb21wb3NlIGEgc3RvcmUgcmVtb3ZlIGZsYWdzIGNvbW1hbmQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGJ1aWxkU1RPUkVDb21tYW5kKCcxLDIsMycsICctRkxBR1MnLCBbJ2EnLCAnYiddLCB7fSkpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY29tbWFuZDogJ1NUT1JFJyxcbiAgICAgIGF0dHJpYnV0ZXM6IFt7XG4gICAgICAgIHR5cGU6ICdzZXF1ZW5jZScsXG4gICAgICAgIHZhbHVlOiAnMSwyLDMnXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdhdG9tJyxcbiAgICAgICAgdmFsdWU6ICctRkxBR1MnXG4gICAgICB9LFxuICAgICAgW3tcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ2EnXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdhdG9tJyxcbiAgICAgICAgdmFsdWU6ICdiJ1xuICAgICAgfV1cbiAgICAgIF1cbiAgICB9KVxuICB9KVxuXG4gIGl0KCdzaG91bGQgY29tcG9zZSBhIHN0b3JlIHJlbW92ZSBzaWxlbnQgZmxhZ3MgY29tbWFuZCcsICgpID0+IHtcbiAgICBleHBlY3QoYnVpbGRTVE9SRUNvbW1hbmQoJzEsMiwzJywgJy1GTEFHUycsIFsnYScsICdiJ10sIHtcbiAgICAgIHNpbGVudDogdHJ1ZVxuICAgIH0pKS50by5kZWVwLmVxdWFsKHtcbiAgICAgIGNvbW1hbmQ6ICdTVE9SRScsXG4gICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICB0eXBlOiAnc2VxdWVuY2UnLFxuICAgICAgICB2YWx1ZTogJzEsMiwzJ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiAnYXRvbScsXG4gICAgICAgIHZhbHVlOiAnLUZMQUdTLlNJTEVOVCdcbiAgICAgIH0sXG4gICAgICBbe1xuICAgICAgICB0eXBlOiAnYXRvbScsXG4gICAgICAgIHZhbHVlOiAnYSdcbiAgICAgIH0sIHtcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ2InXG4gICAgICB9XVxuICAgICAgXVxuICAgIH0pXG4gIH0pXG5cbiAgaXQoJ3Nob3VsZCBjb21wb3NlIGEgdWlkIHN0b3JlIGZsYWdzIGNvbW1hbmQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KGJ1aWxkU1RPUkVDb21tYW5kKCcxLDIsMycsICdGTEFHUycsIFsnYScsICdiJ10sIHtcbiAgICAgIGJ5VWlkOiB0cnVlXG4gICAgfSkpLnRvLmRlZXAuZXF1YWwoe1xuICAgICAgY29tbWFuZDogJ1VJRCBTVE9SRScsXG4gICAgICBhdHRyaWJ1dGVzOiBbe1xuICAgICAgICB0eXBlOiAnc2VxdWVuY2UnLFxuICAgICAgICB2YWx1ZTogJzEsMiwzJ1xuICAgICAgfSwge1xuICAgICAgICB0eXBlOiAnYXRvbScsXG4gICAgICAgIHZhbHVlOiAnRkxBR1MnXG4gICAgICB9LFxuICAgICAgW3tcbiAgICAgICAgdHlwZTogJ2F0b20nLFxuICAgICAgICB2YWx1ZTogJ2EnXG4gICAgICB9LCB7XG4gICAgICAgIHR5cGU6ICdhdG9tJyxcbiAgICAgICAgdmFsdWU6ICdiJ1xuICAgICAgfV1cbiAgICAgIF1cbiAgICB9KVxuICB9KVxufSlcbiJdfQ==