{"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeAddress.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeAddress.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":57}},"3":{"start":{"line":5,"column":26},"end":{"line":5,"column":54}},"4":{"start":{"line":6,"column":26},"end":{"line":6,"column":54}},"5":{"start":{"line":7,"column":26},"end":{"line":7,"column":54}},"6":{"start":{"line":8,"column":26},"end":{"line":8,"column":54}},"7":{"start":{"line":14,"column":4},"end":{"line":23,"column":5}},"8":{"start":{"line":16,"column":12},"end":{"line":16,"column":66}},"9":{"start":{"line":18,"column":12},"end":{"line":18,"column":66}},"10":{"start":{"line":20,"column":12},"end":{"line":20,"column":66}},"11":{"start":{"line":22,"column":12},"end":{"line":22,"column":66}},"12":{"start":{"line":25,"column":0},"end":{"line":25,"column":48}}},"fnMap":{"0":{"name":"deserializeAddress","decl":{"start":{"line":13,"column":9},"end":{"line":13,"column":27}},"loc":{"start":{"line":13,"column":42},"end":{"line":24,"column":1}},"line":13}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":4},"end":{"line":23,"column":5}},"type":"switch","locations":[{"start":{"line":15,"column":8},"end":{"line":16,"column":66}},{"start":{"line":17,"column":8},"end":{"line":18,"column":66}},{"start":{"line":19,"column":8},"end":{"line":20,"column":66}},{"start":{"line":21,"column":8},"end":{"line":22,"column":66}}],"line":14}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":501,"8":497,"9":2,"10":1,"11":1,"12":1},"f":{"0":501},"b":{"0":[497,2,1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeAddress.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeAddress.ts"],"names":[],"mappings":";;;AAGA,0DAAuD;AACvD,uDAAoD;AACpD,uDAAoD;AACpD,uDAAoD;AACpD,uDAAoD;AAEpD;;;GAGG;AACH,SAAgB,kBAAkB,CAChC,IAAiB,EACjB,MAAoB;IAEpB,QAAQ,IAAI,EAAE;QACZ,KAAK,yBAAW,CAAC,IAAI;YACnB,OAAO,IAAA,iCAAe,EAAC,MAAM,CAAC,CAAC;QACjC,KAAK,yBAAW,CAAC,IAAI;YACnB,OAAO,IAAA,iCAAe,EAAC,MAAM,CAAC,CAAC;QACjC,KAAK,yBAAW,CAAC,IAAI;YACnB,OAAO,IAAA,iCAAe,EAAC,MAAM,CAAC,CAAC;QACjC,KAAK,yBAAW,CAAC,IAAI;YACnB,OAAO,IAAA,iCAAe,EAAC,MAAM,CAAC,CAAC;KAClC;AACH,CAAC;AAdD,gDAcC","sourcesContent":["import { BufferReader } from '@node-dlc/bufio';\n\nimport { Address } from '../../domain/Address';\nimport { AddressType } from '../../domain/AddressType';\nimport { deserializeIPv4 } from './deserializeIPv4';\nimport { deserializeIPv6 } from './deserializeIPv6';\nimport { deserializeTor2 } from './deserializeTor2';\nimport { deserializeTor3 } from './deserializeTor3';\n\n/**\n * Deserializes an address based on the type and returns\n * an instance of Address as a polymorphic type.\n */\nexport function deserializeAddress(\n  type: AddressType,\n  reader: BufferReader,\n): Address {\n  switch (type) {\n    case AddressType.IPv4:\n      return deserializeIPv4(reader);\n    case AddressType.IPv6:\n      return deserializeIPv6(reader);\n    case AddressType.TOR2:\n      return deserializeTor2(reader);\n    case AddressType.TOR3:\n      return deserializeTor3(reader);\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"acb9775686f7d6861a6bff9e7c33b8d42344c770","contentHash":"88d4b97c860b4f5b075a2d352f3cf1eb42e78ebe29d99d258f02e611754e7b49"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressType.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressType.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":5,"column":0},"end":{"line":10,"column":68}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":50}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":50}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":50}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":50}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":24},"end":{"line":10,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":17},"end":{"line":10,"column":66}},"type":"binary-expr","locations":[{"start":{"line":10,"column":17},"end":{"line":10,"column":36}},{"start":{"line":10,"column":41},"end":{"line":10,"column":65}}],"line":10}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressType.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressType.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,6CAAQ,CAAA;IACR,6CAAQ,CAAA;IACR,6CAAQ,CAAA;IACR,6CAAQ,CAAA;AACV,CAAC,EALW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAKtB","sourcesContent":["export enum AddressType {\n  IPv4 = 1,\n  IPv6 = 2,\n  TOR2 = 3,\n  TOR3 = 4,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9092392cdb8a1cc76e75f21591ee042b58ed6d15","contentHash":"88491237cb66ba7f9a1e7bcdbf56eea96d66500b708559776a5048e3109595c9"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeIPv4.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeIPv4.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":33}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":57}},"3":{"start":{"line":5,"column":31},"end":{"line":5,"column":64}},"4":{"start":{"line":11,"column":22},"end":{"line":11,"column":41}},"5":{"start":{"line":12,"column":17},"end":{"line":12,"column":38}},"6":{"start":{"line":13,"column":17},"end":{"line":13,"column":76}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":53}},"8":{"start":{"line":16,"column":0},"end":{"line":16,"column":42}}},"fnMap":{"0":{"name":"deserializeIPv4","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":24}},"loc":{"start":{"line":10,"column":33},"end":{"line":15,"column":1}},"line":10}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":497,"5":497,"6":497,"7":497,"8":1},"f":{"0":497},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeIPv4.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeIPv4.ts"],"names":[],"mappings":";;;AAEA,0DAAuD;AACvD,iEAA8D;AAE9D;;;GAGG;AACH,SAAgB,eAAe,CAAC,MAAoB;IAClD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,IAAA,2CAAoB,EAAC,SAAS,CAAC,CAAC;IAC7C,OAAO,IAAI,yBAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AALD,0CAKC","sourcesContent":["import { BufferReader } from '@node-dlc/bufio';\n\nimport { AddressIPv4 } from '../../domain/AddressIPv4';\nimport { ipv4StringFromBuffer } from './ipv4StringFromBuffer';\n\n/**\n * Deserializes an IPv4 address from a reader and\n * returns an instance of an IPv4 Address.\n */\nexport function deserializeIPv4(reader: BufferReader): AddressIPv4 {\n  const hostBytes = reader.readBytes(4);\n  const port = reader.readUInt16BE();\n  const host = ipv4StringFromBuffer(hostBytes);\n  return new AddressIPv4(host, port);\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e11f4efc14167af34dba86b75a66d920f2e5d38c","contentHash":"6dfc38d8ae9766f6dac6f570289fe52ae0c58e7e1573646b11924ff5e38ecf9e"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressIPv4.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressIPv4.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":38}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":46}},"4":{"start":{"line":11,"column":8},"end":{"line":11,"column":26}},"5":{"start":{"line":14,"column":8},"end":{"line":14,"column":46}},"6":{"start":{"line":17,"column":8},"end":{"line":17,"column":43}},"7":{"start":{"line":20,"column":0},"end":{"line":20,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":10,"column":28},"end":{"line":12,"column":5}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":13,"column":4},"end":{"line":13,"column":5}},"loc":{"start":{"line":13,"column":15},"end":{"line":15,"column":5}},"line":13},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":5}},"loc":{"start":{"line":16,"column":15},"end":{"line":18,"column":5}},"line":16}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":503,"5":514,"6":2,"7":1},"f":{"0":503,"1":514,"2":2},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressIPv4.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressIPv4.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,+CAA4C;AAE5C,MAAa,WAAY,SAAQ,iBAAO;IACtC;;OAEG;IACH,YAAY,IAAY,EAAE,IAAY;QACpC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,yBAAW,CAAC,IAAI,CAAC;IAC1B,CAAC;IAEM,QAAQ;QACb,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;CACF;AAfD,kCAeC","sourcesContent":["import { Address } from './Address';\nimport { AddressType } from './AddressType';\n\nexport class AddressIPv4 extends Address {\n  /**\n   * Represents an IPv4 address with the host and port.\n   */\n  constructor(host: string, port: number) {\n    super(host, port);\n  }\n\n  public get type(): AddressType {\n    return AddressType.IPv4;\n  }\n\n  public toString(): string {\n    return `${this.host}:${this.port}`;\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e36659df696e2d0c229c63851478fdad3adbd6d1","contentHash":"4981fe5fca63691d91fef47a8d1161ea2d0e155ec62dcc9c92294759c4e4edd1"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/Address.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/Address.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":25}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":46}},"3":{"start":{"line":10,"column":8},"end":{"line":10,"column":25}},"4":{"start":{"line":11,"column":8},"end":{"line":11,"column":25}},"5":{"start":{"line":17,"column":8},"end":{"line":17,"column":43}},"6":{"start":{"line":20,"column":8},"end":{"line":20,"column":43}},"7":{"start":{"line":23,"column":8},"end":{"line":26,"column":10}},"8":{"start":{"line":29,"column":0},"end":{"line":29,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":4},"end":{"line":9,"column":5}},"loc":{"start":{"line":9,"column":28},"end":{"line":12,"column":5}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":5}},"loc":{"start":{"line":16,"column":15},"end":{"line":18,"column":5}},"line":16},"2":{"name":"(anonymous_2)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":19,"column":15},"end":{"line":21,"column":5}},"line":19},"3":{"name":"(anonymous_3)","decl":{"start":{"line":22,"column":4},"end":{"line":22,"column":5}},"loc":{"start":{"line":22,"column":13},"end":{"line":27,"column":5}},"line":22}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":518,"4":518,"5":0,"6":4,"7":4,"8":1},"f":{"0":518,"1":0,"2":4,"3":4},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/Address.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/Address.ts"],"names":[],"mappings":";;;AAEA,+CAA4C;AAE5C,MAAsB,OAAO;IAW3B;;OAEG;IACH,YAAY,IAAY,EAAE,IAAY;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,IAAW,IAAI;QACb,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;IAEM,QAAQ;QACb,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACrC,CAAC;IAEM,MAAM;QACX,OAAO;YACL,OAAO,EAAE,yBAAW,CAAC,GAAG;YACxB,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE;SACzB,CAAC;IACJ,CAAC;CACF;AApCD,0BAoCC","sourcesContent":["import { AddressJson } from './AddressJson';\nimport { AddressType } from './AddressType';\nimport { NetworkType } from './NetworkType';\n\nexport abstract class Address {\n  /**\n   * String notation representation of the host\n   */\n  public host: string;\n\n  /**\n   * Port number\n   */\n  public port: number;\n\n  /**\n   * Base class representing a network address\n   */\n  constructor(host: string, port: number) {\n    this.host = host;\n    this.port = port;\n  }\n\n  /**\n   * Type of connection\n   */\n  public get type(): AddressType {\n    throw new Error('Not implemented');\n  }\n\n  public toString(): string {\n    return `${this.host}:${this.port}`;\n  }\n\n  public toJSON(): AddressJson {\n    return {\n      network: NetworkType.TCP,\n      address: this.toString(),\n    };\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4da1478ebe1cf0d99db6df6a4474a7b6b52619dd","contentHash":"2d4a9a41024dfe113aa1923b2ddda77d97c98403ecb02f501dad39137d09bcbf"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/NetworkType.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/NetworkType.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":5,"column":0},"end":{"line":7,"column":68}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":31}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":24},"end":{"line":7,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":17},"end":{"line":7,"column":66}},"type":"binary-expr","locations":[{"start":{"line":7,"column":17},"end":{"line":7,"column":36}},{"start":{"line":7,"column":41},"end":{"line":7,"column":65}}],"line":7}},"s":{"0":1,"1":1,"2":1,"3":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/NetworkType.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/NetworkType.ts"],"names":[],"mappings":";;;AAAA,IAAY,WAEX;AAFD,WAAY,WAAW;IACrB,0BAAW,CAAA;AACb,CAAC,EAFW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAEtB","sourcesContent":["export enum NetworkType {\n  TCP = 'tcp',\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"3d11487423c74461fb98091a5dee77c269ea376a","contentHash":"75b0f9631d741191e43dbb0c1cf1d3515da530696d7f91f587641423061a59d4"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/ipv4StringFromBuffer.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/ipv4StringFromBuffer.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":38}},"2":{"start":{"line":9,"column":4},"end":{"line":9,"column":27}},"3":{"start":{"line":11,"column":0},"end":{"line":11,"column":52}}},"fnMap":{"0":{"name":"ipv4StringFromBuffer","decl":{"start":{"line":8,"column":9},"end":{"line":8,"column":29}},"loc":{"start":{"line":8,"column":37},"end":{"line":10,"column":1}},"line":8}},"branchMap":{},"s":{"0":1,"1":1,"2":500,"3":1},"f":{"0":500},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/ipv4StringFromBuffer.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/ipv4StringFromBuffer.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,SAAgB,oBAAoB,CAAC,KAAa;IAChD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAFD,oDAEC","sourcesContent":["/**\n * Converts an IPv4 address into string notation\n * of the format x.x.x.x where each x is an 8-bit integer.\n */\nexport function ipv4StringFromBuffer(bytes: Buffer): string {\n  return bytes.join('.');\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4a3c4dab2d3e270c1b748f1d25beed1e7dde07b0","contentHash":"d54ba98d2e16a459241c70c9d3d5dd76af2737b2d1e6d1209f6895ec646f0892"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeIPv6.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeIPv6.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":33}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":57}},"3":{"start":{"line":5,"column":31},"end":{"line":5,"column":64}},"4":{"start":{"line":11,"column":22},"end":{"line":11,"column":42}},"5":{"start":{"line":12,"column":17},"end":{"line":12,"column":38}},"6":{"start":{"line":13,"column":17},"end":{"line":13,"column":76}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":53}},"8":{"start":{"line":16,"column":0},"end":{"line":16,"column":42}}},"fnMap":{"0":{"name":"deserializeIPv6","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":24}},"loc":{"start":{"line":10,"column":33},"end":{"line":15,"column":1}},"line":10}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":2,"5":2,"6":2,"7":2,"8":1},"f":{"0":2},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeIPv6.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeIPv6.ts"],"names":[],"mappings":";;;AAEA,0DAAuD;AACvD,iEAA8D;AAE9D;;;GAGG;AACH,SAAgB,eAAe,CAAC,MAAoB;IAClD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,IAAA,2CAAoB,EAAC,SAAS,CAAC,CAAC;IAC7C,OAAO,IAAI,yBAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AALD,0CAKC","sourcesContent":["import { BufferReader } from '@node-dlc/bufio';\n\nimport { AddressIPv6 } from '../../domain/AddressIPv6';\nimport { ipv6StringFromBuffer } from './ipv6StringFromBuffer';\n\n/**\n * Deserializes an IPv6 address from a reader and\n * returns an instance of an IPv6 Address.\n */\nexport function deserializeIPv6(reader: BufferReader): AddressIPv6 {\n  const hostBytes = reader.readBytes(16);\n  const port = reader.readUInt16BE();\n  const host = ipv6StringFromBuffer(hostBytes);\n  return new AddressIPv6(host, port);\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"957b4f2831c7b90621a59f853d2deb519e391fbf","contentHash":"2394d3898df664a00423443fbb5fb8cf391ed47e9656571c6f2a7990565de631"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressIPv6.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressIPv6.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":38}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":46}},"4":{"start":{"line":11,"column":8},"end":{"line":11,"column":26}},"5":{"start":{"line":14,"column":8},"end":{"line":14,"column":46}},"6":{"start":{"line":17,"column":8},"end":{"line":17,"column":45}},"7":{"start":{"line":20,"column":0},"end":{"line":20,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":10,"column":28},"end":{"line":12,"column":5}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":13,"column":4},"end":{"line":13,"column":5}},"loc":{"start":{"line":13,"column":15},"end":{"line":15,"column":5}},"line":13},"2":{"name":"(anonymous_2)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":5}},"loc":{"start":{"line":16,"column":15},"end":{"line":18,"column":5}},"line":16}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":7,"5":5,"6":2,"7":1},"f":{"0":7,"1":5,"2":2},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressIPv6.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressIPv6.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,+CAA4C;AAE5C,MAAa,WAAY,SAAQ,iBAAO;IACtC;;OAEG;IACH,YAAY,IAAY,EAAE,IAAY;QACpC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,yBAAW,CAAC,IAAI,CAAC;IAC1B,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;IACvC,CAAC;CACF;AAfD,kCAeC","sourcesContent":["import { Address } from './Address';\nimport { AddressType } from './AddressType';\n\nexport class AddressIPv6 extends Address {\n  /**\n   * Represents an IPv6 address with the host and port.\n   */\n  constructor(host: string, port: number) {\n    super(host, port);\n  }\n\n  public get type(): AddressType {\n    return AddressType.IPv6;\n  }\n\n  public toString(): string {\n    return `[${this.host}]:${this.port}`;\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"66d6961e9229f197db98333efd4a88c60e40beaf","contentHash":"4ad9635399158bcb0cf42af296b682a6c0bba26df4a39aa524231b760d23fd70"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/ipv6StringFromBuffer.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/ipv6StringFromBuffer.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":38}},"2":{"start":{"line":19,"column":21},"end":{"line":19,"column":43}},"3":{"start":{"line":20,"column":19},"end":{"line":20,"column":45}},"4":{"start":{"line":21,"column":4},"end":{"line":21,"column":18}},"5":{"start":{"line":23,"column":0},"end":{"line":23,"column":52}},"6":{"start":{"line":25,"column":28},"end":{"line":25,"column":29}},"7":{"start":{"line":26,"column":21},"end":{"line":26,"column":23}},"8":{"start":{"line":27,"column":4},"end":{"line":31,"column":5}},"9":{"start":{"line":27,"column":17},"end":{"line":27,"column":18}},"10":{"start":{"line":28,"column":22},"end":{"line":28,"column":74}},"11":{"start":{"line":29,"column":8},"end":{"line":29,"column":47}},"12":{"start":{"line":30,"column":8},"end":{"line":30,"column":31}},"13":{"start":{"line":32,"column":4},"end":{"line":32,"column":20}},"14":{"start":{"line":35,"column":4},"end":{"line":35,"column":39}},"15":{"start":{"line":38,"column":17},"end":{"line":38,"column":19}},"16":{"start":{"line":39,"column":23},"end":{"line":39,"column":28}},"17":{"start":{"line":40,"column":4},"end":{"line":60,"column":5}},"18":{"start":{"line":42,"column":8},"end":{"line":43,"column":21}},"19":{"start":{"line":43,"column":12},"end":{"line":43,"column":21}},"20":{"start":{"line":45,"column":8},"end":{"line":52,"column":9}},"21":{"start":{"line":46,"column":12},"end":{"line":46,"column":32}},"22":{"start":{"line":47,"column":12},"end":{"line":50,"column":30}},"23":{"start":{"line":48,"column":16},"end":{"line":48,"column":31}},"24":{"start":{"line":50,"column":16},"end":{"line":50,"column":30}},"25":{"start":{"line":51,"column":12},"end":{"line":51,"column":21}},"26":{"start":{"line":54,"column":8},"end":{"line":57,"column":9}},"27":{"start":{"line":55,"column":12},"end":{"line":55,"column":27}},"28":{"start":{"line":56,"column":12},"end":{"line":56,"column":21}},"29":{"start":{"line":59,"column":8},"end":{"line":59,"column":26}},"30":{"start":{"line":62,"column":4},"end":{"line":63,"column":37}},"31":{"start":{"line":63,"column":8},"end":{"line":63,"column":37}},"32":{"start":{"line":64,"column":4},"end":{"line":64,"column":18}}},"fnMap":{"0":{"name":"ipv6StringFromBuffer","decl":{"start":{"line":18,"column":9},"end":{"line":18,"column":29}},"loc":{"start":{"line":18,"column":38},"end":{"line":22,"column":1}},"line":18},"1":{"name":"getHexSections","decl":{"start":{"line":24,"column":9},"end":{"line":24,"column":23}},"loc":{"start":{"line":24,"column":32},"end":{"line":33,"column":1}},"line":24},"2":{"name":"discardLeadingZeros","decl":{"start":{"line":34,"column":9},"end":{"line":34,"column":28}},"loc":{"start":{"line":34,"column":38},"end":{"line":36,"column":1}},"line":34},"3":{"name":"sectionsToString","decl":{"start":{"line":37,"column":9},"end":{"line":37,"column":25}},"loc":{"start":{"line":37,"column":36},"end":{"line":65,"column":1}},"line":37}},"branchMap":{"0":{"loc":{"start":{"line":42,"column":8},"end":{"line":43,"column":21}},"type":"if","locations":[{"start":{"line":42,"column":8},"end":{"line":43,"column":21}},{"start":{},"end":{}}],"line":42},"1":{"loc":{"start":{"line":42,"column":12},"end":{"line":42,"column":45}},"type":"binary-expr","locations":[{"start":{"line":42,"column":12},"end":{"line":42,"column":33}},{"start":{"line":42,"column":37},"end":{"line":42,"column":45}}],"line":42},"2":{"loc":{"start":{"line":45,"column":8},"end":{"line":52,"column":9}},"type":"if","locations":[{"start":{"line":45,"column":8},"end":{"line":52,"column":9}},{"start":{},"end":{}}],"line":45},"3":{"loc":{"start":{"line":45,"column":12},"end":{"line":45,"column":37}},"type":"binary-expr","locations":[{"start":{"line":45,"column":12},"end":{"line":45,"column":20}},{"start":{"line":45,"column":24},"end":{"line":45,"column":37}}],"line":45},"4":{"loc":{"start":{"line":47,"column":12},"end":{"line":50,"column":30}},"type":"if","locations":[{"start":{"line":47,"column":12},"end":{"line":50,"column":30}},{"start":{"line":50,"column":16},"end":{"line":50,"column":30}}],"line":47},"5":{"loc":{"start":{"line":54,"column":8},"end":{"line":57,"column":9}},"type":"if","locations":[{"start":{"line":54,"column":8},"end":{"line":57,"column":9}},{"start":{},"end":{}}],"line":54},"6":{"loc":{"start":{"line":54,"column":12},"end":{"line":54,"column":36}},"type":"binary-expr","locations":[{"start":{"line":54,"column":12},"end":{"line":54,"column":24}},{"start":{"line":54,"column":28},"end":{"line":54,"column":36}}],"line":54},"7":{"loc":{"start":{"line":62,"column":4},"end":{"line":63,"column":37}},"type":"if","locations":[{"start":{"line":62,"column":4},"end":{"line":63,"column":37}},{"start":{},"end":{}}],"line":62}},"s":{"0":1,"1":1,"2":15,"3":15,"4":15,"5":1,"6":15,"7":15,"8":15,"9":15,"10":120,"11":120,"12":120,"13":15,"14":120,"15":15,"16":15,"17":15,"18":120,"19":24,"20":96,"21":12,"22":12,"23":6,"24":6,"25":12,"26":84,"27":7,"28":7,"29":77,"30":15,"31":12,"32":15},"f":{"0":15,"1":15,"2":120,"3":15},"b":{"0":[24,96],"1":[120,33],"2":[12,84],"3":[96,19],"4":[6,6],"5":[7,77],"6":[84,38],"7":[12,3]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/ipv6StringFromBuffer.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/ipv6StringFromBuffer.ts"],"names":[],"mappings":";;;AAAA;;;;;;;;;;;;;GAaG;AACH,SAAgB,oBAAoB,CAAC,MAAc;IACjD,MAAM,QAAQ,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE1C,OAAO,MAAM,CAAC;AAChB,CAAC;AALD,oDAKC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,eAAe,GAAG,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,eAAe,EAAE;QACvD,IAAI,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACnE,OAAO,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACvC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACxB;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe;IAC1C,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,QAAkB;IAC1C,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE;QACxB,oCAAoC;QACpC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAAE,SAAS;QAEhD,wBAAwB;QACxB,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE;YAC7B,YAAY,GAAG,IAAI,CAAC;YACpB,IAAI,MAAM,KAAK,EAAE;gBAAE,MAAM,IAAI,IAAI,CAAC;;gBAC7B,MAAM,IAAI,GAAG,CAAC;YACnB,SAAS;SACV;QAED,mEAAmE;QACnE,IAAI,YAAY,IAAI,CAAC,KAAK,EAAE,EAAE;YAC5B,MAAM,IAAI,IAAI,CAAC;YACf,SAAS;SACV;QAED,mBAAmB;QACnB,MAAM,IAAI,CAAC,GAAG,GAAG,CAAC;KACnB;IAED,8CAA8C;IAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEzD,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["/**\n * Converts a buffer containing an IPv6 address into string notation.\n * String notation consists of 8 sets of 16-bits each. Each group is\n * written as four hexadecimal values separated by colons (:).  This method\n * follows RFC 5952 shortening.\n *\n * @remarks\n * RFC 5952 https://tools.ietf.org/html/rfc5952\n *\n * The following shortening rules are applied:\n *   1. Leading zeros are shorted as much as possible\n *   2. Zero compression is from left to right and\n *   3. Addresses are returned in lowercase.\n */\nexport function ipv6StringFromBuffer(buffer: Buffer): string {\n  const sections = getHexSections(buffer);\n  const result = sectionsToString(sections);\n\n  return result;\n}\n\nfunction getHexSections(buffer: Buffer): string[] {\n  const bytesPerSection = 2;\n  const sections: string[] = [];\n  for (let i = 0; i < buffer.length; i += bytesPerSection) {\n    let section = buffer.slice(i, i + bytesPerSection).toString('hex');\n    section = discardLeadingZeros(section);\n    sections.push(section);\n  }\n  return sections;\n}\n\nfunction discardLeadingZeros(section: string): string {\n  return section.replace(/^0+/g, '');\n}\n\nfunction sectionsToString(sections: string[]): string {\n  let result = '';\n  let hasCollapsed = false;\n  for (const s of sections) {\n    // alrerady in collapse state, no-op\n    if (result.endsWith('::') && s === '') continue;\n\n    // collapse zero section\n    if (s === '' && !hasCollapsed) {\n      hasCollapsed = true;\n      if (result === '') result += '::';\n      else result += ':';\n      continue;\n    }\n\n    // we have a zero, but already collapsed so we need to mark as zero\n    if (hasCollapsed && s === '') {\n      result += '0:';\n      continue;\n    }\n\n    // normal condition\n    result += s + ':';\n  }\n\n  // remove trailing except with ending with ::;\n  if (!result.endsWith('::')) result = result.slice(0, -1);\n\n  return result;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"85c7a359b4c0facc2cbd3dbd7b9a4629847fb78b","contentHash":"85150894a90469273d7a567deca997eb0e2417e7c80d5bd39d288126992be316"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeTor2.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeTor2.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":33}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":57}},"3":{"start":{"line":5,"column":30},"end":{"line":5,"column":62}},"4":{"start":{"line":11,"column":22},"end":{"line":11,"column":42}},"5":{"start":{"line":12,"column":17},"end":{"line":12,"column":38}},"6":{"start":{"line":13,"column":17},"end":{"line":13,"column":74}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":53}},"8":{"start":{"line":16,"column":0},"end":{"line":16,"column":42}}},"fnMap":{"0":{"name":"deserializeTor2","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":24}},"loc":{"start":{"line":10,"column":33},"end":{"line":15,"column":1}},"line":10}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{"0":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeTor2.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeTor2.ts"],"names":[],"mappings":";;;AAEA,0DAAuD;AACvD,+DAA4D;AAE5D;;;GAGG;AACH,SAAgB,eAAe,CAAC,MAAoB;IAClD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,IAAA,yCAAmB,EAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,IAAI,yBAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AALD,0CAKC","sourcesContent":["import { BufferReader } from '@node-dlc/bufio';\n\nimport { AddressTor2 } from '../../domain/AddressTor2';\nimport { torStringFromBuffer } from './torStringFromBuffer';\n\n/**\n * Deserializes a TOR v2 address from a reader and\n * returns an instance of a AddressTor2.\n */\nexport function deserializeTor2(reader: BufferReader): AddressTor2 {\n  const hostBytes = reader.readBytes(10);\n  const port = reader.readUInt16BE();\n  const host = torStringFromBuffer(hostBytes);\n  return new AddressTor2(host, port);\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c597a6e6beb35e70cc610614fb727cca4a97abc9","contentHash":"f55be232bff3634b9ff91f7093062ebcb0741d7761f6da420d26b8fbb34a461b"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressTor2.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressTor2.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":38}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":46}},"4":{"start":{"line":13,"column":8},"end":{"line":13,"column":26}},"5":{"start":{"line":16,"column":8},"end":{"line":16,"column":46}},"6":{"start":{"line":19,"column":0},"end":{"line":19,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":28},"end":{"line":14,"column":5}},"line":12},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":15},"end":{"line":17,"column":5}},"line":15}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":4,"5":3,"6":1},"f":{"0":4,"1":3},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressTor2.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressTor2.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,+CAA4C;AAE5C,MAAa,WAAY,SAAQ,iBAAO;IACtC;;;;OAIG;IACH,YAAY,IAAY,EAAE,IAAY;QACpC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,yBAAW,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAbD,kCAaC","sourcesContent":["import { Address } from './Address';\nimport { AddressType } from './AddressType';\n\nexport class AddressTor2 extends Address {\n  /**\n   * Represents an TOR v2 address with the host and port. TOR v2\n   * addresses are an 80-bit hash represented as base32 encoding\n   * that is 16 characters in length\n   */\n  constructor(host: string, port: number) {\n    super(host, port);\n  }\n\n  public get type(): AddressType {\n    return AddressType.TOR2;\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"7c726e7591be0108412f6d1111901e0b3ad771d2","contentHash":"470b09191ae50b9124d25f05a5e44e5df29cbefe8e8b00fb4b01fa261fc607a0"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/torStringFromBuffer.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/torStringFromBuffer.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"2":{"start":{"line":4,"column":17},"end":{"line":4,"column":44}},"3":{"start":{"line":9,"column":4},"end":{"line":9,"column":67}},"4":{"start":{"line":11,"column":0},"end":{"line":11,"column":50}}},"fnMap":{"0":{"name":"torStringFromBuffer","decl":{"start":{"line":8,"column":9},"end":{"line":8,"column":28}},"loc":{"start":{"line":8,"column":37},"end":{"line":10,"column":1}},"line":8}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":4,"4":1},"f":{"0":4},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/torStringFromBuffer.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/torStringFromBuffer.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAE1C;;GAEG;AACH,SAAgB,mBAAmB,CAAC,MAAc;IAChD,OAAO,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC;AACxD,CAAC;AAFD,kDAEC","sourcesContent":["import { Base32 } from '@node-dlc/common';\n\n/**\n * Converts a Buffer into a TOR address including the .onion suffix\n */\nexport function torStringFromBuffer(buffer: Buffer): string {\n  return Base32.encode(buffer).toLowerCase() + '.onion';\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"be0c443fb77b10678f7c1dfc79952ee5a3b8a734","contentHash":"7fec516994d8200300ccfbf0440f81f91d939ba4eda362a77c79ff9b4b070006"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeTor3.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeTor3.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":33}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":57}},"3":{"start":{"line":5,"column":30},"end":{"line":5,"column":62}},"4":{"start":{"line":11,"column":22},"end":{"line":11,"column":42}},"5":{"start":{"line":12,"column":17},"end":{"line":12,"column":38}},"6":{"start":{"line":13,"column":17},"end":{"line":13,"column":74}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":53}},"8":{"start":{"line":16,"column":0},"end":{"line":16,"column":42}}},"fnMap":{"0":{"name":"deserializeTor3","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":24}},"loc":{"start":{"line":10,"column":33},"end":{"line":15,"column":1}},"line":10}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1},"f":{"0":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeTor3.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/deserialize/address/deserializeTor3.ts"],"names":[],"mappings":";;;AAEA,0DAAuD;AACvD,+DAA4D;AAE5D;;;GAGG;AACH,SAAgB,eAAe,CAAC,MAAoB;IAClD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,IAAA,yCAAmB,EAAC,SAAS,CAAC,CAAC;IAC5C,OAAO,IAAI,yBAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AALD,0CAKC","sourcesContent":["import { BufferReader } from '@node-dlc/bufio';\n\nimport { AddressTor3 } from '../../domain/AddressTor3';\nimport { torStringFromBuffer } from './torStringFromBuffer';\n\n/**\n * Deserializes a TOR v3 address from a reader and\n * returns an instance of a AddressTor2.\n */\nexport function deserializeTor3(reader: BufferReader): AddressTor3 {\n  const hostBytes = reader.readBytes(35);\n  const port = reader.readUInt16BE();\n  const host = torStringFromBuffer(hostBytes);\n  return new AddressTor3(host, port);\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"3e9205032b8e5150df0f863de16fe7efacf28a2e","contentHash":"6da999547ed7cb9583d752ea633ee686b2a8ae60c97aeb642d964a1e2c16e8b7"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressTor3.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressTor3.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":38}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":46}},"4":{"start":{"line":13,"column":8},"end":{"line":13,"column":26}},"5":{"start":{"line":16,"column":8},"end":{"line":16,"column":46}},"6":{"start":{"line":19,"column":0},"end":{"line":19,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":28},"end":{"line":14,"column":5}},"line":12},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":15},"end":{"line":17,"column":5}},"line":15}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":4,"5":3,"6":1},"f":{"0":4,"1":3},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressTor3.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/AddressTor3.ts"],"names":[],"mappings":";;;AAAA,uCAAoC;AACpC,+CAA4C;AAE5C,MAAa,WAAY,SAAQ,iBAAO;IACtC;;;;OAIG;IACH,YAAY,IAAY,EAAE,IAAY;QACpC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,IAAW,IAAI;QACb,OAAO,yBAAW,CAAC,IAAI,CAAC;IAC1B,CAAC;CACF;AAbD,kCAaC","sourcesContent":["import { Address } from './Address';\nimport { AddressType } from './AddressType';\n\nexport class AddressTor3 extends Address {\n  /**\n   * Represents an Tor v3 address with the host and port. Tor v3\n   * addresses are base32 encoded ed25519 public key and are\n   * 56-characters in length.\n   */\n  constructor(host: string, port: number) {\n    super(host, port);\n  }\n\n  public get type(): AddressType {\n    return AddressType.TOR3;\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c0eec0818af6e38b6c234fac80ccf11c8e68eee9","contentHash":"d577671549b04597d497b599e9ad41f2ee0d043d8f269e3bb22cdbab1459ffcf"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/Checksum.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/Checksum.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":26}},"2":{"start":{"line":4,"column":19},"end":{"line":4,"column":48}},"3":{"start":{"line":10,"column":8},"end":{"line":10,"column":57}},"4":{"start":{"line":13,"column":8},"end":{"line":13,"column":31}},"5":{"start":{"line":16,"column":8},"end":{"line":16,"column":34}},"6":{"start":{"line":19,"column":8},"end":{"line":19,"column":50}},"7":{"start":{"line":22,"column":8},"end":{"line":22,"column":30}},"8":{"start":{"line":25,"column":20},"end":{"line":25,"column":35}},"9":{"start":{"line":26,"column":8},"end":{"line":26,"column":45}},"10":{"start":{"line":27,"column":8},"end":{"line":27,"column":19}},"11":{"start":{"line":30,"column":8},"end":{"line":30,"column":43}},"12":{"start":{"line":33,"column":0},"end":{"line":33,"column":28}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":9,"column":4},"end":{"line":9,"column":5}},"loc":{"start":{"line":9,"column":27},"end":{"line":11,"column":5}},"line":9},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":19},"end":{"line":14,"column":5}},"line":12},"2":{"name":"(anonymous_2)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":26},"end":{"line":17,"column":5}},"line":15},"3":{"name":"(anonymous_3)","decl":{"start":{"line":18,"column":4},"end":{"line":18,"column":5}},"loc":{"start":{"line":18,"column":18},"end":{"line":20,"column":5}},"line":18},"4":{"name":"(anonymous_4)","decl":{"start":{"line":21,"column":4},"end":{"line":21,"column":5}},"loc":{"start":{"line":21,"column":15},"end":{"line":23,"column":5}},"line":21},"5":{"name":"(anonymous_5)","decl":{"start":{"line":24,"column":4},"end":{"line":24,"column":5}},"loc":{"start":{"line":24,"column":15},"end":{"line":28,"column":5}},"line":24},"6":{"name":"(anonymous_6)","decl":{"start":{"line":29,"column":4},"end":{"line":29,"column":5}},"loc":{"start":{"line":29,"column":15},"end":{"line":31,"column":5}},"line":29}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":7,"4":1,"5":8,"6":2,"7":1,"8":2,"9":2,"10":2,"11":1,"12":1},"f":{"0":7,"1":1,"2":8,"3":2,"4":1,"5":2,"6":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/Checksum.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/domain/Checksum.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAE5C;;GAEG;AACH,MAAa,QAAQ;IACZ,MAAM,CAAC,UAAU,CAAC,GAAW;QAClC,OAAO,IAAI,QAAQ,CAAC,IAAA,iBAAM,EAAC,GAAG,CAAC,CAAC,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,KAAK;QACjB,OAAO,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IAID,YAAoB,QAAgB;QAClC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,KAAe;QAC3B,OAAO,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAAC;IAC5C,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAEM,QAAQ;QACb,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QACrC,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;CACF;AAhCD,4BAgCC","sourcesContent":["import { crc32c } from '@node-dlc/checksum';\n\n/**\n * CRC32C checksum for the provided value\n */\nexport class Checksum {\n  public static fromBuffer(buf: Buffer): Checksum {\n    return new Checksum(crc32c(buf));\n  }\n\n  public static empty(): Checksum {\n    return new Checksum(0);\n  }\n\n  private _checksum: number;\n\n  private constructor(checksum: number) {\n    this._checksum = checksum;\n  }\n\n  public equals(other: Checksum): boolean {\n    return this._checksum === other._checksum;\n  }\n\n  public toNumber(): number {\n    return this._checksum;\n  }\n\n  public toBuffer(): Buffer {\n    const buf = Buffer.alloc(4);\n    buf.writeUInt32BE(this._checksum, 0);\n    return buf;\n  }\n\n  public toString(): string {\n    return this._checksum.toString(16);\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c44fd0f7e57c37f861be6299b33dff06211301e7","contentHash":"6214f6a8eb5ccea0a7e9084212bff47343441bdec5cccd6f5a2225284f24a622"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/ChannelRangeQuery.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/ChannelRangeQuery.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":68}},"2":{"start":{"line":4,"column":35},"end":{"line":4,"column":82}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":46}},"4":{"start":{"line":7,"column":0},"end":{"line":12,"column":101}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":72}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":76}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":80}},"8":{"start":{"line":11,"column":4},"end":{"line":11,"column":76}},"9":{"start":{"line":53,"column":8},"end":{"line":53,"column":35}},"10":{"start":{"line":54,"column":8},"end":{"line":54,"column":43}},"11":{"start":{"line":55,"column":8},"end":{"line":55,"column":29}},"12":{"start":{"line":56,"column":8},"end":{"line":56,"column":31}},"13":{"start":{"line":57,"column":8},"end":{"line":57,"column":27}},"14":{"start":{"line":58,"column":8},"end":{"line":58,"column":50}},"15":{"start":{"line":59,"column":8},"end":{"line":59,"column":34}},"16":{"start":{"line":67,"column":8},"end":{"line":67,"column":30}},"17":{"start":{"line":73,"column":8},"end":{"line":73,"column":27}},"18":{"start":{"line":79,"column":8},"end":{"line":79,"column":29}},"19":{"start":{"line":85,"column":8},"end":{"line":85,"column":27}},"20":{"start":{"line":95,"column":8},"end":{"line":98,"column":9}},"21":{"start":{"line":96,"column":12},"end":{"line":96,"column":34}},"22":{"start":{"line":97,"column":12},"end":{"line":97,"column":79}},"23":{"start":{"line":100,"column":8},"end":{"line":105,"column":9}},"24":{"start":{"line":101,"column":12},"end":{"line":101,"column":41}},"25":{"start":{"line":104,"column":12},"end":{"line":104,"column":35}},"26":{"start":{"line":118,"column":8},"end":{"line":127,"column":11}},"27":{"start":{"line":120,"column":12},"end":{"line":120,"column":56}},"28":{"start":{"line":122,"column":12},"end":{"line":122,"column":51}},"29":{"start":{"line":125,"column":12},"end":{"line":125,"column":36}},"30":{"start":{"line":126,"column":12},"end":{"line":126,"column":34}},"31":{"start":{"line":134,"column":8},"end":{"line":135,"column":19}},"32":{"start":{"line":135,"column":12},"end":{"line":135,"column":19}},"33":{"start":{"line":136,"column":8},"end":{"line":136,"column":28}},"34":{"start":{"line":137,"column":8},"end":{"line":137,"column":52}},"35":{"start":{"line":138,"column":8},"end":{"line":138,"column":28}},"36":{"start":{"line":144,"column":8},"end":{"line":145,"column":19}},"37":{"start":{"line":145,"column":12},"end":{"line":145,"column":19}},"38":{"start":{"line":146,"column":8},"end":{"line":146,"column":54}},"39":{"start":{"line":147,"column":8},"end":{"line":147,"column":37}},"40":{"start":{"line":155,"column":8},"end":{"line":155,"column":124}},"41":{"start":{"line":157,"column":20},"end":{"line":157,"column":77}},"42":{"start":{"line":158,"column":8},"end":{"line":158,"column":39}},"43":{"start":{"line":159,"column":8},"end":{"line":159,"column":39}},"44":{"start":{"line":160,"column":8},"end":{"line":160,"column":39}},"45":{"start":{"line":161,"column":8},"end":{"line":161,"column":44}},"46":{"start":{"line":163,"column":8},"end":{"line":163,"column":26}},"47":{"start":{"line":171,"column":8},"end":{"line":171,"column":70}},"48":{"start":{"line":194,"column":8},"end":{"line":194,"column":227}},"49":{"start":{"line":196,"column":8},"end":{"line":198,"column":9}},"50":{"start":{"line":197,"column":12},"end":{"line":197,"column":55}},"51":{"start":{"line":201,"column":8},"end":{"line":205,"column":9}},"52":{"start":{"line":202,"column":26},"end":{"line":202,"column":122}},"53":{"start":{"line":203,"column":12},"end":{"line":203,"column":42}},"54":{"start":{"line":204,"column":12},"end":{"line":204,"column":19}},"55":{"start":{"line":209,"column":30},"end":{"line":209,"column":68}},"56":{"start":{"line":210,"column":29},"end":{"line":210,"column":83}},"57":{"start":{"line":211,"column":8},"end":{"line":215,"column":9}},"58":{"start":{"line":212,"column":12},"end":{"line":212,"column":140}},"59":{"start":{"line":213,"column":12},"end":{"line":213,"column":39}},"60":{"start":{"line":214,"column":12},"end":{"line":214,"column":19}},"61":{"start":{"line":224,"column":8},"end":{"line":224,"column":227}},"62":{"start":{"line":226,"column":8},"end":{"line":228,"column":9}},"63":{"start":{"line":227,"column":12},"end":{"line":227,"column":54}},"64":{"start":{"line":232,"column":8},"end":{"line":236,"column":9}},"65":{"start":{"line":233,"column":26},"end":{"line":233,"column":122}},"66":{"start":{"line":234,"column":12},"end":{"line":234,"column":42}},"67":{"start":{"line":235,"column":12},"end":{"line":235,"column":19}},"68":{"start":{"line":239,"column":8},"end":{"line":242,"column":9}},"69":{"start":{"line":240,"column":12},"end":{"line":240,"column":39}},"70":{"start":{"line":241,"column":12},"end":{"line":241,"column":19}},"71":{"start":{"line":245,"column":0},"end":{"line":245,"column":46}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":1},"end":{"line":7,"column":2}},"loc":{"start":{"line":7,"column":35},"end":{"line":12,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":52,"column":4},"end":{"line":52,"column":5}},"loc":{"start":{"line":52,"column":68},"end":{"line":60,"column":5}},"line":52},"2":{"name":"(anonymous_2)","decl":{"start":{"line":66,"column":4},"end":{"line":66,"column":5}},"loc":{"start":{"line":66,"column":19},"end":{"line":68,"column":5}},"line":66},"3":{"name":"(anonymous_3)","decl":{"start":{"line":72,"column":4},"end":{"line":72,"column":5}},"loc":{"start":{"line":72,"column":16},"end":{"line":74,"column":5}},"line":72},"4":{"name":"(anonymous_4)","decl":{"start":{"line":78,"column":4},"end":{"line":78,"column":5}},"loc":{"start":{"line":78,"column":18},"end":{"line":80,"column":5}},"line":78},"5":{"name":"(anonymous_5)","decl":{"start":{"line":84,"column":4},"end":{"line":84,"column":5}},"loc":{"start":{"line":84,"column":16},"end":{"line":86,"column":5}},"line":84},"6":{"name":"(anonymous_6)","decl":{"start":{"line":91,"column":4},"end":{"line":91,"column":5}},"loc":{"start":{"line":91,"column":33},"end":{"line":106,"column":5}},"line":91},"7":{"name":"(anonymous_7)","decl":{"start":{"line":111,"column":4},"end":{"line":111,"column":5}},"loc":{"start":{"line":111,"column":68},"end":{"line":128,"column":5}},"line":111},"8":{"name":"(anonymous_8)","decl":{"start":{"line":118,"column":27},"end":{"line":118,"column":28}},"loc":{"start":{"line":118,"column":48},"end":{"line":127,"column":9}},"line":118},"9":{"name":"(anonymous_9)","decl":{"start":{"line":133,"column":4},"end":{"line":133,"column":5}},"loc":{"start":{"line":133,"column":29},"end":{"line":139,"column":5}},"line":133},"10":{"name":"(anonymous_10)","decl":{"start":{"line":143,"column":4},"end":{"line":143,"column":5}},"loc":{"start":{"line":143,"column":26},"end":{"line":148,"column":5}},"line":143},"11":{"name":"(anonymous_11)","decl":{"start":{"line":154,"column":4},"end":{"line":154,"column":5}},"loc":{"start":{"line":154,"column":38},"end":{"line":164,"column":5}},"line":154},"12":{"name":"(anonymous_12)","decl":{"start":{"line":170,"column":4},"end":{"line":170,"column":5}},"loc":{"start":{"line":170,"column":24},"end":{"line":172,"column":5}},"line":170},"13":{"name":"(anonymous_13)","decl":{"start":{"line":193,"column":4},"end":{"line":193,"column":5}},"loc":{"start":{"line":193,"column":22},"end":{"line":216,"column":5}},"line":193},"14":{"name":"(anonymous_14)","decl":{"start":{"line":223,"column":4},"end":{"line":223,"column":5}},"loc":{"start":{"line":223,"column":28},"end":{"line":243,"column":5}},"line":223}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":28},"end":{"line":12,"column":99}},"type":"binary-expr","locations":[{"start":{"line":12,"column":28},"end":{"line":12,"column":58}},{"start":{"line":12,"column":63},"end":{"line":12,"column":98}}],"line":12},"1":{"loc":{"start":{"line":52,"column":50},"end":{"line":52,"column":66}},"type":"default-arg","locations":[{"start":{"line":52,"column":61},"end":{"line":52,"column":66}}],"line":52},"2":{"loc":{"start":{"line":95,"column":8},"end":{"line":98,"column":9}},"type":"if","locations":[{"start":{"line":95,"column":8},"end":{"line":98,"column":9}},{"start":{},"end":{}}],"line":95},"3":{"loc":{"start":{"line":95,"column":12},"end":{"line":95,"column":55}},"type":"binary-expr","locations":[{"start":{"line":95,"column":12},"end":{"line":95,"column":27}},{"start":{"line":95,"column":31},"end":{"line":95,"column":55}}],"line":95},"4":{"loc":{"start":{"line":100,"column":8},"end":{"line":105,"column":9}},"type":"if","locations":[{"start":{"line":100,"column":8},"end":{"line":105,"column":9}},{"start":{"line":103,"column":13},"end":{"line":105,"column":9}}],"line":100},"5":{"loc":{"start":{"line":111,"column":15},"end":{"line":111,"column":29}},"type":"default-arg","locations":[{"start":{"line":111,"column":28},"end":{"line":111,"column":29}}],"line":111},"6":{"loc":{"start":{"line":111,"column":31},"end":{"line":111,"column":66}},"type":"default-arg","locations":[{"start":{"line":111,"column":43},"end":{"line":111,"column":66}}],"line":111},"7":{"loc":{"start":{"line":134,"column":8},"end":{"line":135,"column":19}},"type":"if","locations":[{"start":{"line":134,"column":8},"end":{"line":135,"column":19}},{"start":{},"end":{}}],"line":134},"8":{"loc":{"start":{"line":144,"column":8},"end":{"line":145,"column":19}},"type":"if","locations":[{"start":{"line":144,"column":8},"end":{"line":145,"column":19}},{"start":{},"end":{}}],"line":144},"9":{"loc":{"start":{"line":171,"column":15},"end":{"line":171,"column":69}},"type":"binary-expr","locations":[{"start":{"line":171,"column":15},"end":{"line":171,"column":35}},{"start":{"line":171,"column":39},"end":{"line":171,"column":69}}],"line":171},"10":{"loc":{"start":{"line":196,"column":8},"end":{"line":198,"column":9}},"type":"if","locations":[{"start":{"line":196,"column":8},"end":{"line":198,"column":9}},{"start":{},"end":{}}],"line":196},"11":{"loc":{"start":{"line":201,"column":8},"end":{"line":205,"column":9}},"type":"if","locations":[{"start":{"line":201,"column":8},"end":{"line":205,"column":9}},{"start":{},"end":{}}],"line":201},"12":{"loc":{"start":{"line":211,"column":8},"end":{"line":215,"column":9}},"type":"if","locations":[{"start":{"line":211,"column":8},"end":{"line":215,"column":9}},{"start":{},"end":{}}],"line":211},"13":{"loc":{"start":{"line":226,"column":8},"end":{"line":228,"column":9}},"type":"if","locations":[{"start":{"line":226,"column":8},"end":{"line":228,"column":9}},{"start":{},"end":{}}],"line":226},"14":{"loc":{"start":{"line":232,"column":8},"end":{"line":236,"column":9}},"type":"if","locations":[{"start":{"line":232,"column":8},"end":{"line":236,"column":9}},{"start":{},"end":{}}],"line":232},"15":{"loc":{"start":{"line":232,"column":12},"end":{"line":232,"column":55}},"type":"binary-expr","locations":[{"start":{"line":232,"column":12},"end":{"line":232,"column":31}},{"start":{"line":232,"column":35},"end":{"line":232,"column":55}}],"line":232},"16":{"loc":{"start":{"line":239,"column":8},"end":{"line":242,"column":9}},"type":"if","locations":[{"start":{"line":239,"column":8},"end":{"line":242,"column":9}},{"start":{},"end":{}}],"line":239}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":31,"10":31,"11":31,"12":31,"13":31,"14":31,"15":31,"16":1,"17":11,"18":25,"19":0,"20":37,"21":1,"22":1,"23":37,"24":20,"25":17,"26":31,"27":31,"28":31,"29":31,"30":31,"31":7,"32":1,"33":6,"34":6,"35":6,"36":11,"37":1,"38":10,"39":10,"40":31,"41":31,"42":31,"43":31,"44":31,"45":31,"46":31,"47":18,"48":17,"49":17,"50":12,"51":17,"52":5,"53":5,"54":5,"55":12,"56":12,"57":12,"58":8,"59":8,"60":8,"61":20,"62":20,"63":18,"64":20,"65":2,"66":2,"67":2,"68":18,"69":3,"70":3,"71":1},"f":{"0":1,"1":31,"2":1,"3":11,"4":25,"5":0,"6":37,"7":31,"8":31,"9":7,"10":11,"11":31,"12":18,"13":17,"14":20},"b":{"0":[1,1],"1":[31],"2":[1,36],"3":[37,18],"4":[20,17],"5":[9],"6":[11],"7":[1,6],"8":[1,10],"9":[18,6],"10":[12,5],"11":[5,12],"12":[8,4],"13":[18,2],"14":[2,18],"15":[20,5],"16":[3,15]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/ChannelRangeQuery.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/ChannelRangeQuery.ts"],"names":[],"mappings":"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","sourcesContent":["import { ShortChannelId } from '@node-dlc/common';\nimport { ILogger } from '@node-dlc/logger';\n\nimport { QueryChannelRangeMessage } from '../messages/QueryChannelRangeMessage';\nimport { ReplyChannelRangeMessage } from '../messages/ReplyChannelRangeMessage';\nimport { IMessageSender } from '../Peer';\nimport { GossipError, GossipErrorCode } from './GossipError';\n\nexport enum ChannelRangeQueryState {\n  Idle,\n  Active,\n  Complete,\n  Failed,\n}\n\n/**\n * Performs a single query_channel_range operation and encapsulates the state\n * machine performed during the query operations.\n *\n * A single query_channel_range may be too large to fit in a single\n * reply_channel_range response. When this happens, there will be multiple\n * reply_channel_range responses to address the query_channel_range message.\n *\n * There are two modes of replies: Legacy LND and Standard.\n *\n * Standard was defined in changes to BOLT7 that were merged in with #730. These\n * changes clarified the meaning of the reply fields to ensure the recipient\n * of replies knows when the query has successfully completed. This includes:\n *\n *  - a node must not submit a new query_channel_range until the full set of\n *  reply_channel_range messages covering the range are received.\n *\n *  - clarified the meaning of full_information (previously complete) to\n *  indicate that the responding node contains complete information for the\n *  chain_hash, not that the reply is complete.\n *\n *  - enforces that when there are multiple reply_channel_range msgs, the\n *  range of blocks must be strictly increasing until the full query range is\n *  covered. This range may exceed (both below and above) the request range.\n *  This means:\n *     - the first reply first_blocknum must be <= requests first_blocknum\n *     - subsequent first_blocknum will be strictly increasing from the\n *     previous reply's first_blocknum+number_of_blocks\n *     - the final first_blocknum+number_of_blocks must be >= the query's\n *     first_blocknum+number_of_blocks\n *\n * This is functionality is a clarification from Legacy LND mode where\n * gossip_queries was implemented in a different manner.\n *\n * - full_information indicated a multipart message that was incomplete\n * - lack of short_channel_ids and full_information=false can be treated\n *   as a failure condition\n */\nexport class ChannelRangeQuery {\n  private _state: ChannelRangeQueryState;\n  private _isLegacy = false;\n  private _query: QueryChannelRangeMessage;\n  private _results: ShortChannelId[] = [];\n  private _error: GossipError;\n  private _resolve: (scids: ShortChannelId[]) => void;\n  private _reject: (reason: unknown) => void;\n\n  constructor(\n    readonly chainHash: Buffer,\n    readonly messageSender: IMessageSender,\n    readonly logger: ILogger,\n    isLegacy = false,\n  ) {\n    this._state = ChannelRangeQueryState.Idle;\n    this._isLegacy = isLegacy;\n  }\n\n  /**\n   * Returns true if we detect this is using the legacy querying gossip_queries\n   * mechanism that was originally implemented in LND. This code may be able to\n   * be removed eventually.\n   */\n  public get isLegacy(): boolean {\n    return this._isLegacy;\n  }\n\n  /**\n   * Gets the current state of the Query object\n   */\n  public get state(): ChannelRangeQueryState {\n    return this._state;\n  }\n\n  /**\n   * Results found\n   */\n  public get results(): ShortChannelId[] {\n    return this._results;\n  }\n\n  /**\n   * Gets the error that was encountered during processing\n   */\n  public get error(): GossipError {\n    return this._error;\n  }\n\n  /**\n   * Handles a reply_channel_range message. May initiate a message\n   * broadcast.\n   */\n  public handleReplyChannelRange(msg: ReplyChannelRangeMessage): void {\n    // check the incoming message to see if we need to transition to legacy\n    // mode. If it is determined to be in legacy mode, we will switch the\n    // strategy that is used to handle the reply.\n    if (!this._isLegacy && this._isLegacyReply(msg)) {\n      this._isLegacy = true;\n      this.logger.info('using legacy LND query_channel_range technique');\n    }\n\n    // handle the message according to which state the reply system is working\n    if (this._isLegacy) {\n      this._handleLegacyReply(msg);\n    } else {\n      this._handleReply(msg);\n    }\n  }\n\n  /**\n   * Resolves when the query has completed, otherwise it will reject on an\n   * error.\n   */\n  public queryRange(\n    firstBlock = 0,\n    numBlocks = 4294967295 - firstBlock,\n  ): Promise<ShortChannelId[]> {\n    // Construct a promise that will be resolved after all query logic has\n    // succeeded or failed. This is a slightly different pattern in that\n    // we use an private event emitter to signal completion or failure\n    // asynchronously. We use those handlers to resolve the promise. As a\n    // result, the external interface is very clean, but we can have\n    // complicated internal operations\n    return new Promise((resolve, reject) => {\n      // transition the state to active\n      this._state = ChannelRangeQueryState.Active;\n\n      // send the query message and start the process\n      this._sendQuery(firstBlock, numBlocks);\n\n      // capture the promise methods so we can invoke them from\n      // within our state machine.\n      this._resolve = resolve;\n      this._reject = reject;\n    });\n  }\n\n  /**\n   * Idempotent method that marks the state machine failed\n   * @param error\n   */\n  private _transitionFailed(error: GossipError) {\n    if (this._state !== ChannelRangeQueryState.Active) return;\n    this._error = error;\n    this._state = ChannelRangeQueryState.Failed;\n    this._reject(error);\n  }\n\n  /**\n   * Idempotent method that marks the state machine complete\n   */\n  private _transitionComplete() {\n    if (this._state !== ChannelRangeQueryState.Active) return;\n    this._state = ChannelRangeQueryState.Complete;\n    this._resolve(this._results);\n  }\n\n  /**\n   * Constructs and sends the query message the remote peer.\n   * @param firstBlock\n   * @param numBlocks\n   */\n  private _sendQuery(firstBlock: number, numBlocks: number) {\n    this.logger.info(\n      'sending query_channel_range start_block=%d end_block=%d',\n      firstBlock,\n      firstBlock + numBlocks - 1,\n    );\n\n    // send message\n    const msg = new QueryChannelRangeMessage();\n    msg.chainHash = this.chainHash;\n    msg.firstBlocknum = firstBlock;\n    msg.numberOfBlocks = numBlocks;\n    this.messageSender.sendMessage(msg);\n\n    // capture the active query to check reply if it is a legacy reply\n    this._query = msg;\n  }\n\n  /**\n   * Check if this has the signature of a legacy reply. We can detect this by\n   * looking at a complete=false and that scids exist.\n   * @param msg\n   */\n  private _isLegacyReply(msg: ReplyChannelRangeMessage): boolean {\n    return !msg.fullInformation && msg.shortChannelIds.length > 0;\n  }\n\n  /**\n   * Handles a reply_channel_range message which ensures that the entire queried\n   * range has been received. The responder can reply with pre-sized ranges\n   * which means the reply range may not be the EXACT range requested but will\n   * include the queried range.\n   *\n   * For a query range with first_blocknum and number_of_blocks arguments,\n   * we can expect messages to have the following:\n   *\n   *  - first reply first_blocknum <= requested first_blocknum\n   *  - intermediate replies sequentially ordered so that first_blocknum is the\n   *    first_blocknum + number_of_blocks from previous reply (strictly ordered)\n   *  - last reply has fist_blocknum + number_of_blocks >= the queries\n   *    first_blocknum + number_of_blocks\n   *\n   * This ordering allows us to know when a message is complete. If a reply has\n   * full_information=false, then the remote peer does not maintain a\n   * up-to-date information for the supplied chain_hash.\n   * @param msg\n   */\n  private _handleReply(msg: ReplyChannelRangeMessage) {\n    this.logger.debug(\n      'received reply_channel_range - full_info=%d start_block=%d end_block=%d scid_count=%d',\n      msg.fullInformation,\n      msg.firstBlocknum,\n      msg.firstBlocknum + msg.numberOfBlocks - 1,\n      msg.shortChannelIds.length,\n    );\n\n    // enqueues any scids to be processed by a query_short_chan_id message\n    if (msg.shortChannelIds.length) {\n      this._results.push(...msg.shortChannelIds);\n    }\n\n    // The full_information flag should only return false when the remote peer\n    // does not maintain up-to-date information for the request chain_hash\n    if (!msg.fullInformation) {\n      const error = new GossipError(\n        GossipErrorCode.ReplyChannelRangeNoInformation,\n        msg,\n      );\n      this._transitionFailed(error);\n      return;\n    }\n\n    // We can finished when we have received a reply that covers the full range\n    // of requested data. We know the final block height will be the querie's\n    // first_blocknum + number_of_blocks.\n    const currentHeight = msg.firstBlocknum + msg.numberOfBlocks;\n    const targetHeight = this._query.firstBlocknum + this._query.numberOfBlocks;\n    if (currentHeight >= targetHeight) {\n      this.logger.debug(\n        'received final reply_channel_range height %d >= query_channel_range height %d',\n        currentHeight,\n        targetHeight,\n      );\n      this._transitionComplete();\n      return;\n    }\n  }\n\n  /**\n   * Handles a reply_channel_range message using the legacy strategy. This\n   * code will error if fullInformation=0 scids=[] and will be considered\n   * complete when fullInformation=1.\n   * @param msg\n   */\n  private _handleLegacyReply(msg: ReplyChannelRangeMessage) {\n    this.logger.debug(\n      'received reply_channel_range - full_info=%d start_block=%d end_block=%d scid_count=%d',\n      msg.fullInformation,\n      msg.firstBlocknum,\n      msg.firstBlocknum + msg.numberOfBlocks - 1,\n      msg.shortChannelIds.length,\n    );\n\n    // enqueues any scids to be processed by a query_short_chan_id message\n    if (msg.shortChannelIds.length) {\n      this.results.push(...msg.shortChannelIds);\n    }\n\n    // Check the complete flag and the existance of SCIDs. Unfortunately,\n    // non-confirming implementations are incorrectly using the completion\n    // flag to a multi-message reply.\n    if (msg.fullInformation && !this.results.length) {\n      const error = new GossipError(\n        GossipErrorCode.ReplyChannelRangeNoInformation,\n        msg,\n      );\n      this._transitionFailed(error);\n      return;\n    }\n\n    // If we see a fullInformation flag then we have received all parts of\n    // the multipart message and are complete.\n    if (msg.fullInformation) {\n      this._transitionComplete();\n      return;\n    }\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b6482fc2bce715f7e871d8dc99f12151944dfc71","contentHash":"b7b4b47cadacc156ae9bf2db58ccc8308fb5da2ea7a7c656a196a25ca49c5155"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/QueryChannelRangeMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/QueryChannelRangeMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":42}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":33},"end":{"line":6,"column":75}},"5":{"start":{"line":7,"column":22},"end":{"line":7,"column":47}},"6":{"start":{"line":8,"column":19},"end":{"line":8,"column":51}},"7":{"start":{"line":14,"column":8},"end":{"line":14,"column":64}},"8":{"start":{"line":17,"column":25},"end":{"line":17,"column":55}},"9":{"start":{"line":18,"column":23},"end":{"line":18,"column":56}},"10":{"start":{"line":19,"column":8},"end":{"line":19,"column":30}},"11":{"start":{"line":20,"column":8},"end":{"line":20,"column":50}},"12":{"start":{"line":21,"column":8},"end":{"line":21,"column":55}},"13":{"start":{"line":22,"column":8},"end":{"line":22,"column":56}},"14":{"start":{"line":24,"column":8},"end":{"line":36,"column":11}},"15":{"start":{"line":25,"column":12},"end":{"line":35,"column":13}},"16":{"start":{"line":27,"column":36},"end":{"line":27,"column":61}},"17":{"start":{"line":28,"column":37},"end":{"line":28,"column":67}},"18":{"start":{"line":29,"column":20},"end":{"line":29,"column":117}},"19":{"start":{"line":30,"column":20},"end":{"line":30,"column":115}},"20":{"start":{"line":31,"column":20},"end":{"line":31,"column":32}},"21":{"start":{"line":34,"column":20},"end":{"line":34,"column":33}},"22":{"start":{"line":37,"column":8},"end":{"line":37,"column":24}},"23":{"start":{"line":40,"column":23},"end":{"line":40,"column":49}},"24":{"start":{"line":41,"column":8},"end":{"line":41,"column":74}},"25":{"start":{"line":42,"column":8},"end":{"line":42,"column":42}},"26":{"start":{"line":43,"column":8},"end":{"line":43,"column":49}},"27":{"start":{"line":44,"column":8},"end":{"line":44,"column":50}},"28":{"start":{"line":46,"column":8},"end":{"line":55,"column":9}},"29":{"start":{"line":47,"column":29},"end":{"line":47,"column":52}},"30":{"start":{"line":48,"column":12},"end":{"line":49,"column":89}},"31":{"start":{"line":49,"column":16},"end":{"line":49,"column":89}},"32":{"start":{"line":50,"column":12},"end":{"line":51,"column":88}},"33":{"start":{"line":51,"column":16},"end":{"line":51,"column":88}},"34":{"start":{"line":52,"column":12},"end":{"line":52,"column":35}},"35":{"start":{"line":53,"column":12},"end":{"line":53,"column":83}},"36":{"start":{"line":54,"column":12},"end":{"line":54,"column":48}},"37":{"start":{"line":56,"column":8},"end":{"line":56,"column":33}},"38":{"start":{"line":59,"column":0},"end":{"line":59,"column":60}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":10,"column":18},"end":{"line":15,"column":5}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":5}},"loc":{"start":{"line":16,"column":32},"end":{"line":38,"column":5}},"line":16},"2":{"name":"(anonymous_2)","decl":{"start":{"line":24,"column":41},"end":{"line":24,"column":42}},"loc":{"start":{"line":24,"column":64},"end":{"line":36,"column":9}},"line":24},"3":{"name":"(anonymous_3)","decl":{"start":{"line":39,"column":4},"end":{"line":39,"column":5}},"loc":{"start":{"line":39,"column":16},"end":{"line":57,"column":5}},"line":39}},"branchMap":{"0":{"loc":{"start":{"line":25,"column":12},"end":{"line":35,"column":13}},"type":"switch","locations":[{"start":{"line":26,"column":16},"end":{"line":32,"column":17}},{"start":{"line":33,"column":16},"end":{"line":34,"column":33}}],"line":25},"1":{"loc":{"start":{"line":46,"column":8},"end":{"line":55,"column":9}},"type":"if","locations":[{"start":{"line":46,"column":8},"end":{"line":55,"column":9}},{"start":{},"end":{}}],"line":46},"2":{"loc":{"start":{"line":46,"column":12},"end":{"line":46,"column":45}},"type":"binary-expr","locations":[{"start":{"line":46,"column":12},"end":{"line":46,"column":27}},{"start":{"line":46,"column":31},"end":{"line":46,"column":45}}],"line":46},"3":{"loc":{"start":{"line":48,"column":12},"end":{"line":49,"column":89}},"type":"if","locations":[{"start":{"line":48,"column":12},"end":{"line":49,"column":89}},{"start":{},"end":{}}],"line":48},"4":{"loc":{"start":{"line":50,"column":12},"end":{"line":51,"column":88}},"type":"if","locations":[{"start":{"line":50,"column":12},"end":{"line":51,"column":88}},{"start":{},"end":{}}],"line":50}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":37,"8":3,"9":3,"10":3,"11":3,"12":3,"13":3,"14":3,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":0,"22":3,"23":3,"24":3,"25":3,"26":3,"27":3,"28":3,"29":2,"30":2,"31":1,"32":2,"33":2,"34":2,"35":2,"36":2,"37":3,"38":1},"f":{"0":37,"1":3,"2":2,"3":3},"b":{"0":[2,0],"1":[2,1],"2":[3,2],"3":[1,1],"4":[2,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/QueryChannelRangeMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/QueryChannelRangeMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAC7D,6CAA4C;AAE5C,4EAAyE;AACzE,gDAA6C;AAC7C,oDAAiD;AAGjD,MAAa,wBAAwB;IAArC;QA8BE;;WAEG;QACI,SAAI,GAAgB,yBAAW,CAAC,iBAAiB,CAAC;IAiD3D,CAAC;IAjFQ,MAAM,CAAC,WAAW,CAAC,OAAe;QACvC,MAAM,QAAQ,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,OAAO,CAAC,CAAC;QAEzC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,kBAAkB;QACzC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1C,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAC/C,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAEhD,kCAAkC;QAClC,IAAA,mBAAQ,EAAC,MAAM,EAAE,CAAC,IAAY,EAAE,WAAyB,EAAE,EAAE;YAC3D,QAAQ,IAAI,EAAE;gBACZ,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACd,MAAM,OAAO,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;oBAC1C,MAAM,QAAQ,GAAG,IAAI,iBAAQ,CAAyB,OAAO,CAAC,CAAC;oBAC/D,QAAQ,CAAC,UAAU,GAAG,QAAQ,CAAC,KAAK,CAClC,+CAAsB,CAAC,UAAU,CAClC,CAAC;oBACF,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,+CAAsB,CAAC,SAAS,CAAC,CAAC;oBACtE,OAAO,IAAI,CAAC;iBACb;gBACD;oBACE,OAAO,KAAK,CAAC;aAChB;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAmCM,SAAS;QACd,MAAM,MAAM,GAAG,IAAI,oBAAY,EAAE,CAAC;QAClC,MAAM,CAAC,aAAa,CAAC,yBAAW,CAAC,iBAAiB,CAAC,CAAC;QACpD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE1C,wBAAwB;QACxB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,MAAM,QAAQ,GAAG,IAAI,iBAAQ,EAA0B,CAAC;YACxD,IAAI,IAAI,CAAC,UAAU;gBAAE,QAAQ,CAAC,GAAG,CAAC,+CAAsB,CAAC,UAAU,CAAC,CAAC;YACrE,IAAI,IAAI,CAAC,SAAS;gBAAE,QAAQ,CAAC,GAAG,CAAC,+CAAsB,CAAC,SAAS,CAAC,CAAC;YACnE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,CAAC,YAAY,CAAC,oBAAY,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;YAC/D,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;SACrC;QAED,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AAlFD,4DAkFC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { BitField } from '@node-dlc/common';\n\nimport { QueryChannelRangeFlags } from '../flags/QueryChannelRangeFlags';\nimport { MessageType } from '../MessageType';\nimport { readTlvs } from '../serialize/readTlvs';\nimport { IWireMessage } from './IWireMessage';\n\nexport class QueryChannelRangeMessage implements IWireMessage {\n  public static deserialize(payload: Buffer): QueryChannelRangeMessage {\n    const instance = new QueryChannelRangeMessage();\n    const reader = new BufferReader(payload);\n\n    reader.readUInt16BE(); // read type bytes\n    instance.chainHash = reader.readBytes(32);\n    instance.firstBlocknum = reader.readUInt32BE();\n    instance.numberOfBlocks = reader.readUInt32BE();\n\n    // Parse any TLVs that might exist\n    readTlvs(reader, (type: bigint, valueReader: BufferReader) => {\n      switch (type) {\n        case BigInt(1): {\n          const options = valueReader.readBigSize();\n          const bitfield = new BitField<QueryChannelRangeFlags>(options);\n          instance.timestamps = bitfield.isSet(\n            QueryChannelRangeFlags.timestamps,\n          );\n          instance.checksums = bitfield.isSet(QueryChannelRangeFlags.checksums);\n          return true;\n        }\n        default:\n          return false;\n      }\n    });\n\n    return instance;\n  }\n\n  /**\n   * Type 263\n   */\n  public type: MessageType = MessageType.QueryChannelRange;\n\n  /**\n   * 32-byte hash that uniquely identifies the chain that the reply\n   * should refer to\n   */\n  public chainHash: Buffer;\n\n  /**\n   * The first block it wants to know channels for\n   */\n  public firstBlocknum: number;\n\n  /**\n   * Number of blocks to return, must be 1 or greater\n   */\n  public numberOfBlocks: number;\n\n  /**\n   * When gossip_queries_ex is enabled, this asks the remote node to include\n   * the timestamps of update messages.\n   */\n  public timestamps: boolean;\n\n  /**\n   * When gossip_queries_ex is enabled, this asks the remote node to include\n   * checksums of update messages.\n   */\n  public checksums: boolean;\n\n  public serialize(): Buffer {\n    const writer = new BufferWriter();\n    writer.writeUInt16BE(MessageType.QueryChannelRange);\n    writer.writeBytes(this.chainHash);\n    writer.writeUInt32BE(this.firstBlocknum);\n    writer.writeUInt32BE(this.numberOfBlocks);\n\n    // write the options TLV\n    if (this.timestamps || this.checksums) {\n      const bitfield = new BitField<QueryChannelRangeFlags>();\n      if (this.timestamps) bitfield.set(QueryChannelRangeFlags.timestamps);\n      if (this.checksums) bitfield.set(QueryChannelRangeFlags.checksums);\n      writer.writeBigSize(1);\n      writer.writeBigSize(BufferReader.bigSizeBytes(bitfield.value));\n      writer.writeBigSize(bitfield.value);\n    }\n\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"81440a527457bce207904d98c54cd92747a97241","contentHash":"a9129450eeb177446bffdc77e73e956fdd149978edf57be728de44d371f56bef"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/QueryChannelRangeFlags.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/QueryChannelRangeFlags.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":40}},"2":{"start":{"line":5,"column":0},"end":{"line":8,"column":101}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":84}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":82}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":35},"end":{"line":8,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":28},"end":{"line":8,"column":99}},"type":"binary-expr","locations":[{"start":{"line":8,"column":28},"end":{"line":8,"column":58}},{"start":{"line":8,"column":63},"end":{"line":8,"column":98}}],"line":8}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/QueryChannelRangeFlags.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/QueryChannelRangeFlags.ts"],"names":[],"mappings":";;;AAAA,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAChC,+EAAc,CAAA;IACd,6EAAa,CAAA;AACf,CAAC,EAHW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAGjC","sourcesContent":["export enum QueryChannelRangeFlags {\n  timestamps = 0,\n  checksums = 1,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"8191b3f99037f969c009da7cc6b59d264f0e45a7","contentHash":"56419364898f9bdab12ba1dfdd2abf9cb9139daa7f831c97951bfdb47db01eb5"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/MessageType.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/MessageType.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":8,"column":0},"end":{"line":34,"column":68}},"3":{"start":{"line":10,"column":4},"end":{"line":10,"column":51}},"4":{"start":{"line":11,"column":4},"end":{"line":11,"column":53}},"5":{"start":{"line":12,"column":4},"end":{"line":12,"column":51}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":51}},"7":{"start":{"line":15,"column":4},"end":{"line":15,"column":65}},"8":{"start":{"line":16,"column":4},"end":{"line":16,"column":69}},"9":{"start":{"line":17,"column":4},"end":{"line":17,"column":71}},"10":{"start":{"line":18,"column":4},"end":{"line":18,"column":69}},"11":{"start":{"line":19,"column":4},"end":{"line":19,"column":69}},"12":{"start":{"line":20,"column":4},"end":{"line":20,"column":59}},"13":{"start":{"line":21,"column":4},"end":{"line":21,"column":69}},"14":{"start":{"line":25,"column":4},"end":{"line":25,"column":82}},"15":{"start":{"line":26,"column":4},"end":{"line":26,"column":76}},"16":{"start":{"line":27,"column":4},"end":{"line":27,"column":70}},"17":{"start":{"line":28,"column":4},"end":{"line":28,"column":88}},"18":{"start":{"line":29,"column":4},"end":{"line":29,"column":84}},"19":{"start":{"line":30,"column":4},"end":{"line":30,"column":90}},"20":{"start":{"line":31,"column":4},"end":{"line":31,"column":78}},"21":{"start":{"line":32,"column":4},"end":{"line":32,"column":78}},"22":{"start":{"line":33,"column":4},"end":{"line":33,"column":86}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":1},"end":{"line":8,"column":2}},"loc":{"start":{"line":8,"column":24},"end":{"line":34,"column":1}},"line":8}},"branchMap":{"0":{"loc":{"start":{"line":34,"column":17},"end":{"line":34,"column":66}},"type":"binary-expr","locations":[{"start":{"line":34,"column":17},"end":{"line":34,"column":36}},{"start":{"line":34,"column":41},"end":{"line":34,"column":65}}],"line":34}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/MessageType.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/MessageType.ts"],"names":[],"mappings":";;;AAAA;;GAEG;AACH,IAAY,WAgCX;AAhCD,WAAY,WAAW;IACrB,6BAA6B;IAC7B,8CAAS,CAAA;IACT,gDAAU,CAAA;IACV,8CAAS,CAAA;IACT,8CAAS,CAAA;IAET,mBAAmB;IACnB,4DAAgB,CAAA;IAChB,gEAAkB,CAAA;IAClB,kEAAmB,CAAA;IACnB,gEAAkB,CAAA;IAClB,gEAAkB,CAAA;IAClB,sDAAa,CAAA;IACb,gEAAkB,CAAA;IAElB,uBAAuB;IACvB,EAAE;IAEF,oBAAoB;IACpB,6EAAyB,CAAA;IACzB,uEAAsB,CAAA;IACtB,iEAAmB,CAAA;IACnB,mFAA4B,CAAA;IAE5B,+EAA0B,CAAA;IAC1B,qFAA6B,CAAA;IAE7B,yEAAuB,CAAA;IACvB,yEAAuB,CAAA;IAEvB,iFAA2B,CAAA;AAC7B,CAAC,EAhCW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAgCtB","sourcesContent":["/**\n * Defined in BOLT01\n */\nexport enum MessageType {\n  // Setup and Control (0 - 31)\n  Init = 16,\n  Error = 17,\n  Ping = 18,\n  Pong = 19,\n\n  // Channel (32-127)\n  OpenChannel = 32,\n  AcceptChannel = 33,\n  FundingCreated = 34,\n  FundingSigned = 35,\n  FundingLocked = 36,\n  Shutdown = 38,\n  ClosingSigned = 39,\n\n  // Commitment (128-255)\n  //\n\n  // Routing (256-511)\n  ChannelAnnouncement = 256,\n  NodeAnnouncement = 257,\n  ChannelUpdate = 258,\n  AnnouncementSignatures = 259,\n\n  QueryShortChannelIds = 261,\n  ReplyShortChannelIdsEnd = 262,\n\n  QueryChannelRange = 263,\n  ReplyChannelRange = 264,\n\n  GossipTimestampFilter = 265,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ac22fc1f92b38c84ef6723bb40733e8a0661d720","contentHash":"295f8312130cd03865b12b163a46e2b2ca5788e319467cb7c9b00e4acfd82322"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/readTlvs.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/readTlvs.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":26}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":13,"column":4},"end":{"line":30,"column":5}},"4":{"start":{"line":14,"column":21},"end":{"line":14,"column":41}},"5":{"start":{"line":15,"column":20},"end":{"line":15,"column":40}},"6":{"start":{"line":16,"column":22},"end":{"line":16,"column":51}},"7":{"start":{"line":17,"column":28},"end":{"line":17,"column":59}},"8":{"start":{"line":18,"column":8},"end":{"line":20,"column":9}},"9":{"start":{"line":19,"column":12},"end":{"line":19,"column":50}},"10":{"start":{"line":21,"column":23},"end":{"line":21,"column":53}},"11":{"start":{"line":22,"column":27},"end":{"line":22,"column":53}},"12":{"start":{"line":23,"column":8},"end":{"line":25,"column":9}},"13":{"start":{"line":24,"column":12},"end":{"line":24,"column":49}},"14":{"start":{"line":26,"column":8},"end":{"line":28,"column":9}},"15":{"start":{"line":27,"column":12},"end":{"line":27,"column":52}},"16":{"start":{"line":29,"column":8},"end":{"line":29,"column":24}},"17":{"start":{"line":32,"column":0},"end":{"line":32,"column":28}}},"fnMap":{"0":{"name":"readTlvs","decl":{"start":{"line":11,"column":9},"end":{"line":11,"column":17}},"loc":{"start":{"line":11,"column":35},"end":{"line":31,"column":1}},"line":11}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":8},"end":{"line":20,"column":9}},"type":"if","locations":[{"start":{"line":18,"column":8},"end":{"line":20,"column":9}},{"start":{},"end":{}}],"line":18},"1":{"loc":{"start":{"line":23,"column":8},"end":{"line":25,"column":9}},"type":"if","locations":[{"start":{"line":23,"column":8},"end":{"line":25,"column":9}},{"start":{},"end":{}}],"line":23},"2":{"loc":{"start":{"line":23,"column":12},"end":{"line":23,"column":33}},"type":"binary-expr","locations":[{"start":{"line":23,"column":12},"end":{"line":23,"column":23}},{"start":{"line":23,"column":27},"end":{"line":23,"column":33}}],"line":23},"3":{"loc":{"start":{"line":26,"column":8},"end":{"line":28,"column":9}},"type":"if","locations":[{"start":{"line":26,"column":8},"end":{"line":28,"column":9}},{"start":{},"end":{}}],"line":26},"4":{"loc":{"start":{"line":26,"column":12},"end":{"line":26,"column":42}},"type":"binary-expr","locations":[{"start":{"line":26,"column":12},"end":{"line":26,"column":22}},{"start":{"line":26,"column":26},"end":{"line":26,"column":42}}],"line":26}},"s":{"0":1,"1":1,"2":1,"3":124,"4":109,"5":103,"6":95,"7":91,"8":91,"9":5,"10":86,"11":86,"12":72,"13":9,"14":63,"15":4,"16":59,"17":1},"f":{"0":124},"b":{"0":[5,86],"1":[9,63],"2":[72,24],"3":[4,59],"4":[63,48]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/readTlvs.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/readTlvs.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C;;;;;GAKG;AACH,SAAgB,QAAQ,CACtB,MAAoB,EACpB,OAAuD;IAEvD,IAAI,QAAgB,CAAC;IACrB,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE;QAClB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,oBAAY,CAAC,KAAK,CAAC,CAAC;QAE5C,IAAI,IAAI,IAAI,QAAQ,EAAE;YACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;SACvC;QAED,MAAM,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAE9C,IAAI,CAAC,UAAU,IAAI,MAAM,EAAE;YACzB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;SACtC;QAED,IAAI,UAAU,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE;YAClC,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;SACzC;QAED,QAAQ,GAAG,IAAI,CAAC;KACjB;AACH,CAAC;AA5BD,4BA4BC","sourcesContent":["import { BufferReader } from '@node-dlc/bufio';\n\n/**\n * Reads TLVs from a reader until the entire stream is processed. The handler is\n * responsible for doing something with the data bytes.\n * @param reader\n * @param handler\n */\nexport function readTlvs(\n  reader: BufferReader,\n  handler: (type: bigint, value: BufferReader) => boolean,\n): void {\n  let lastType: bigint;\n  while (!reader.eof) {\n    const type = reader.readBigSize();\n    const len = reader.readBigSize();\n    const value = reader.readBytes(Number(len));\n    const valueReader = new BufferReader(value);\n\n    if (type <= lastType) {\n      throw new Error('Invalid TLV stream');\n    }\n\n    const isEven = type % BigInt(2) === BigInt(0);\n    const wasHandled = handler(type, valueReader);\n\n    if (!wasHandled && isEven) {\n      throw new Error('Unknown even type');\n    }\n\n    if (wasHandled && !valueReader.eof) {\n      throw new Error('Non-canonical length');\n    }\n\n    lastType = type;\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b74f4586df1de6d4dfb84e8d6c61252eeb0e0681","contentHash":"7de42bfd2eeca65c51a3b4f7f3856f861c80eb3c8efe942b9d5a160b9027cd1e"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipError.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipError.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":55}},"2":{"start":{"line":5,"column":0},"end":{"line":10,"column":80}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":64}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":74}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":110}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":88}},"7":{"start":{"line":13,"column":22},"end":{"line":13,"column":44}},"8":{"start":{"line":14,"column":8},"end":{"line":21,"column":9}},"9":{"start":{"line":16,"column":16},"end":{"line":16,"column":67}},"10":{"start":{"line":17,"column":16},"end":{"line":17,"column":22}},"11":{"start":{"line":19,"column":16},"end":{"line":19,"column":75}},"12":{"start":{"line":20,"column":16},"end":{"line":20,"column":22}},"13":{"start":{"line":22,"column":8},"end":{"line":22,"column":23}},"14":{"start":{"line":23,"column":8},"end":{"line":23,"column":25}},"15":{"start":{"line":24,"column":8},"end":{"line":24,"column":39}},"16":{"start":{"line":27,"column":0},"end":{"line":27,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":28},"end":{"line":10,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":35},"end":{"line":25,"column":5}},"line":12}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":21},"end":{"line":10,"column":78}},"type":"binary-expr","locations":[{"start":{"line":10,"column":21},"end":{"line":10,"column":44}},{"start":{"line":10,"column":49},"end":{"line":10,"column":77}}],"line":10},"1":{"loc":{"start":{"line":14,"column":8},"end":{"line":21,"column":9}},"type":"switch","locations":[{"start":{"line":15,"column":12},"end":{"line":17,"column":22}},{"start":{"line":18,"column":12},"end":{"line":20,"column":22}}],"line":14}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":15,"8":15,"9":7,"10":7,"11":8,"12":8,"13":15,"14":15,"15":15,"16":1},"f":{"0":1,"1":15},"b":{"0":[1,1],"1":[7,8]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipError.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipError.ts"],"names":[],"mappings":";;;AAEA,IAAY,eAKX;AALD,WAAY,eAAe;IACzB,2DAAW,CAAA;IACX,qEAAY,CAAA;IACZ,yGAA8B,CAAA;IAC9B,mFAAmB,CAAA;AACrB,CAAC,EALW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAK1B;AAED,MAAa,WAAY,SAAQ,KAAK;IAIpC,YAAY,IAAqB,EAAE,WAA0B;QAC3D,IAAI,OAAO,GAAG,sBAAsB,CAAC;QACrC,QAAQ,IAAI,EAAE;YACZ,KAAK,eAAe,CAAC,8BAA8B;gBACjD,OAAO,GAAG,wCAAwC,CAAC;gBACnD,MAAM;YACR,KAAK,eAAe,CAAC,mBAAmB;gBACtC,OAAO,GAAG,gDAAgD,CAAC;gBAC3D,MAAM;SACT;QACD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;CACF;AAlBD,kCAkBC","sourcesContent":["import { IWireMessage } from '../messages/IWireMessage';\n\nexport enum GossipErrorCode {\n  Unknown = 0,\n  PeerNotReady,\n  ReplyChannelRangeNoInformation,\n  ReplyChannelsNoInfo,\n}\n\nexport class GossipError extends Error {\n  public code: GossipErrorCode;\n  public wireMessage: IWireMessage;\n\n  constructor(code: GossipErrorCode, wireMessage?: IWireMessage) {\n    let message = 'Unknown gossip error';\n    switch (code) {\n      case GossipErrorCode.ReplyChannelRangeNoInformation:\n        message = 'reply_channel_range had no information';\n        break;\n      case GossipErrorCode.ReplyChannelsNoInfo:\n        message = 'reply_short_channel_ids_end had no information';\n        break;\n    }\n    super(message);\n    this.code = code;\n    this.wireMessage = wireMessage;\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d2b4f6d43140e79ae29906224c58bffabdd266d7","contentHash":"90b454297fafa8c9c1c3d1af0be58dc7a0499e338796f1ddbded875e024ac4ec"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ReplyChannelRangeMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ReplyChannelRangeMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":42}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":22},"end":{"line":6,"column":47}},"5":{"start":{"line":7,"column":18},"end":{"line":7,"column":49}},"6":{"start":{"line":8,"column":23},"end":{"line":8,"column":59}},"7":{"start":{"line":9,"column":19},"end":{"line":9,"column":51}},"8":{"start":{"line":12,"column":8},"end":{"line":12,"column":64}},"9":{"start":{"line":13,"column":8},"end":{"line":13,"column":34}},"10":{"start":{"line":14,"column":8},"end":{"line":14,"column":29}},"11":{"start":{"line":15,"column":8},"end":{"line":15,"column":28}},"12":{"start":{"line":18,"column":25},"end":{"line":18,"column":55}},"13":{"start":{"line":19,"column":23},"end":{"line":19,"column":56}},"14":{"start":{"line":21,"column":8},"end":{"line":21,"column":30}},"15":{"start":{"line":22,"column":8},"end":{"line":22,"column":50}},"16":{"start":{"line":23,"column":8},"end":{"line":23,"column":55}},"17":{"start":{"line":24,"column":8},"end":{"line":24,"column":56}},"18":{"start":{"line":25,"column":8},"end":{"line":25,"column":60}},"19":{"start":{"line":27,"column":27},"end":{"line":27,"column":48}},"20":{"start":{"line":28,"column":33},"end":{"line":28,"column":61}},"21":{"start":{"line":29,"column":27},"end":{"line":29,"column":75}},"22":{"start":{"line":30,"column":28},"end":{"line":30,"column":64}},"23":{"start":{"line":31,"column":8},"end":{"line":34,"column":9}},"24":{"start":{"line":32,"column":30},"end":{"line":32,"column":54}},"25":{"start":{"line":33,"column":12},"end":{"line":33,"column":93}},"26":{"start":{"line":36,"column":8},"end":{"line":71,"column":11}},"27":{"start":{"line":37,"column":12},"end":{"line":70,"column":13}},"28":{"start":{"line":44,"column":34},"end":{"line":44,"column":57}},"29":{"start":{"line":45,"column":41},"end":{"line":45,"column":78}},"30":{"start":{"line":46,"column":42},"end":{"line":46,"column":80}},"31":{"start":{"line":47,"column":20},"end":{"line":52,"column":21}},"32":{"start":{"line":48,"column":24},"end":{"line":51,"column":27}},"33":{"start":{"line":53,"column":20},"end":{"line":53,"column":32}},"34":{"start":{"line":59,"column":20},"end":{"line":64,"column":21}},"35":{"start":{"line":60,"column":24},"end":{"line":63,"column":27}},"36":{"start":{"line":65,"column":20},"end":{"line":65,"column":32}},"37":{"start":{"line":69,"column":20},"end":{"line":69,"column":33}},"38":{"start":{"line":72,"column":8},"end":{"line":72,"column":24}},"39":{"start":{"line":76,"column":24},"end":{"line":76,"column":84}},"40":{"start":{"line":76,"column":70},"end":{"line":76,"column":82}},"41":{"start":{"line":77,"column":22},"end":{"line":77,"column":71}},"42":{"start":{"line":78,"column":23},"end":{"line":78,"column":49}},"43":{"start":{"line":79,"column":8},"end":{"line":79,"column":40}},"44":{"start":{"line":80,"column":8},"end":{"line":80,"column":42}},"45":{"start":{"line":81,"column":8},"end":{"line":81,"column":49}},"46":{"start":{"line":82,"column":8},"end":{"line":82,"column":50}},"47":{"start":{"line":83,"column":8},"end":{"line":83,"column":56}},"48":{"start":{"line":84,"column":8},"end":{"line":84,"column":43}},"49":{"start":{"line":85,"column":8},"end":{"line":85,"column":33}},"50":{"start":{"line":90,"column":8},"end":{"line":100,"column":9}},"51":{"start":{"line":91,"column":32},"end":{"line":91,"column":58}},"52":{"start":{"line":92,"column":12},"end":{"line":95,"column":13}},"53":{"start":{"line":93,"column":16},"end":{"line":93,"column":46}},"54":{"start":{"line":94,"column":16},"end":{"line":94,"column":46}},"55":{"start":{"line":96,"column":26},"end":{"line":96,"column":90}},"56":{"start":{"line":97,"column":12},"end":{"line":97,"column":35}},"57":{"start":{"line":98,"column":12},"end":{"line":98,"column":46}},"58":{"start":{"line":99,"column":12},"end":{"line":99,"column":37}},"59":{"start":{"line":104,"column":8},"end":{"line":114,"column":9}},"60":{"start":{"line":105,"column":32},"end":{"line":105,"column":58}},"61":{"start":{"line":106,"column":12},"end":{"line":109,"column":13}},"62":{"start":{"line":107,"column":16},"end":{"line":107,"column":46}},"63":{"start":{"line":108,"column":16},"end":{"line":108,"column":46}},"64":{"start":{"line":110,"column":26},"end":{"line":110,"column":48}},"65":{"start":{"line":111,"column":12},"end":{"line":111,"column":35}},"66":{"start":{"line":112,"column":12},"end":{"line":112,"column":46}},"67":{"start":{"line":113,"column":12},"end":{"line":113,"column":37}},"68":{"start":{"line":115,"column":8},"end":{"line":115,"column":33}},"69":{"start":{"line":118,"column":0},"end":{"line":118,"column":60}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":11,"column":4},"end":{"line":11,"column":5}},"loc":{"start":{"line":11,"column":18},"end":{"line":16,"column":5}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":5}},"loc":{"start":{"line":17,"column":32},"end":{"line":73,"column":5}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":36,"column":41},"end":{"line":36,"column":42}},"loc":{"start":{"line":36,"column":64},"end":{"line":71,"column":9}},"line":36},"3":{"name":"(anonymous_3)","decl":{"start":{"line":74,"column":4},"end":{"line":74,"column":5}},"loc":{"start":{"line":74,"column":66},"end":{"line":116,"column":5}},"line":74},"4":{"name":"(anonymous_4)","decl":{"start":{"line":76,"column":63},"end":{"line":76,"column":64}},"loc":{"start":{"line":76,"column":70},"end":{"line":76,"column":82}},"line":76}},"branchMap":{"0":{"loc":{"start":{"line":37,"column":12},"end":{"line":70,"column":13}},"type":"switch","locations":[{"start":{"line":43,"column":16},"end":{"line":54,"column":17}},{"start":{"line":58,"column":16},"end":{"line":66,"column":17}},{"start":{"line":68,"column":16},"end":{"line":69,"column":33}}],"line":37},"1":{"loc":{"start":{"line":74,"column":14},"end":{"line":74,"column":64}},"type":"default-arg","locations":[{"start":{"line":74,"column":25},"end":{"line":74,"column":64}}],"line":74},"2":{"loc":{"start":{"line":83,"column":26},"end":{"line":83,"column":54}},"type":"cond-expr","locations":[{"start":{"line":83,"column":49},"end":{"line":83,"column":50}},{"start":{"line":83,"column":53},"end":{"line":83,"column":54}}],"line":83},"3":{"loc":{"start":{"line":90,"column":8},"end":{"line":100,"column":9}},"type":"if","locations":[{"start":{"line":90,"column":8},"end":{"line":100,"column":9}},{"start":{},"end":{}}],"line":90},"4":{"loc":{"start":{"line":104,"column":8},"end":{"line":114,"column":9}},"type":"if","locations":[{"start":{"line":104,"column":8},"end":{"line":114,"column":9}},{"start":{},"end":{}}],"line":104}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":47,"9":47,"10":47,"11":47,"12":6,"13":6,"14":6,"15":6,"16":6,"17":6,"18":6,"19":6,"20":6,"21":6,"22":6,"23":6,"24":126,"25":126,"26":6,"27":5,"28":4,"29":4,"30":4,"31":4,"32":84,"33":4,"34":1,"35":21,"36":1,"37":0,"38":6,"39":6,"40":88,"41":6,"42":6,"43":6,"44":6,"45":6,"46":6,"47":6,"48":6,"49":6,"50":6,"51":3,"52":3,"53":63,"54":63,"55":3,"56":3,"57":3,"58":3,"59":6,"60":1,"61":1,"62":2,"63":2,"64":1,"65":1,"66":1,"67":1,"68":6,"69":1},"f":{"0":47,"1":6,"2":5,"3":6,"4":88},"b":{"0":[4,1,0],"1":[0],"2":[6,0],"3":[3,3],"4":[1,5]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ReplyChannelRangeMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ReplyChannelRangeMessage.ts"],"names":[],"mappings":"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","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { ShortChannelId } from '@node-dlc/common';\nimport { shortChannelIdFromBuffer } from '@node-dlc/common';\n\nimport { MessageType } from '../MessageType';\nimport { Encoder } from '../serialize/Encoder';\nimport { EncodingType } from '../serialize/EncodingType';\nimport { readTlvs } from '../serialize/readTlvs';\nimport { IWireMessage } from './IWireMessage';\n\nexport class ReplyChannelRangeMessage implements IWireMessage {\n  public static deserialize(payload: Buffer): ReplyChannelRangeMessage {\n    const instance = new ReplyChannelRangeMessage();\n    const reader = new BufferReader(payload);\n\n    // read type bytes\n    reader.readUInt16BE();\n\n    instance.chainHash = reader.readBytes(32);\n\n    instance.firstBlocknum = reader.readUInt32BE();\n    instance.numberOfBlocks = reader.readUInt32BE();\n    instance.fullInformation = reader.readUInt8() === 1;\n\n    // read encoded_short_ids\n    const encodedLen = reader.readUInt16BE(); // encoded_short_channel_id bytes\n    const encodedScidBytes = reader.readBytes(encodedLen);\n    const scidsBytes = new Encoder().decode(encodedScidBytes);\n    const scidsReader = new BufferReader(scidsBytes);\n    while (!scidsReader.eof) {\n      const scidBytes = scidsReader.readBytes(8);\n      instance.shortChannelIds.push(shortChannelIdFromBuffer(scidBytes));\n    }\n\n    // read tlvs in the reply_channel_range realm\n    readTlvs(reader, (type: bigint, valueReader: BufferReader) => {\n      switch (type) {\n        // timestamps TLVs include the timestamps for the node1/2\n        // node_update messages. A tuple [number, number] will be\n        // returned for each short_channel_id that is returned.\n        // Timestamps are an encoded field where the first byte\n        // indicates the encoding type (RAW or ZLIB DEFLATE).\n        case BigInt(1): {\n          const bytes = valueReader.readBytes();\n          const decodedBytes = new Encoder().decode(bytes);\n          const decodedReader = new BufferReader(decodedBytes);\n          while (!decodedReader.eof) {\n            instance.timestamps.push([\n              decodedReader.readUInt32BE(),\n              decodedReader.readUInt32BE(),\n            ]);\n          }\n          return true;\n        }\n\n        // checksum TLVs include the checksums for the node1/2\n        // node_update message. A tuple [number, number] will be\n        // returned for each short_channel_id that is returned\n        case BigInt(3): {\n          while (!valueReader.eof) {\n            instance.checksums.push([\n              valueReader.readUInt32BE(),\n              valueReader.readUInt32BE(),\n            ]);\n          }\n          return true;\n        }\n\n        // return that the TLV type was not handled\n        default:\n          return false;\n      }\n    });\n\n    return instance;\n  }\n\n  public type: MessageType = MessageType.ReplyChannelRange;\n  public chainHash: Buffer;\n  public firstBlocknum: number;\n  public numberOfBlocks: number;\n  public fullInformation: boolean;\n  public shortChannelIds: ShortChannelId[] = [];\n  public timestamps: Array<[number, number]> = [];\n  public checksums: Array<[number, number]> = [];\n\n  public serialize(encoding: EncodingType = EncodingType.ZlibDeflate): Buffer {\n    // encode short channel ids\n    const rawSids = Buffer.concat(\n      this.shortChannelIds.map((p) => p.toBuffer()),\n    );\n    const esids = new Encoder().encode(encoding, rawSids);\n\n    const writer = new BufferWriter();\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.chainHash);\n    writer.writeUInt32BE(this.firstBlocknum);\n    writer.writeUInt32BE(this.numberOfBlocks);\n    writer.writeUInt8(this.fullInformation ? 1 : 0);\n    writer.writeUInt16BE(esids.length);\n    writer.writeBytes(esids);\n\n    // write timestamp TLV if it is required. The timestaps are encoded as\n    // uint32BE tuples corresponding to the timestamps for node1/2\n    // channel_update messages. This buffer uses the encoding format\n    // supplied and will be either RAW or ZLIB DEFLARE\n    if (this.timestamps.length) {\n      const valueWriter = new BufferWriter();\n      for (const [v1, v2] of this.timestamps) {\n        valueWriter.writeUInt32BE(v1);\n        valueWriter.writeUInt32BE(v2);\n      }\n      const value = new Encoder().encode(encoding, valueWriter.toBuffer());\n      writer.writeBigSize(1); // type\n      writer.writeBigSize(value.length); // length\n      writer.writeBytes(value); // value\n    }\n\n    // write checksums TLV if it is required. The checksums are encoded as\n    // uint32BE tuples corresponding to the checksums for node1/2\n    // channel_update messages\n    if (this.checksums.length) {\n      const valueWriter = new BufferWriter();\n      for (const [v1, v2] of this.checksums) {\n        valueWriter.writeUInt32BE(v1);\n        valueWriter.writeUInt32BE(v2);\n      }\n      const value = valueWriter.toBuffer();\n      writer.writeBigSize(3); // type\n      writer.writeBigSize(value.length); // length\n      writer.writeBytes(value); // value\n    }\n\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"fae6df0b8eb85adcf9491afcb2e0951ee62d7b5e","contentHash":"14007a6da24bf24b221c560a571c99a39e47a4065db8eb46de49c9f675d418ed"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/Encoder.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/Encoder.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":25}},"2":{"start":{"line":4,"column":23},"end":{"line":4,"column":48}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":46}},"4":{"start":{"line":9,"column":8},"end":{"line":18,"column":9}},"5":{"start":{"line":11,"column":16},"end":{"line":11,"column":31}},"6":{"start":{"line":12,"column":16},"end":{"line":12,"column":22}},"7":{"start":{"line":14,"column":16},"end":{"line":14,"column":71}},"8":{"start":{"line":15,"column":16},"end":{"line":15,"column":22}},"9":{"start":{"line":17,"column":16},"end":{"line":17,"column":57}},"10":{"start":{"line":19,"column":8},"end":{"line":19,"column":65}},"11":{"start":{"line":22,"column":25},"end":{"line":22,"column":44}},"12":{"start":{"line":23,"column":20},"end":{"line":23,"column":35}},"13":{"start":{"line":24,"column":8},"end":{"line":31,"column":9}},"14":{"start":{"line":26,"column":16},"end":{"line":26,"column":27}},"15":{"start":{"line":28,"column":16},"end":{"line":28,"column":67}},"16":{"start":{"line":30,"column":16},"end":{"line":30,"column":57}},"17":{"start":{"line":34,"column":0},"end":{"line":34,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":4},"end":{"line":7,"column":5}},"loc":{"start":{"line":7,"column":27},"end":{"line":20,"column":5}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":21,"column":4},"end":{"line":21,"column":5}},"loc":{"start":{"line":21,"column":19},"end":{"line":32,"column":5}},"line":21}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":8},"end":{"line":18,"column":9}},"type":"switch","locations":[{"start":{"line":10,"column":12},"end":{"line":12,"column":22}},{"start":{"line":13,"column":12},"end":{"line":15,"column":22}},{"start":{"line":16,"column":12},"end":{"line":17,"column":57}}],"line":9},"1":{"loc":{"start":{"line":24,"column":8},"end":{"line":31,"column":9}},"type":"switch","locations":[{"start":{"line":25,"column":12},"end":{"line":26,"column":27}},{"start":{"line":27,"column":12},"end":{"line":28,"column":67}},{"start":{"line":29,"column":12},"end":{"line":30,"column":57}}],"line":24}},"s":{"0":1,"1":1,"2":1,"3":1,"4":15,"5":7,"6":7,"7":8,"8":8,"9":0,"10":15,"11":16,"12":16,"13":16,"14":6,"15":10,"16":0,"17":1},"f":{"0":15,"1":16},"b":{"0":[7,8,0],"1":[6,10,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/Encoder.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/Encoder.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAC9C,+CAA4C;AAE5C,MAAa,OAAO;IACX,MAAM,CAAC,QAAsB,EAAE,IAAY;QAChD,IAAI,OAAe,CAAC;QACpB,QAAQ,QAAQ,EAAE;YAChB,KAAK,2BAAY,CAAC,GAAG;gBACnB,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,KAAK,2BAAY,CAAC,WAAW;gBAC3B,OAAO,GAAG,IAAI,yBAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACzC,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAC5C;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAEM,MAAM,CAAC,MAAc;QAC1B,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,QAAQ,QAAQ,EAAE;YAChB,KAAK,2BAAY,CAAC,GAAG;gBACnB,OAAO,GAAG,CAAC;YACb,KAAK,2BAAY,CAAC,WAAW;gBAC3B,OAAO,IAAI,yBAAW,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvC;gBACE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;SAC5C;IACH,CAAC;CACF;AA5BD,0BA4BC","sourcesContent":["import { EncodingType } from './EncodingType';\nimport { ZlibEncoder } from './ZlibEncoder';\n\nexport class Encoder {\n  public encode(encoding: EncodingType, data: Buffer): Buffer {\n    let encoded: Buffer;\n    switch (encoding) {\n      case EncodingType.Raw:\n        encoded = data;\n        break;\n      case EncodingType.ZlibDeflate:\n        encoded = new ZlibEncoder().encode(data);\n        break;\n      default:\n        throw new Error('Unknown encoding type');\n    }\n    return Buffer.concat([Buffer.from([encoding]), encoded]);\n  }\n\n  public decode(buffer: Buffer): Buffer {\n    const encoding = buffer.readUInt8(0);\n    const raw = buffer.slice(1);\n    switch (encoding) {\n      case EncodingType.Raw:\n        return raw;\n      case EncodingType.ZlibDeflate:\n        return new ZlibEncoder().decode(raw);\n      default:\n        throw new Error('Unknown encoding type');\n    }\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ba3ca26d80e944e0b29c9dab1b64d0ada0f4f15f","contentHash":"72c194b4472f9283f0e82c545818c53215ce4c39a7380ad34dae3f15c733bdb3"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/EncodingType.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/EncodingType.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":30}},"2":{"start":{"line":5,"column":0},"end":{"line":8,"column":71}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":50}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":66}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":25},"end":{"line":8,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":18},"end":{"line":8,"column":69}},"type":"binary-expr","locations":[{"start":{"line":8,"column":18},"end":{"line":8,"column":38}},{"start":{"line":8,"column":43},"end":{"line":8,"column":68}}],"line":8}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/EncodingType.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/EncodingType.ts"],"names":[],"mappings":";;;AAAA,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,6CAAO,CAAA;IACP,6DAAe,CAAA;AACjB,CAAC,EAHW,YAAY,GAAZ,oBAAY,KAAZ,oBAAY,QAGvB","sourcesContent":["export enum EncodingType {\n  Raw = 0,\n  ZlibDeflate = 1,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"185d22aa48c5f36b62e80bfeb415d13cde3b29d9","contentHash":"035ededc59108c7ca1314360abcba8280db39b3f7e565af540dd33cd20098335"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/ZlibEncoder.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/ZlibEncoder.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":62}},"2":{"start":{"line":5,"column":0},"end":{"line":5,"column":62}},"3":{"start":{"line":6,"column":0},"end":{"line":6,"column":29}},"4":{"start":{"line":7,"column":15},"end":{"line":7,"column":47}},"5":{"start":{"line":10,"column":8},"end":{"line":10,"column":51}},"6":{"start":{"line":13,"column":8},"end":{"line":13,"column":51}},"7":{"start":{"line":16,"column":0},"end":{"line":16,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":56},"end":{"line":2,"column":57}},"loc":{"start":{"line":2,"column":71},"end":{"line":4,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":9,"column":4},"end":{"line":9,"column":5}},"loc":{"start":{"line":9,"column":20},"end":{"line":11,"column":5}},"line":9},"2":{"name":"(anonymous_2)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":20},"end":{"line":14,"column":5}},"line":12}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":4,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":56},"end":{"line":4,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":11},"end":{"line":3,"column":61}},"type":"cond-expr","locations":[{"start":{"line":3,"column":37},"end":{"line":3,"column":40}},{"start":{"line":3,"column":43},"end":{"line":3,"column":61}}],"line":3},"2":{"loc":{"start":{"line":3,"column":12},"end":{"line":3,"column":33}},"type":"binary-expr","locations":[{"start":{"line":3,"column":12},"end":{"line":3,"column":15}},{"start":{"line":3,"column":19},"end":{"line":3,"column":33}}],"line":3}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":8,"6":10,"7":1},"f":{"0":1,"1":8,"2":10},"b":{"0":[1,1,1],"1":[0,1],"2":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/ZlibEncoder.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/ZlibEncoder.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,MAAa,WAAW;IACf,MAAM,CAAC,OAAe;QAC3B,OAAO,cAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAEM,MAAM,CAAC,OAAe;QAC3B,OAAO,cAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;CACF;AARD,kCAQC","sourcesContent":["import zlib from 'zlib';\n\nexport class ZlibEncoder {\n  public encode(payload: Buffer): Buffer {\n    return zlib.deflateSync(payload);\n  }\n\n  public decode(payload: Buffer): Buffer {\n    return zlib.inflateSync(payload);\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"306cd6f62adbd46ba9dba87f2c4889bba259e174","contentHash":"8b67ee2640f8187d9fad8ff0e5827158499e45f393dbcc1177bbfbb6b3ce8c59"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/ChannelsQuery.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/ChannelsQuery.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":60}},"2":{"start":{"line":4,"column":38},"end":{"line":4,"column":88}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":46}},"4":{"start":{"line":7,"column":0},"end":{"line":12,"column":89}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":64}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":68}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":72}},"8":{"start":{"line":11,"column":4},"end":{"line":11,"column":68}},"9":{"start":{"line":21,"column":8},"end":{"line":21,"column":35}},"10":{"start":{"line":22,"column":8},"end":{"line":22,"column":25}},"11":{"start":{"line":23,"column":8},"end":{"line":23,"column":29}},"12":{"start":{"line":24,"column":8},"end":{"line":24,"column":30}},"13":{"start":{"line":25,"column":8},"end":{"line":25,"column":25}},"14":{"start":{"line":26,"column":8},"end":{"line":26,"column":46}},"15":{"start":{"line":29,"column":8},"end":{"line":29,"column":27}},"16":{"start":{"line":32,"column":8},"end":{"line":32,"column":27}},"17":{"start":{"line":35,"column":8},"end":{"line":35,"column":95}},"18":{"start":{"line":39,"column":8},"end":{"line":43,"column":9}},"19":{"start":{"line":40,"column":26},"end":{"line":40,"column":111}},"20":{"start":{"line":41,"column":12},"end":{"line":41,"column":42}},"21":{"start":{"line":42,"column":12},"end":{"line":42,"column":19}},"22":{"start":{"line":47,"column":8},"end":{"line":53,"column":9}},"23":{"start":{"line":48,"column":12},"end":{"line":48,"column":30}},"24":{"start":{"line":51,"column":12},"end":{"line":51,"column":38}},"25":{"start":{"line":52,"column":12},"end":{"line":52,"column":19}},"26":{"start":{"line":60,"column":8},"end":{"line":72,"column":11}},"27":{"start":{"line":62,"column":12},"end":{"line":64,"column":13}},"28":{"start":{"line":63,"column":16},"end":{"line":63,"column":39}},"29":{"start":{"line":66,"column":12},"end":{"line":66,"column":52}},"30":{"start":{"line":68,"column":12},"end":{"line":68,"column":30}},"31":{"start":{"line":70,"column":12},"end":{"line":70,"column":36}},"32":{"start":{"line":71,"column":12},"end":{"line":71,"column":34}},"33":{"start":{"line":75,"column":8},"end":{"line":76,"column":19}},"34":{"start":{"line":76,"column":12},"end":{"line":76,"column":19}},"35":{"start":{"line":77,"column":8},"end":{"line":77,"column":50}},"36":{"start":{"line":78,"column":8},"end":{"line":78,"column":24}},"37":{"start":{"line":81,"column":8},"end":{"line":82,"column":19}},"38":{"start":{"line":82,"column":12},"end":{"line":82,"column":19}},"39":{"start":{"line":83,"column":8},"end":{"line":83,"column":48}},"40":{"start":{"line":84,"column":8},"end":{"line":84,"column":28}},"41":{"start":{"line":85,"column":8},"end":{"line":85,"column":28}},"42":{"start":{"line":89,"column":22},"end":{"line":89,"column":59}},"43":{"start":{"line":90,"column":20},"end":{"line":90,"column":83}},"44":{"start":{"line":91,"column":8},"end":{"line":91,"column":39}},"45":{"start":{"line":92,"column":8},"end":{"line":92,"column":36}},"46":{"start":{"line":93,"column":8},"end":{"line":93,"column":89}},"47":{"start":{"line":94,"column":8},"end":{"line":94,"column":35}},"48":{"start":{"line":97,"column":0},"end":{"line":97,"column":38}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":1},"end":{"line":7,"column":2}},"loc":{"start":{"line":7,"column":31},"end":{"line":12,"column":1}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":41},"end":{"line":27,"column":5}},"line":20},"2":{"name":"(anonymous_2)","decl":{"start":{"line":28,"column":4},"end":{"line":28,"column":5}},"loc":{"start":{"line":28,"column":16},"end":{"line":30,"column":5}},"line":28},"3":{"name":"(anonymous_3)","decl":{"start":{"line":31,"column":4},"end":{"line":31,"column":5}},"loc":{"start":{"line":31,"column":16},"end":{"line":33,"column":5}},"line":31},"4":{"name":"(anonymous_4)","decl":{"start":{"line":34,"column":4},"end":{"line":34,"column":5}},"loc":{"start":{"line":34,"column":39},"end":{"line":54,"column":5}},"line":34},"5":{"name":"(anonymous_5)","decl":{"start":{"line":59,"column":4},"end":{"line":59,"column":5}},"loc":{"start":{"line":59,"column":20},"end":{"line":73,"column":5}},"line":59},"6":{"name":"(anonymous_6)","decl":{"start":{"line":60,"column":27},"end":{"line":60,"column":28}},"loc":{"start":{"line":60,"column":48},"end":{"line":72,"column":9}},"line":60},"7":{"name":"(anonymous_7)","decl":{"start":{"line":74,"column":4},"end":{"line":74,"column":5}},"loc":{"start":{"line":74,"column":25},"end":{"line":79,"column":5}},"line":74},"8":{"name":"(anonymous_8)","decl":{"start":{"line":80,"column":4},"end":{"line":80,"column":5}},"loc":{"start":{"line":80,"column":29},"end":{"line":86,"column":5}},"line":80},"9":{"name":"(anonymous_9)","decl":{"start":{"line":87,"column":4},"end":{"line":87,"column":5}},"loc":{"start":{"line":87,"column":17},"end":{"line":95,"column":5}},"line":87}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":24},"end":{"line":12,"column":87}},"type":"binary-expr","locations":[{"start":{"line":12,"column":24},"end":{"line":12,"column":50}},{"start":{"line":12,"column":55},"end":{"line":12,"column":86}}],"line":12},"1":{"loc":{"start":{"line":39,"column":8},"end":{"line":43,"column":9}},"type":"if","locations":[{"start":{"line":39,"column":8},"end":{"line":43,"column":9}},{"start":{},"end":{}}],"line":39},"2":{"loc":{"start":{"line":47,"column":8},"end":{"line":53,"column":9}},"type":"if","locations":[{"start":{"line":47,"column":8},"end":{"line":53,"column":9}},{"start":{"line":50,"column":13},"end":{"line":53,"column":9}}],"line":47},"3":{"loc":{"start":{"line":75,"column":8},"end":{"line":76,"column":19}},"type":"if","locations":[{"start":{"line":75,"column":8},"end":{"line":76,"column":19}},{"start":{},"end":{}}],"line":75},"4":{"loc":{"start":{"line":81,"column":8},"end":{"line":82,"column":19}},"type":"if","locations":[{"start":{"line":81,"column":8},"end":{"line":82,"column":19}},{"start":{},"end":{}}],"line":81}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":20,"10":20,"11":20,"12":20,"13":20,"14":20,"15":4,"16":0,"17":63,"18":63,"19":8,"20":8,"21":8,"22":55,"23":49,"24":6,"25":6,"26":16,"27":16,"28":96015,"29":16,"30":16,"31":16,"32":16,"33":6,"34":0,"35":6,"36":6,"37":8,"38":0,"39":8,"40":8,"41":8,"42":65,"43":65,"44":65,"45":65,"46":65,"47":65,"48":1},"f":{"0":1,"1":20,"2":4,"3":0,"4":63,"5":16,"6":16,"7":6,"8":8,"9":65},"b":{"0":[1,1],"1":[8,55],"2":[49,6],"3":[0,6],"4":[0,8]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/ChannelsQuery.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/ChannelsQuery.ts"],"names":[],"mappings":";;;AAGA,yFAAsF;AAGtF,+CAA6D;AAE7D,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,2DAAI,CAAA;IACJ,+DAAM,CAAA;IACN,mEAAQ,CAAA;IACR,+DAAM,CAAA;AACR,CAAC,EALW,kBAAkB,GAAlB,0BAAkB,KAAlB,0BAAkB,QAK7B;AAED;;;;;GAKG;AACH,MAAa,aAAa;IASxB,YACW,SAAiB,EACjB,IAAoB,EACpB,MAAe;QAFf,cAAS,GAAT,SAAS,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAAgB;QACpB,WAAM,GAAN,MAAM,CAAS;QAXnB,cAAS,GAAG,IAAI,CAAC;QAEhB,WAAM,GAAqB,EAAE,CAAC;QAWpC,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,6BAA6B,CAClC,GAAmC;QAEnC,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,qDAAqD,EACrD,GAAG,CAAC,QAAQ,CACb,CAAC;QAEF,6DAA6D;QAC7D,2DAA2D;QAC3D,uBAAuB;QACvB,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;YACjB,MAAM,KAAK,GAAG,IAAI,yBAAW,CAAC,6BAAe,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;YACxE,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC9B,OAAO;SACR;QAED,mEAAmE;QACnE,sEAAsE;QACtE,iDAAiD;QACjD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;aAAM;YACL,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC1B,OAAO;SACR;IACH,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,GAAG,KAAuB;QACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,wBAAwB;YACxB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACxB;YAED,oCAAoC;YACpC,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;YAExC,6BAA6B;YAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;YAElB,mDAAmD;YACnD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kBAAkB;QACxB,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM;YAAE,OAAO;QACtD,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,QAAQ,CAAC;QAC1C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAEO,iBAAiB,CAAC,KAAkB;QAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,kBAAkB,CAAC,MAAM;YAAE,OAAO;QACtD,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IAEO,UAAU;QAChB,+CAA+C;QAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpD,MAAM,GAAG,GAAG,IAAI,yDAA2B,EAAE,CAAC;QAC9C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,GAAG,CAAC,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,+CAA+C,EAC/C,KAAK,CAAC,MAAM,CACb,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;CACF;AAtGD,sCAsGC","sourcesContent":["import { ShortChannelId } from '@node-dlc/common';\nimport { ILogger } from '@node-dlc/logger';\n\nimport { QueryShortChannelIdsMessage } from '../messages/QueryShortChannelIdsMessage';\nimport { ReplyShortChannelIdsEndMessage } from '../messages/ReplyShortChannelIdsEndMessage';\nimport { IMessageSender } from '../Peer';\nimport { GossipError, GossipErrorCode } from './GossipError';\n\nexport enum ChannelsQueryState {\n  Idle,\n  Active,\n  Complete,\n  Failed,\n}\n\n/**\n * This class manages the state machine for executing query_short_channel_ids\n * and will resolve as either complete or with an error. This class can accept\n * an arbitrarily large number of short channel ids and will chunk the requests\n * appropriately.\n */\nexport class ChannelsQuery {\n  public chunkSize = 2000;\n\n  private _queue: ShortChannelId[] = [];\n  private _state: ChannelsQueryState;\n  private _error: GossipError;\n  private _resolve: () => void;\n  private _reject: (error: GossipError) => void;\n\n  constructor(\n    readonly chainHash: Buffer,\n    readonly peer: IMessageSender,\n    readonly logger: ILogger,\n  ) {\n    this._state = ChannelsQueryState.Idle;\n  }\n\n  public get state(): ChannelsQueryState {\n    return this._state;\n  }\n\n  public get error(): Error {\n    return this._error;\n  }\n\n  public handleReplyShortChannelIdsEnd(\n    msg: ReplyShortChannelIdsEndMessage,\n  ): void {\n    this.logger.debug(\n      'received reply_short_channel_ids_end - complete: %d',\n      msg.complete,\n    );\n\n    // If we receive a reply with complete=false, the remote peer\n    // does not maintain up-to-date channel information for the\n    // requested chain_hash\n    if (!msg.complete) {\n      const error = new GossipError(GossipErrorCode.ReplyChannelsNoInfo, msg);\n      this._transitionFailed(error);\n      return;\n    }\n\n    // This occurs when the last batch of information has been received\n    // but there is still more short_channel_ids to request. This scenario\n    // requires sending another QueryShortIds message\n    if (this._queue.length > 0) {\n      this._sendQuery();\n    } else {\n      this._transitionSuccess();\n      return;\n    }\n  }\n\n  /**\n   *\n   * @param scids\n   */\n  public query(...scids: ShortChannelId[]): Promise<void> {\n    return new Promise((resolve, reject) => {\n      // enqueue the short ids\n      for (const scid of scids) {\n        this._queue.push(scid);\n      }\n\n      // Ensure we are in the active state\n      this._state = ChannelsQueryState.Active;\n\n      // send our query to the peer\n      this._sendQuery();\n\n      // capture the promise method for use when complete\n      this._resolve = resolve;\n      this._reject = reject;\n    });\n  }\n\n  private _transitionSuccess() {\n    if (this._state !== ChannelsQueryState.Active) return;\n    this._state = ChannelsQueryState.Complete;\n    this._resolve();\n  }\n\n  private _transitionFailed(error: GossipError) {\n    if (this._state !== ChannelsQueryState.Active) return;\n    this._state = ChannelsQueryState.Failed;\n    this._error = error;\n    this._reject(error);\n  }\n\n  private _sendQuery() {\n    // splice a chunk of work to do from the suqery\n    const scids = this._queue.splice(0, this.chunkSize);\n\n    const msg = new QueryShortChannelIdsMessage();\n    msg.chainHash = this.chainHash;\n    msg.shortChannelIds = scids;\n    this.logger.debug(\n      'sending query_short_channel_ids - scid_count:',\n      scids.length,\n    );\n    this.peer.sendMessage(msg);\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"fb99d9477ddd3c1015b9d2a3430456d276a3850e","contentHash":"f2ac9829aeb7b87d4f4701f97f5f6e26ec20e222d898cfaa11d2df0b909d500b"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/QueryShortChannelIdsMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/QueryShortChannelIdsMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":45}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":17},"end":{"line":6,"column":44}},"5":{"start":{"line":7,"column":22},"end":{"line":7,"column":47}},"6":{"start":{"line":8,"column":18},"end":{"line":8,"column":49}},"7":{"start":{"line":9,"column":23},"end":{"line":9,"column":59}},"8":{"start":{"line":10,"column":19},"end":{"line":10,"column":51}},"9":{"start":{"line":16,"column":8},"end":{"line":16,"column":67}},"10":{"start":{"line":20,"column":8},"end":{"line":20,"column":34}},"11":{"start":{"line":24,"column":8},"end":{"line":24,"column":24}},"12":{"start":{"line":27,"column":25},"end":{"line":27,"column":58}},"13":{"start":{"line":28,"column":23},"end":{"line":28,"column":56}},"14":{"start":{"line":29,"column":8},"end":{"line":29,"column":30}},"15":{"start":{"line":30,"column":8},"end":{"line":30,"column":50}},"16":{"start":{"line":34,"column":31},"end":{"line":34,"column":52}},"17":{"start":{"line":35,"column":34},"end":{"line":35,"column":66}},"18":{"start":{"line":36,"column":27},"end":{"line":36,"column":76}},"19":{"start":{"line":39,"column":27},"end":{"line":39,"column":63}},"20":{"start":{"line":40,"column":8},"end":{"line":43,"column":9}},"21":{"start":{"line":41,"column":25},"end":{"line":41,"column":88}},"22":{"start":{"line":42,"column":12},"end":{"line":42,"column":48}},"23":{"start":{"line":45,"column":8},"end":{"line":61,"column":11}},"24":{"start":{"line":46,"column":12},"end":{"line":60,"column":13}},"25":{"start":{"line":48,"column":34},"end":{"line":48,"column":57}},"26":{"start":{"line":49,"column":38},"end":{"line":49,"column":75}},"27":{"start":{"line":50,"column":39},"end":{"line":50,"column":74}},"28":{"start":{"line":51,"column":20},"end":{"line":55,"column":21}},"29":{"start":{"line":52,"column":41},"end":{"line":52,"column":65}},"30":{"start":{"line":53,"column":38},"end":{"line":53,"column":69}},"31":{"start":{"line":54,"column":24},"end":{"line":54,"column":51}},"32":{"start":{"line":56,"column":20},"end":{"line":56,"column":32}},"33":{"start":{"line":59,"column":20},"end":{"line":59,"column":33}},"34":{"start":{"line":62,"column":8},"end":{"line":62,"column":24}},"35":{"start":{"line":65,"column":29},"end":{"line":65,"column":89}},"36":{"start":{"line":65,"column":75},"end":{"line":65,"column":87}},"37":{"start":{"line":66,"column":22},"end":{"line":66,"column":76}},"38":{"start":{"line":67,"column":23},"end":{"line":67,"column":49}},"39":{"start":{"line":68,"column":8},"end":{"line":68,"column":40}},"40":{"start":{"line":69,"column":8},"end":{"line":69,"column":42}},"41":{"start":{"line":70,"column":8},"end":{"line":70,"column":43}},"42":{"start":{"line":71,"column":8},"end":{"line":71,"column":33}},"43":{"start":{"line":73,"column":8},"end":{"line":86,"column":9}},"44":{"start":{"line":75,"column":29},"end":{"line":75,"column":31}},"45":{"start":{"line":76,"column":12},"end":{"line":78,"column":13}},"46":{"start":{"line":77,"column":16},"end":{"line":77,"column":47}},"47":{"start":{"line":79,"column":30},"end":{"line":79,"column":53}},"48":{"start":{"line":81,"column":37},"end":{"line":81,"column":88}},"49":{"start":{"line":83,"column":12},"end":{"line":83,"column":35}},"50":{"start":{"line":84,"column":12},"end":{"line":84,"column":57}},"51":{"start":{"line":85,"column":12},"end":{"line":85,"column":48}},"52":{"start":{"line":87,"column":8},"end":{"line":87,"column":33}},"53":{"start":{"line":90,"column":0},"end":{"line":90,"column":66}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":18},"end":{"line":25,"column":5}},"line":12},"1":{"name":"(anonymous_1)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":32},"end":{"line":63,"column":5}},"line":26},"2":{"name":"(anonymous_2)","decl":{"start":{"line":45,"column":41},"end":{"line":45,"column":42}},"loc":{"start":{"line":45,"column":64},"end":{"line":61,"column":9}},"line":45},"3":{"name":"(anonymous_3)","decl":{"start":{"line":64,"column":4},"end":{"line":64,"column":5}},"loc":{"start":{"line":64,"column":66},"end":{"line":88,"column":5}},"line":64},"4":{"name":"(anonymous_4)","decl":{"start":{"line":65,"column":68},"end":{"line":65,"column":69}},"loc":{"start":{"line":65,"column":75},"end":{"line":65,"column":87}},"line":65}},"branchMap":{"0":{"loc":{"start":{"line":46,"column":12},"end":{"line":60,"column":13}},"type":"switch","locations":[{"start":{"line":47,"column":16},"end":{"line":57,"column":17}},{"start":{"line":58,"column":16},"end":{"line":59,"column":33}}],"line":46},"1":{"loc":{"start":{"line":64,"column":14},"end":{"line":64,"column":64}},"type":"default-arg","locations":[{"start":{"line":64,"column":25},"end":{"line":64,"column":64}}],"line":64},"2":{"loc":{"start":{"line":73,"column":8},"end":{"line":86,"column":9}},"type":"if","locations":[{"start":{"line":73,"column":8},"end":{"line":86,"column":9}},{"start":{},"end":{}}],"line":73}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":73,"10":73,"11":73,"12":4,"13":4,"14":4,"15":4,"16":4,"17":4,"18":4,"19":4,"20":4,"21":27,"22":27,"23":4,"24":2,"25":2,"26":2,"27":2,"28":2,"29":4,"30":4,"31":4,"32":2,"33":0,"34":4,"35":4,"36":27,"37":4,"38":4,"39":4,"40":4,"41":4,"42":4,"43":4,"44":2,"45":2,"46":4,"47":2,"48":2,"49":2,"50":2,"51":2,"52":4,"53":1},"f":{"0":73,"1":4,"2":2,"3":4,"4":27},"b":{"0":[2,0],"1":[0],"2":[2,2]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/QueryShortChannelIdsMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/QueryShortChannelIdsMessage.ts"],"names":[],"mappings":"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","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { BitField } from '@node-dlc/common';\nimport { ShortChannelId } from '@node-dlc/common';\nimport { shortChannelIdFromBuffer } from '@node-dlc/common';\n\nimport { QueryScidFlags } from '../flags/QueryScidFlags';\nimport { MessageType } from '../MessageType';\nimport { Encoder } from '../serialize/Encoder';\nimport { EncodingType } from '../serialize/EncodingType';\nimport { readTlvs } from '../serialize/readTlvs';\nimport { IWireMessage } from './IWireMessage';\n\nexport class QueryShortChannelIdsMessage implements IWireMessage {\n  public static deserialize(payload: Buffer): QueryShortChannelIdsMessage {\n    const instance = new QueryShortChannelIdsMessage();\n    const reader = new BufferReader(payload);\n\n    reader.readUInt16BE(); // read off type\n    instance.chainHash = reader.readBytes(32); // chain_hash\n\n    // process the encoded short channel ids by reading the length of\n    // encoded data, then using the decoder to get the raw buffer after\n    // using the appropriate decoding scheme\n    const encodedScidLen = reader.readUInt16BE();\n    const encodedScidBuffer = reader.readBytes(encodedScidLen);\n    const scidBuffer = new Encoder().decode(encodedScidBuffer);\n\n    // After we have a raw buffer of scid values (each 8 bytes) we can read\n    // the data from the buffer\n    const scidReader = new BufferReader(scidBuffer);\n    while (!scidReader.eof) {\n      const scid = shortChannelIdFromBuffer(scidReader.readBytes(8));\n      instance.shortChannelIds.push(scid);\n    }\n\n    // Process all TLVs available on the reader\n    readTlvs(reader, (type: bigint, valueReader: BufferReader) => {\n      switch (type) {\n        case BigInt(1): {\n          const bytes = valueReader.readBytes();\n          const flagBytes = new Encoder().decode(bytes);\n          const flagReader = new BufferReader(flagBytes);\n          while (!flagReader.eof) {\n            const rawFlags = flagReader.readBigSize();\n            const flags = new BitField<QueryScidFlags>(rawFlags);\n            instance.flags.push(flags);\n          }\n          return true;\n        }\n        default:\n          return false;\n      }\n    });\n\n    return instance;\n  }\n\n  /**\n   * Type 261\n   */\n  public type: MessageType = MessageType.QueryShortChannelIds;\n\n  /**\n   * 32-byte chain hash\n   */\n  public chainHash: Buffer;\n\n  /**\n   * List of channels to query\n   */\n  public shortChannelIds: ShortChannelId[] = [];\n\n  /**\n   * Optional flags that can be set when gossip_queries_ex is enabled.\n   */\n  public flags: Array<BitField<QueryScidFlags>> = [];\n\n  public serialize(encoding: EncodingType = EncodingType.ZlibDeflate): Buffer {\n    const rawIdsBuffer = Buffer.concat(\n      this.shortChannelIds.map((p) => p.toBuffer()),\n    );\n    const esids = new Encoder().encode(encoding, rawIdsBuffer);\n\n    const writer = new BufferWriter();\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.chainHash);\n    writer.writeUInt16BE(esids.length);\n    writer.writeBytes(esids);\n\n    // encode TLV 1\n    if (this.flags.length) {\n      // combine all BitFields into buffers\n      const flagBufs: Buffer[] = [];\n      for (const flag of this.flags) {\n        flagBufs.push(flag.toBuffer());\n      }\n      const flagBytes = Buffer.concat(flagBufs);\n\n      // encode the flag bytes according to the encoding strategy\n      const encodedFlagBytes = new Encoder().encode(encoding, flagBytes);\n\n      // write TLV data\n      writer.writeBigSize(1);\n      writer.writeBigSize(encodedFlagBytes.length);\n      writer.writeBytes(encodedFlagBytes);\n    }\n\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e68c870ebb0d24d2c442be8824cee834f9b12ee2","contentHash":"307584c53ecf2636ebf59969bdedd8246e0dc425e79b4ded388ebc796114a98d"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ReplyShortChannelIdsEndMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ReplyShortChannelIdsEndMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":48}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":47}},"4":{"start":{"line":8,"column":8},"end":{"line":8,"column":70}},"5":{"start":{"line":11,"column":25},"end":{"line":11,"column":61}},"6":{"start":{"line":12,"column":23},"end":{"line":12,"column":56}},"7":{"start":{"line":14,"column":8},"end":{"line":14,"column":30}},"8":{"start":{"line":15,"column":8},"end":{"line":15,"column":50}},"9":{"start":{"line":16,"column":8},"end":{"line":16,"column":53}},"10":{"start":{"line":17,"column":8},"end":{"line":17,"column":24}},"11":{"start":{"line":20,"column":20},"end":{"line":22,"column":13}},"12":{"start":{"line":23,"column":23},"end":{"line":23,"column":66}},"13":{"start":{"line":24,"column":8},"end":{"line":24,"column":40}},"14":{"start":{"line":25,"column":8},"end":{"line":25,"column":42}},"15":{"start":{"line":26,"column":8},"end":{"line":26,"column":49}},"16":{"start":{"line":27,"column":8},"end":{"line":27,"column":33}},"17":{"start":{"line":30,"column":0},"end":{"line":30,"column":72}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":4},"end":{"line":7,"column":5}},"loc":{"start":{"line":7,"column":18},"end":{"line":9,"column":5}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":10,"column":32},"end":{"line":18,"column":5}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":19,"column":16},"end":{"line":28,"column":5}},"line":19}},"branchMap":{"0":{"loc":{"start":{"line":26,"column":26},"end":{"line":26,"column":47}},"type":"cond-expr","locations":[{"start":{"line":26,"column":42},"end":{"line":26,"column":43}},{"start":{"line":26,"column":46},"end":{"line":26,"column":47}}],"line":26}},"s":{"0":1,"1":1,"2":1,"3":1,"4":65,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1},"f":{"0":65,"1":1,"2":1},"b":{"0":[1,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ReplyShortChannelIdsEndMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ReplyShortChannelIdsEndMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAE7D,gDAA6C;AAG7C,MAAa,8BAA8B;IAA3C;QAcS,SAAI,GAAgB,yBAAW,CAAC,uBAAuB,CAAC;IAgBjE,CAAC;IA7BQ,MAAM,CAAC,WAAW,CAAC,OAAe;QACvC,MAAM,QAAQ,GAAG,IAAI,8BAA8B,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,OAAO,CAAC,CAAC;QAEzC,kBAAkB;QAClB,MAAM,CAAC,YAAY,EAAE,CAAC;QAEtB,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1C,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAE7C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAMM,SAAS;QACd,MAAM,GAAG,GACP,CAAC,GAAG,OAAO;YACX,EAAE,GAAG,aAAa;YAClB,CAAC,CAAC,CAAC,WAAW;QAEhB,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AA9BD,wEA8BC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\n\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\nexport class ReplyShortChannelIdsEndMessage implements IWireMessage {\n  public static deserialize(payload: Buffer): ReplyShortChannelIdsEndMessage {\n    const instance = new ReplyShortChannelIdsEndMessage();\n    const reader = new BufferReader(payload);\n\n    // read type bytes\n    reader.readUInt16BE();\n\n    instance.chainHash = reader.readBytes(32);\n    instance.complete = reader.readUInt8() === 1;\n\n    return instance;\n  }\n\n  public type: MessageType = MessageType.ReplyShortChannelIdsEnd;\n  public chainHash: Buffer;\n  public complete: boolean;\n\n  public serialize(): Buffer {\n    const len =\n      2 + // type\n      32 + // chain_hash\n      1; // complete\n\n    const writer = new BufferWriter(Buffer.alloc(len));\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.chainHash);\n    writer.writeUInt8(this.complete ? 1 : 0);\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"e4fc220957ec8d7f78d3965a84f61f5e6bc78a9a","contentHash":"9f80e1475944bb2d91e0dfa9312213782c778fd288bd6f9003f41f6e26ce74ff"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/index.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/index.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"2":{"start":{"line":3,"column":26},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":15},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"5":{"start":{"line":6,"column":6},"end":{"line":6,"column":68}},"6":{"start":{"line":6,"column":51},"end":{"line":6,"column":63}},"7":{"start":{"line":8,"column":4},"end":{"line":8,"column":39}},"8":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"9":{"start":{"line":10,"column":26},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":4},"end":{"line":11,"column":17}},"11":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"12":{"start":{"line":14,"column":4},"end":{"line":14,"column":72}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":21}},"14":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"16":{"start":{"line":19,"column":31},"end":{"line":19,"column":42}},"17":{"start":{"line":20,"column":17},"end":{"line":20,"column":19}},"18":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"19":{"start":{"line":21,"column":21},"end":{"line":21,"column":141}},"20":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"21":{"start":{"line":21,"column":109},"end":{"line":21,"column":141}},"22":{"start":{"line":22,"column":4},"end":{"line":22,"column":36}},"23":{"start":{"line":23,"column":4},"end":{"line":23,"column":18}},"24":{"start":{"line":25,"column":19},"end":{"line":27,"column":1}},"25":{"start":{"line":26,"column":4},"end":{"line":26,"column":126}},"26":{"start":{"line":26,"column":21},"end":{"line":26,"column":126}},"27":{"start":{"line":26,"column":95},"end":{"line":26,"column":126}},"28":{"start":{"line":28,"column":0},"end":{"line":28,"column":62}},"29":{"start":{"line":29,"column":0},"end":{"line":29,"column":32}},"30":{"start":{"line":30,"column":11},"end":{"line":30,"column":52}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":28}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":46}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":51}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":55}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":55}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":55}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":55}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":55}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":55}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":62}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":68}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":67}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":59}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":59}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":65}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":57}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":61}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":57}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":57}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":56}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":57}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":61}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":54}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":65}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":61}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":55}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":55}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":61}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":68}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":75}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":72}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":66}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":58}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":80}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":74}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":57}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":58}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":69}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":64}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":57}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":57}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":70}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":73}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":70}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":76}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":48}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":41}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":47}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":46}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":50}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":46}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":74},"end":{"line":2,"column":75}},"loc":{"start":{"line":2,"column":96},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":38},"end":{"line":6,"column":39}},"loc":{"start":{"line":6,"column":49},"end":{"line":6,"column":65}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":6},"end":{"line":9,"column":7}},"loc":{"start":{"line":9,"column":28},"end":{"line":12,"column":1}},"line":9},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":80},"end":{"line":13,"column":81}},"loc":{"start":{"line":13,"column":95},"end":{"line":15,"column":1}},"line":13},"4":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":5},"end":{"line":15,"column":6}},"loc":{"start":{"line":15,"column":20},"end":{"line":17,"column":1}},"line":15},"5":{"name":"(anonymous_5)","decl":{"start":{"line":18,"column":50},"end":{"line":18,"column":51}},"loc":{"start":{"line":18,"column":65},"end":{"line":24,"column":1}},"line":18},"6":{"name":"(anonymous_6)","decl":{"start":{"line":25,"column":50},"end":{"line":25,"column":51}},"loc":{"start":{"line":25,"column":71},"end":{"line":27,"column":1}},"line":25}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":57},"end":{"line":12,"column":2}}],"line":2},"1":{"loc":{"start":{"line":2,"column":57},"end":{"line":12,"column":2}},"type":"cond-expr","locations":[{"start":{"line":2,"column":74},"end":{"line":9,"column":1}},{"start":{"line":9,"column":6},"end":{"line":12,"column":1}}],"line":2},"2":{"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"type":"if","locations":[{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},{"start":{},"end":{}}],"line":3},"3":{"loc":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"type":"if","locations":[{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},{"start":{},"end":{}}],"line":5},"4":{"loc":{"start":{"line":5,"column":8},"end":{"line":5,"column":85}},"type":"binary-expr","locations":[{"start":{"line":5,"column":8},"end":{"line":5,"column":13}},{"start":{"line":5,"column":18},"end":{"line":5,"column":84}}],"line":5},"5":{"loc":{"start":{"line":5,"column":18},"end":{"line":5,"column":84}},"type":"cond-expr","locations":[{"start":{"line":5,"column":34},"end":{"line":5,"column":47}},{"start":{"line":5,"column":50},"end":{"line":5,"column":84}}],"line":5},"6":{"loc":{"start":{"line":5,"column":50},"end":{"line":5,"column":84}},"type":"binary-expr","locations":[{"start":{"line":5,"column":50},"end":{"line":5,"column":63}},{"start":{"line":5,"column":67},"end":{"line":5,"column":84}}],"line":5},"7":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},{"start":{},"end":{}}],"line":10},"8":{"loc":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"type":"binary-expr","locations":[{"start":{"line":13,"column":26},"end":{"line":13,"column":30}},{"start":{"line":13,"column":34},"end":{"line":13,"column":57}},{"start":{"line":13,"column":63},"end":{"line":17,"column":1}}],"line":13},"9":{"loc":{"start":{"line":13,"column":63},"end":{"line":17,"column":1}},"type":"cond-expr","locations":[{"start":{"line":13,"column":80},"end":{"line":15,"column":1}},{"start":{"line":15,"column":5},"end":{"line":17,"column":1}}],"line":13},"10":{"loc":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"type":"binary-expr","locations":[{"start":{"line":18,"column":20},"end":{"line":18,"column":24}},{"start":{"line":18,"column":28},"end":{"line":18,"column":45}},{"start":{"line":18,"column":50},"end":{"line":24,"column":1}}],"line":18},"11":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},{"start":{},"end":{}}],"line":19},"12":{"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":29}},"type":"binary-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":11}},{"start":{"line":19,"column":15},"end":{"line":19,"column":29}}],"line":19},"13":{"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},{"start":{},"end":{}}],"line":21},"14":{"loc":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},{"start":{},"end":{}}],"line":21},"15":{"loc":{"start":{"line":21,"column":44},"end":{"line":21,"column":107}},"type":"binary-expr","locations":[{"start":{"line":21,"column":44},"end":{"line":21,"column":59}},{"start":{"line":21,"column":63},"end":{"line":21,"column":107}}],"line":21},"16":{"loc":{"start":{"line":25,"column":19},"end":{"line":27,"column":1}},"type":"binary-expr","locations":[{"start":{"line":25,"column":20},"end":{"line":25,"column":24}},{"start":{"line":25,"column":28},"end":{"line":25,"column":45}},{"start":{"line":25,"column":50},"end":{"line":27,"column":1}}],"line":25},"17":{"loc":{"start":{"line":26,"column":21},"end":{"line":26,"column":126}},"type":"if","locations":[{"start":{"line":26,"column":21},"end":{"line":26,"column":126}},{"start":{},"end":{}}],"line":26},"18":{"loc":{"start":{"line":26,"column":25},"end":{"line":26,"column":93}},"type":"binary-expr","locations":[{"start":{"line":26,"column":25},"end":{"line":26,"column":40}},{"start":{"line":26,"column":44},"end":{"line":26,"column":93}}],"line":26}},"s":{"0":1,"1":56,"2":56,"3":56,"4":56,"5":56,"6":9,"7":56,"8":0,"9":0,"10":0,"11":1,"12":0,"13":0,"14":1,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":1,"25":50,"26":56,"27":56,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1},"f":{"0":56,"1":9,"2":0,"3":0,"4":0,"5":1,"6":50},"b":{"0":[1,1,1],"1":[1,0],"2":[56,0],"3":[56,0],"4":[56,56],"5":[0,56],"6":[56,0],"7":[0,0],"8":[1,1,1],"9":[1,0],"10":[1,1,1],"11":[1,0],"12":[1,1],"13":[0,0],"14":[0,0],"15":[0,0],"16":[1,1,1],"17":[56,0],"18":[56,56]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/index.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,qDAAuC;AAEvC,0CAA0C;AAC7B,QAAA,cAAc,GAAG,EAAE,CAAC;AACjC,8CAA4B;AAC5B,mDAAiC;AACjC,uDAAqC;AACrC,uDAAqC;AACrC,uDAAqC;AACrC,uDAAqC;AACrC,uDAAqC;AACrC,uDAAqC;AACrC,8DAA4C;AAC5C,oEAAkD;AAClD,mEAAiD;AACjD,2DAAyC;AACzC,2DAAyC;AACzC,iEAA+C;AAC/C,yDAAuC;AACvC,6DAA2C;AAC3C,yDAAuC;AACvC,yDAAuC;AACvC,wDAAsC;AACtC,yDAAuC;AACvC,6DAA2C;AAC3C,sDAAoC;AACpC,iEAA+C;AAC/C,6DAA2C;AAC3C,uDAAqC;AACrC,uDAAqC;AACrC,6DAA2C;AAC3C,oEAAkD;AAClD,2EAAyD;AACzD,wEAAsD;AACtD,kEAAgD;AAChD,0DAAwC;AACxC,gFAA8D;AAC9D,0EAAwD;AACxD,yDAAuC;AACvC,0DAAwC;AACxC,qEAAmD;AACnD,gEAA8C;AAC9C,yDAAuC;AACvC,yDAAuC;AACvC,sEAAoD;AACpD,yEAAuD;AACvD,sEAAoD;AACpD,4EAA0D;AAC1D,gDAA8B;AAC9B,yCAAuB;AACvB,+CAA6B;AAC7B,8CAA4B;AAC5B,kDAAgC;AAChC,8CAA4B","sourcesContent":["import * as MF from './MessageFactory';\n\n// tslint:disable-next-line: variable-name\nexport const MessageFactory = MF;\nexport * from './Constants';\nexport * from './domain/Address';\nexport * from './domain/AddressIPv4';\nexport * from './domain/AddressIPv6';\nexport * from './domain/AddressTor2';\nexport * from './domain/AddressTor3';\nexport * from './domain/AddressType';\nexport * from './domain/NetworkType';\nexport * from './flags/ChannelFeatureFlags';\nexport * from './flags/ChannelUpdateMessageFlags';\nexport * from './flags/ChanneUpdateChannelFlags';\nexport * from './flags/InitFeatureFlags';\nexport * from './flags/NodeFeatureFlags';\nexport * from './flags/QueryChannelRangeFlags';\nexport * from './flags/QueryScidFlags';\nexport * from './gossip/ChannelRangeQuery';\nexport * from './gossip/ChannelsQuery';\nexport * from './gossip/GossipEmitter';\nexport * from './gossip/GossipFilter';\nexport * from './gossip/GossipManager';\nexport * from './gossip/GossipMemoryStore';\nexport * from './gossip/GossipPeer';\nexport * from './gossip/GossipQueriesReceiver';\nexport * from './gossip/GossipQueriesSync';\nexport * from './gossip/GossipRelay';\nexport * from './gossip/GossipStore';\nexport * from './gossip/GossipSyncWatcher';\nexport * from './gossip/IGossipFilterChainClient';\nexport * from './messages/AnnouncementSignaturesMessage';\nexport * from './messages/ChannelAnnouncementMessage';\nexport * from './messages/ChannelUpdateMessage';\nexport * from './messages/ErrorMessage';\nexport * from './messages/ExtendedChannelAnnouncementMessage';\nexport * from './messages/GossipTimestampFilterMessage';\nexport * from './messages/InitMessage';\nexport * from './messages/IWireMessage';\nexport * from './messages/NodeAnnouncementMessage';\nexport * from './messages/OpenChannelMessage';\nexport * from './messages/PingMessage';\nexport * from './messages/PongMessage';\nexport * from './messages/QueryChannelRangeMessage';\nexport * from './messages/QueryShortChannelIdsMessage';\nexport * from './messages/ReplyChannelRangeMessage';\nexport * from './messages/ReplyShortChannelIdsEndMessage';\nexport * from './MessageType';\nexport * from './Peer';\nexport * from './PeerServer';\nexport * from './PeerState';\nexport * from './PingPongState';\nexport * from './WireError';\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"91a0130823ea255a9e6fea04e9293690e497a821","contentHash":"0f6cb2e367b784a39d82bb698ec0c2bcb2d0c9f9257081dfb2a5b13fd5bf958b"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/MessageFactory.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/MessageFactory.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":4,"column":31},"end":{"line":4,"column":73}},"3":{"start":{"line":5,"column":37},"end":{"line":5,"column":85}},"4":{"start":{"line":6,"column":31},"end":{"line":6,"column":73}},"5":{"start":{"line":7,"column":23},"end":{"line":7,"column":57}},"6":{"start":{"line":8,"column":39},"end":{"line":8,"column":89}},"7":{"start":{"line":9,"column":22},"end":{"line":9,"column":55}},"8":{"start":{"line":10,"column":34},"end":{"line":10,"column":79}},"9":{"start":{"line":11,"column":29},"end":{"line":11,"column":69}},"10":{"start":{"line":12,"column":22},"end":{"line":12,"column":55}},"11":{"start":{"line":13,"column":22},"end":{"line":13,"column":55}},"12":{"start":{"line":14,"column":35},"end":{"line":14,"column":81}},"13":{"start":{"line":15,"column":38},"end":{"line":15,"column":87}},"14":{"start":{"line":16,"column":35},"end":{"line":16,"column":81}},"15":{"start":{"line":17,"column":41},"end":{"line":17,"column":93}},"16":{"start":{"line":18,"column":26},"end":{"line":18,"column":63}},"17":{"start":{"line":19,"column":22},"end":{"line":19,"column":46}},"18":{"start":{"line":21,"column":17},"end":{"line":21,"column":39}},"19":{"start":{"line":22,"column":4},"end":{"line":56,"column":5}},"20":{"start":{"line":25,"column":12},"end":{"line":25,"column":65}},"21":{"start":{"line":27,"column":12},"end":{"line":27,"column":67}},"22":{"start":{"line":29,"column":12},"end":{"line":29,"column":65}},"23":{"start":{"line":31,"column":12},"end":{"line":31,"column":65}},"24":{"start":{"line":34,"column":12},"end":{"line":34,"column":79}},"25":{"start":{"line":36,"column":12},"end":{"line":36,"column":83}},"26":{"start":{"line":38,"column":12},"end":{"line":38,"column":73}},"27":{"start":{"line":41,"column":12},"end":{"line":41,"column":89}},"28":{"start":{"line":43,"column":12},"end":{"line":43,"column":95}},"29":{"start":{"line":45,"column":12},"end":{"line":45,"column":83}},"30":{"start":{"line":47,"column":12},"end":{"line":47,"column":97}},"31":{"start":{"line":49,"column":12},"end":{"line":49,"column":103}},"32":{"start":{"line":51,"column":12},"end":{"line":51,"column":91}},"33":{"start":{"line":53,"column":12},"end":{"line":53,"column":91}},"34":{"start":{"line":55,"column":12},"end":{"line":55,"column":99}},"35":{"start":{"line":58,"column":0},"end":{"line":58,"column":34}}},"fnMap":{"0":{"name":"deserialize","decl":{"start":{"line":20,"column":9},"end":{"line":20,"column":20}},"loc":{"start":{"line":20,"column":29},"end":{"line":57,"column":1}},"line":20}},"branchMap":{"0":{"loc":{"start":{"line":22,"column":4},"end":{"line":56,"column":5}},"type":"switch","locations":[{"start":{"line":24,"column":8},"end":{"line":25,"column":65}},{"start":{"line":26,"column":8},"end":{"line":27,"column":67}},{"start":{"line":28,"column":8},"end":{"line":29,"column":65}},{"start":{"line":30,"column":8},"end":{"line":31,"column":65}},{"start":{"line":33,"column":8},"end":{"line":34,"column":79}},{"start":{"line":35,"column":8},"end":{"line":36,"column":83}},{"start":{"line":37,"column":8},"end":{"line":38,"column":73}},{"start":{"line":40,"column":8},"end":{"line":41,"column":89}},{"start":{"line":42,"column":8},"end":{"line":43,"column":95}},{"start":{"line":44,"column":8},"end":{"line":45,"column":83}},{"start":{"line":46,"column":8},"end":{"line":47,"column":97}},{"start":{"line":48,"column":8},"end":{"line":49,"column":103}},{"start":{"line":50,"column":8},"end":{"line":51,"column":91}},{"start":{"line":52,"column":8},"end":{"line":53,"column":91}},{"start":{"line":54,"column":8},"end":{"line":55,"column":99}}],"line":22}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1273,"19":1273,"20":18,"21":1,"22":0,"23":0,"24":0,"25":0,"26":0,"27":493,"28":266,"29":494,"30":0,"31":0,"32":0,"33":0,"34":0,"35":1},"f":{"0":1273},"b":{"0":[18,1,0,0,0,0,0,493,266,494,0,0,0,0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/MessageFactory.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/MessageFactory.ts"],"names":[],"mappings":";;;AAAA,0EAAuE;AACvE,sFAAmF;AACnF,0EAAuE;AACvE,0DAAuD;AACvD,0FAAuF;AACvF,wDAAqD;AAErD,gFAA6E;AAC7E,sEAAmE;AACnE,wDAAqD;AACrD,wDAAqD;AACrD,kFAA+E;AAC/E,wFAAqF;AACrF,kFAA+E;AAC/E,8FAA2F;AAC3F,gEAA6D;AAC7D,+CAA4C;AAE5C,SAAgB,WAAW,CAAC,MAAc;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAEpC,QAAQ,IAAI,EAAE;QACZ,mBAAmB;QACnB,KAAK,yBAAW,CAAC,IAAI;YACnB,OAAO,yBAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,yBAAW,CAAC,KAAK;YACpB,OAAO,2BAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC1C,KAAK,yBAAW,CAAC,IAAI;YACnB,OAAO,yBAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzC,KAAK,yBAAW,CAAC,IAAI;YACnB,OAAO,yBAAW,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAEzC,mBAAmB;QACnB,KAAK,yBAAW,CAAC,WAAW;YAC1B,OAAO,uCAAkB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAChD,KAAK,yBAAW,CAAC,aAAa;YAC5B,OAAO,2CAAoB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClD,KAAK,yBAAW,CAAC,QAAQ;YACvB,OAAO,iCAAe,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE7C,kBAAkB;QAClB,KAAK,yBAAW,CAAC,gBAAgB;YAC/B,OAAO,iDAAuB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrD,KAAK,yBAAW,CAAC,mBAAmB;YAClC,OAAO,uDAA0B,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACxD,KAAK,yBAAW,CAAC,aAAa;YAC5B,OAAO,2CAAoB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAClD,KAAK,yBAAW,CAAC,oBAAoB;YACnC,OAAO,yDAA2B,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACzD,KAAK,yBAAW,CAAC,uBAAuB;YACtC,OAAO,+DAA8B,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC5D,KAAK,yBAAW,CAAC,iBAAiB;YAChC,OAAO,mDAAwB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtD,KAAK,yBAAW,CAAC,iBAAiB;YAChC,OAAO,mDAAwB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACtD,KAAK,yBAAW,CAAC,qBAAqB;YACpC,OAAO,2DAA4B,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;KAC3D;AACH,CAAC;AAxCD,kCAwCC","sourcesContent":["import { AcceptChannelMessage } from './messages/AcceptChannelMessage';\nimport { ChannelAnnouncementMessage } from './messages/ChannelAnnouncementMessage';\nimport { ChannelUpdateMessage } from './messages/ChannelUpdateMessage';\nimport { ErrorMessage } from './messages/ErrorMessage';\nimport { GossipTimestampFilterMessage } from './messages/GossipTimestampFilterMessage';\nimport { InitMessage } from './messages/InitMessage';\nimport { IWireMessage } from './messages/IWireMessage';\nimport { NodeAnnouncementMessage } from './messages/NodeAnnouncementMessage';\nimport { OpenChannelMessage } from './messages/OpenChannelMessage';\nimport { PingMessage } from './messages/PingMessage';\nimport { PongMessage } from './messages/PongMessage';\nimport { QueryChannelRangeMessage } from './messages/QueryChannelRangeMessage';\nimport { QueryShortChannelIdsMessage } from './messages/QueryShortChannelIdsMessage';\nimport { ReplyChannelRangeMessage } from './messages/ReplyChannelRangeMessage';\nimport { ReplyShortChannelIdsEndMessage } from './messages/ReplyShortChannelIdsEndMessage';\nimport { ShutdownMessage } from './messages/ShutdownMessage';\nimport { MessageType } from './MessageType';\n\nexport function deserialize(buffer: Buffer): IWireMessage {\n  const type = buffer.readUInt16BE(0);\n\n  switch (type) {\n    // control messages\n    case MessageType.Init:\n      return InitMessage.deserialize(buffer);\n    case MessageType.Error:\n      return ErrorMessage.deserialize(buffer);\n    case MessageType.Ping:\n      return PingMessage.deserialize(buffer);\n    case MessageType.Pong:\n      return PongMessage.deserialize(buffer);\n\n    // channel messages\n    case MessageType.OpenChannel:\n      return OpenChannelMessage.deserialize(buffer);\n    case MessageType.AcceptChannel:\n      return AcceptChannelMessage.deserialize(buffer);\n    case MessageType.Shutdown:\n      return ShutdownMessage.deserialize(buffer);\n\n    // gossip messages\n    case MessageType.NodeAnnouncement:\n      return NodeAnnouncementMessage.deserialize(buffer);\n    case MessageType.ChannelAnnouncement:\n      return ChannelAnnouncementMessage.deserialize(buffer);\n    case MessageType.ChannelUpdate:\n      return ChannelUpdateMessage.deserialize(buffer);\n    case MessageType.QueryShortChannelIds:\n      return QueryShortChannelIdsMessage.deserialize(buffer);\n    case MessageType.ReplyShortChannelIdsEnd:\n      return ReplyShortChannelIdsEndMessage.deserialize(buffer);\n    case MessageType.QueryChannelRange:\n      return QueryChannelRangeMessage.deserialize(buffer);\n    case MessageType.ReplyChannelRange:\n      return ReplyChannelRangeMessage.deserialize(buffer);\n    case MessageType.GossipTimestampFilter:\n      return GossipTimestampFilterMessage.deserialize(buffer);\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1dda052fe93ab7f8a87732f41a8a65bda6f5baf8","contentHash":"c17ad06b87116886cb15d6a5a94cef37f2d230b53d43dbe8d158d5c3b4ccf5eb"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/AcceptChannelMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/AcceptChannelMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":38}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":16},"end":{"line":5,"column":42}},"4":{"start":{"line":6,"column":22},"end":{"line":6,"column":47}},"5":{"start":{"line":7,"column":19},"end":{"line":7,"column":51}},"6":{"start":{"line":22,"column":8},"end":{"line":22,"column":46}},"7":{"start":{"line":29,"column":25},"end":{"line":29,"column":51}},"8":{"start":{"line":30,"column":23},"end":{"line":30,"column":52}},"9":{"start":{"line":31,"column":8},"end":{"line":31,"column":30}},"10":{"start":{"line":32,"column":8},"end":{"line":32,"column":59}},"11":{"start":{"line":33,"column":8},"end":{"line":33,"column":85}},"12":{"start":{"line":34,"column":8},"end":{"line":34,"column":97}},"13":{"start":{"line":35,"column":8},"end":{"line":35,"column":90}},"14":{"start":{"line":36,"column":8},"end":{"line":36,"column":88}},"15":{"start":{"line":37,"column":8},"end":{"line":37,"column":54}},"16":{"start":{"line":38,"column":8},"end":{"line":38,"column":53}},"17":{"start":{"line":39,"column":8},"end":{"line":39,"column":58}},"18":{"start":{"line":40,"column":8},"end":{"line":40,"column":54}},"19":{"start":{"line":41,"column":8},"end":{"line":41,"column":60}},"20":{"start":{"line":42,"column":8},"end":{"line":42,"column":57}},"21":{"start":{"line":43,"column":8},"end":{"line":43,"column":64}},"22":{"start":{"line":44,"column":8},"end":{"line":44,"column":54}},"23":{"start":{"line":45,"column":8},"end":{"line":45,"column":64}},"24":{"start":{"line":47,"column":8},"end":{"line":56,"column":11}},"25":{"start":{"line":48,"column":12},"end":{"line":55,"column":13}},"26":{"start":{"line":50,"column":20},"end":{"line":50,"column":77}},"27":{"start":{"line":51,"column":20},"end":{"line":51,"column":32}},"28":{"start":{"line":54,"column":20},"end":{"line":54,"column":33}},"29":{"start":{"line":57,"column":8},"end":{"line":57,"column":24}},"30":{"start":{"line":63,"column":23},"end":{"line":63,"column":49}},"31":{"start":{"line":64,"column":8},"end":{"line":64,"column":40}},"32":{"start":{"line":65,"column":8},"end":{"line":65,"column":51}},"33":{"start":{"line":66,"column":8},"end":{"line":66,"column":58}},"34":{"start":{"line":67,"column":8},"end":{"line":67,"column":66}},"35":{"start":{"line":68,"column":8},"end":{"line":68,"column":63}},"36":{"start":{"line":69,"column":8},"end":{"line":69,"column":57}},"37":{"start":{"line":70,"column":8},"end":{"line":70,"column":48}},"38":{"start":{"line":71,"column":8},"end":{"line":71,"column":47}},"39":{"start":{"line":72,"column":8},"end":{"line":72,"column":52}},"40":{"start":{"line":73,"column":8},"end":{"line":73,"column":46}},"41":{"start":{"line":74,"column":8},"end":{"line":74,"column":52}},"42":{"start":{"line":75,"column":8},"end":{"line":75,"column":49}},"43":{"start":{"line":76,"column":8},"end":{"line":76,"column":56}},"44":{"start":{"line":77,"column":8},"end":{"line":77,"column":46}},"45":{"start":{"line":78,"column":8},"end":{"line":78,"column":56}},"46":{"start":{"line":80,"column":8},"end":{"line":84,"column":9}},"47":{"start":{"line":81,"column":12},"end":{"line":81,"column":35}},"48":{"start":{"line":82,"column":12},"end":{"line":82,"column":67}},"49":{"start":{"line":83,"column":12},"end":{"line":83,"column":58}},"50":{"start":{"line":85,"column":8},"end":{"line":85,"column":33}},"51":{"start":{"line":88,"column":0},"end":{"line":88,"column":52}},"52":{"start":{"line":89,"column":0},"end":{"line":89,"column":68}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":18,"column":4},"end":{"line":18,"column":5}},"loc":{"start":{"line":18,"column":18},"end":{"line":23,"column":5}},"line":18},"1":{"name":"(anonymous_1)","decl":{"start":{"line":28,"column":4},"end":{"line":28,"column":5}},"loc":{"start":{"line":28,"column":28},"end":{"line":58,"column":5}},"line":28},"2":{"name":"(anonymous_2)","decl":{"start":{"line":47,"column":41},"end":{"line":47,"column":42}},"loc":{"start":{"line":47,"column":64},"end":{"line":56,"column":9}},"line":47},"3":{"name":"(anonymous_3)","decl":{"start":{"line":62,"column":4},"end":{"line":62,"column":5}},"loc":{"start":{"line":62,"column":16},"end":{"line":86,"column":5}},"line":62}},"branchMap":{"0":{"loc":{"start":{"line":48,"column":12},"end":{"line":55,"column":13}},"type":"switch","locations":[{"start":{"line":49,"column":16},"end":{"line":52,"column":17}},{"start":{"line":53,"column":16},"end":{"line":54,"column":33}}],"line":48},"1":{"loc":{"start":{"line":80,"column":8},"end":{"line":84,"column":9}},"type":"if","locations":[{"start":{"line":80,"column":8},"end":{"line":84,"column":9}},{"start":{},"end":{}}],"line":80}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":3,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":0,"29":1,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2,"41":2,"42":2,"43":2,"44":2,"45":2,"46":2,"47":1,"48":1,"49":1,"50":2,"51":1,"52":1},"f":{"0":3,"1":1,"2":1,"3":2},"b":{"0":[1,0],"1":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/AcceptChannelMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/AcceptChannelMessage.ts"],"names":[],"mappings":"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","sourcesContent":["import { Value } from '@node-dlc/bitcoin';\nimport { BufferReader, BufferWriter } from '@node-dlc/bufio';\n\nimport { MessageType } from '../MessageType';\nimport { readTlvs } from '../serialize/readTlvs';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * AcceptChannelMessage represents the accept_channel message defined in\n * BOLT #2 of the Lightning Specification. This message is sent by the\n * receiving node in reply to an open_channel message. This message\n * signals agreement to open a channel with the using the values both\n * message. After this message is received by the initiating peer, the\n * initiating peer will create a funding transaction and send the\n * funding_created message.\n */\nexport class AcceptChannelMessage implements IWireMessage {\n  public static type = MessageType.AcceptChannel;\n\n  /**\n   * Deserializes an accept_channel message\n   * @param buf\n   */\n  public static deserialize(buf: Buffer): AcceptChannelMessage {\n    const instance = new AcceptChannelMessage();\n    const reader = new BufferReader(buf);\n\n    reader.readUInt16BE(); // read type\n    instance.temporaryChannelId = reader.readBytes(32);\n    instance.dustLimitSatoshis = Value.fromSats(reader.readUInt64BE());\n    instance.maxHtlcValueInFlightMsat = Value.fromMilliSats(\n      reader.readUInt64BE(),\n    );\n    instance.channelReserveSatoshis = Value.fromSats(reader.readUInt64BE());\n    instance.htlcMinimumMsat = Value.fromMilliSats(reader.readUInt64BE());\n    instance.minimumDepth = reader.readUInt32BE();\n    instance.toSelfDelay = reader.readUInt16BE();\n    instance.maxAcceptedHtlcs = reader.readUInt16BE();\n    instance.fundingPubKey = reader.readBytes(33);\n    instance.revocationBasePoint = reader.readBytes(33);\n    instance.paymentBasePoint = reader.readBytes(33);\n    instance.delayedPaymentBasePoint = reader.readBytes(33);\n    instance.htlcBasePoint = reader.readBytes(33);\n    instance.firstPerCommitmentPoint = reader.readBytes(33);\n\n    // Parse the TLVs\n    readTlvs(reader, (type: bigint, valueReader: BufferReader) => {\n      switch (type) {\n        case BigInt(0): {\n          instance.upfrontShutdownScript = valueReader.readBytes();\n          return true;\n        }\n        default:\n          return false;\n      }\n    });\n\n    return instance;\n  }\n\n  /**\n   * The type for accept_channel message. accept_channel = 33\n   */\n  public type = AcceptChannelMessage.type;\n\n  /**\n   * A unique and temporary identifier used during the channel creation\n   * process. This value is a placeholder for the channel_id that is\n   * created from the funding transaction that can be used after the\n   * funding_created message creates this transaction and the\n   * counterparty uses the channel_id in the funding_signed message.\n   */\n  public temporaryChannelId: Buffer;\n\n  /**\n   * Indicates the value in satoshis under which outputs should not\n   * be created for this node's commitment transaction or HTLC\n   * transactions. This setting indicates the reality that small\n   * transaction outputs are considered non-standard by the network and\n   * will not be propagated.\n   */\n  public dustLimitSatoshis: Value;\n\n  /**\n   * Indicates the minimum amount that the counterparty is supposed to\n   * keep as direct payment. This value must be equal or greater than\n   * dust_limit_satoshis and SHOULD be 1% of the total value of the\n   * channel. This value ensures that there is always value at stake\n   * for a node to lose if it broadcasts an outdated commitment\n   * transaction. Initially this value may not be met but as a channel\n   * is used and the value is met, the reserve must be maintained.\n   */\n  public channelReserveSatoshis: Value;\n\n  /**\n   * Specifies the number of blocks the accepting party considers\n   * reasonable to avoid double-spending of the funding transaction.\n   * Once the funding transaction has reached this depth,\n   * funding_locked messages will be sent by each peer to activate the\n   * channel.\n   */\n  public minimumDepth: number;\n\n  /**\n   * Indicates the number of blocks the remote node must use to delay\n   * retrieval of its to_local outputs. This value is used as input\n   * to OP_CSV to create a relative timelock on RSMCs used in the\n   * to_local output of the commitment transaction and the HTLC\n   * transaction outputs. This allows us to use a penalty transaction\n   * is there is a breach.\n   */\n  public toSelfDelay: number;\n\n  /**\n   * The minimum value in millisatoshi of an HTLC that we are willing\n   * to accept.\n   */\n  public htlcMinimumMsat: Value;\n\n  /**\n   * The maximum value in millisatoshi of outstanding HTLCs we will\n   * allow. This value allows us to limit our overall exposure to\n   * HTLCs.\n   */\n  public maxHtlcValueInFlightMsat: Value;\n\n  /**\n   * The maximum number of outstanding HTLCs that we will allow. This\n   * limits our exposure to a finite amount of HTLCs. This value must\n   * be less than 483 as more than this will cause issues with the\n   * commitment_signed message.\n   */\n  public maxAcceptedHtlcs: number;\n\n  /**\n   * The public key used in the 2-of-2 multisig script of the funding\n   * transaction output. This value must a 33-byte compressed SEC\n   * encoded public key for secp256k1.\n   */\n  public fundingPubKey: Buffer;\n\n  /**\n   * The revocation basepoint is used to derive a blinded\n   * per-commitment revocation public key. Revocation public keys\n   * are used in a remote node's version of the commitment\n   * transactions and HTLC transactions and allow us the ability to\n   * sweep funds if they broadcast a prior state transaction.\n   */\n  public revocationBasePoint: Buffer;\n\n  /**\n   * The payment basepoint is used to derive a per-commitment payment\n   * public key.\n   */\n  public paymentBasePoint: Buffer;\n\n  /**\n   * The delayed payment basepoint is used to derive a per-commitment\n   * payment public key that is sequence delayed. It is used in\n   * in our local commitment transaction as well as the outputs of\n   * HTLC transactions.\n   */\n  public delayedPaymentBasePoint: Buffer;\n\n  /**\n   * The HTLC basepoint is used to derive a per-commitment\n   * public key used in HTLC outputs of the commitment transaction.\n   */\n  public htlcBasePoint: Buffer;\n\n  /**\n   * This is the first per-commitment point to be used for the first\n   * commitment transaction. This point will be used by the remote\n   * node to construct the public keys used when constructing and\n   * signing our version of the commitment transaction. This point\n   * will eventually be revoked and a we will send a new\n   * commitment point.\n   */\n  public firstPerCommitmentPoint: Buffer;\n\n  /**\n   * When option_upfront_shutdown_script is negotiated during init\n   * message exchange, this property will commit to using the provided\n   * scriptPubKey during a mutual close. This value will be used\n   * instead of the scriptPubKey provided during shutdown which\n   * ensures that this scriptPubKey is used on close even if our node\n   * is compromised.\n   */\n  public upfrontShutdownScript: Buffer;\n\n  /**\n   * Serializes the accept_channel message into a Buffer\n   */\n  public serialize(): Buffer {\n    const writer = new BufferWriter();\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.temporaryChannelId);\n    writer.writeUInt64BE(this.dustLimitSatoshis.sats);\n    writer.writeUInt64BE(this.maxHtlcValueInFlightMsat.msats);\n    writer.writeUInt64BE(this.channelReserveSatoshis.sats);\n    writer.writeUInt64BE(this.htlcMinimumMsat.msats);\n    writer.writeUInt32BE(this.minimumDepth);\n    writer.writeUInt16BE(this.toSelfDelay);\n    writer.writeUInt16BE(this.maxAcceptedHtlcs);\n    writer.writeBytes(this.fundingPubKey);\n    writer.writeBytes(this.revocationBasePoint);\n    writer.writeBytes(this.paymentBasePoint);\n    writer.writeBytes(this.delayedPaymentBasePoint);\n    writer.writeBytes(this.htlcBasePoint);\n    writer.writeBytes(this.firstPerCommitmentPoint);\n\n    // upfront_shutdown_script TLV\n    if (this.upfrontShutdownScript) {\n      writer.writeBigSize(0);\n      writer.writeBigSize(this.upfrontShutdownScript.length);\n      writer.writeBytes(this.upfrontShutdownScript);\n    }\n\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"7b04d9745f7e87f298d898835d639164d5599bd8","contentHash":"7109b71c1dfd5b5fcb01287c96dfed3f1e98f9e341dec2b489fa417629c46fe3"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ChannelAnnouncementMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ChannelAnnouncementMessage.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"2":{"start":{"line":3,"column":26},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":15},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"5":{"start":{"line":6,"column":6},"end":{"line":6,"column":68}},"6":{"start":{"line":6,"column":51},"end":{"line":6,"column":63}},"7":{"start":{"line":8,"column":4},"end":{"line":8,"column":39}},"8":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"9":{"start":{"line":10,"column":26},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":4},"end":{"line":11,"column":17}},"11":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"12":{"start":{"line":14,"column":4},"end":{"line":14,"column":72}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":21}},"14":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"16":{"start":{"line":19,"column":31},"end":{"line":19,"column":42}},"17":{"start":{"line":20,"column":17},"end":{"line":20,"column":19}},"18":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"19":{"start":{"line":21,"column":21},"end":{"line":21,"column":141}},"20":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"21":{"start":{"line":21,"column":109},"end":{"line":21,"column":141}},"22":{"start":{"line":22,"column":4},"end":{"line":22,"column":36}},"23":{"start":{"line":23,"column":4},"end":{"line":23,"column":18}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":62}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":44}},"26":{"start":{"line":27,"column":16},"end":{"line":27,"column":42}},"27":{"start":{"line":28,"column":17},"end":{"line":28,"column":44}},"28":{"start":{"line":29,"column":17},"end":{"line":29,"column":44}},"29":{"start":{"line":30,"column":15},"end":{"line":30,"column":56}},"30":{"start":{"line":31,"column":22},"end":{"line":31,"column":47}},"31":{"start":{"line":50,"column":8},"end":{"line":50,"column":66}},"32":{"start":{"line":56,"column":25},"end":{"line":56,"column":57}},"33":{"start":{"line":57,"column":23},"end":{"line":57,"column":56}},"34":{"start":{"line":58,"column":8},"end":{"line":58,"column":30}},"35":{"start":{"line":59,"column":8},"end":{"line":59,"column":55}},"36":{"start":{"line":60,"column":8},"end":{"line":60,"column":55}},"37":{"start":{"line":61,"column":8},"end":{"line":61,"column":58}},"38":{"start":{"line":62,"column":8},"end":{"line":62,"column":58}},"39":{"start":{"line":63,"column":20},"end":{"line":63,"column":41}},"40":{"start":{"line":64,"column":8},"end":{"line":64,"column":80}},"41":{"start":{"line":65,"column":8},"end":{"line":65,"column":50}},"42":{"start":{"line":66,"column":8},"end":{"line":66,"column":94}},"43":{"start":{"line":67,"column":8},"end":{"line":67,"column":48}},"44":{"start":{"line":68,"column":8},"end":{"line":68,"column":48}},"45":{"start":{"line":69,"column":8},"end":{"line":69,"column":52}},"46":{"start":{"line":70,"column":8},"end":{"line":70,"column":52}},"47":{"start":{"line":71,"column":8},"end":{"line":71,"column":24}},"48":{"start":{"line":79,"column":22},"end":{"line":79,"column":48}},"49":{"start":{"line":80,"column":8},"end":{"line":80,"column":37}},"50":{"start":{"line":93,"column":21},"end":{"line":93,"column":57}},"51":{"start":{"line":94,"column":8},"end":{"line":97,"column":69}},"52":{"start":{"line":104,"column":31},"end":{"line":104,"column":55}},"53":{"start":{"line":105,"column":28},"end":{"line":105,"column":49}},"54":{"start":{"line":106,"column":20},"end":{"line":118,"column":14}},"55":{"start":{"line":119,"column":23},"end":{"line":119,"column":66}},"56":{"start":{"line":120,"column":8},"end":{"line":120,"column":40}},"57":{"start":{"line":121,"column":8},"end":{"line":121,"column":47}},"58":{"start":{"line":122,"column":8},"end":{"line":122,"column":47}},"59":{"start":{"line":123,"column":8},"end":{"line":123,"column":50}},"60":{"start":{"line":124,"column":8},"end":{"line":124,"column":50}},"61":{"start":{"line":125,"column":8},"end":{"line":125,"column":42}},"62":{"start":{"line":126,"column":8},"end":{"line":127,"column":46}},"63":{"start":{"line":127,"column":12},"end":{"line":127,"column":46}},"64":{"start":{"line":128,"column":8},"end":{"line":128,"column":42}},"65":{"start":{"line":129,"column":8},"end":{"line":129,"column":58}},"66":{"start":{"line":130,"column":8},"end":{"line":130,"column":40}},"67":{"start":{"line":131,"column":8},"end":{"line":131,"column":40}},"68":{"start":{"line":132,"column":8},"end":{"line":132,"column":44}},"69":{"start":{"line":133,"column":8},"end":{"line":133,"column":44}},"70":{"start":{"line":134,"column":8},"end":{"line":134,"column":33}},"71":{"start":{"line":137,"column":0},"end":{"line":137,"column":64}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":74},"end":{"line":2,"column":75}},"loc":{"start":{"line":2,"column":96},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":38},"end":{"line":6,"column":39}},"loc":{"start":{"line":6,"column":49},"end":{"line":6,"column":65}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":6},"end":{"line":9,"column":7}},"loc":{"start":{"line":9,"column":28},"end":{"line":12,"column":1}},"line":9},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":80},"end":{"line":13,"column":81}},"loc":{"start":{"line":13,"column":95},"end":{"line":15,"column":1}},"line":13},"4":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":5},"end":{"line":15,"column":6}},"loc":{"start":{"line":15,"column":20},"end":{"line":17,"column":1}},"line":15},"5":{"name":"(anonymous_5)","decl":{"start":{"line":18,"column":50},"end":{"line":18,"column":51}},"loc":{"start":{"line":18,"column":65},"end":{"line":24,"column":1}},"line":18},"6":{"name":"(anonymous_6)","decl":{"start":{"line":46,"column":4},"end":{"line":46,"column":5}},"loc":{"start":{"line":46,"column":18},"end":{"line":51,"column":5}},"line":46},"7":{"name":"(anonymous_7)","decl":{"start":{"line":55,"column":4},"end":{"line":55,"column":5}},"loc":{"start":{"line":55,"column":32},"end":{"line":72,"column":5}},"line":55},"8":{"name":"(anonymous_8)","decl":{"start":{"line":78,"column":4},"end":{"line":78,"column":5}},"loc":{"start":{"line":78,"column":21},"end":{"line":81,"column":5}},"line":78},"9":{"name":"(anonymous_9)","decl":{"start":{"line":92,"column":4},"end":{"line":92,"column":5}},"loc":{"start":{"line":92,"column":33},"end":{"line":98,"column":5}},"line":92},"10":{"name":"(anonymous_10)","decl":{"start":{"line":103,"column":4},"end":{"line":103,"column":5}},"loc":{"start":{"line":103,"column":16},"end":{"line":135,"column":5}},"line":103}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":57},"end":{"line":12,"column":2}}],"line":2},"1":{"loc":{"start":{"line":2,"column":57},"end":{"line":12,"column":2}},"type":"cond-expr","locations":[{"start":{"line":2,"column":74},"end":{"line":9,"column":1}},{"start":{"line":9,"column":6},"end":{"line":12,"column":1}}],"line":2},"2":{"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"type":"if","locations":[{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},{"start":{},"end":{}}],"line":3},"3":{"loc":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"type":"if","locations":[{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},{"start":{},"end":{}}],"line":5},"4":{"loc":{"start":{"line":5,"column":8},"end":{"line":5,"column":85}},"type":"binary-expr","locations":[{"start":{"line":5,"column":8},"end":{"line":5,"column":13}},{"start":{"line":5,"column":18},"end":{"line":5,"column":84}}],"line":5},"5":{"loc":{"start":{"line":5,"column":18},"end":{"line":5,"column":84}},"type":"cond-expr","locations":[{"start":{"line":5,"column":34},"end":{"line":5,"column":47}},{"start":{"line":5,"column":50},"end":{"line":5,"column":84}}],"line":5},"6":{"loc":{"start":{"line":5,"column":50},"end":{"line":5,"column":84}},"type":"binary-expr","locations":[{"start":{"line":5,"column":50},"end":{"line":5,"column":63}},{"start":{"line":5,"column":67},"end":{"line":5,"column":84}}],"line":5},"7":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},{"start":{},"end":{}}],"line":10},"8":{"loc":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"type":"binary-expr","locations":[{"start":{"line":13,"column":26},"end":{"line":13,"column":30}},{"start":{"line":13,"column":34},"end":{"line":13,"column":57}},{"start":{"line":13,"column":63},"end":{"line":17,"column":1}}],"line":13},"9":{"loc":{"start":{"line":13,"column":63},"end":{"line":17,"column":1}},"type":"cond-expr","locations":[{"start":{"line":13,"column":80},"end":{"line":15,"column":1}},{"start":{"line":15,"column":5},"end":{"line":17,"column":1}}],"line":13},"10":{"loc":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"type":"binary-expr","locations":[{"start":{"line":18,"column":20},"end":{"line":18,"column":24}},{"start":{"line":18,"column":28},"end":{"line":18,"column":45}},{"start":{"line":18,"column":50},"end":{"line":24,"column":1}}],"line":18},"11":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},{"start":{},"end":{}}],"line":19},"12":{"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":29}},"type":"binary-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":11}},{"start":{"line":19,"column":15},"end":{"line":19,"column":29}}],"line":19},"13":{"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},{"start":{},"end":{}}],"line":21},"14":{"loc":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},{"start":{},"end":{}}],"line":21},"15":{"loc":{"start":{"line":21,"column":44},"end":{"line":21,"column":107}},"type":"binary-expr","locations":[{"start":{"line":21,"column":44},"end":{"line":21,"column":59}},{"start":{"line":21,"column":63},"end":{"line":21,"column":107}}],"line":21},"16":{"loc":{"start":{"line":94,"column":16},"end":{"line":97,"column":67}},"type":"binary-expr","locations":[{"start":{"line":94,"column":16},"end":{"line":94,"column":78}},{"start":{"line":95,"column":12},"end":{"line":95,"column":74}},{"start":{"line":96,"column":12},"end":{"line":96,"column":67}},{"start":{"line":97,"column":12},"end":{"line":97,"column":67}}],"line":94},"17":{"loc":{"start":{"line":126,"column":8},"end":{"line":127,"column":46}},"type":"if","locations":[{"start":{"line":126,"column":8},"end":{"line":127,"column":46}},{"start":{},"end":{}}],"line":126}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":1,"12":0,"13":0,"14":1,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":457,"32":275,"33":275,"34":275,"35":275,"36":275,"37":275,"38":275,"39":275,"40":275,"41":275,"42":275,"43":275,"44":275,"45":275,"46":275,"47":275,"48":149,"49":149,"50":149,"51":149,"52":152,"53":152,"54":152,"55":152,"56":152,"57":152,"58":152,"59":152,"60":152,"61":152,"62":152,"63":1,"64":152,"65":152,"66":152,"67":152,"68":152,"69":152,"70":152,"71":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":1,"6":457,"7":275,"8":149,"9":149,"10":152},"b":{"0":[1,1,1],"1":[1,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[1,1,1],"9":[1,0],"10":[1,1,1],"11":[1,0],"12":[1,1],"13":[0,0],"14":[0,0],"15":[0,0],"16":[149,146,146,146],"17":[1,151]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ChannelAnnouncementMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ChannelAnnouncementMessage.ts"],"names":[],"mappings":"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","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { BitField } from '@node-dlc/common';\nimport { ShortChannelId } from '@node-dlc/common';\nimport { shortChannelIdFromBuffer } from '@node-dlc/common';\nimport * as crypto from '@node-dlc/crypto';\n\nimport { ChannelFeatureFlags } from '../flags/ChannelFeatureFlags';\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * Message contains ownership information regarding a channel.\n * It ties each on-chain Bitcoin key to the associated Lightning\n * node key, and vice-versa. Proviing the existance of a channel\n * between node_1 and node_2 requires:\n *   1. proving that the funding pays to bitcoin_key_1 and bitcoin_key_2\n *   2. proving that node_1 owns bitcoin_key_1\n *   3. proving that node_2 owns bitcoin_key_2\n *\n * This also varifies that both nodes want to announce the channel.\n * The required data to perform all of these proofs is available\n * in this message.\n */\nexport class ChannelAnnouncementMessage implements IWireMessage {\n  /**\n   * Deserializes the Buffer into a ChannelAnnouncementMessage.\n   */\n  public static deserialize(payload: Buffer): ChannelAnnouncementMessage {\n    const instance = new ChannelAnnouncementMessage();\n    const reader = new BufferReader(payload);\n    reader.readUInt16BE(); // read off type\n\n    instance.nodeSignature1 = reader.readBytes(64);\n    instance.nodeSignature2 = reader.readBytes(64);\n    instance.bitcoinSignature1 = reader.readBytes(64);\n    instance.bitcoinSignature2 = reader.readBytes(64);\n\n    const len = reader.readUInt16BE();\n    instance.features = BitField.fromBuffer(reader.readBytes(len));\n    instance.chainHash = reader.readBytes(32);\n    instance.shortChannelId = shortChannelIdFromBuffer(reader.readBytes(8));\n    instance.nodeId1 = reader.readBytes(33);\n    instance.nodeId2 = reader.readBytes(33);\n    instance.bitcoinKey1 = reader.readBytes(33);\n    instance.bitcoinKey2 = reader.readBytes(33);\n    return instance;\n  }\n\n  /**\n   * Message hashing is after the first 258 bytes of the message\n   * and excludes the type and signatures. It performs a double\n   * sha-256 hash of the remaining bytes.\n   */\n  public static hash(msg: ChannelAnnouncementMessage): Buffer {\n    const bytes = msg.serialize().slice(258);\n    return crypto.hash256(bytes);\n  }\n\n  /**\n   * Performs validation the message was signed by each node and the\n   * the corresponding bitcoin key is owned by the owner of the node.\n   *\n   * This is accomplished by:\n   * 1. verifying the bitcoinSignatures1/2 are validate signatures\n   *    from bitcoinKey1/2\n   * 2. verifying the nodeSignature1/2 are validate signatures\n   *     from nodeId1/2\n   */\n  public static verifySignatures(msg: ChannelAnnouncementMessage): boolean {\n    const hash = ChannelAnnouncementMessage.hash(msg);\n    return (\n      crypto.verifySig(hash, msg.bitcoinSignature1, msg.bitcoinKey1) &&\n      crypto.verifySig(hash, msg.bitcoinSignature2, msg.bitcoinKey2) &&\n      crypto.verifySig(hash, msg.nodeSignature1, msg.nodeId1) &&\n      crypto.verifySig(hash, msg.nodeSignature2, msg.nodeId2)\n    );\n  }\n\n  /**\n   * The message type - 256\n   */\n  public type: MessageType = MessageType.ChannelAnnouncement;\n\n  /**\n   * Validate signature from node_1 of the hash containing the\n   * data: features, chainHash, shortChannelId, nodeId1,\n   * nodeId1, bitcoinKey1, and bitcoinKey2.\n   */\n  public nodeSignature1: Buffer;\n\n  /**\n   * Validate signature from node_2 of the hash containing the\n   * data: features, chainHash, shortChannelId, nodeId1,\n   * nodeId1, bitcoinKey1, and bitcoinKey2.\n   */\n  public nodeSignature2: Buffer;\n\n  /**\n   * Validate signature from bitcoin_key_1 of the hash containing the\n   * data: features, chainHash, shortChannelId, nodeId1,\n   * nodeId1, bitcoinKey1, and bitcoinKey2.\n   */\n  public bitcoinSignature1: Buffer;\n\n  /**\n   * Validate signature from bitcoin_key_2 of the hash containing the\n   * data: features, chainHash, shortChannelId, nodeId1,\n   * nodeId1, bitcoinKey1, and bitcoinKey2.\n   */\n  public bitcoinSignature2: Buffer;\n\n  /**\n   * The channel features are a bitmask\n   */\n  public features: BitField<ChannelFeatureFlags>;\n\n  /**\n   * Must set chain_hash to a 32-byte hash that uniquely identifies\n   * the chain that the channel opened within.\n   */\n  public chainHash: Buffer;\n\n  /**\n   * ShortChannelId is a unique reference to the funding output of the\n   * channel.\n   */\n  public shortChannelId: ShortChannelId;\n\n  /**\n   * The 33-byte compressed public key identifying the\n   * numerically greater of the two DER-encoded keys\n   * sorted in ascending numerical order.\n   */\n  public nodeId1: Buffer;\n\n  /**\n   * The 33-byte compressed public key identifying the\n   * numerically greater of the two DER-encoded keys\n   * sorted in ascending numerical order.\n   */\n  public nodeId2: Buffer;\n\n  /**\n   * The 33-byte compressed Bitcoin public key used by\n   * node_id_1 to create the funding transaction.\n   */\n  public bitcoinKey1: Buffer;\n\n  /**\n   * The 33-byte compressed Bitcoin public key used by\n   * node_id_2 to create the funding transaction.\n   */\n  public bitcoinKey2: Buffer;\n\n  /**\n   * Serializes the intancee into a Buffer suitable\n   * for wire transport\n   */\n  public serialize(): Buffer {\n    const featuresBuffer = this.features.toBuffer();\n    const featuresLen = featuresBuffer.length;\n    const len =\n      2 + // type\n      64 + // node_signature_1\n      64 + // node_signature_2\n      64 + // bitcoin_signature_1\n      64 + // bitcoin_signature_2\n      2 + // len\n      featuresLen +\n      32 + // chain_hash\n      8 + // short_channel_id\n      33 + // node_id_1\n      33 + // node_id_2\n      33 + // bitcoin_key_1\n      33; // bitcoin_key_2\n    const writer = new BufferWriter(Buffer.alloc(len));\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.nodeSignature1);\n    writer.writeBytes(this.nodeSignature2);\n    writer.writeBytes(this.bitcoinSignature1);\n    writer.writeBytes(this.bitcoinSignature2);\n    writer.writeUInt16BE(featuresLen);\n    if (featuresLen > 0) writer.writeBytes(featuresBuffer);\n    writer.writeBytes(this.chainHash);\n    writer.writeBytes(this.shortChannelId.toBuffer());\n    writer.writeBytes(this.nodeId1);\n    writer.writeBytes(this.nodeId2);\n    writer.writeBytes(this.bitcoinKey1);\n    writer.writeBytes(this.bitcoinKey2);\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"080e37f19ccf49805f2f51c491c724e63406fb5f","contentHash":"165f874b7090039d57dfe2771cd1fdc8cff2b04915bd735057c5a7f188124aca"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ChannelUpdateMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ChannelUpdateMessage.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"2":{"start":{"line":3,"column":26},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":15},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"5":{"start":{"line":6,"column":6},"end":{"line":6,"column":68}},"6":{"start":{"line":6,"column":51},"end":{"line":6,"column":63}},"7":{"start":{"line":8,"column":4},"end":{"line":8,"column":39}},"8":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"9":{"start":{"line":10,"column":26},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":4},"end":{"line":11,"column":17}},"11":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"12":{"start":{"line":14,"column":4},"end":{"line":14,"column":72}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":21}},"14":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"16":{"start":{"line":19,"column":31},"end":{"line":19,"column":42}},"17":{"start":{"line":20,"column":17},"end":{"line":20,"column":19}},"18":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"19":{"start":{"line":21,"column":21},"end":{"line":21,"column":141}},"20":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"21":{"start":{"line":21,"column":109},"end":{"line":21,"column":141}},"22":{"start":{"line":22,"column":4},"end":{"line":22,"column":36}},"23":{"start":{"line":23,"column":4},"end":{"line":23,"column":18}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":62}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":38}},"26":{"start":{"line":27,"column":18},"end":{"line":27,"column":46}},"27":{"start":{"line":28,"column":16},"end":{"line":28,"column":42}},"28":{"start":{"line":29,"column":17},"end":{"line":29,"column":44}},"29":{"start":{"line":30,"column":15},"end":{"line":30,"column":56}},"30":{"start":{"line":31,"column":19},"end":{"line":31,"column":48}},"31":{"start":{"line":32,"column":22},"end":{"line":32,"column":47}},"32":{"start":{"line":43,"column":8},"end":{"line":43,"column":60}},"33":{"start":{"line":49,"column":8},"end":{"line":49,"column":52}},"34":{"start":{"line":58,"column":8},"end":{"line":58,"column":52}},"35":{"start":{"line":65,"column":25},"end":{"line":65,"column":51}},"36":{"start":{"line":66,"column":23},"end":{"line":66,"column":56}},"37":{"start":{"line":67,"column":8},"end":{"line":67,"column":30}},"38":{"start":{"line":68,"column":8},"end":{"line":68,"column":50}},"39":{"start":{"line":69,"column":8},"end":{"line":69,"column":50}},"40":{"start":{"line":70,"column":8},"end":{"line":70,"column":94}},"41":{"start":{"line":71,"column":8},"end":{"line":71,"column":51}},"42":{"start":{"line":72,"column":8},"end":{"line":72,"column":81}},"43":{"start":{"line":73,"column":8},"end":{"line":73,"column":81}},"44":{"start":{"line":74,"column":8},"end":{"line":74,"column":57}},"45":{"start":{"line":75,"column":8},"end":{"line":75,"column":88}},"46":{"start":{"line":76,"column":8},"end":{"line":76,"column":84}},"47":{"start":{"line":77,"column":8},"end":{"line":77,"column":98}},"48":{"start":{"line":79,"column":8},"end":{"line":81,"column":9}},"49":{"start":{"line":80,"column":12},"end":{"line":80,"column":92}},"50":{"start":{"line":82,"column":8},"end":{"line":82,"column":24}},"51":{"start":{"line":89,"column":20},"end":{"line":89,"column":49}},"52":{"start":{"line":90,"column":8},"end":{"line":90,"column":35}},"53":{"start":{"line":103,"column":23},"end":{"line":103,"column":69}},"54":{"start":{"line":104,"column":8},"end":{"line":104,"column":67}},"55":{"start":{"line":111,"column":8},"end":{"line":111,"column":42}},"56":{"start":{"line":119,"column":8},"end":{"line":119,"column":50}},"57":{"start":{"line":122,"column":8},"end":{"line":130,"column":9}},"58":{"start":{"line":123,"column":12},"end":{"line":123,"column":39}},"59":{"start":{"line":125,"column":13},"end":{"line":130,"column":9}},"60":{"start":{"line":126,"column":12},"end":{"line":126,"column":37}},"61":{"start":{"line":129,"column":12},"end":{"line":129,"column":48}},"62":{"start":{"line":138,"column":8},"end":{"line":138,"column":42}},"63":{"start":{"line":141,"column":8},"end":{"line":146,"column":9}},"64":{"start":{"line":142,"column":12},"end":{"line":142,"column":37}},"65":{"start":{"line":145,"column":12},"end":{"line":145,"column":39}},"66":{"start":{"line":153,"column":20},"end":{"line":164,"column":49}},"67":{"start":{"line":165,"column":23},"end":{"line":165,"column":66}},"68":{"start":{"line":166,"column":8},"end":{"line":166,"column":40}},"69":{"start":{"line":167,"column":8},"end":{"line":167,"column":42}},"70":{"start":{"line":168,"column":8},"end":{"line":168,"column":42}},"71":{"start":{"line":169,"column":8},"end":{"line":169,"column":58}},"72":{"start":{"line":170,"column":8},"end":{"line":170,"column":45}},"73":{"start":{"line":171,"column":8},"end":{"line":171,"column":56}},"74":{"start":{"line":172,"column":8},"end":{"line":172,"column":56}},"75":{"start":{"line":173,"column":8},"end":{"line":173,"column":51}},"76":{"start":{"line":174,"column":8},"end":{"line":174,"column":57}},"77":{"start":{"line":175,"column":8},"end":{"line":175,"column":61}},"78":{"start":{"line":176,"column":8},"end":{"line":176,"column":79}},"79":{"start":{"line":177,"column":8},"end":{"line":179,"column":9}},"80":{"start":{"line":178,"column":12},"end":{"line":178,"column":61}},"81":{"start":{"line":180,"column":8},"end":{"line":180,"column":33}},"82":{"start":{"line":192,"column":20},"end":{"line":201,"column":49}},"83":{"start":{"line":202,"column":23},"end":{"line":202,"column":66}},"84":{"start":{"line":203,"column":8},"end":{"line":203,"column":40}},"85":{"start":{"line":204,"column":8},"end":{"line":204,"column":42}},"86":{"start":{"line":205,"column":8},"end":{"line":205,"column":58}},"87":{"start":{"line":206,"column":8},"end":{"line":206,"column":53}},"88":{"start":{"line":207,"column":8},"end":{"line":207,"column":53}},"89":{"start":{"line":208,"column":8},"end":{"line":208,"column":51}},"90":{"start":{"line":209,"column":8},"end":{"line":209,"column":57}},"91":{"start":{"line":210,"column":8},"end":{"line":210,"column":61}},"92":{"start":{"line":211,"column":8},"end":{"line":211,"column":79}},"93":{"start":{"line":212,"column":8},"end":{"line":214,"column":9}},"94":{"start":{"line":213,"column":12},"end":{"line":213,"column":61}},"95":{"start":{"line":215,"column":8},"end":{"line":215,"column":65}},"96":{"start":{"line":218,"column":0},"end":{"line":218,"column":52}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":74},"end":{"line":2,"column":75}},"loc":{"start":{"line":2,"column":96},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":38},"end":{"line":6,"column":39}},"loc":{"start":{"line":6,"column":49},"end":{"line":6,"column":65}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":6},"end":{"line":9,"column":7}},"loc":{"start":{"line":9,"column":28},"end":{"line":12,"column":1}},"line":9},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":80},"end":{"line":13,"column":81}},"loc":{"start":{"line":13,"column":95},"end":{"line":15,"column":1}},"line":13},"4":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":5},"end":{"line":15,"column":6}},"loc":{"start":{"line":15,"column":20},"end":{"line":17,"column":1}},"line":15},"5":{"name":"(anonymous_5)","decl":{"start":{"line":18,"column":50},"end":{"line":18,"column":51}},"loc":{"start":{"line":18,"column":65},"end":{"line":24,"column":1}},"line":18},"6":{"name":"(anonymous_6)","decl":{"start":{"line":39,"column":4},"end":{"line":39,"column":5}},"loc":{"start":{"line":39,"column":18},"end":{"line":59,"column":5}},"line":39},"7":{"name":"(anonymous_7)","decl":{"start":{"line":64,"column":4},"end":{"line":64,"column":5}},"loc":{"start":{"line":64,"column":32},"end":{"line":83,"column":5}},"line":64},"8":{"name":"(anonymous_8)","decl":{"start":{"line":88,"column":4},"end":{"line":88,"column":5}},"loc":{"start":{"line":88,"column":37},"end":{"line":91,"column":5}},"line":88},"9":{"name":"(anonymous_9)","decl":{"start":{"line":102,"column":4},"end":{"line":102,"column":5}},"loc":{"start":{"line":102,"column":46},"end":{"line":105,"column":5}},"line":102},"10":{"name":"(anonymous_10)","decl":{"start":{"line":110,"column":4},"end":{"line":110,"column":5}},"loc":{"start":{"line":110,"column":33},"end":{"line":112,"column":5}},"line":110},"11":{"name":"(anonymous_11)","decl":{"start":{"line":118,"column":4},"end":{"line":118,"column":5}},"loc":{"start":{"line":118,"column":20},"end":{"line":120,"column":5}},"line":118},"12":{"name":"(anonymous_12)","decl":{"start":{"line":121,"column":4},"end":{"line":121,"column":5}},"loc":{"start":{"line":121,"column":23},"end":{"line":131,"column":5}},"line":121},"13":{"name":"(anonymous_13)","decl":{"start":{"line":137,"column":4},"end":{"line":137,"column":5}},"loc":{"start":{"line":137,"column":19},"end":{"line":139,"column":5}},"line":137},"14":{"name":"(anonymous_14)","decl":{"start":{"line":140,"column":4},"end":{"line":140,"column":5}},"loc":{"start":{"line":140,"column":22},"end":{"line":147,"column":5}},"line":140},"15":{"name":"(anonymous_15)","decl":{"start":{"line":152,"column":4},"end":{"line":152,"column":5}},"loc":{"start":{"line":152,"column":16},"end":{"line":181,"column":5}},"line":152},"16":{"name":"(anonymous_16)","decl":{"start":{"line":191,"column":4},"end":{"line":191,"column":5}},"loc":{"start":{"line":191,"column":15},"end":{"line":216,"column":5}},"line":191}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":57},"end":{"line":12,"column":2}}],"line":2},"1":{"loc":{"start":{"line":2,"column":57},"end":{"line":12,"column":2}},"type":"cond-expr","locations":[{"start":{"line":2,"column":74},"end":{"line":9,"column":1}},{"start":{"line":9,"column":6},"end":{"line":12,"column":1}}],"line":2},"2":{"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"type":"if","locations":[{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},{"start":{},"end":{}}],"line":3},"3":{"loc":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"type":"if","locations":[{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},{"start":{},"end":{}}],"line":5},"4":{"loc":{"start":{"line":5,"column":8},"end":{"line":5,"column":85}},"type":"binary-expr","locations":[{"start":{"line":5,"column":8},"end":{"line":5,"column":13}},{"start":{"line":5,"column":18},"end":{"line":5,"column":84}}],"line":5},"5":{"loc":{"start":{"line":5,"column":18},"end":{"line":5,"column":84}},"type":"cond-expr","locations":[{"start":{"line":5,"column":34},"end":{"line":5,"column":47}},{"start":{"line":5,"column":50},"end":{"line":5,"column":84}}],"line":5},"6":{"loc":{"start":{"line":5,"column":50},"end":{"line":5,"column":84}},"type":"binary-expr","locations":[{"start":{"line":5,"column":50},"end":{"line":5,"column":63}},{"start":{"line":5,"column":67},"end":{"line":5,"column":84}}],"line":5},"7":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},{"start":{},"end":{}}],"line":10},"8":{"loc":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"type":"binary-expr","locations":[{"start":{"line":13,"column":26},"end":{"line":13,"column":30}},{"start":{"line":13,"column":34},"end":{"line":13,"column":57}},{"start":{"line":13,"column":63},"end":{"line":17,"column":1}}],"line":13},"9":{"loc":{"start":{"line":13,"column":63},"end":{"line":17,"column":1}},"type":"cond-expr","locations":[{"start":{"line":13,"column":80},"end":{"line":15,"column":1}},{"start":{"line":15,"column":5},"end":{"line":17,"column":1}}],"line":13},"10":{"loc":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"type":"binary-expr","locations":[{"start":{"line":18,"column":20},"end":{"line":18,"column":24}},{"start":{"line":18,"column":28},"end":{"line":18,"column":45}},{"start":{"line":18,"column":50},"end":{"line":24,"column":1}}],"line":18},"11":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},{"start":{},"end":{}}],"line":19},"12":{"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":29}},"type":"binary-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":11}},{"start":{"line":19,"column":15},"end":{"line":19,"column":29}}],"line":19},"13":{"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},{"start":{},"end":{}}],"line":21},"14":{"loc":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},{"start":{},"end":{}}],"line":21},"15":{"loc":{"start":{"line":21,"column":44},"end":{"line":21,"column":107}},"type":"binary-expr","locations":[{"start":{"line":21,"column":44},"end":{"line":21,"column":59}},{"start":{"line":21,"column":63},"end":{"line":21,"column":107}}],"line":21},"16":{"loc":{"start":{"line":79,"column":8},"end":{"line":81,"column":9}},"type":"if","locations":[{"start":{"line":79,"column":8},"end":{"line":81,"column":9}},{"start":{},"end":{}}],"line":79},"17":{"loc":{"start":{"line":119,"column":15},"end":{"line":119,"column":49}},"type":"cond-expr","locations":[{"start":{"line":119,"column":44},"end":{"line":119,"column":45}},{"start":{"line":119,"column":48},"end":{"line":119,"column":49}}],"line":119},"18":{"loc":{"start":{"line":122,"column":8},"end":{"line":130,"column":9}},"type":"if","locations":[{"start":{"line":122,"column":8},"end":{"line":130,"column":9}},{"start":{"line":125,"column":13},"end":{"line":130,"column":9}}],"line":122},"19":{"loc":{"start":{"line":125,"column":13},"end":{"line":130,"column":9}},"type":"if","locations":[{"start":{"line":125,"column":13},"end":{"line":130,"column":9}},{"start":{"line":128,"column":13},"end":{"line":130,"column":9}}],"line":125},"20":{"loc":{"start":{"line":141,"column":8},"end":{"line":146,"column":9}},"type":"if","locations":[{"start":{"line":141,"column":8},"end":{"line":146,"column":9}},{"start":{"line":144,"column":13},"end":{"line":146,"column":9}}],"line":141},"21":{"loc":{"start":{"line":164,"column":13},"end":{"line":164,"column":48}},"type":"cond-expr","locations":[{"start":{"line":164,"column":43},"end":{"line":164,"column":44}},{"start":{"line":164,"column":47},"end":{"line":164,"column":48}}],"line":164},"22":{"loc":{"start":{"line":177,"column":8},"end":{"line":179,"column":9}},"type":"if","locations":[{"start":{"line":177,"column":8},"end":{"line":179,"column":9}},{"start":{},"end":{}}],"line":177},"23":{"loc":{"start":{"line":201,"column":13},"end":{"line":201,"column":48}},"type":"cond-expr","locations":[{"start":{"line":201,"column":43},"end":{"line":201,"column":44}},{"start":{"line":201,"column":47},"end":{"line":201,"column":48}}],"line":201},"24":{"loc":{"start":{"line":212,"column":8},"end":{"line":214,"column":9}},"type":"if","locations":[{"start":{"line":212,"column":8},"end":{"line":214,"column":9}},{"start":{},"end":{}}],"line":212}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":1,"12":0,"13":0,"14":1,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":509,"33":509,"34":509,"35":496,"36":496,"37":496,"38":496,"39":496,"40":496,"41":496,"42":496,"43":496,"44":496,"45":496,"46":496,"47":496,"48":496,"49":1,"50":496,"51":254,"52":254,"53":254,"54":254,"55":1006,"56":1490,"57":2,"58":1,"59":1,"60":1,"61":0,"62":2,"63":0,"64":0,"65":0,"66":255,"67":255,"68":255,"69":255,"70":255,"71":255,"72":255,"73":255,"74":255,"75":255,"76":255,"77":255,"78":255,"79":255,"80":1,"81":255,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":0,"95":0,"96":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":1,"6":509,"7":496,"8":254,"9":254,"10":1006,"11":1490,"12":2,"13":2,"14":0,"15":255,"16":0},"b":{"0":[1,1,1],"1":[1,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[1,1,1],"9":[1,0],"10":[1,1,1],"11":[1,0],"12":[1,1],"13":[0,0],"14":[0,0],"15":[0,0],"16":[1,495],"17":[746,744],"18":[1,1],"19":[1,0],"20":[0,0],"21":[1,254],"22":[1,254],"23":[0,0],"24":[0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ChannelUpdateMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ChannelUpdateMessage.ts"],"names":[],"mappings":"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","sourcesContent":["import { Value } from '@node-dlc/bitcoin';\nimport { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport {\n  BitField,\n  ShortChannelId,\n  shortChannelIdFromBuffer,\n} from '@node-dlc/common';\nimport * as crypto from '@node-dlc/crypto';\n\nimport { Checksum } from '../domain/Checksum';\nimport { ChannelUpdateMessageFlags } from '../flags/ChannelUpdateMessageFlags';\nimport { ChannelUpdateChannelFlags } from '../flags/ChanneUpdateChannelFlags';\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * After a channel has been announced, each side independently announces the fees\n * and minimum expiry delta it requires to relay HTLCs through this channel. A\n * node can broadcast this message multiple times in order to change fees.\n */\nexport class ChannelUpdateMessage implements IWireMessage {\n  /**\n   * Deserializes the message from a Buffer. The message\n   * is not validated in this function.\n   */\n  public static deserialize(payload: Buffer): ChannelUpdateMessage {\n    const instance = new ChannelUpdateMessage();\n    const reader = new BufferReader(payload);\n    reader.readUInt16BE(); // read off type\n\n    instance.signature = reader.readBytes(64);\n    instance.chainHash = reader.readBytes(32);\n    instance.shortChannelId = shortChannelIdFromBuffer(reader.readBytes(8));\n    instance.timestamp = reader.readUInt32BE();\n    instance.messageFlags = BitField.fromNumber(reader.readUInt8());\n    instance.channelFlags = BitField.fromNumber(reader.readUInt8());\n    instance.cltvExpiryDelta = reader.readUInt16BE();\n    instance.htlcMinimumMsat = Value.fromMilliSats(reader.readUInt64BE());\n    instance.feeBaseMsat = Value.fromMilliSats(reader.readUInt32BE());\n    instance.feeProportionalMillionths = Value.fromMicroSats(\n      reader.readUInt32BE(),\n    );\n\n    // has optional_channel_htlc_max\n    if (instance.hasHtlcMaximumMsatFlag) {\n      instance.htlcMaximumMsat = Value.fromMilliSats(reader.readUInt64BE());\n    }\n\n    return instance;\n  }\n\n  /**\n   * Performs a double SHA-256 hash of the message with all\n   * data excluding the signature data\n   */\n  public static hashForSignature(message: ChannelUpdateMessage): Buffer {\n    const raw = message.serialize().slice(66);\n    return crypto.hash256(raw);\n  }\n\n  /**\n   * Performs signature validation for the message by\n   * hashing the data post signature. A passing signature\n   * indicates that the message was submitted by the node\n   * that owns the channel. Becuase the nodeId is not included\n   * in the message, we need to obtain the nodeId by accessing\n   * the ChannelAnnouncementMessage and determining the public key\n   * @param message\n   * @param pubkey 33-byte ECDSA public key\n   */\n  public static validateSignature(\n    message: ChannelUpdateMessage,\n    pubkey: Buffer,\n  ): boolean {\n    const sigmsg = ChannelUpdateMessage.hashForSignature(message);\n    return crypto.verifySig(sigmsg, message.signature, pubkey);\n  }\n\n  /**\n   * Message type is 258\n   */\n  public type: MessageType = MessageType.ChannelUpdate;\n\n  /**\n   * 64-byte buffer containing the ECDSA secp256k1 signature of the double\n   * SHA256 hash of the message as signed by the originating node.\n   */\n  public signature: Buffer;\n\n  /**\n   * Must set chain_hash to a 32-byte hash that uniquely identifies\n   * the chain that the channel opened within.\n   */\n  public chainHash: Buffer;\n\n  /**\n   * ShortChannelId is a unique reference to the funding output of the\n   * channel.\n   */\n  public shortChannelId: ShortChannelId;\n\n  /**\n   * Timestamp of the update message and is used to indicate ordering of\n   * messages if multiple messages are sent by the same node.\n   */\n  public timestamp: number;\n\n  /**\n   * Indicate the presence of optional fields in the channel_update message.\n   *   bit, field\n   *   0, htlc_maximum_msat\n   */\n  public messageFlags: BitField<ChannelUpdateMessageFlags> = new BitField();\n\n  /**\n   * Indicates the direction of the channel: it identifies the node that this\n   * update originated from and signals various options concerning the channel\n   * such as whether it is disabled.\n   *   bit, name\n   *   0, direction\n   *   1, disabled\n   */\n  public channelFlags: BitField<ChannelUpdateChannelFlags> = new BitField();\n\n  /**\n   * The number of blocks the channel will subtract from an incoming\n   * HTLC's cltv_expiry.\n   */\n  public cltvExpiryDelta: number;\n\n  /**\n   * The minimum HTLC value (in millisatoshi) that the channel peer\n   * will accept.\n   */\n  public htlcMinimumMsat: Value;\n\n  /**\n   * The maximum value (in millisatoshi) it will send through this\n   * channel for a single HTLC. This value must be less than the\n   * channel capacity. This value will only be available when the\n   * message flag option_channel_htlc_max is set.\n   */\n  public htlcMaximumMsat: Value;\n\n  /**\n   * The base fee (in millisatoshi) the channel will charge for\n   * any HTLC.\n   */\n  public feeBaseMsat: Value;\n\n  /**\n   * The amount (in millionths of a satoshi) it will charge per\n   * transferred satoshi.\n   */\n  public feeProportionalMillionths: Value;\n\n  /**\n   * Returns true when message flags have the optional\n   * maximum HTLC msat value available\n   */\n  public get hasHtlcMaximumMsatFlag(): boolean {\n    return this.messageFlags.isSet(0);\n  }\n\n  /**\n   * Direction is determined by channel_flags bit 0.\n   * When set to 0, node_1 is the sender. When set to 1\n   * node_2 is the sender\n   */\n  public get direction(): number {\n    return this.channelFlags.isSet(0) ? 1 : 0;\n  }\n\n  public set direction(val: number) {\n    if (val === 0) {\n      this.channelFlags.unset(0);\n    } else if (val === 1) {\n      this.channelFlags.set(0);\n    } else {\n      throw new Error('Invlid direction');\n    }\n  }\n\n  /**\n   * Disabled flag is determined by channel_flags bit 1.\n   * When set to 0, the channel is active. When set to 1\n   * the channel is disabled.\n   */\n  public get disabled(): boolean {\n    return this.channelFlags.isSet(1);\n  }\n\n  public set disabled(val: boolean) {\n    if (val) {\n      this.channelFlags.set(1);\n    } else {\n      this.channelFlags.unset(1);\n    }\n  }\n\n  /**\n   * Serializes the instance into a Buffer that can be\n   * transmitted over the wire\n   */\n  public serialize(): Buffer {\n    const len =\n      2 + // type\n      64 + // signature\n      32 + // chain_hash\n      8 + // short_channel_id\n      4 + // timestamp\n      1 + // message_flags\n      1 + // channel_flags\n      2 + // cltv_expiry_delta\n      8 + // htlc_minimum_msat\n      4 + // fee_base_msat\n      4 + // fee_proportional_millionths\n      (this.hasHtlcMaximumMsatFlag ? 8 : 0);\n\n    const writer = new BufferWriter(Buffer.alloc(len));\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.signature);\n    writer.writeBytes(this.chainHash);\n    writer.writeBytes(this.shortChannelId.toBuffer());\n    writer.writeUInt32BE(this.timestamp);\n    writer.writeUInt8(this.messageFlags.toNumber());\n    writer.writeUInt8(this.channelFlags.toNumber());\n    writer.writeUInt16BE(this.cltvExpiryDelta);\n    writer.writeUInt64BE(this.htlcMinimumMsat.msats);\n    writer.writeUInt32BE(Number(this.feeBaseMsat.msats));\n    writer.writeUInt32BE(Number(this.feeProportionalMillionths.microsats));\n    if (this.hasHtlcMaximumMsatFlag) {\n      writer.writeUInt64BE(this.htlcMaximumMsat.msats);\n    }\n    return writer.toBuffer();\n  }\n\n  /**\n   * CRC32C checksum is calculated from the raw channel_update\n   * message and excludes the signature and timestamp.\n   *\n   * @remarks\n   * Defined in BOLT 07 gossip queries section:\n   * https://github.com/lightningnetwork/lightning-rfc/blob/master/07-routing-gossip.md#query-messages\n   *\n   */\n  public checksum(): Checksum {\n    const len =\n      2 + // type\n      32 + // chain_hash\n      8 + // short_channel_id\n      1 + // message_flags\n      1 + // channel_flags\n      2 + // cltv_expiry_delta\n      8 + // htlc_minimum_msat\n      4 + // fee_base_msat\n      4 + // fee_proportional_millionths\n      (this.hasHtlcMaximumMsatFlag ? 8 : 0);\n\n    const writer = new BufferWriter(Buffer.alloc(len));\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.chainHash);\n    writer.writeBytes(this.shortChannelId.toBuffer());\n    writer.writeUInt8(Number(this.messageFlags));\n    writer.writeUInt8(Number(this.channelFlags));\n    writer.writeUInt16BE(this.cltvExpiryDelta);\n    writer.writeUInt64BE(this.htlcMinimumMsat.msats);\n    writer.writeUInt32BE(Number(this.feeBaseMsat.msats));\n    writer.writeUInt32BE(Number(this.feeProportionalMillionths.microsats));\n    if (this.hasHtlcMaximumMsatFlag) {\n      writer.writeUInt64BE(this.htlcMaximumMsat.msats);\n    }\n    return Checksum.fromBuffer(writer.toBuffer());\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4367460277649a5d2df1b957e467c8951ddaf575","contentHash":"cd98df4155a2af25c475a8cb471b1454c08e4128efea70b058e55deafc64bde0"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ErrorMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ErrorMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":30}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":47}},"4":{"start":{"line":21,"column":8},"end":{"line":21,"column":52}},"5":{"start":{"line":32,"column":8},"end":{"line":32,"column":27}},"6":{"start":{"line":39,"column":8},"end":{"line":39,"column":36}},"7":{"start":{"line":46,"column":23},"end":{"line":46,"column":56}},"8":{"start":{"line":47,"column":8},"end":{"line":47,"column":30}},"9":{"start":{"line":48,"column":25},"end":{"line":48,"column":43}},"10":{"start":{"line":49,"column":8},"end":{"line":49,"column":51}},"11":{"start":{"line":50,"column":20},"end":{"line":50,"column":41}},"12":{"start":{"line":51,"column":8},"end":{"line":51,"column":46}},"13":{"start":{"line":52,"column":8},"end":{"line":52,"column":24}},"14":{"start":{"line":59,"column":20},"end":{"line":62,"column":28}},"15":{"start":{"line":63,"column":23},"end":{"line":63,"column":66}},"16":{"start":{"line":64,"column":8},"end":{"line":64,"column":40}},"17":{"start":{"line":65,"column":8},"end":{"line":65,"column":45}},"18":{"start":{"line":66,"column":8},"end":{"line":66,"column":47}},"19":{"start":{"line":67,"column":8},"end":{"line":67,"column":37}},"20":{"start":{"line":68,"column":8},"end":{"line":68,"column":33}},"21":{"start":{"line":71,"column":0},"end":{"line":71,"column":36}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":5}},"loc":{"start":{"line":17,"column":18},"end":{"line":40,"column":5}},"line":17},"1":{"name":"(anonymous_1)","decl":{"start":{"line":45,"column":4},"end":{"line":45,"column":5}},"loc":{"start":{"line":45,"column":32},"end":{"line":53,"column":5}},"line":45},"2":{"name":"(anonymous_2)","decl":{"start":{"line":58,"column":4},"end":{"line":58,"column":5}},"loc":{"start":{"line":58,"column":16},"end":{"line":69,"column":5}},"line":58}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":6,"5":6,"6":6,"7":4,"8":4,"9":4,"10":4,"11":4,"12":3,"13":3,"14":2,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":1},"f":{"0":6,"1":4,"2":2},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ErrorMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ErrorMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAE7D,gDAA6C;AAG7C;;;;;;;;;GASG;AACH,MAAa,YAAY;IAAzB;QAkBE;;WAEG;QACI,SAAI,GAAgB,yBAAW,CAAC,KAAK,CAAC;QAE7C;;;;;;;;WAQG;QACH,8DAA8D;QACvD,cAAS,GAAQ,CAAC,CAAC;QAE1B;;;;;WAKG;QACI,SAAI,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAoBxC,CAAC;IA5DC;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,OAAe;QACvC,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY;QAEnC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;QACpC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAE3C,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAEtC,OAAO,QAAQ,CAAC;IAClB,CAAC;IA2BD;;;OAGG;IACI,SAAS;QACd,MAAM,GAAG,GACP,CAAC,GAAG,OAAO;YACX,CAAC,GAAG,aAAa;YACjB,CAAC,GAAG,MAAM;YACV,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AA7DD,oCA6DC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\n\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * This message is defined in BOLT #1 and is used for telling\n * a peer that something is incorrect. The message can indicate\n * which channel is in error, or if channelId is 0, it refers\n * to all channels.\n *\n * These message can indicate protocol violations or internal\n * errors that make channels unusable or that make further\n * communication unusable.\n */\nexport class ErrorMessage implements IWireMessage {\n  /**\n   * Deserializes an error message into an ErrorMessage\n   * instance.\n   */\n  public static deserialize(payload: Buffer): ErrorMessage {\n    const reader = new BufferReader(payload);\n    reader.readUInt16BE(); // read type\n\n    const instance = new ErrorMessage();\n    instance.channelId = reader.readUInt32BE();\n\n    const len = reader.readUInt16BE();\n    instance.data = reader.readBytes(len);\n\n    return instance;\n  }\n\n  /**\n   * Message type 17\n   */\n  public type: MessageType = MessageType.Error;\n\n  /**\n   * channelId is used to indicate the failing channel. It\n   * can have a value of 0 to indicate there is an error with\n   * all channels.\n   *\n   * All error messsagees sent before (and including) the\n   * funding_created messagee should use the temporary_channel_id\n   * instead of the channel_id.\n   */\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  public channelId: any = 0;\n\n  /**\n   * Data field may be empty. May contain the raw, hex-encoded\n   * transaction in reply to a invalid signature check in\n   * funding_created, funding_signed, closing_signed, or\n   * commitment_signed messages.\n   */\n  public data: Buffer = Buffer.alloc(0);\n\n  /**\n   * Serialize the ErorrMessage into a Buffer that\n   * can be send on the wire.\n   */\n  public serialize(): Buffer {\n    const len =\n      2 + // type\n      4 + // channel_id\n      2 + // len\n      this.data.length;\n\n    const writer = new BufferWriter(Buffer.alloc(len));\n    writer.writeUInt16BE(this.type);\n    writer.writeUInt32BE(this.channelId);\n    writer.writeUInt16BE(this.data.length);\n    writer.writeBytes(this.data);\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"21dc5df6e25be5138a7947fd0c3a1ca4613eed7d","contentHash":"735c8c644f51d332b3a815efd9ffbd8549f84f9fafbeb55581c49121104f7883"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/GossipTimestampFilterMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/GossipTimestampFilterMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":46}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":47}},"4":{"start":{"line":8,"column":8},"end":{"line":8,"column":68}},"5":{"start":{"line":11,"column":25},"end":{"line":11,"column":59}},"6":{"start":{"line":12,"column":23},"end":{"line":12,"column":56}},"7":{"start":{"line":13,"column":8},"end":{"line":13,"column":30}},"8":{"start":{"line":14,"column":8},"end":{"line":14,"column":50}},"9":{"start":{"line":15,"column":8},"end":{"line":15,"column":56}},"10":{"start":{"line":16,"column":8},"end":{"line":16,"column":56}},"11":{"start":{"line":17,"column":8},"end":{"line":17,"column":24}},"12":{"start":{"line":20,"column":20},"end":{"line":23,"column":13}},"13":{"start":{"line":24,"column":23},"end":{"line":24,"column":66}},"14":{"start":{"line":25,"column":8},"end":{"line":25,"column":40}},"15":{"start":{"line":26,"column":8},"end":{"line":26,"column":42}},"16":{"start":{"line":27,"column":8},"end":{"line":27,"column":50}},"17":{"start":{"line":28,"column":8},"end":{"line":28,"column":50}},"18":{"start":{"line":29,"column":8},"end":{"line":29,"column":33}},"19":{"start":{"line":32,"column":0},"end":{"line":32,"column":68}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":7,"column":4},"end":{"line":7,"column":5}},"loc":{"start":{"line":7,"column":18},"end":{"line":9,"column":5}},"line":7},"1":{"name":"(anonymous_1)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":10,"column":32},"end":{"line":18,"column":5}},"line":10},"2":{"name":"(anonymous_2)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":19,"column":16},"end":{"line":30,"column":5}},"line":19}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":12,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1},"f":{"0":12,"1":1,"2":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/GossipTimestampFilterMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/GossipTimestampFilterMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAE7D,gDAA6C;AAG7C,MAAa,4BAA4B;IAAzC;QAWS,SAAI,GAAgB,yBAAW,CAAC,qBAAqB,CAAC;IAoB/D,CAAC;IA9BQ,MAAM,CAAC,WAAW,CAAC,OAAe;QACvC,MAAM,QAAQ,GAAG,IAAI,4BAA4B,EAAE,CAAC;QACpD,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,gBAAgB;QACvC,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1C,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAChD,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAChD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAOM,SAAS;QACd,MAAM,GAAG,GACP,CAAC,GAAG,OAAO;YACX,EAAE,GAAG,aAAa;YAClB,CAAC,GAAG,kBAAkB;YACtB,CAAC,CAAC,CAAC,kBAAkB;QAEvB,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC1C,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AA/BD,oEA+BC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\n\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\nexport class GossipTimestampFilterMessage implements IWireMessage {\n  public static deserialize(payload: Buffer): GossipTimestampFilterMessage {\n    const instance = new GossipTimestampFilterMessage();\n    const reader = new BufferReader(payload);\n    reader.readUInt16BE(); // read off type\n    instance.chainHash = reader.readBytes(32);\n    instance.firstTimestamp = reader.readUInt32BE();\n    instance.timestampRange = reader.readUInt32BE();\n    return instance;\n  }\n\n  public type: MessageType = MessageType.GossipTimestampFilter;\n  public chainHash: Buffer;\n  public firstTimestamp: number;\n  public timestampRange: number;\n\n  public serialize(): Buffer {\n    const len =\n      2 + // type\n      32 + // chain_hash\n      4 + // first_timestamp\n      4; // timestamp_range\n\n    const writer = new BufferWriter(Buffer.alloc(len));\n\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.chainHash);\n    writer.writeUInt32BE(this.firstTimestamp);\n    writer.writeUInt32BE(this.timestampRange);\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"55807f4292b7119086114ec96572aaf14a0a2d56","contentHash":"99a0bb4d66b7ebb9a68d679f81a4019616c31203cf97929b7debbdd48a3fff16"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/InitMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/InitMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":22},"end":{"line":6,"column":47}},"5":{"start":{"line":7,"column":19},"end":{"line":7,"column":51}},"6":{"start":{"line":22,"column":8},"end":{"line":22,"column":51}},"7":{"start":{"line":26,"column":8},"end":{"line":26,"column":48}},"8":{"start":{"line":30,"column":8},"end":{"line":30,"column":30}},"9":{"start":{"line":39,"column":25},"end":{"line":39,"column":42}},"10":{"start":{"line":40,"column":23},"end":{"line":40,"column":55}},"11":{"start":{"line":42,"column":8},"end":{"line":42,"column":30}},"12":{"start":{"line":45,"column":22},"end":{"line":45,"column":43}},"13":{"start":{"line":46,"column":19},"end":{"line":46,"column":72}},"14":{"start":{"line":48,"column":22},"end":{"line":48,"column":43}},"15":{"start":{"line":49,"column":19},"end":{"line":49,"column":72}},"16":{"start":{"line":52,"column":8},"end":{"line":52,"column":66}},"17":{"start":{"line":54,"column":8},"end":{"line":67,"column":11}},"18":{"start":{"line":55,"column":12},"end":{"line":66,"column":13}},"19":{"start":{"line":60,"column":20},"end":{"line":63,"column":21}},"20":{"start":{"line":61,"column":42},"end":{"line":61,"column":67}},"21":{"start":{"line":62,"column":24},"end":{"line":62,"column":61}},"22":{"start":{"line":64,"column":20},"end":{"line":64,"column":32}},"23":{"start":{"line":68,"column":8},"end":{"line":68,"column":24}},"24":{"start":{"line":75,"column":23},"end":{"line":75,"column":49}},"25":{"start":{"line":77,"column":8},"end":{"line":77,"column":40}},"26":{"start":{"line":79,"column":22},"end":{"line":79,"column":23}},"27":{"start":{"line":80,"column":8},"end":{"line":80,"column":36}},"28":{"start":{"line":82,"column":25},"end":{"line":82,"column":49}},"29":{"start":{"line":83,"column":28},"end":{"line":83,"column":43}},"30":{"start":{"line":84,"column":8},"end":{"line":84,"column":42}},"31":{"start":{"line":85,"column":8},"end":{"line":85,"column":36}},"32":{"start":{"line":87,"column":8},"end":{"line":91,"column":9}},"33":{"start":{"line":88,"column":12},"end":{"line":88,"column":35}},"34":{"start":{"line":89,"column":12},"end":{"line":89,"column":62}},"35":{"start":{"line":90,"column":12},"end":{"line":90,"column":63}},"36":{"start":{"line":92,"column":8},"end":{"line":92,"column":33}},"37":{"start":{"line":95,"column":0},"end":{"line":95,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":18,"column":4},"end":{"line":18,"column":5}},"loc":{"start":{"line":18,"column":18},"end":{"line":31,"column":5}},"line":18},"1":{"name":"(anonymous_1)","decl":{"start":{"line":38,"column":4},"end":{"line":38,"column":5}},"loc":{"start":{"line":38,"column":31},"end":{"line":69,"column":5}},"line":38},"2":{"name":"(anonymous_2)","decl":{"start":{"line":54,"column":41},"end":{"line":54,"column":42}},"loc":{"start":{"line":54,"column":64},"end":{"line":67,"column":9}},"line":54},"3":{"name":"(anonymous_3)","decl":{"start":{"line":74,"column":4},"end":{"line":74,"column":5}},"loc":{"start":{"line":74,"column":16},"end":{"line":93,"column":5}},"line":74}},"branchMap":{"0":{"loc":{"start":{"line":55,"column":12},"end":{"line":66,"column":13}},"type":"switch","locations":[{"start":{"line":59,"column":16},"end":{"line":65,"column":17}}],"line":55},"1":{"loc":{"start":{"line":87,"column":8},"end":{"line":91,"column":9}},"type":"if","locations":[{"start":{"line":87,"column":8},"end":{"line":91,"column":9}},{"start":{},"end":{}}],"line":87}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":31,"7":31,"8":31,"9":22,"10":22,"11":22,"12":22,"13":20,"14":20,"15":20,"16":20,"17":20,"18":4,"19":4,"20":6,"21":6,"22":4,"23":20,"24":8,"25":8,"26":8,"27":8,"28":8,"29":8,"30":8,"31":8,"32":8,"33":6,"34":6,"35":6,"36":8,"37":1},"f":{"0":31,"1":22,"2":4,"3":8},"b":{"0":[4],"1":[6,2]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/InitMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/InitMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAC7D,6CAA4C;AAG5C,gDAA6C;AAC7C,oDAAiD;AAGjD;;;;;;;;GAQG;AACH,MAAa,WAAW;IAAxB;QA8CE;;WAEG;QACI,SAAI,GAAgB,yBAAW,CAAC,IAAI,CAAC;QAE5C;;WAEG;QACI,aAAQ,GAA+B,IAAI,iBAAQ,EAAE,CAAC;QAE7D;;WAEG;QACI,gBAAW,GAAa,EAAE,CAAC;IA+BpC,CAAC;IAzFC;;;;;OAKG;IACI,MAAM,CAAC,WAAW,CAAC,MAAc;QACtC,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,CAAC;QAExC,sBAAsB;QACtB,MAAM,CAAC,YAAY,EAAE,CAAC;QAEtB,iEAAiE;QACjE,uDAAuD;QACvD,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,iBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAExD,mDAAmD;QACnD,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACpC,MAAM,EAAE,GAAG,iBAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAExD,qEAAqE;QACrE,kBAAkB;QAClB,QAAQ,CAAC,QAAQ,GAAG,IAAI,iBAAQ,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEjD,eAAe;QACf,IAAA,mBAAQ,EAAC,MAAM,EAAE,CAAC,IAAY,EAAE,WAAyB,EAAE,EAAE;YAC3D,QAAQ,IAAI,EAAE;gBACZ,2DAA2D;gBAC3D,4DAA4D;gBAC5D,kCAAkC;gBAClC,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACd,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE;wBACvB,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;wBAC5C,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBACtC;oBACD,OAAO,IAAI,CAAC;iBACb;aACF;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAiBD;;;OAGG;IACI,SAAS;QACd,MAAM,MAAM,GAAG,IAAI,oBAAY,EAAE,CAAC;QAElC,iBAAiB;QACjB,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEhC,cAAc;QACd,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAE5B,iBAAiB;QACjB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAClC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAE5B,sBAAsB;QACtB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;YAC3B,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;YAC/B,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS;YAC5D,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ;SAC7D;QAED,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AA1FD,kCA0FC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { BitField } from '@node-dlc/common';\n\nimport { InitFeatureFlags } from '../flags/InitFeatureFlags';\nimport { MessageType } from '../MessageType';\nimport { readTlvs } from '../serialize/readTlvs';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * InitMessage is defined in BOLT #1. Once authentication is complete, the first\n * message reveals the features supported or required by the node sending the\n * message. This message is sent even on a reconnection.\n *\n * This message contains two fields; global features and local features, that\n * are used to signal how the message should operate. The values of are defined\n * in the BOLT #9.\n */\nexport class InitMessage implements IWireMessage {\n  /**\n   * Processes a buffer containing the message information. This method\n   * will capture the arbitrary length global and local\n   * features into two internal properties of the newly constructed\n   * init message object.\n   */\n  public static deserialize(buffer: Buffer): InitMessage {\n    const instance = new InitMessage();\n    const reader = new BufferReader(buffer);\n\n    // read the type bytes\n    reader.readUInt16BE();\n\n    // read the global features and per the specification, the global\n    // features should not exceed features greater than 13.\n    const gflen = reader.readUInt16BE();\n    const gf = BitField.fromBuffer(reader.readBytes(gflen));\n\n    // Read the local length and parse into a BN value.\n    const lflen = reader.readUInt16BE();\n    const lf = BitField.fromBuffer(reader.readBytes(lflen));\n\n    // construct a single features object by bitwise or of the global and\n    // local features.\n    instance.features = new BitField().or(gf).or(lf);\n\n    // process TLVs\n    readTlvs(reader, (type: bigint, valueReader: BufferReader) => {\n      switch (type) {\n        // Process networks TLVs which is a series of chain_hash 32\n        // byte values. This method will simply read from the stream\n        // until every thing has been read\n        case BigInt(1): {\n          while (!valueReader.eof) {\n            const chainHash = valueReader.readBytes(32);\n            instance.chainHashes.push(chainHash);\n          }\n          return true;\n        }\n      }\n    });\n\n    return instance;\n  }\n\n  /**\n   * Message type 16\n   */\n  public type: MessageType = MessageType.Init;\n\n  /**\n   * BitField containing the features provided in by the local or remote node\n   */\n  public features: BitField<InitFeatureFlags> = new BitField();\n\n  /**\n   * Supported chain_hashes for the remote peer\n   */\n  public chainHashes: Buffer[] = [];\n\n  /**\n   * Serialize will construct a properly formatted message based on the\n   * properties of the configured message.\n   */\n  public serialize(): Buffer {\n    const writer = new BufferWriter();\n\n    // write the type\n    writer.writeUInt16BE(this.type);\n\n    // write gflen\n    const gflen = 0;\n    writer.writeUInt16BE(gflen);\n\n    // write features\n    const features = this.features.toBuffer();\n    const featuresLen = features.length;\n    writer.writeUInt16BE(featuresLen);\n    writer.writeBytes(features);\n\n    // write chainhash tlv\n    if (this.chainHashes.length) {\n      writer.writeBigSize(1); // type\n      writer.writeBigSize(this.chainHashes.length * 32); // length\n      writer.writeBytes(Buffer.concat(this.chainHashes)); // value\n    }\n\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c2b3a989990b0f2ce6f5e085c41968a9064f9265","contentHash":"90c357babdcf080e5c8c5f8239be8c46e70b99dcf4706917fc1eab4d5401b90a"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/NodeAnnouncementMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/NodeAnnouncementMessage.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"2":{"start":{"line":3,"column":26},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":15},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"5":{"start":{"line":6,"column":6},"end":{"line":6,"column":68}},"6":{"start":{"line":6,"column":51},"end":{"line":6,"column":63}},"7":{"start":{"line":8,"column":4},"end":{"line":8,"column":39}},"8":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"9":{"start":{"line":10,"column":26},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":4},"end":{"line":11,"column":17}},"11":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"12":{"start":{"line":14,"column":4},"end":{"line":14,"column":72}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":21}},"14":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"16":{"start":{"line":19,"column":31},"end":{"line":19,"column":42}},"17":{"start":{"line":20,"column":17},"end":{"line":20,"column":19}},"18":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"19":{"start":{"line":21,"column":21},"end":{"line":21,"column":141}},"20":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"21":{"start":{"line":21,"column":109},"end":{"line":21,"column":141}},"22":{"start":{"line":22,"column":4},"end":{"line":22,"column":36}},"23":{"start":{"line":23,"column":4},"end":{"line":23,"column":18}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":62}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":41}},"26":{"start":{"line":27,"column":16},"end":{"line":27,"column":42}},"27":{"start":{"line":28,"column":17},"end":{"line":28,"column":44}},"28":{"start":{"line":29,"column":15},"end":{"line":29,"column":56}},"29":{"start":{"line":30,"column":29},"end":{"line":30,"column":81}},"30":{"start":{"line":31,"column":22},"end":{"line":31,"column":47}},"31":{"start":{"line":32,"column":27},"end":{"line":32,"column":75}},"32":{"start":{"line":43,"column":8},"end":{"line":43,"column":63}},"33":{"start":{"line":50,"column":8},"end":{"line":50,"column":28}},"34":{"start":{"line":53,"column":25},"end":{"line":53,"column":54}},"35":{"start":{"line":54,"column":23},"end":{"line":54,"column":56}},"36":{"start":{"line":55,"column":8},"end":{"line":55,"column":30}},"37":{"start":{"line":56,"column":8},"end":{"line":56,"column":50}},"38":{"start":{"line":57,"column":21},"end":{"line":57,"column":42}},"39":{"start":{"line":58,"column":8},"end":{"line":58,"column":81}},"40":{"start":{"line":59,"column":8},"end":{"line":59,"column":51}},"41":{"start":{"line":60,"column":8},"end":{"line":60,"column":47}},"42":{"start":{"line":61,"column":8},"end":{"line":61,"column":48}},"43":{"start":{"line":62,"column":8},"end":{"line":62,"column":46}},"44":{"start":{"line":63,"column":8},"end":{"line":63,"column":32}},"45":{"start":{"line":64,"column":24},"end":{"line":64,"column":45}},"46":{"start":{"line":65,"column":25},"end":{"line":65,"column":40}},"47":{"start":{"line":66,"column":8},"end":{"line":70,"column":9}},"48":{"start":{"line":67,"column":25},"end":{"line":67,"column":43}},"49":{"start":{"line":68,"column":28},"end":{"line":68,"column":86}},"50":{"start":{"line":69,"column":12},"end":{"line":69,"column":45}},"51":{"start":{"line":71,"column":8},"end":{"line":71,"column":24}},"52":{"start":{"line":79,"column":22},"end":{"line":79,"column":47}},"53":{"start":{"line":80,"column":8},"end":{"line":80,"column":37}},"54":{"start":{"line":86,"column":21},"end":{"line":86,"column":54}},"55":{"start":{"line":87,"column":8},"end":{"line":87,"column":65}},"56":{"start":{"line":90,"column":31},"end":{"line":90,"column":55}},"57":{"start":{"line":91,"column":28},"end":{"line":91,"column":49}},"58":{"start":{"line":93,"column":31},"end":{"line":93,"column":33}},"59":{"start":{"line":94,"column":8},"end":{"line":96,"column":9}},"60":{"start":{"line":95,"column":12},"end":{"line":95,"column":83}},"61":{"start":{"line":99,"column":29},"end":{"line":99,"column":97}},"62":{"start":{"line":99,"column":53},"end":{"line":99,"column":61}},"63":{"start":{"line":99,"column":84},"end":{"line":99,"column":93}},"64":{"start":{"line":100,"column":20},"end":{"line":109,"column":24}},"65":{"start":{"line":110,"column":23},"end":{"line":110,"column":66}},"66":{"start":{"line":111,"column":8},"end":{"line":111,"column":40}},"67":{"start":{"line":112,"column":8},"end":{"line":112,"column":42}},"68":{"start":{"line":113,"column":8},"end":{"line":113,"column":42}},"69":{"start":{"line":114,"column":8},"end":{"line":115,"column":46}},"70":{"start":{"line":115,"column":12},"end":{"line":115,"column":46}},"71":{"start":{"line":116,"column":8},"end":{"line":116,"column":45}},"72":{"start":{"line":117,"column":8},"end":{"line":117,"column":39}},"73":{"start":{"line":118,"column":8},"end":{"line":118,"column":41}},"74":{"start":{"line":119,"column":8},"end":{"line":119,"column":38}},"75":{"start":{"line":120,"column":8},"end":{"line":120,"column":43}},"76":{"start":{"line":121,"column":8},"end":{"line":123,"column":9}},"77":{"start":{"line":122,"column":12},"end":{"line":122,"column":45}},"78":{"start":{"line":124,"column":8},"end":{"line":124,"column":33}},"79":{"start":{"line":127,"column":0},"end":{"line":127,"column":58}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":74},"end":{"line":2,"column":75}},"loc":{"start":{"line":2,"column":96},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":38},"end":{"line":6,"column":39}},"loc":{"start":{"line":6,"column":49},"end":{"line":6,"column":65}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":6},"end":{"line":9,"column":7}},"loc":{"start":{"line":9,"column":28},"end":{"line":12,"column":1}},"line":9},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":80},"end":{"line":13,"column":81}},"loc":{"start":{"line":13,"column":95},"end":{"line":15,"column":1}},"line":13},"4":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":5},"end":{"line":15,"column":6}},"loc":{"start":{"line":15,"column":20},"end":{"line":17,"column":1}},"line":15},"5":{"name":"(anonymous_5)","decl":{"start":{"line":18,"column":50},"end":{"line":18,"column":51}},"loc":{"start":{"line":18,"column":65},"end":{"line":24,"column":1}},"line":18},"6":{"name":"(anonymous_6)","decl":{"start":{"line":39,"column":4},"end":{"line":39,"column":5}},"loc":{"start":{"line":39,"column":18},"end":{"line":51,"column":5}},"line":39},"7":{"name":"(anonymous_7)","decl":{"start":{"line":52,"column":4},"end":{"line":52,"column":5}},"loc":{"start":{"line":52,"column":32},"end":{"line":72,"column":5}},"line":52},"8":{"name":"(anonymous_8)","decl":{"start":{"line":78,"column":4},"end":{"line":78,"column":5}},"loc":{"start":{"line":78,"column":21},"end":{"line":81,"column":5}},"line":78},"9":{"name":"(anonymous_9)","decl":{"start":{"line":85,"column":4},"end":{"line":85,"column":5}},"loc":{"start":{"line":85,"column":33},"end":{"line":88,"column":5}},"line":85},"10":{"name":"(anonymous_10)","decl":{"start":{"line":89,"column":4},"end":{"line":89,"column":5}},"loc":{"start":{"line":89,"column":16},"end":{"line":125,"column":5}},"line":89},"11":{"name":"(anonymous_11)","decl":{"start":{"line":99,"column":48},"end":{"line":99,"column":49}},"loc":{"start":{"line":99,"column":53},"end":{"line":99,"column":61}},"line":99},"12":{"name":"(anonymous_12)","decl":{"start":{"line":99,"column":70},"end":{"line":99,"column":71}},"loc":{"start":{"line":99,"column":84},"end":{"line":99,"column":93}},"line":99}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":57},"end":{"line":12,"column":2}}],"line":2},"1":{"loc":{"start":{"line":2,"column":57},"end":{"line":12,"column":2}},"type":"cond-expr","locations":[{"start":{"line":2,"column":74},"end":{"line":9,"column":1}},{"start":{"line":9,"column":6},"end":{"line":12,"column":1}}],"line":2},"2":{"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"type":"if","locations":[{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},{"start":{},"end":{}}],"line":3},"3":{"loc":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"type":"if","locations":[{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},{"start":{},"end":{}}],"line":5},"4":{"loc":{"start":{"line":5,"column":8},"end":{"line":5,"column":85}},"type":"binary-expr","locations":[{"start":{"line":5,"column":8},"end":{"line":5,"column":13}},{"start":{"line":5,"column":18},"end":{"line":5,"column":84}}],"line":5},"5":{"loc":{"start":{"line":5,"column":18},"end":{"line":5,"column":84}},"type":"cond-expr","locations":[{"start":{"line":5,"column":34},"end":{"line":5,"column":47}},{"start":{"line":5,"column":50},"end":{"line":5,"column":84}}],"line":5},"6":{"loc":{"start":{"line":5,"column":50},"end":{"line":5,"column":84}},"type":"binary-expr","locations":[{"start":{"line":5,"column":50},"end":{"line":5,"column":63}},{"start":{"line":5,"column":67},"end":{"line":5,"column":84}}],"line":5},"7":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},{"start":{},"end":{}}],"line":10},"8":{"loc":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"type":"binary-expr","locations":[{"start":{"line":13,"column":26},"end":{"line":13,"column":30}},{"start":{"line":13,"column":34},"end":{"line":13,"column":57}},{"start":{"line":13,"column":63},"end":{"line":17,"column":1}}],"line":13},"9":{"loc":{"start":{"line":13,"column":63},"end":{"line":17,"column":1}},"type":"cond-expr","locations":[{"start":{"line":13,"column":80},"end":{"line":15,"column":1}},{"start":{"line":15,"column":5},"end":{"line":17,"column":1}}],"line":13},"10":{"loc":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"type":"binary-expr","locations":[{"start":{"line":18,"column":20},"end":{"line":18,"column":24}},{"start":{"line":18,"column":28},"end":{"line":18,"column":45}},{"start":{"line":18,"column":50},"end":{"line":24,"column":1}}],"line":18},"11":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},{"start":{},"end":{}}],"line":19},"12":{"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":29}},"type":"binary-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":11}},{"start":{"line":19,"column":15},"end":{"line":19,"column":29}}],"line":19},"13":{"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},{"start":{},"end":{}}],"line":21},"14":{"loc":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},{"start":{},"end":{}}],"line":21},"15":{"loc":{"start":{"line":21,"column":44},"end":{"line":21,"column":107}},"type":"binary-expr","locations":[{"start":{"line":21,"column":44},"end":{"line":21,"column":59}},{"start":{"line":21,"column":63},"end":{"line":21,"column":107}}],"line":21},"16":{"loc":{"start":{"line":114,"column":8},"end":{"line":115,"column":46}},"type":"if","locations":[{"start":{"line":114,"column":8},"end":{"line":115,"column":46}},{"start":{},"end":{}}],"line":114}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":1,"12":0,"13":0,"14":1,"15":1,"16":1,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":510,"33":510,"34":495,"35":495,"36":495,"37":495,"38":495,"39":495,"40":495,"41":495,"42":495,"43":495,"44":495,"45":495,"46":495,"47":495,"48":495,"49":495,"50":495,"51":495,"52":253,"53":253,"54":253,"55":253,"56":254,"57":254,"58":254,"59":254,"60":254,"61":254,"62":254,"63":254,"64":254,"65":254,"66":254,"67":254,"68":254,"69":254,"70":0,"71":254,"72":254,"73":254,"74":254,"75":254,"76":254,"77":254,"78":254,"79":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":1,"6":510,"7":495,"8":253,"9":253,"10":254,"11":254,"12":254},"b":{"0":[1,1,1],"1":[1,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[1,1,1],"9":[1,0],"10":[1,1,1],"11":[1,0],"12":[1,1],"13":[0,0],"14":[0,0],"15":[0,0],"16":[0,254]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/NodeAnnouncementMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/NodeAnnouncementMessage.ts"],"names":[],"mappings":"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","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { BitField } from '@node-dlc/common';\nimport * as crypto from '@node-dlc/crypto';\n\nimport { deserializeAddress } from '../deserialize/address/deserializeAddress';\nimport { Address } from '../domain/Address';\nimport { NodeFeatureFlags } from '../flags/NodeFeatureFlags';\nimport { MessageType } from '../MessageType';\nimport { serializeAddress } from '../serialize/address/serializeAddress';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * This gossip message allows a node to indicate extra data associated with it,\n * in addition to its public key. To avoid trivial denial of service attacks,\n * nodes not associated with an already known channel are ignored.\n */\nexport class NodeAnnouncementMessage implements IWireMessage {\n  public static deserialize(payload: Buffer): NodeAnnouncementMessage {\n    const instance = new NodeAnnouncementMessage();\n    const reader = new BufferReader(payload);\n    reader.readUInt16BE(); // read off type\n\n    instance.signature = reader.readBytes(64);\n\n    const flen = reader.readUInt16BE();\n    instance.features = BitField.fromBuffer(reader.readBytes(flen));\n\n    instance.timestamp = reader.readUInt32BE();\n    instance.nodeId = reader.readBytes(33);\n    instance.rgbColor = reader.readBytes(3);\n    instance.alias = reader.readBytes(32);\n    instance.addresses = [];\n\n    const addrlen = reader.readUInt16BE(); // number of bytes\n    const startPos = reader.position;\n    while (reader.position < startPos + addrlen) {\n      const type = reader.readUInt8();\n      const address = deserializeAddress(type, reader);\n      instance.addresses.push(address);\n    }\n\n    return instance;\n  }\n\n  /**\n   * Message hashing is after the first 66 bytes of the message\n   * and excludes the type and signature. It performs a double\n   * sha-256 hash of the remaining bytes.\n   */\n  public static hash(msg: NodeAnnouncementMessage): Buffer {\n    const bytes = msg.serialize().slice(66); // type + signature\n    return crypto.hash256(bytes);\n  }\n\n  /**\n   * Verifies the message signature\n   */\n  public static verifySignatures(msg: NodeAnnouncementMessage): boolean {\n    const hash = NodeAnnouncementMessage.hash(msg);\n    return crypto.verifySig(hash, msg.signature, msg.nodeId);\n  }\n\n  /**\n   * Type 257\n   */\n  public type: MessageType = MessageType.NodeAnnouncement;\n\n  /**\n   * Signature of the announcement message by the node's public key\n   * returned as a 64-byte Buffer.\n   */\n  public signature: Buffer;\n\n  public features: BitField<NodeFeatureFlags>;\n\n  public timestamp: number;\n\n  /**\n   * Compressed public key of the node that is a 33-byte\n   * buffer.\n   */\n  public nodeId: Buffer;\n\n  /**\n   * Color of the node returned as a 3-byte Buffer.\n   */\n  public rgbColor: Buffer;\n\n  /**\n   * Alias of the node returned as a 32-byte Buffer.\n   */\n  public alias: Buffer;\n\n  /**\n   * Addresses that the node allow public network connections\n   * on. The type indicates how the address is encoded. Addresses\n   * are in order of connectivity preference. Currently\n   * supported addresses formats are IPv4, IPv6, Tor2 and Tor3\n   */\n  public addresses: Address[] = [];\n\n  public serialize(): Buffer {\n    const featuresBuffer = this.features.toBuffer();\n    const featuresLen = featuresBuffer.length;\n\n    // serialize addresses into buffers so we can obtain the length\n    const addressBuffers = [];\n    for (const address of this.addresses) {\n      addressBuffers.push(serializeAddress(address));\n    }\n\n    // obtain total address length\n    // eslint-disable-next-line\n    const addressBytes: number = addressBuffers.map(b => b.length).reduce((sum, val) => sum + val, 0); // prettier-ignore\n\n    const len =\n      2 + // type\n      64 + // signature\n      2 + // flen\n      featuresLen + // features length\n      4 + // timestamp\n      33 + // node_id\n      3 + // rgb_color\n      32 + // alias\n      2 + // addresses\n      addressBytes; // cumulative addr bytes\n    const writer = new BufferWriter(Buffer.alloc(len));\n\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.signature);\n    writer.writeUInt16BE(featuresLen);\n    if (featuresLen > 0) writer.writeBytes(featuresBuffer);\n    writer.writeUInt32BE(this.timestamp);\n    writer.writeBytes(this.nodeId);\n    writer.writeBytes(this.rgbColor);\n    writer.writeBytes(this.alias);\n    writer.writeUInt16BE(addressBytes);\n    for (const addressBuffer of addressBuffers) {\n      writer.writeBytes(addressBuffer);\n    }\n\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"be6f21689711c1dc92b0090c2149007434cd3307","contentHash":"008a798496eca9f33d43323b57bf482d9c3231abf33fb65159c33683439c49b8"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeAddress.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeAddress.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":57}},"3":{"start":{"line":5,"column":24},"end":{"line":5,"column":50}},"4":{"start":{"line":6,"column":24},"end":{"line":6,"column":50}},"5":{"start":{"line":7,"column":24},"end":{"line":7,"column":50}},"6":{"start":{"line":8,"column":24},"end":{"line":8,"column":50}},"7":{"start":{"line":14,"column":4},"end":{"line":23,"column":5}},"8":{"start":{"line":16,"column":12},"end":{"line":16,"column":63}},"9":{"start":{"line":18,"column":12},"end":{"line":18,"column":63}},"10":{"start":{"line":20,"column":12},"end":{"line":20,"column":63}},"11":{"start":{"line":22,"column":12},"end":{"line":22,"column":63}},"12":{"start":{"line":25,"column":0},"end":{"line":25,"column":44}}},"fnMap":{"0":{"name":"serializeAddress","decl":{"start":{"line":13,"column":9},"end":{"line":13,"column":25}},"loc":{"start":{"line":13,"column":35},"end":{"line":24,"column":1}},"line":13}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":4},"end":{"line":23,"column":5}},"type":"switch","locations":[{"start":{"line":15,"column":8},"end":{"line":16,"column":63}},{"start":{"line":17,"column":8},"end":{"line":18,"column":63}},{"start":{"line":19,"column":8},"end":{"line":20,"column":63}},{"start":{"line":21,"column":8},"end":{"line":22,"column":63}}],"line":14}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":260,"8":256,"9":2,"10":1,"11":1,"12":1},"f":{"0":260},"b":{"0":[256,2,1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeAddress.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeAddress.ts"],"names":[],"mappings":";;;AACA,0DAAuD;AACvD,mDAAgD;AAChD,mDAAgD;AAChD,mDAAgD;AAChD,mDAAgD;AAEhD;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,OAAgB;IAC/C,QAAQ,OAAO,CAAC,IAAI,EAAE;QACpB,KAAK,yBAAW,CAAC,IAAI;YACnB,OAAO,IAAA,6BAAa,EAAC,OAAO,CAAC,CAAC;QAChC,KAAK,yBAAW,CAAC,IAAI;YACnB,OAAO,IAAA,6BAAa,EAAC,OAAO,CAAC,CAAC;QAChC,KAAK,yBAAW,CAAC,IAAI;YACnB,OAAO,IAAA,6BAAa,EAAC,OAAO,CAAC,CAAC;QAChC,KAAK,yBAAW,CAAC,IAAI;YACnB,OAAO,IAAA,6BAAa,EAAC,OAAO,CAAC,CAAC;KACjC;AACH,CAAC;AAXD,4CAWC","sourcesContent":["import { Address } from '../../domain/Address';\nimport { AddressType } from '../../domain/AddressType';\nimport { serializeIPv4 } from './serializeIPv4';\nimport { serializeIPv6 } from './serializeIPv6';\nimport { serializeTor2 } from './serializeTor2';\nimport { serializeTor3 } from './serializeTor3';\n\n/**\n * Serializes an address into a Buffer that can be transmitted\n * over the wire\n */\nexport function serializeAddress(address: Address): Buffer {\n  switch (address.type) {\n    case AddressType.IPv4:\n      return serializeIPv4(address);\n    case AddressType.IPv6:\n      return serializeIPv6(address);\n    case AddressType.TOR2:\n      return serializeTor2(address);\n    case AddressType.TOR3:\n      return serializeTor3(address);\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ecf2bd25f0bf90da98e92fbbee41185f27db3ab6","contentHash":"bc82d6a9b38dc6b39bc1473458260b065995656ce693d308b6b420cc42151f85"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeIPv4.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeIPv4.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":29},"end":{"line":5,"column":60}},"4":{"start":{"line":11,"column":19},"end":{"line":11,"column":60}},"5":{"start":{"line":12,"column":22},"end":{"line":12,"column":80}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":36}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":33}},"8":{"start":{"line":15,"column":4},"end":{"line":15,"column":39}},"9":{"start":{"line":16,"column":4},"end":{"line":16,"column":29}},"10":{"start":{"line":18,"column":0},"end":{"line":18,"column":38}}},"fnMap":{"0":{"name":"serializeIPv4","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":22}},"loc":{"start":{"line":10,"column":32},"end":{"line":17,"column":1}},"line":10}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":256,"5":256,"6":256,"7":256,"8":256,"9":256,"10":1},"f":{"0":256},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeIPv4.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeIPv4.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAG/C,6DAA0D;AAE1D;;;GAGG;AACH,SAAgB,aAAa,CAAC,OAAoB;IAChD,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjD,MAAM,SAAS,GAAG,IAAA,uCAAkB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAVD,sCAUC","sourcesContent":["import { BufferWriter } from '@node-dlc/bufio';\n\nimport { AddressIPv4 } from '../../domain/AddressIPv4';\nimport { ipv4StringToBuffer } from './ipv4StringToBuffer';\n\n/**\n * Serializes an IPv4 address in a Buffer that can be sent\n * over the wire.\n */\nexport function serializeIPv4(address: AddressIPv4): Buffer {\n  const writer = new BufferWriter(Buffer.alloc(7));\n\n  const hostBytes = ipv4StringToBuffer(address.host);\n\n  writer.writeUInt8(address.type);\n  writer.writeBytes(hostBytes);\n  writer.writeUInt16BE(address.port);\n\n  return writer.toBuffer();\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1151df1ee2da9f9781349c706eca40eb0215ce82","contentHash":"8ff4884c5701eeab30083ef75e4e99efee481d445e4c3de208c50fab4780b70a"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/ipv4StringToBuffer.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/ipv4StringToBuffer.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}},"2":{"start":{"line":9,"column":18},"end":{"line":9,"column":33}},"3":{"start":{"line":10,"column":19},"end":{"line":10,"column":34}},"4":{"start":{"line":11,"column":4},"end":{"line":13,"column":5}},"5":{"start":{"line":11,"column":17},"end":{"line":11,"column":18}},"6":{"start":{"line":12,"column":8},"end":{"line":12,"column":39}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":18}},"8":{"start":{"line":16,"column":0},"end":{"line":16,"column":48}}},"fnMap":{"0":{"name":"ipv4StringToBuffer","decl":{"start":{"line":8,"column":9},"end":{"line":8,"column":27}},"loc":{"start":{"line":8,"column":34},"end":{"line":15,"column":1}},"line":8}},"branchMap":{},"s":{"0":1,"1":1,"2":259,"3":259,"4":259,"5":259,"6":1036,"7":259,"8":1},"f":{"0":259},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/ipv4StringToBuffer.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/ipv4StringToBuffer.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;QAC1B,MAAM,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAChC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAPD,gDAOC","sourcesContent":["/**\n * Converts an IPv4 address in string notation to the\n * byte representation.\n */\nexport function ipv4StringToBuffer(host: string): Buffer {\n  const parts = host.split('.');\n  const result = Buffer.alloc(4);\n  for (let i = 0; i < 4; i++) {\n    result[i] = parseInt(parts[i]);\n  }\n  return result;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f86a899a534f03ceaeb75722f2130298eba10d16","contentHash":"67d2e9da7d9a5d29044c8bb7e171fdb0e080e439677a29b5882de951cc360577"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeIPv6.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeIPv6.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":29},"end":{"line":5,"column":60}},"4":{"start":{"line":11,"column":19},"end":{"line":11,"column":61}},"5":{"start":{"line":12,"column":22},"end":{"line":12,"column":80}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":36}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":33}},"8":{"start":{"line":15,"column":4},"end":{"line":15,"column":39}},"9":{"start":{"line":16,"column":4},"end":{"line":16,"column":29}},"10":{"start":{"line":18,"column":0},"end":{"line":18,"column":38}}},"fnMap":{"0":{"name":"serializeIPv6","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":22}},"loc":{"start":{"line":10,"column":32},"end":{"line":17,"column":1}},"line":10}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":1},"f":{"0":2},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeIPv6.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeIPv6.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAG/C,6DAA0D;AAE1D;;;GAGG;AACH,SAAgB,aAAa,CAAC,OAAoB;IAChD,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,IAAA,uCAAkB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAVD,sCAUC","sourcesContent":["import { BufferWriter } from '@node-dlc/bufio';\n\nimport { AddressIPv6 } from '../../domain/AddressIPv6';\nimport { ipv6StringToBuffer } from './ipv6StringToBuffer';\n\n/**\n * Serializes an IPv6 address in a Buffer that can be sent\n * over the wire.\n */\nexport function serializeIPv6(address: AddressIPv6): Buffer {\n  const writer = new BufferWriter(Buffer.alloc(19));\n\n  const hostBytes = ipv6StringToBuffer(address.host);\n\n  writer.writeUInt8(address.type);\n  writer.writeBytes(hostBytes);\n  writer.writeUInt16BE(address.port);\n\n  return writer.toBuffer();\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"cdb2abaa3a1d6f3860da742032137302e87cdccb","contentHash":"5dd9df4a52a4e2d73fa223a0481448c52b140c0e3b77245e65814ce20ae1cfd0"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/ipv6StringToBuffer.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/ipv6StringToBuffer.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":14,"column":4},"end":{"line":17,"column":47}},"4":{"start":{"line":15,"column":8},"end":{"line":15,"column":30}},"5":{"start":{"line":16,"column":9},"end":{"line":17,"column":47}},"6":{"start":{"line":17,"column":8},"end":{"line":17,"column":47}},"7":{"start":{"line":18,"column":18},"end":{"line":18,"column":33}},"8":{"start":{"line":19,"column":19},"end":{"line":19,"column":61}},"9":{"start":{"line":20,"column":21},"end":{"line":20,"column":37}},"10":{"start":{"line":21,"column":25},"end":{"line":21,"column":37}},"11":{"start":{"line":22,"column":4},"end":{"line":32,"column":5}},"12":{"start":{"line":23,"column":8},"end":{"line":31,"column":9}},"13":{"start":{"line":24,"column":22},"end":{"line":24,"column":54}},"14":{"start":{"line":25,"column":12},"end":{"line":25,"column":33}},"15":{"start":{"line":26,"column":12},"end":{"line":26,"column":35}},"16":{"start":{"line":29,"column":22},"end":{"line":29,"column":59}},"17":{"start":{"line":30,"column":12},"end":{"line":30,"column":33}},"18":{"start":{"line":33,"column":4},"end":{"line":33,"column":29}},"19":{"start":{"line":35,"column":0},"end":{"line":35,"column":48}},"20":{"start":{"line":37,"column":4},"end":{"line":37,"column":33}}},"fnMap":{"0":{"name":"ipv6StringToBuffer","decl":{"start":{"line":9,"column":9},"end":{"line":9,"column":27}},"loc":{"start":{"line":9,"column":34},"end":{"line":34,"column":1}},"line":9},"1":{"name":"expandZeros","decl":{"start":{"line":36,"column":9},"end":{"line":36,"column":20}},"loc":{"start":{"line":36,"column":27},"end":{"line":38,"column":1}},"line":36}},"branchMap":{"0":{"loc":{"start":{"line":14,"column":4},"end":{"line":17,"column":47}},"type":"if","locations":[{"start":{"line":14,"column":4},"end":{"line":17,"column":47}},{"start":{"line":16,"column":9},"end":{"line":17,"column":47}}],"line":14},"1":{"loc":{"start":{"line":16,"column":9},"end":{"line":17,"column":47}},"type":"if","locations":[{"start":{"line":16,"column":9},"end":{"line":17,"column":47}},{"start":{},"end":{}}],"line":16},"2":{"loc":{"start":{"line":23,"column":8},"end":{"line":31,"column":9}},"type":"if","locations":[{"start":{"line":23,"column":8},"end":{"line":31,"column":9}},{"start":{"line":28,"column":13},"end":{"line":31,"column":9}}],"line":23},"3":{"loc":{"start":{"line":23,"column":12},"end":{"line":23,"column":41}},"type":"binary-expr","locations":[{"start":{"line":23,"column":12},"end":{"line":23,"column":26}},{"start":{"line":23,"column":30},"end":{"line":23,"column":41}}],"line":23}},"s":{"0":1,"1":1,"2":1,"3":15,"4":6,"5":9,"6":2,"7":15,"8":15,"9":15,"10":15,"11":15,"12":97,"13":8,"14":8,"15":8,"16":89,"17":89,"18":15,"19":1,"20":89},"f":{"0":15,"1":89},"b":{"0":[6,9],"1":[2,7],"2":[8,89],"3":[97,20]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/ipv6StringToBuffer.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/ipv6StringToBuffer.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAE/C;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,oEAAoE;IACpE,mEAAmE;IACnE,+DAA+D;IAC/D,sBAAsB;IACtB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAErE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9B,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAElD,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IAClC,IAAI,cAAc,GAAG,QAAQ,GAAG,CAAC,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;QACxB,IAAI,cAAc,IAAI,IAAI,KAAK,EAAE,EAAE;YACjC,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACrB,cAAc,GAAG,KAAK,CAAC;SACxB;aAAM;YACL,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;YAChD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;SACtB;KACF;IAED,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AA3BD,gDA2BC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC","sourcesContent":["import { BufferWriter } from '@node-dlc/bufio';\n\n/**\n * Converts an IPv6 address in string notation to the\n * byte representation.\n */\nexport function ipv6StringToBuffer(host: string): Buffer {\n  // replace start or end expansion with single part to retain correct\n  // number of parts (8) that are used in the remainder of the logic.\n  // ie: ::1:2:3:4:5:6:7 would split to ['','',1,2,3,4,5,6,7] and\n  // result in overflows\n  if (host.startsWith('::')) host = host.substr(1);\n  else if (host.endsWith('::')) host = host.substr(0, host.length - 1);\n\n  const parts = host.split(':');\n\n  const writer = new BufferWriter(Buffer.alloc(16));\n\n  const expandBy = 8 - parts.length;\n  let needsExpansion = expandBy > 0;\n\n  for (const part of parts) {\n    if (needsExpansion && part === '') {\n      const b = Buffer.alloc((expandBy + 1) * 2);\n      writer.writeBytes(b);\n      needsExpansion = false;\n    } else {\n      const b = Buffer.from(expandZeros(part), 'hex');\n      writer.writeBytes(b);\n    }\n  }\n\n  return writer.toBuffer();\n}\n\nfunction expandZeros(part: string): string {\n  return part.padStart(4, '0');\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"37c914671f7507cc048537b1a44af42cafc1fecf","contentHash":"68ea65d9ac2b71f057543c088ed9ee3cdbf19ab23e0f05679e7db9de48bc62fe"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeTor2.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeTor2.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":28},"end":{"line":5,"column":58}},"4":{"start":{"line":11,"column":19},"end":{"line":11,"column":61}},"5":{"start":{"line":12,"column":22},"end":{"line":12,"column":78}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":36}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":33}},"8":{"start":{"line":15,"column":4},"end":{"line":15,"column":39}},"9":{"start":{"line":16,"column":4},"end":{"line":16,"column":29}},"10":{"start":{"line":18,"column":0},"end":{"line":18,"column":38}}},"fnMap":{"0":{"name":"serializeTor2","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":22}},"loc":{"start":{"line":10,"column":32},"end":{"line":17,"column":1}},"line":10}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"f":{"0":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeTor2.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeTor2.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAG/C,2DAAwD;AAExD;;;GAGG;AACH,SAAgB,aAAa,CAAC,OAAoB;IAChD,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,IAAA,qCAAiB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAVD,sCAUC","sourcesContent":["import { BufferWriter } from '@node-dlc/bufio';\n\nimport { AddressTor2 } from '../../domain/AddressTor2';\nimport { torStringToBuffer } from './torStringToBuffer';\n\n/**\n * Serializes a Tor v2 address in a Buffer that can be sent\n * over the wire.\n */\nexport function serializeTor2(address: AddressTor2): Buffer {\n  const writer = new BufferWriter(Buffer.alloc(13));\n\n  const hostBytes = torStringToBuffer(address.host);\n\n  writer.writeUInt8(address.type);\n  writer.writeBytes(hostBytes);\n  writer.writeUInt16BE(address.port);\n\n  return writer.toBuffer();\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d4a9426d3ce5b24a5e87f5323c04b2d73cd2feee","contentHash":"566ac4b3a77f4702050724871f9f52114500c4bde20822cfe1f1a8e5a0ad7745"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/torStringToBuffer.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/torStringToBuffer.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":35}},"2":{"start":{"line":4,"column":17},"end":{"line":4,"column":44}},"3":{"start":{"line":9,"column":4},"end":{"line":9,"column":45}},"4":{"start":{"line":10,"column":4},"end":{"line":10,"column":30}},"5":{"start":{"line":11,"column":4},"end":{"line":11,"column":40}},"6":{"start":{"line":13,"column":0},"end":{"line":13,"column":46}}},"fnMap":{"0":{"name":"torStringToBuffer","decl":{"start":{"line":8,"column":9},"end":{"line":8,"column":26}},"loc":{"start":{"line":8,"column":33},"end":{"line":12,"column":1}},"line":8}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":4,"4":4,"5":4,"6":1},"f":{"0":4},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/torStringToBuffer.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/torStringToBuffer.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAE1C;;GAEG;AACH,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IACzC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1B,OAAO,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAJD,8CAIC","sourcesContent":["import { Base32 } from '@node-dlc/common';\n\n/**\n * Converts a Tor address in string notation into a Buffer\n */\nexport function torStringToBuffer(host: string): Buffer {\n  host = host.substr(0, host.indexOf('.'));\n  host = host.toUpperCase();\n  return Base32.decode(host);\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b2d056808162f59705c74fae576909fd1baaae6f","contentHash":"6dd44042ab43ba70a04e5b3a8f5284c1210df8087527987c89f61cc6598cbcb3"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeTor3.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeTor3.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":28},"end":{"line":5,"column":58}},"4":{"start":{"line":11,"column":19},"end":{"line":11,"column":61}},"5":{"start":{"line":12,"column":22},"end":{"line":12,"column":78}},"6":{"start":{"line":13,"column":4},"end":{"line":13,"column":36}},"7":{"start":{"line":14,"column":4},"end":{"line":14,"column":33}},"8":{"start":{"line":15,"column":4},"end":{"line":15,"column":39}},"9":{"start":{"line":16,"column":4},"end":{"line":16,"column":29}},"10":{"start":{"line":18,"column":0},"end":{"line":18,"column":38}}},"fnMap":{"0":{"name":"serializeTor3","decl":{"start":{"line":10,"column":9},"end":{"line":10,"column":22}},"loc":{"start":{"line":10,"column":32},"end":{"line":17,"column":1}},"line":10}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1},"f":{"0":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeTor3.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/serialize/address/serializeTor3.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAG/C,2DAAwD;AAExD;;;GAGG;AACH,SAAgB,aAAa,CAAC,OAAoB;IAChD,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAElD,MAAM,SAAS,GAAG,IAAA,qCAAiB,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAElD,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7B,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAVD,sCAUC","sourcesContent":["import { BufferWriter } from '@node-dlc/bufio';\n\nimport { AddressTor3 } from '../../domain/AddressTor3';\nimport { torStringToBuffer } from './torStringToBuffer';\n\n/**\n * Serializes a Tor v3 address in a Buffer that can be sent\n * over the wire.\n */\nexport function serializeTor3(address: AddressTor3): Buffer {\n  const writer = new BufferWriter(Buffer.alloc(38));\n\n  const hostBytes = torStringToBuffer(address.host);\n\n  writer.writeUInt8(address.type);\n  writer.writeBytes(hostBytes);\n  writer.writeUInt16BE(address.port);\n\n  return writer.toBuffer();\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4fa4fa06fc88a5b8e67b38c7d3bd3cb918e9dc50","contentHash":"d220b32d6c907e5b6af87e37384f0a4526d591625570ff737797e8806ae16f16"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/OpenChannelMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/OpenChannelMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":36}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":16},"end":{"line":5,"column":42}},"4":{"start":{"line":6,"column":17},"end":{"line":6,"column":44}},"5":{"start":{"line":7,"column":27},"end":{"line":7,"column":63}},"6":{"start":{"line":8,"column":22},"end":{"line":8,"column":47}},"7":{"start":{"line":9,"column":19},"end":{"line":9,"column":51}},"8":{"start":{"line":24,"column":25},"end":{"line":24,"column":49}},"9":{"start":{"line":25,"column":23},"end":{"line":25,"column":52}},"10":{"start":{"line":26,"column":8},"end":{"line":26,"column":30}},"11":{"start":{"line":27,"column":8},"end":{"line":27,"column":50}},"12":{"start":{"line":28,"column":8},"end":{"line":28,"column":59}},"13":{"start":{"line":29,"column":8},"end":{"line":29,"column":83}},"14":{"start":{"line":30,"column":8},"end":{"line":30,"column":81}},"15":{"start":{"line":31,"column":8},"end":{"line":31,"column":85}},"16":{"start":{"line":32,"column":8},"end":{"line":32,"column":97}},"17":{"start":{"line":33,"column":8},"end":{"line":33,"column":90}},"18":{"start":{"line":34,"column":8},"end":{"line":34,"column":88}},"19":{"start":{"line":35,"column":8},"end":{"line":35,"column":80}},"20":{"start":{"line":36,"column":8},"end":{"line":36,"column":53}},"21":{"start":{"line":37,"column":8},"end":{"line":37,"column":58}},"22":{"start":{"line":38,"column":8},"end":{"line":38,"column":54}},"23":{"start":{"line":39,"column":8},"end":{"line":39,"column":60}},"24":{"start":{"line":40,"column":8},"end":{"line":40,"column":57}},"25":{"start":{"line":41,"column":8},"end":{"line":41,"column":64}},"26":{"start":{"line":42,"column":8},"end":{"line":42,"column":54}},"27":{"start":{"line":43,"column":8},"end":{"line":43,"column":64}},"28":{"start":{"line":44,"column":8},"end":{"line":44,"column":82}},"29":{"start":{"line":46,"column":8},"end":{"line":55,"column":11}},"30":{"start":{"line":47,"column":12},"end":{"line":54,"column":13}},"31":{"start":{"line":49,"column":20},"end":{"line":49,"column":77}},"32":{"start":{"line":50,"column":20},"end":{"line":50,"column":32}},"33":{"start":{"line":53,"column":20},"end":{"line":53,"column":33}},"34":{"start":{"line":56,"column":8},"end":{"line":56,"column":24}},"35":{"start":{"line":63,"column":8},"end":{"line":63,"column":92}},"36":{"start":{"line":66,"column":8},"end":{"line":71,"column":9}},"37":{"start":{"line":67,"column":12},"end":{"line":67,"column":87}},"38":{"start":{"line":70,"column":12},"end":{"line":70,"column":89}},"39":{"start":{"line":80,"column":8},"end":{"line":80,"column":44}},"40":{"start":{"line":81,"column":8},"end":{"line":81,"column":52}},"41":{"start":{"line":87,"column":23},"end":{"line":87,"column":49}},"42":{"start":{"line":88,"column":8},"end":{"line":88,"column":40}},"43":{"start":{"line":89,"column":8},"end":{"line":89,"column":42}},"44":{"start":{"line":90,"column":8},"end":{"line":90,"column":51}},"45":{"start":{"line":91,"column":8},"end":{"line":91,"column":56}},"46":{"start":{"line":92,"column":8},"end":{"line":92,"column":50}},"47":{"start":{"line":93,"column":8},"end":{"line":93,"column":58}},"48":{"start":{"line":94,"column":8},"end":{"line":94,"column":66}},"49":{"start":{"line":95,"column":8},"end":{"line":95,"column":63}},"50":{"start":{"line":96,"column":8},"end":{"line":96,"column":57}},"51":{"start":{"line":97,"column":8},"end":{"line":97,"column":61}},"52":{"start":{"line":98,"column":8},"end":{"line":98,"column":47}},"53":{"start":{"line":99,"column":8},"end":{"line":99,"column":52}},"54":{"start":{"line":100,"column":8},"end":{"line":100,"column":46}},"55":{"start":{"line":101,"column":8},"end":{"line":101,"column":52}},"56":{"start":{"line":102,"column":8},"end":{"line":102,"column":49}},"57":{"start":{"line":103,"column":8},"end":{"line":103,"column":56}},"58":{"start":{"line":104,"column":8},"end":{"line":104,"column":46}},"59":{"start":{"line":105,"column":8},"end":{"line":105,"column":56}},"60":{"start":{"line":106,"column":8},"end":{"line":106,"column":62}},"61":{"start":{"line":108,"column":8},"end":{"line":112,"column":9}},"62":{"start":{"line":109,"column":12},"end":{"line":109,"column":35}},"63":{"start":{"line":110,"column":12},"end":{"line":110,"column":67}},"64":{"start":{"line":111,"column":12},"end":{"line":111,"column":58}},"65":{"start":{"line":113,"column":8},"end":{"line":113,"column":33}},"66":{"start":{"line":116,"column":0},"end":{"line":116,"column":48}},"67":{"start":{"line":117,"column":0},"end":{"line":117,"column":64}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":23,"column":4},"end":{"line":23,"column":5}},"loc":{"start":{"line":23,"column":28},"end":{"line":57,"column":5}},"line":23},"1":{"name":"(anonymous_1)","decl":{"start":{"line":46,"column":41},"end":{"line":46,"column":42}},"loc":{"start":{"line":46,"column":64},"end":{"line":55,"column":9}},"line":46},"2":{"name":"(anonymous_2)","decl":{"start":{"line":62,"column":4},"end":{"line":62,"column":5}},"loc":{"start":{"line":62,"column":26},"end":{"line":64,"column":5}},"line":62},"3":{"name":"(anonymous_3)","decl":{"start":{"line":65,"column":4},"end":{"line":65,"column":5}},"loc":{"start":{"line":65,"column":29},"end":{"line":72,"column":5}},"line":65},"4":{"name":"(anonymous_4)","decl":{"start":{"line":76,"column":4},"end":{"line":76,"column":5}},"loc":{"start":{"line":76,"column":18},"end":{"line":82,"column":5}},"line":76},"5":{"name":"(anonymous_5)","decl":{"start":{"line":86,"column":4},"end":{"line":86,"column":5}},"loc":{"start":{"line":86,"column":16},"end":{"line":114,"column":5}},"line":86}},"branchMap":{"0":{"loc":{"start":{"line":47,"column":12},"end":{"line":54,"column":13}},"type":"switch","locations":[{"start":{"line":48,"column":16},"end":{"line":51,"column":17}},{"start":{"line":52,"column":16},"end":{"line":53,"column":33}}],"line":47},"1":{"loc":{"start":{"line":66,"column":8},"end":{"line":71,"column":9}},"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":71,"column":9}},{"start":{"line":69,"column":13},"end":{"line":71,"column":9}}],"line":66},"2":{"loc":{"start":{"line":106,"column":26},"end":{"line":106,"column":60}},"type":"cond-expr","locations":[{"start":{"line":106,"column":49},"end":{"line":106,"column":53}},{"start":{"line":106,"column":56},"end":{"line":106,"column":60}}],"line":106},"3":{"loc":{"start":{"line":108,"column":8},"end":{"line":112,"column":9}},"type":"if","locations":[{"start":{"line":108,"column":8},"end":{"line":112,"column":9}},{"start":{},"end":{}}],"line":108}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":0,"34":1,"35":4,"36":3,"37":2,"38":1,"39":4,"40":4,"41":3,"42":3,"43":3,"44":3,"45":3,"46":3,"47":3,"48":3,"49":3,"50":3,"51":3,"52":3,"53":3,"54":3,"55":3,"56":3,"57":3,"58":3,"59":3,"60":3,"61":3,"62":1,"63":1,"64":1,"65":3,"66":1,"67":1},"f":{"0":1,"1":1,"2":4,"3":3,"4":4,"5":3},"b":{"0":[1,0],"1":[2,1],"2":[2,1],"3":[1,2]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/OpenChannelMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/OpenChannelMessage.ts"],"names":[],"mappings":"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","sourcesContent":["import { Value } from '@node-dlc/bitcoin';\nimport { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { BitField } from '@node-dlc/common';\n\nimport { OpenChannelFlags } from '../flags/OpenChannelFlags';\nimport { MessageType } from '../MessageType';\nimport { readTlvs } from '../serialize/readTlvs';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * OpenChannelMessage represents the open_channel message defined in\n * BOLT #2 of the Lightning Specification. This message is used to\n * initiate a channel with a connected peer. The channel initiator acts\n * as the funding node for the channel and specifies the amount and\n * parameters to be used in the channel. The remote peer can accept the\n * channel using the accept_channel message.\n */\nexport class OpenChannelMessage implements IWireMessage {\n  public static type = MessageType.OpenChannel;\n\n  /**\n   * Deserializes an open_channel message\n   * @param buf\n   */\n  public static deserialize(buf: Buffer): OpenChannelMessage {\n    const instance = new OpenChannelMessage();\n    const reader = new BufferReader(buf);\n\n    reader.readUInt16BE(); // read type\n    instance.chainHash = reader.readBytes(32);\n    instance.temporaryChannelId = reader.readBytes(32);\n    instance.fundingSatoshis = Value.fromSats(reader.readUInt64BE());\n    instance.pushMsat = Value.fromMilliSats(reader.readUInt64BE());\n    instance.dustLimitSatoshis = Value.fromSats(reader.readUInt64BE());\n    instance.maxHtlcValueInFlightMsat = Value.fromMilliSats(\n      reader.readUInt64BE(),\n    );\n    instance.channelReserveSatoshis = Value.fromSats(reader.readUInt64BE());\n    instance.htlcMinimumMsat = Value.fromMilliSats(reader.readUInt64BE());\n    instance.feeRatePerKw = Value.fromSats(reader.readUInt32BE());\n    instance.toSelfDelay = reader.readUInt16BE();\n    instance.maxAcceptedHtlcs = reader.readUInt16BE();\n    instance.fundingPubKey = reader.readBytes(33);\n    instance.revocationBasePoint = reader.readBytes(33);\n    instance.paymentBasePoint = reader.readBytes(33);\n    instance.delayedPaymentBasePoint = reader.readBytes(33);\n    instance.htlcBasePoint = reader.readBytes(33);\n    instance.firstPerCommitmentPoint = reader.readBytes(33);\n    instance.channelFlags = new BitField<OpenChannelFlags>(\n      BigInt(reader.readUInt8()),\n    );\n\n    // Parse the TLVs\n    readTlvs(reader, (type: bigint, valueReader: BufferReader) => {\n      switch (type) {\n        case BigInt(0): {\n          instance.upfrontShutdownScript = valueReader.readBytes();\n          return true;\n        }\n        default:\n          return false;\n      }\n    });\n\n    return instance;\n  }\n\n  /**\n   * The type for open_channel message. open_channel = 32\n   */\n  public type = OpenChannelMessage.type;\n\n  /**\n   * The chain_hash used to identifier the chain that the channel\n   * should be opened on. Typically this value is the hash of the\n   * genesis block in internal byte order.\n   */\n  public chainHash: Buffer;\n\n  /**\n   * A unique and temporary identifier used during the channel creation\n   * process. This value is a placeholder for the channel_id that is\n   * created from the funding transaction that can be used after the\n   * funding_created message creates this transaction and the\n   * counterparty uses the channel_id in the funding_signed message.\n   */\n  public temporaryChannelId: Buffer;\n\n  /**\n   * This value is the total value of the channel. It is value in\n   * satoshis that will be locked into the 2-2 multisig output of the\n   * funding transaction. This value must be less than 2^24 satoshis\n   * unless option_large_channel is negotiated by both peers during\n   * initialization.\n   */\n  public fundingSatoshis: Value;\n\n  /**\n   * This is the value in millisatoshi that is unconditionally pushed\n   * to the counterparty of the channel. This value must be less than\n   * 1000 * funding_satoshis. This value will be applied to the value\n   * of the remote nodes commitment transaction output in the initial\n   * commitment transaction.\n   */\n  public pushMsat: Value;\n\n  /**\n   * Indicates the value in satoshis under which outputs should not\n   * be created for this node's commitment transaction or HTLC\n   * transactions. This setting indicates the reality that small\n   * transaction outputs are considered non-standard by the network and\n   * will not be propagated.\n   */\n  public dustLimitSatoshis: Value;\n\n  /**\n   * Indicates the minimum amount that the counterparty is supposed to\n   * keep as direct payment. This value must be equal or greater than\n   * dust_limit_satoshis and SHOULD be 1% of the total value of the\n   * channel. This value ensures that there is always value at stake\n   * for a node to lose if it broadcasts an outdated commitment\n   * transaction. Initially this value may not be met but as a channel\n   * is used and the value is met, the reserve must be maintained.\n   */\n  public channelReserveSatoshis: Value;\n\n  /**\n   * Indicates the transaction fee in satoshis per 1000-weight that\n   * will be used for the commitment transaction and HTLC transactions.\n   * This value is set by the funding node and can be adjusted using\n   * the update_fee message. This value should be set to a value that\n   * the funding node believes will result in the immediate inclusion\n   * of the commitment transaction in a block.\n   */\n  public feeRatePerKw: Value;\n\n  /**\n   * Indicates the number of blocks the remote node must use to delay\n   * retrieval of its to_local outputs. This value is used as input\n   * to OP_CSV to create a relative timelock on RSMCs used in the\n   * to_local output of the commitment transaction and the HTLC\n   * transaction outputs. This allows us to use a penalty transaction\n   * is there is a breach.\n   */\n  public toSelfDelay: number;\n\n  /**\n   * The minimum value in millisatoshi of an HTLC that we are willing\n   * to accept.\n   */\n  public htlcMinimumMsat: Value;\n\n  /**\n   * The maximum value in millisatoshi of outstanding HTLCs we will\n   * allow. This value allows us to limit our overall exposure to\n   * HTLCs.\n   */\n  public maxHtlcValueInFlightMsat: Value;\n\n  /**\n   * The maximum number of outstanding HTLCs that we will allow. This\n   * limits our exposure to a finite amount of HTLCs. This value must\n   * be less than 483 as more than this will cause issues with the\n   * commitment_signed message.\n   */\n  public maxAcceptedHtlcs: number;\n\n  /**\n   * The public key used in the 2-of-2 multisig script of the funding\n   * transaction output. This value must a  33-byte compressed SEC\n   * encoded public key for secp256k1.\n   */\n  public fundingPubKey: Buffer;\n\n  /**\n   * The revocation basepoint is used to derive a blinded\n   * per-commitment revocation public key. Revocation public keys\n   * are used in a remote node's version of the commitment\n   * transactions and HTLC transactions and allow us the ability to\n   * sweep funds if they broadcast a prior state transaction.\n   */\n  public revocationBasePoint: Buffer;\n\n  /**\n   * The payment basepoint is used to derive a per-commitment payment\n   * public key.\n   */\n  public paymentBasePoint: Buffer;\n\n  /**\n   * The delayed payment basepoint is used to derive a per-commitment\n   * payment public key that is sequence delayed. It is used in\n   * in our local commitment transaction as well as the outputs of\n   * HTLC transactions.\n   */\n  public delayedPaymentBasePoint: Buffer;\n\n  /**\n   * The HTLC basepoint is used to derive a per-commitment\n   * public key used in HTLC outputs of the commitment transaction.\n   */\n  public htlcBasePoint: Buffer;\n\n  /**\n   * This is the first per-commitment point to be used for the first\n   * commitment transaction. This point will be used by the remote\n   * node to construct the public keys used when constructing and\n   * signing our version of the commitment transaction. This point\n   * will eventually be revoked and a we will send a new\n   * commitment point.\n   */\n  public firstPerCommitmentPoint: Buffer;\n\n  /**\n   * Flags are used to indicate channel features. Currently only the\n   * least-significant bit is defined which enables public\n   * announcement of the channel once the channel becomes live.\n   */\n  public channelFlags: BitField<OpenChannelFlags>;\n\n  /**\n   * Gets or sets whether the channel will be publicly announced once\n   * the channel becomes live.\n   */\n  public get announceChannel(): boolean {\n    return this.channelFlags.isSet(OpenChannelFlags.AnnounceChannel);\n  }\n\n  public set announceChannel(val: boolean) {\n    if (val) {\n      this.channelFlags.set(OpenChannelFlags.AnnounceChannel);\n    } else {\n      this.channelFlags.unset(OpenChannelFlags.AnnounceChannel);\n    }\n  }\n\n  /**\n   * When option_upfront_shutdown_script is negotiated during init\n   * message exchange, this property will commit to using the provided\n   * scriptPubKey during a mutual close. This value will be used\n   * instead of the scriptPubKey provided during shutdown which\n   * ensures that this scriptPubKey is used on close even if our node\n   * is compromised.\n   */\n  public upfrontShutdownScript: Buffer;\n\n  /**\n   * Constructs a new OpenChannelMessage instance\n   */\n  constructor() {\n    this.channelFlags = new BitField<OpenChannelFlags>();\n  }\n\n  /**\n   * Serializes the open_channel message into a Buffer\n   */\n  public serialize(): Buffer {\n    const writer = new BufferWriter();\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.chainHash);\n    writer.writeBytes(this.temporaryChannelId);\n    writer.writeUInt64BE(this.fundingSatoshis.sats);\n    writer.writeUInt64BE(this.pushMsat.msats);\n    writer.writeUInt64BE(this.dustLimitSatoshis.sats);\n    writer.writeUInt64BE(this.maxHtlcValueInFlightMsat.msats);\n    writer.writeUInt64BE(this.channelReserveSatoshis.sats);\n    writer.writeUInt64BE(this.htlcMinimumMsat.msats);\n    writer.writeUInt32BE(Number(this.feeRatePerKw.sats));\n    writer.writeUInt16BE(this.toSelfDelay);\n    writer.writeUInt16BE(this.maxAcceptedHtlcs);\n    writer.writeBytes(this.fundingPubKey);\n    writer.writeBytes(this.revocationBasePoint);\n    writer.writeBytes(this.paymentBasePoint);\n    writer.writeBytes(this.delayedPaymentBasePoint);\n    writer.writeBytes(this.htlcBasePoint);\n    writer.writeBytes(this.firstPerCommitmentPoint);\n    writer.writeUInt8(this.announceChannel ? 0x01 : 0x00);\n\n    // upfront_shutdown_script TLV\n    if (this.upfrontShutdownScript) {\n      writer.writeBigSize(0);\n      writer.writeBigSize(this.upfrontShutdownScript.length);\n      writer.writeBytes(this.upfrontShutdownScript);\n    }\n\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"5071fdde84311feca81604a98aed0224de575172","contentHash":"1263a6b08bb8e4a32ebf3e88c6900ba01ea8a4f0569fafde4bd3555d7b35cd37"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/OpenChannelFlags.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/OpenChannelFlags.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"2":{"start":{"line":5,"column":0},"end":{"line":7,"column":83}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":82}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":29},"end":{"line":7,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":22},"end":{"line":7,"column":81}},"type":"binary-expr","locations":[{"start":{"line":7,"column":22},"end":{"line":7,"column":46}},{"start":{"line":7,"column":51},"end":{"line":7,"column":80}}],"line":7}},"s":{"0":1,"1":1,"2":1,"3":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/OpenChannelFlags.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/OpenChannelFlags.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAEX;AAFD,WAAY,gBAAgB;IAC1B,6EAAmB,CAAA;AACrB,CAAC,EAFW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAE3B","sourcesContent":["export enum OpenChannelFlags {\n  AnnounceChannel = 0,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"eb63356f0f5e65caa06d43621ce2adfaf3dfee64","contentHash":"270bb036bcb65ee67fcc072e585d630d5c6961bb74d4f563ebb1109fe1b4b6c4"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/PingMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/PingMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":20},"end":{"line":5,"column":43}},"4":{"start":{"line":6,"column":22},"end":{"line":6,"column":47}},"5":{"start":{"line":21,"column":8},"end":{"line":21,"column":51}},"6":{"start":{"line":30,"column":8},"end":{"line":30,"column":30}},"7":{"start":{"line":36,"column":8},"end":{"line":36,"column":39}},"8":{"start":{"line":43,"column":23},"end":{"line":43,"column":56}},"9":{"start":{"line":44,"column":8},"end":{"line":44,"column":30}},"10":{"start":{"line":45,"column":25},"end":{"line":45,"column":42}},"11":{"start":{"line":46,"column":8},"end":{"line":46,"column":54}},"12":{"start":{"line":47,"column":28},"end":{"line":47,"column":49}},"13":{"start":{"line":48,"column":8},"end":{"line":48,"column":57}},"14":{"start":{"line":49,"column":8},"end":{"line":49,"column":24}},"15":{"start":{"line":55,"column":20},"end":{"line":58,"column":31}},"16":{"start":{"line":59,"column":19},"end":{"line":59,"column":62}},"17":{"start":{"line":60,"column":8},"end":{"line":60,"column":36}},"18":{"start":{"line":61,"column":8},"end":{"line":61,"column":44}},"19":{"start":{"line":62,"column":8},"end":{"line":62,"column":46}},"20":{"start":{"line":63,"column":8},"end":{"line":63,"column":36}},"21":{"start":{"line":64,"column":8},"end":{"line":64,"column":29}},"22":{"start":{"line":73,"column":8},"end":{"line":73,"column":67}},"23":{"start":{"line":76,"column":0},"end":{"line":76,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":5}},"loc":{"start":{"line":17,"column":18},"end":{"line":37,"column":5}},"line":17},"1":{"name":"(anonymous_1)","decl":{"start":{"line":42,"column":4},"end":{"line":42,"column":5}},"loc":{"start":{"line":42,"column":32},"end":{"line":50,"column":5}},"line":42},"2":{"name":"(anonymous_2)","decl":{"start":{"line":54,"column":4},"end":{"line":54,"column":5}},"loc":{"start":{"line":54,"column":16},"end":{"line":65,"column":5}},"line":54},"3":{"name":"(anonymous_3)","decl":{"start":{"line":72,"column":4},"end":{"line":72,"column":5}},"loc":{"start":{"line":72,"column":24},"end":{"line":74,"column":5}},"line":72}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":18,"6":18,"7":18,"8":3,"9":3,"10":3,"11":3,"12":3,"13":3,"14":3,"15":2,"16":2,"17":2,"18":2,"19":2,"20":2,"21":2,"22":2,"23":1},"f":{"0":18,"1":3,"2":2,"3":2},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/PingMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/PingMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAE7D,4CAAmD;AACnD,gDAA6C;AAG7C;;;;;;;;GAQG;AACH,MAAa,WAAW;IAAxB;QAkBE;;WAEG;QACI,SAAI,GAAgB,yBAAW,CAAC,IAAI,CAAC;QAE5C;;;;;;;WAOG;QACI,iBAAY,GAAG,CAAC,CAAC;QAExB;;;;WAIG;QACI,YAAO,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IA6B3C,CAAC;IAlEC;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,OAAe;QACvC,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,YAAY,EAAE,CAAC;QAEtB,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QACnC,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAE9C,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAE1C,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAwBD;;OAEG;IACI,SAAS;QACd,MAAM,GAAG,GACP,CAAC,GAAG,OAAO;YACX,CAAC,GAAG,iBAAiB;YACrB,CAAC,GAAG,WAAW;YACf,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEtB,MAAM,EAAE,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5B,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACpC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC;IACvB,CAAC;IAED;;;;;OAKG;IACH,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,YAAY,GAAG,+BAAmB,CAAC;IACjD,CAAC;CACF;AAnED,kCAmEC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\n\nimport { PONG_BYTE_THRESHOLD } from '../Constants';\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * In order to allow for the existence of long-lived TCP\n * connections,  at times it may be required that both ends keep\n * alive the TCP connection at the application level.\n *\n * The ping message is sent by an initiator and includes a value\n * for the number of pong bytes it expects to receive as\n * a reply. The ignored bits should be set to 0.\n */\nexport class PingMessage implements IWireMessage {\n  /**\n   * Deserialize a message and return a new instance of the\n   * PingMessage type.\n   */\n  public static deserialize(payload: Buffer): PingMessage {\n    const cursor = new BufferReader(payload);\n    cursor.readUInt16BE();\n\n    const instance = new PingMessage();\n    instance.numPongBytes = cursor.readUInt16BE();\n\n    const bytesLength = cursor.readUInt16BE();\n\n    instance.ignored = cursor.readBytes(bytesLength);\n    return instance;\n  }\n\n  /**\n   * Ping message type is 18\n   */\n  public type: MessageType = MessageType.Ping;\n\n  /**\n   * The number of bytes that should be returned in the pong message.\n   * Can be set to 65532 to indicate that no pong message should be\n   * sent. Setting to any number below 65532 will require a pong\n   * matching the corresponding number of bytes. If the reply\n   * byteslen does not match this, you may terminate the channels\n   * with the client.\n   */\n  public numPongBytes = 1;\n\n  /**\n   * Should set ignored to 0s. Must not set ignored to\n   * sensitive data such as secrets or portions of initialized\n   * memory.\n   */\n  public ignored: Buffer = Buffer.alloc(0);\n\n  /**\n   * Serialize the PingMessage and return a Buffer\n   */\n  public serialize(): Buffer {\n    const len =\n      2 + // type\n      2 + // num_pong_bytes\n      2 + // byteslen\n      this.ignored.length;\n\n    const br = new BufferWriter(Buffer.alloc(len));\n    br.writeUInt16BE(this.type);\n    br.writeUInt16BE(this.numPongBytes);\n    br.writeUInt16BE(this.ignored.length);\n    br.writeBytes(this.ignored);\n    return br.toBuffer();\n  }\n\n  /**\n   * triggersReply indicates if a pong message must send a reply.\n   * Ping messages than are smaller than 65532 must send a reply\n   * with the corresponding number of bytes. Above this value\n   * no reply is necessary.  Refer to BOLT #1.\n   */\n  public get triggersReply(): boolean {\n    return this.numPongBytes < PONG_BYTE_THRESHOLD;\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"11de03af0ccdf32b862f06da238076ba259a7b9c","contentHash":"dc31078da95d9beadd390687bc08495288d0517200227f92cf53384b1adc1e1b"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/Constants.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/Constants.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"2":{"start":{"line":4,"column":0},"end":{"line":4,"column":36}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1},"f":{},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/Constants.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/Constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,KAAK,CAAC","sourcesContent":["export const PONG_BYTE_THRESHOLD = 65532;\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c0fab52def536dfd823735735912984e3c1283d9","contentHash":"71a2f114ce5a45efdeb04567b55a3c9d6b5f96eec393be52169200057a55c28e"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/PongMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/PongMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":29}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":47}},"4":{"start":{"line":12,"column":25},"end":{"line":12,"column":42}},"5":{"start":{"line":13,"column":23},"end":{"line":13,"column":56}},"6":{"start":{"line":14,"column":8},"end":{"line":14,"column":30}},"7":{"start":{"line":15,"column":25},"end":{"line":15,"column":46}},"8":{"start":{"line":16,"column":8},"end":{"line":16,"column":54}},"9":{"start":{"line":17,"column":8},"end":{"line":17,"column":24}},"10":{"start":{"line":34,"column":8},"end":{"line":34,"column":51}},"11":{"start":{"line":35,"column":8},"end":{"line":35,"column":50}},"12":{"start":{"line":42,"column":20},"end":{"line":44,"column":32}},"13":{"start":{"line":45,"column":23},"end":{"line":45,"column":66}},"14":{"start":{"line":46,"column":8},"end":{"line":46,"column":40}},"15":{"start":{"line":47,"column":8},"end":{"line":47,"column":50}},"16":{"start":{"line":48,"column":8},"end":{"line":48,"column":40}},"17":{"start":{"line":49,"column":8},"end":{"line":49,"column":33}},"18":{"start":{"line":52,"column":0},"end":{"line":52,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":11,"column":4},"end":{"line":11,"column":5}},"loc":{"start":{"line":11,"column":32},"end":{"line":18,"column":5}},"line":11},"1":{"name":"(anonymous_1)","decl":{"start":{"line":30,"column":4},"end":{"line":30,"column":5}},"loc":{"start":{"line":30,"column":34},"end":{"line":36,"column":5}},"line":30},"2":{"name":"(anonymous_2)","decl":{"start":{"line":41,"column":4},"end":{"line":41,"column":5}},"loc":{"start":{"line":41,"column":16},"end":{"line":50,"column":5}},"line":41}},"branchMap":{"0":{"loc":{"start":{"line":30,"column":16},"end":{"line":30,"column":32}},"type":"default-arg","locations":[{"start":{"line":30,"column":31},"end":{"line":30,"column":32}}],"line":30}},"s":{"0":1,"1":1,"2":1,"3":1,"4":2,"5":2,"6":2,"7":2,"8":2,"9":2,"10":11,"11":11,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"f":{"0":2,"1":11,"2":1},"b":{"0":[2]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/PongMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/PongMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAE7D,gDAA6C;AAG7C,MAAa,WAAW;IACtB;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,OAAe;QACvC,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;QAEnC,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,gBAAgB;QAEvC,MAAM,QAAQ,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACvC,QAAQ,CAAC,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAcD;;;;;;;;;;OAUG;IACH,YAAY,YAAY,GAAG,CAAC;QAvB5B;;WAEG;QACI,SAAI,GAAgB,yBAAW,CAAC,IAAI,CAAC;QAqB1C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,SAAS;QACd,MAAM,GAAG,GACP,CAAC,GAAG,OAAO;YACX,CAAC,GAAG,WAAW;YACf,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAEvB,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AA3DD,kCA2DC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\n\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\nexport class PongMessage implements IWireMessage {\n  /**\n   * Deserializes a pong message from a Buffer into a PongMessage\n   * instance.\n   */\n  public static deserialize(payload: Buffer): PongMessage {\n    const instance = new PongMessage();\n\n    const reader = new BufferReader(payload);\n    reader.readUInt16BE(); // read off type\n\n    const byteslen = reader.readUInt16BE();\n    instance.ignored = reader.readBytes(byteslen);\n    return instance;\n  }\n\n  /**\n   * Message type = 19\n   */\n  public type: MessageType = MessageType.Pong;\n\n  /**\n   * Should be set to zeros of length specified in a ping message's\n   * num_pong_bytes. Must not set ignored to sensitive data such as\n   * secrets or portions of initialized memory.\n   */\n  public ignored: Buffer;\n\n  /**\n   * In order to allow for the existence of long-lived TCP\n   * connections, at times it may be required that both ends keep\n   * alive the TCP connection at the application level.\n   *\n   * The pong message is a reply to a ping message and must\n   * reply with the specify number of bytes when the num_pong_bytes\n   * value is less than 65532.\n   * for the number of pong bytes it expects to receive as\n   * a reply. The ignored bits should be set to 0.\n   */\n  constructor(numPongBytes = 0) {\n    this.ignored = Buffer.alloc(numPongBytes);\n  }\n\n  /**\n   * Serializes a PongMessage into a Buffer that can be\n   * streamed on the wire.\n   */\n  public serialize(): Buffer {\n    const len =\n      2 + // type\n      2 + // byteslen\n      +this.ignored.length;\n\n    const writer = new BufferWriter(Buffer.alloc(len));\n    writer.writeUInt16BE(this.type);\n    writer.writeUInt16BE(this.ignored.length);\n    writer.writeBytes(this.ignored);\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c3d1cdb4ff32456f8d83ba395fc1f1205e2a1b4c","contentHash":"1df4f3ec9669fbb562c58184cef5dbb737f81a36fa87750ab62d8cc6693ee2c6"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ShutdownMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ShutdownMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":33}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":22},"end":{"line":6,"column":47}},"5":{"start":{"line":24,"column":8},"end":{"line":24,"column":41}},"6":{"start":{"line":31,"column":25},"end":{"line":31,"column":46}},"7":{"start":{"line":32,"column":23},"end":{"line":32,"column":52}},"8":{"start":{"line":33,"column":8},"end":{"line":33,"column":30}},"9":{"start":{"line":34,"column":8},"end":{"line":34,"column":74}},"10":{"start":{"line":35,"column":20},"end":{"line":35,"column":41}},"11":{"start":{"line":36,"column":8},"end":{"line":36,"column":54}},"12":{"start":{"line":37,"column":8},"end":{"line":37,"column":24}},"13":{"start":{"line":43,"column":23},"end":{"line":43,"column":49}},"14":{"start":{"line":44,"column":8},"end":{"line":44,"column":40}},"15":{"start":{"line":45,"column":8},"end":{"line":45,"column":53}},"16":{"start":{"line":46,"column":8},"end":{"line":46,"column":55}},"17":{"start":{"line":47,"column":8},"end":{"line":47,"column":45}},"18":{"start":{"line":48,"column":8},"end":{"line":48,"column":33}},"19":{"start":{"line":51,"column":0},"end":{"line":51,"column":42}},"20":{"start":{"line":52,"column":0},"end":{"line":52,"column":58}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":18},"end":{"line":25,"column":5}},"line":20},"1":{"name":"(anonymous_1)","decl":{"start":{"line":30,"column":4},"end":{"line":30,"column":5}},"loc":{"start":{"line":30,"column":28},"end":{"line":38,"column":5}},"line":30},"2":{"name":"(anonymous_2)","decl":{"start":{"line":42,"column":4},"end":{"line":42,"column":5}},"loc":{"start":{"line":42,"column":16},"end":{"line":49,"column":5}},"line":42}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":2,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"f":{"0":2,"1":1,"2":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ShutdownMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ShutdownMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAC7D,6CAA6C;AAE7C,gDAA6C;AAG7C;;;;;;;;;;;GAWG;AACH,MAAa,eAAe;IAA5B;QAmBE;;WAEG;QACa,SAAI,GAAgB,eAAe,CAAC,IAAI,CAAC;IA0B3D,CAAC;IA7CC;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,GAAW;QACnC,MAAM,QAAQ,GAAG,IAAI,eAAe,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,GAAG,CAAC,CAAC;QAErC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY;QACnC,QAAQ,CAAC,SAAS,GAAG,IAAI,kBAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QAClC,QAAQ,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAE9C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAoBD;;OAEG;IACI,SAAS;QACd,MAAM,MAAM,GAAG,IAAI,oBAAY,EAAE,CAAC;QAClC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACrC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;AA/CH,0CAgDC;AA/Ce,oBAAI,GAAG,yBAAW,CAAC,QAAQ,CAAC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { ChannelId } from '@node-dlc/common';\n\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * ShutdownMessage represents the `shutdown` message defined in BOLT #2 of the Lightning\n * Specification. This message can be sent by either node. The scriptPubKey must be a valid P2WPKH,\n * P2WSH, P2SH-P2WPKH, P2SH-P2WSH, or any valid witness script if option_shutdown_anysegwit is\n * negotiated and it should be same as `shutdown_scriptpubkey` value if it was sent during\n * `'open/accept' channel message`. Therefore, if both conditions hold true resulting transaction\n * will propagate to miners. If shutdown is sent by either node, corresponding node should send\n * commitment_signed to commit any outstanding changes before replying shutdown. Once shutdown is\n * sent by both nodes no new HTLCs should be added or accepted by the channel. After successful\n * handshake of shutdown message, fee negotiation and signature sending can begin with\n * `closing_signed` message.\n */\nexport class ShutdownMessage implements IWireMessage {\n  public static type = MessageType.Shutdown;\n\n  /**\n   * Deserializes a shutdown message\n   * @param buf\n   */\n  public static deserialize(buf: Buffer): ShutdownMessage {\n    const instance = new ShutdownMessage();\n    const reader = new BufferReader(buf);\n\n    reader.readUInt16BE(); // read type\n    instance.channelId = new ChannelId(reader.readBytes(32));\n    const len = reader.readUInt16BE();\n    instance.scriptPubKey = reader.readBytes(len);\n\n    return instance;\n  }\n\n  /**\n   * The type for message. Shutdown = 38\n   */\n  public readonly type: MessageType = ShutdownMessage.type;\n\n  /**\n   * ChannelId generated from the funding transactions outpoint.\n   */\n  public channelId: ChannelId;\n\n  /**\n   * scriptPubKey is used by the sender to get paid, it must be a valid P2WPKH, P2WSH, P2SH-P2WPKH,\n   *  P2SH-P2WSH, or any valid witness script if option_shutdown_anysegwit is negotiated and it\n   * should be same as `shutdown_scriptpubkey` value if it was sent during `'open/accept' channel\n   * message`.\n   */\n  public scriptPubKey: Buffer;\n\n  /**\n   * Serializes the message into a Buffer\n   */\n  public serialize(): Buffer {\n    const writer = new BufferWriter();\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.channelId.toBuffer());\n    writer.writeUInt16BE(this.scriptPubKey.length);\n    writer.writeBytes(this.scriptPubKey);\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"150c7cca0375adcf158ae333474696fbc48808ba","contentHash":"bce9d42f4b6a2eba1975285d0f88a1153c9088ba81026f7a17e61f307d1cff30"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChannelFeatureFlags.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChannelFeatureFlags.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":37}},"2":{"start":{"line":5,"column":0},"end":{"line":6,"column":92}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":32},"end":{"line":6,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":25},"end":{"line":6,"column":90}},"type":"binary-expr","locations":[{"start":{"line":6,"column":25},"end":{"line":6,"column":52}},{"start":{"line":6,"column":57},"end":{"line":6,"column":89}}],"line":6}},"s":{"0":1,"1":1,"2":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChannelFeatureFlags.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChannelFeatureFlags.ts"],"names":[],"mappings":";;;AAAA,IAAY,mBAAsB;AAAlC,WAAY,mBAAmB;AAAE,CAAC,EAAtB,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAAG","sourcesContent":["export enum ChannelFeatureFlags {}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"f8d3b7b61a4d5f5a349730c11092cfefb0304ccb","contentHash":"cc5f8df4dd1473086e6a4a781638d02ba5fdf97d84bdee7341da3d793e90a12c"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChannelUpdateMessageFlags.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChannelUpdateMessageFlags.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"2":{"start":{"line":5,"column":0},"end":{"line":7,"column":110}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":100}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":38},"end":{"line":7,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":7,"column":31},"end":{"line":7,"column":108}},"type":"binary-expr","locations":[{"start":{"line":7,"column":31},"end":{"line":7,"column":64}},{"start":{"line":7,"column":69},"end":{"line":7,"column":107}}],"line":7}},"s":{"0":1,"1":1,"2":1,"3":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChannelUpdateMessageFlags.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChannelUpdateMessageFlags.ts"],"names":[],"mappings":";;;AAAA,IAAY,yBAEX;AAFD,WAAY,yBAAyB;IACnC,+FAAmB,CAAA;AACrB,CAAC,EAFW,yBAAyB,GAAzB,iCAAyB,KAAzB,iCAAyB,QAEpC","sourcesContent":["export enum ChannelUpdateMessageFlags {\n  htlcMaximumMsat = 0,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b7c9a40d3ff7b78b227afa6a6eccc681cf43d008","contentHash":"fb026eb1ed54b69fe98db2afa76d2855f305ad4fa03ddf82f09e435bbc97439c"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChanneUpdateChannelFlags.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChanneUpdateChannelFlags.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":43}},"2":{"start":{"line":5,"column":0},"end":{"line":8,"column":110}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":88}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":86}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":38},"end":{"line":8,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":31},"end":{"line":8,"column":108}},"type":"binary-expr","locations":[{"start":{"line":8,"column":31},"end":{"line":8,"column":64}},{"start":{"line":8,"column":69},"end":{"line":8,"column":107}}],"line":8}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChanneUpdateChannelFlags.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/ChanneUpdateChannelFlags.ts"],"names":[],"mappings":";;;AAAA,IAAY,yBAGX;AAHD,WAAY,yBAAyB;IACnC,mFAAa,CAAA;IACb,iFAAY,CAAA;AACd,CAAC,EAHW,yBAAyB,GAAzB,iCAAyB,KAAzB,iCAAyB,QAGpC","sourcesContent":["export enum ChannelUpdateChannelFlags {\n  direction = 0,\n  disabled = 1,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"33ee7f1585ed161f3de81d321e3c3d2974bf99d2","contentHash":"128f3df9c9a698a32675b55a069a07720205a6560fee68d95e33642972a6df30"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/InitFeatureFlags.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/InitFeatureFlags.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"2":{"start":{"line":5,"column":0},"end":{"line":57,"column":83}},"3":{"start":{"line":10,"column":4},"end":{"line":10,"column":110}},"4":{"start":{"line":15,"column":4},"end":{"line":15,"column":110}},"5":{"start":{"line":22,"column":4},"end":{"line":22,"column":104}},"6":{"start":{"line":27,"column":4},"end":{"line":27,"column":122}},"7":{"start":{"line":32,"column":4},"end":{"line":32,"column":122}},"8":{"start":{"line":38,"column":4},"end":{"line":38,"column":94}},"9":{"start":{"line":44,"column":4},"end":{"line":44,"column":94}},"10":{"start":{"line":45,"column":4},"end":{"line":45,"column":108}},"11":{"start":{"line":46,"column":4},"end":{"line":46,"column":108}},"12":{"start":{"line":47,"column":4},"end":{"line":47,"column":99}},"13":{"start":{"line":48,"column":4},"end":{"line":48,"column":99}},"14":{"start":{"line":49,"column":4},"end":{"line":49,"column":111}},"15":{"start":{"line":50,"column":4},"end":{"line":50,"column":111}},"16":{"start":{"line":51,"column":4},"end":{"line":51,"column":95}},"17":{"start":{"line":52,"column":4},"end":{"line":52,"column":95}},"18":{"start":{"line":53,"column":4},"end":{"line":53,"column":85}},"19":{"start":{"line":54,"column":4},"end":{"line":54,"column":85}},"20":{"start":{"line":55,"column":4},"end":{"line":55,"column":119}},"21":{"start":{"line":56,"column":4},"end":{"line":56,"column":119}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":29},"end":{"line":57,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":57,"column":22},"end":{"line":57,"column":81}},"type":"binary-expr","locations":[{"start":{"line":57,"column":22},"end":{"line":57,"column":46}},{"start":{"line":57,"column":51},"end":{"line":57,"column":80}}],"line":57}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/InitFeatureFlags.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/InitFeatureFlags.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBAgEX;AAhED,WAAY,gBAAgB;IAC1B;;;OAGG;IACH,yGAAiC,CAAA;IAEjC;;;OAGG;IACH,yGAAiC,CAAA;IAEjC;;;;;OAKG;IACH,mGAA8B,CAAA;IAE9B;;;OAGG;IACH,qHAAuC,CAAA;IAEvC;;;OAGG;IACH,qHAAuC,CAAA;IAEvC;;;;OAIG;IACH,yFAAyB,CAAA;IAEzB;;;;OAIG;IACH,yFAAyB,CAAA;IAEzB,uGAAgC,CAAA;IAChC,uGAAgC,CAAA;IAEhC,8FAA4B,CAAA;IAC5B,8FAA4B,CAAA;IAE5B,0GAAkC,CAAA;IAClC,0GAAkC,CAAA;IAElC,0FAA0B,CAAA;IAC1B,0FAA0B,CAAA;IAE1B,gFAAqB,CAAA;IACrB,gFAAqB,CAAA;IAErB,kHAAsC,CAAA;IACtC,kHAAsC,CAAA;AACxC,CAAC,EAhEW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAgE3B","sourcesContent":["export enum InitFeatureFlags {\n  /**\n   * option_data_loss_protect local flag is set. This flag enables / requires\n   * the support of the extra channel_reestablish fields defined in BOLT #2.\n   */\n  optionDataLossProtectRequired = 0,\n\n  /**\n   * option_data_loss_protect local flag is set. This flag enables / requires\n   * the support of the extra channel_reestablish fields defined in BOLT #2.\n   */\n  optionDataLossProtectOptional = 1,\n\n  /**\n   * initial_routing_sync asks the remote node to send a complete routing\n   * information dump. The initial_routing_sync feature is overridden (and\n   * should be considered equal to 0) by the gossip_queries feature if the\n   * latter is negotiated via init.\n   */\n  initialRoutingSyncOptional = 3,\n\n  /**\n   * option_upfront_shutdown_script flag asks to commit to a shutdown\n   * scriptpubkey when opening a channel as defined in BOLT #2.\n   */\n  optionUpfrontShutdownScriptRequired = 4,\n\n  /**\n   * option_upfront_shutdown_script flag asks to commit to a shutdown\n   * scriptpubkey when opening a channel as defined in BOLT #2.\n   */\n  optionUpfrontShutdownScriptOptional = 5,\n\n  /**\n   * gossip_queries flag signals that the node wishes to use more advanced\n   * gossip control. When negotiated, this flag will override the\n   * initial_routing_sync flag. Advanced querying is defined in BOLT #7.\n   */\n  gossipQueriesRequired = 6,\n\n  /**\n   * gossip_queries flag signals that the node wishes to use more advanced\n   * gossip control. When negotiated, this flag will override the\n   * initial_routing_sync flag. Advanced querying is defined in BOLT #7.\n   */\n  gossipQueriesOptional = 7,\n\n  optionVarOptionOptinRequired = 8,\n  optionVarOptionOptinOptional = 9,\n\n  gossipQueriesExRequired = 10,\n  gossipQueriesExOptional = 11,\n\n  optionStaticRemoteKeyRequired = 12,\n  optionStaticRemoteKeyOptional = 13,\n\n  paymentSecretRequired = 14,\n  paymentSecretOptional = 15,\n\n  basicMppRequired = 16,\n  basicMppOptional = 17,\n\n  optionSupportLargeChannelRequired = 18,\n  optionSupportLargeChannelOptional = 19,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"457552e4119d1e6ab9b4808516df2f0ada303b64","contentHash":"5dd6137fa101f7c38347a7c73d90a93e716fa6c5a998fa806f930ed79672eed5"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/NodeFeatureFlags.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/NodeFeatureFlags.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":34}},"2":{"start":{"line":5,"column":0},"end":{"line":24,"column":83}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":110}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":110}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":122}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":122}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":94}},"8":{"start":{"line":11,"column":4},"end":{"line":11,"column":94}},"9":{"start":{"line":12,"column":4},"end":{"line":12,"column":108}},"10":{"start":{"line":13,"column":4},"end":{"line":13,"column":108}},"11":{"start":{"line":14,"column":4},"end":{"line":14,"column":99}},"12":{"start":{"line":15,"column":4},"end":{"line":15,"column":99}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":111}},"14":{"start":{"line":17,"column":4},"end":{"line":17,"column":111}},"15":{"start":{"line":18,"column":4},"end":{"line":18,"column":95}},"16":{"start":{"line":19,"column":4},"end":{"line":19,"column":95}},"17":{"start":{"line":20,"column":4},"end":{"line":20,"column":85}},"18":{"start":{"line":21,"column":4},"end":{"line":21,"column":85}},"19":{"start":{"line":22,"column":4},"end":{"line":22,"column":119}},"20":{"start":{"line":23,"column":4},"end":{"line":23,"column":119}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":29},"end":{"line":24,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":24,"column":22},"end":{"line":24,"column":81}},"type":"binary-expr","locations":[{"start":{"line":24,"column":22},"end":{"line":24,"column":46}},{"start":{"line":24,"column":51},"end":{"line":24,"column":80}}],"line":24}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/NodeFeatureFlags.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/NodeFeatureFlags.ts"],"names":[],"mappings":";;;AAAA,IAAY,gBA2BX;AA3BD,WAAY,gBAAgB;IAC1B,yGAAiC,CAAA;IACjC,yGAAiC,CAAA;IAEjC,qHAAuC,CAAA;IACvC,qHAAuC,CAAA;IAEvC,yFAAyB,CAAA;IACzB,yFAAyB,CAAA;IAEzB,uGAAgC,CAAA;IAChC,uGAAgC,CAAA;IAEhC,8FAA4B,CAAA;IAC5B,8FAA4B,CAAA;IAE5B,0GAAkC,CAAA;IAClC,0GAAkC,CAAA;IAElC,0FAA0B,CAAA;IAC1B,0FAA0B,CAAA;IAE1B,gFAAqB,CAAA;IACrB,gFAAqB,CAAA;IAErB,kHAAsC,CAAA;IACtC,kHAAsC,CAAA;AACxC,CAAC,EA3BW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QA2B3B","sourcesContent":["export enum NodeFeatureFlags {\n  optionDataLossProtectRequired = 0,\n  optionDataLossProtectOptional = 1,\n\n  optionUpfrontShutdownScriptRequired = 4,\n  optionUpfrontShutdownScriptOptional = 5,\n\n  gossipQueriesRequired = 6,\n  gossipQueriesOptional = 7,\n\n  optionVarOptionOptinRequired = 8,\n  optionVarOptionOptinOptional = 9,\n\n  gossipQueriesExRequired = 10,\n  gossipQueriesExOptional = 11,\n\n  optionStaticRemoteKeyRequired = 12,\n  optionStaticRemoteKeyOptional = 13,\n\n  paymentSecretRequired = 14,\n  paymentSecretOptional = 15,\n\n  basicMppRequired = 16,\n  basicMppOptional = 17,\n\n  optionSupportLargeChannelRequired = 18,\n  optionSupportLargeChannelOptional = 19,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b4844429397e68d9c5afc8d6404076e626b42788","contentHash":"86184805a418749736c3bddfc15b70493ec6593e6d9729f856db0e428dbda8c7"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/QueryScidFlags.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/QueryScidFlags.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":32}},"2":{"start":{"line":5,"column":0},"end":{"line":11,"column":77}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":88}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":86}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":86}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":92}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":92}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":27},"end":{"line":11,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":11,"column":20},"end":{"line":11,"column":75}},"type":"binary-expr","locations":[{"start":{"line":11,"column":20},"end":{"line":11,"column":42}},{"start":{"line":11,"column":47},"end":{"line":11,"column":74}}],"line":11}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/QueryScidFlags.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/flags/QueryScidFlags.ts"],"names":[],"mappings":";;;AAAA,IAAY,cAMX;AAND,WAAY,cAAc;IACxB,mFAAwB,CAAA;IACxB,iFAAuB,CAAA;IACvB,iFAAuB,CAAA;IACvB,uFAA0B,CAAA;IAC1B,uFAA0B,CAAA;AAC5B,CAAC,EANW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAMzB","sourcesContent":["export enum QueryScidFlags {\n  ChannelAnnouncements = 0,\n  ChannelUpdatesNode1 = 1,\n  ChannelUpdatesNode2 = 2,\n  NodeAnnouncementsNode1 = 3,\n  NodeAnnouncementsNode2 = 4,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"bb07f528458b9867d3fefc08e7144b6006314c5a","contentHash":"015c42e5e78284846adf74b62ba56c522d7c9fdcdf88dae2fbae031a23d6c3ac"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipEmitter.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipEmitter.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}}},"fnMap":{},"branchMap":{},"s":{"0":1},"f":{},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipEmitter.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipEmitter.ts"],"names":[],"mappings":"","sourcesContent":["import { IWireMessage } from '../messages/IWireMessage';\n\nexport interface IGossipEmitter {\n  on(event: 'message', fn: (msg: IWireMessage) => void);\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"78b663b6e7ea2acb5d552e8fbbb3ef4cdcf581b9","contentHash":"705f99be15dddd5019851ae0f49882178de0cd483d954a48cabf7f98772b3f8f"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipFilter.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipFilter.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":47}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":37},"end":{"line":5,"column":86}},"4":{"start":{"line":6,"column":31},"end":{"line":6,"column":74}},"5":{"start":{"line":7,"column":45},"end":{"line":7,"column":102}},"6":{"start":{"line":8,"column":34},"end":{"line":8,"column":80}},"7":{"start":{"line":9,"column":22},"end":{"line":9,"column":47}},"8":{"start":{"line":10,"column":22},"end":{"line":10,"column":47}},"9":{"start":{"line":11,"column":20},"end":{"line":11,"column":43}},"10":{"start":{"line":14,"column":8},"end":{"line":14,"column":44}},"11":{"start":{"line":17,"column":8},"end":{"line":17,"column":33}},"12":{"start":{"line":20,"column":8},"end":{"line":20,"column":27}},"13":{"start":{"line":21,"column":8},"end":{"line":21,"column":27}},"14":{"start":{"line":24,"column":8},"end":{"line":24,"column":40}},"15":{"start":{"line":27,"column":8},"end":{"line":27,"column":40}},"16":{"start":{"line":30,"column":0},"end":{"line":30,"column":24}},"17":{"start":{"line":44,"column":8},"end":{"line":44,"column":39}},"18":{"start":{"line":45,"column":8},"end":{"line":45,"column":41}},"19":{"start":{"line":46,"column":8},"end":{"line":46,"column":39}},"20":{"start":{"line":55,"column":8},"end":{"line":62,"column":9}},"21":{"start":{"line":57,"column":16},"end":{"line":57,"column":68}},"22":{"start":{"line":59,"column":16},"end":{"line":59,"column":65}},"23":{"start":{"line":61,"column":16},"end":{"line":61,"column":62}},"24":{"start":{"line":63,"column":8},"end":{"line":63,"column":29}},"25":{"start":{"line":72,"column":25},"end":{"line":72,"column":80}},"26":{"start":{"line":74,"column":8},"end":{"line":75,"column":33}},"27":{"start":{"line":75,"column":12},"end":{"line":75,"column":33}},"28":{"start":{"line":77,"column":22},"end":{"line":77,"column":76}},"29":{"start":{"line":78,"column":8},"end":{"line":81,"column":9}},"30":{"start":{"line":79,"column":12},"end":{"line":79,"column":62}},"31":{"start":{"line":80,"column":12},"end":{"line":80,"column":33}},"32":{"start":{"line":83,"column":8},"end":{"line":85,"column":9}},"33":{"start":{"line":84,"column":12},"end":{"line":84,"column":108}},"34":{"start":{"line":87,"column":8},"end":{"line":87,"column":57}},"35":{"start":{"line":89,"column":8},"end":{"line":89,"column":32}},"36":{"start":{"line":97,"column":25},"end":{"line":97,"column":91}},"37":{"start":{"line":100,"column":8},"end":{"line":102,"column":9}},"38":{"start":{"line":101,"column":12},"end":{"line":101,"column":33}},"39":{"start":{"line":108,"column":8},"end":{"line":110,"column":9}},"40":{"start":{"line":109,"column":12},"end":{"line":109,"column":33}},"41":{"start":{"line":112,"column":8},"end":{"line":114,"column":9}},"42":{"start":{"line":113,"column":12},"end":{"line":113,"column":108}},"43":{"start":{"line":115,"column":8},"end":{"line":157,"column":9}},"44":{"start":{"line":117,"column":30},"end":{"line":117,"column":91}},"45":{"start":{"line":118,"column":12},"end":{"line":120,"column":13}},"46":{"start":{"line":119,"column":16},"end":{"line":119,"column":112}},"47":{"start":{"line":122,"column":26},"end":{"line":122,"column":68}},"48":{"start":{"line":123,"column":12},"end":{"line":125,"column":13}},"49":{"start":{"line":124,"column":16},"end":{"line":124,"column":119}},"50":{"start":{"line":127,"column":25},"end":{"line":127,"column":59}},"51":{"start":{"line":128,"column":12},"end":{"line":130,"column":13}},"52":{"start":{"line":129,"column":16},"end":{"line":129,"column":108}},"53":{"start":{"line":132,"column":25},"end":{"line":132,"column":89}},"54":{"start":{"line":133,"column":12},"end":{"line":135,"column":13}},"55":{"start":{"line":134,"column":16},"end":{"line":134,"column":109}},"56":{"start":{"line":137,"column":35},"end":{"line":137,"column":103}},"57":{"start":{"line":138,"column":33},"end":{"line":138,"column":74}},"58":{"start":{"line":139,"column":12},"end":{"line":145,"column":13}},"59":{"start":{"line":140,"column":16},"end":{"line":144,"column":20}},"60":{"start":{"line":147,"column":29},"end":{"line":147,"column":114}},"61":{"start":{"line":151,"column":29},"end":{"line":151,"column":69}},"62":{"start":{"line":153,"column":29},"end":{"line":153,"column":117}},"63":{"start":{"line":154,"column":12},"end":{"line":154,"column":41}},"64":{"start":{"line":155,"column":12},"end":{"line":155,"column":41}},"65":{"start":{"line":156,"column":12},"end":{"line":156,"column":27}},"66":{"start":{"line":159,"column":8},"end":{"line":159,"column":60}},"67":{"start":{"line":161,"column":24},"end":{"line":161,"column":29}},"68":{"start":{"line":163,"column":31},"end":{"line":166,"column":9}},"69":{"start":{"line":167,"column":8},"end":{"line":176,"column":9}},"70":{"start":{"line":168,"column":12},"end":{"line":175,"column":13}},"71":{"start":{"line":169,"column":16},"end":{"line":169,"column":115}},"72":{"start":{"line":170,"column":31},"end":{"line":170,"column":79}},"73":{"start":{"line":171,"column":16},"end":{"line":174,"column":50}},"74":{"start":{"line":172,"column":20},"end":{"line":172,"column":34}},"75":{"start":{"line":174,"column":20},"end":{"line":174,"column":50}},"76":{"start":{"line":178,"column":32},"end":{"line":181,"column":9}},"77":{"start":{"line":182,"column":8},"end":{"line":191,"column":9}},"78":{"start":{"line":183,"column":12},"end":{"line":190,"column":13}},"79":{"start":{"line":184,"column":16},"end":{"line":184,"column":86}},"80":{"start":{"line":185,"column":31},"end":{"line":185,"column":83}},"81":{"start":{"line":186,"column":16},"end":{"line":189,"column":50}},"82":{"start":{"line":187,"column":20},"end":{"line":187,"column":34}},"83":{"start":{"line":189,"column":20},"end":{"line":189,"column":50}},"84":{"start":{"line":192,"column":8},"end":{"line":192,"column":34}},"85":{"start":{"line":208,"column":31},"end":{"line":208,"column":97}},"86":{"start":{"line":209,"column":8},"end":{"line":212,"column":9}},"87":{"start":{"line":210,"column":12},"end":{"line":210,"column":59}},"88":{"start":{"line":211,"column":12},"end":{"line":211,"column":33}},"89":{"start":{"line":214,"column":31},"end":{"line":214,"column":106}},"90":{"start":{"line":215,"column":8},"end":{"line":217,"column":9}},"91":{"start":{"line":216,"column":12},"end":{"line":216,"column":33}},"92":{"start":{"line":219,"column":23},"end":{"line":219,"column":92}},"93":{"start":{"line":220,"column":8},"end":{"line":222,"column":9}},"94":{"start":{"line":221,"column":12},"end":{"line":221,"column":116}},"95":{"start":{"line":224,"column":8},"end":{"line":224,"column":54}},"96":{"start":{"line":226,"column":8},"end":{"line":226,"column":32}},"97":{"start":{"line":229,"column":0},"end":{"line":229,"column":36}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":13,"column":4},"end":{"line":13,"column":5}},"loc":{"start":{"line":13,"column":22},"end":{"line":15,"column":5}},"line":13},"1":{"name":"(anonymous_1)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":5}},"loc":{"start":{"line":16,"column":21},"end":{"line":18,"column":5}},"line":16},"2":{"name":"(anonymous_2)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":19,"column":30},"end":{"line":22,"column":5}},"line":19},"3":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":4},"end":{"line":23,"column":5}},"loc":{"start":{"line":23,"column":15},"end":{"line":25,"column":5}},"line":23},"4":{"name":"(anonymous_4)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":16},"end":{"line":28,"column":5}},"line":26},"5":{"name":"(anonymous_5)","decl":{"start":{"line":43,"column":4},"end":{"line":43,"column":5}},"loc":{"start":{"line":43,"column":56},"end":{"line":47,"column":5}},"line":43},"6":{"name":"(anonymous_6)","decl":{"start":{"line":54,"column":4},"end":{"line":54,"column":5}},"loc":{"start":{"line":54,"column":31},"end":{"line":64,"column":5}},"line":54},"7":{"name":"(anonymous_7)","decl":{"start":{"line":70,"column":4},"end":{"line":70,"column":5}},"loc":{"start":{"line":70,"column":41},"end":{"line":90,"column":5}},"line":70},"8":{"name":"(anonymous_8)","decl":{"start":{"line":95,"column":4},"end":{"line":95,"column":5}},"loc":{"start":{"line":95,"column":44},"end":{"line":193,"column":5}},"line":95},"9":{"name":"(anonymous_9)","decl":{"start":{"line":200,"column":4},"end":{"line":200,"column":5}},"loc":{"start":{"line":200,"column":38},"end":{"line":227,"column":5}},"line":200}},"branchMap":{"0":{"loc":{"start":{"line":55,"column":8},"end":{"line":62,"column":9}},"type":"switch","locations":[{"start":{"line":56,"column":12},"end":{"line":57,"column":68}},{"start":{"line":58,"column":12},"end":{"line":59,"column":65}},{"start":{"line":60,"column":12},"end":{"line":61,"column":62}}],"line":55},"1":{"loc":{"start":{"line":74,"column":8},"end":{"line":75,"column":33}},"type":"if","locations":[{"start":{"line":74,"column":8},"end":{"line":75,"column":33}},{"start":{},"end":{}}],"line":74},"2":{"loc":{"start":{"line":74,"column":12},"end":{"line":74,"column":59}},"type":"binary-expr","locations":[{"start":{"line":74,"column":12},"end":{"line":74,"column":20}},{"start":{"line":74,"column":24},"end":{"line":74,"column":59}}],"line":74},"3":{"loc":{"start":{"line":78,"column":8},"end":{"line":81,"column":9}},"type":"if","locations":[{"start":{"line":78,"column":8},"end":{"line":81,"column":9}},{"start":{},"end":{}}],"line":78},"4":{"loc":{"start":{"line":83,"column":8},"end":{"line":85,"column":9}},"type":"if","locations":[{"start":{"line":83,"column":8},"end":{"line":85,"column":9}},{"start":{},"end":{}}],"line":83},"5":{"loc":{"start":{"line":100,"column":8},"end":{"line":102,"column":9}},"type":"if","locations":[{"start":{"line":100,"column":8},"end":{"line":102,"column":9}},{"start":{},"end":{}}],"line":100},"6":{"loc":{"start":{"line":100,"column":12},"end":{"line":100,"column":115}},"type":"binary-expr","locations":[{"start":{"line":100,"column":12},"end":{"line":100,"column":20}},{"start":{"line":100,"column":24},"end":{"line":100,"column":115}}],"line":100},"7":{"loc":{"start":{"line":108,"column":8},"end":{"line":110,"column":9}},"type":"if","locations":[{"start":{"line":108,"column":8},"end":{"line":110,"column":9}},{"start":{},"end":{}}],"line":108},"8":{"loc":{"start":{"line":108,"column":12},"end":{"line":108,"column":41}},"type":"binary-expr","locations":[{"start":{"line":108,"column":12},"end":{"line":108,"column":20}},{"start":{"line":108,"column":24},"end":{"line":108,"column":41}}],"line":108},"9":{"loc":{"start":{"line":112,"column":8},"end":{"line":114,"column":9}},"type":"if","locations":[{"start":{"line":112,"column":8},"end":{"line":114,"column":9}},{"start":{},"end":{}}],"line":112},"10":{"loc":{"start":{"line":115,"column":8},"end":{"line":157,"column":9}},"type":"if","locations":[{"start":{"line":115,"column":8},"end":{"line":157,"column":9}},{"start":{},"end":{}}],"line":115},"11":{"loc":{"start":{"line":118,"column":12},"end":{"line":120,"column":13}},"type":"if","locations":[{"start":{"line":118,"column":12},"end":{"line":120,"column":13}},{"start":{},"end":{}}],"line":118},"12":{"loc":{"start":{"line":123,"column":12},"end":{"line":125,"column":13}},"type":"if","locations":[{"start":{"line":123,"column":12},"end":{"line":125,"column":13}},{"start":{},"end":{}}],"line":123},"13":{"loc":{"start":{"line":128,"column":12},"end":{"line":130,"column":13}},"type":"if","locations":[{"start":{"line":128,"column":12},"end":{"line":130,"column":13}},{"start":{},"end":{}}],"line":128},"14":{"loc":{"start":{"line":133,"column":12},"end":{"line":135,"column":13}},"type":"if","locations":[{"start":{"line":133,"column":12},"end":{"line":135,"column":13}},{"start":{},"end":{}}],"line":133},"15":{"loc":{"start":{"line":139,"column":12},"end":{"line":145,"column":13}},"type":"if","locations":[{"start":{"line":139,"column":12},"end":{"line":145,"column":13}},{"start":{},"end":{}}],"line":139},"16":{"loc":{"start":{"line":168,"column":12},"end":{"line":175,"column":13}},"type":"if","locations":[{"start":{"line":168,"column":12},"end":{"line":175,"column":13}},{"start":{},"end":{}}],"line":168},"17":{"loc":{"start":{"line":171,"column":16},"end":{"line":174,"column":50}},"type":"if","locations":[{"start":{"line":171,"column":16},"end":{"line":174,"column":50}},{"start":{"line":174,"column":20},"end":{"line":174,"column":50}}],"line":171},"18":{"loc":{"start":{"line":183,"column":12},"end":{"line":190,"column":13}},"type":"if","locations":[{"start":{"line":183,"column":12},"end":{"line":190,"column":13}},{"start":{},"end":{}}],"line":183},"19":{"loc":{"start":{"line":186,"column":16},"end":{"line":189,"column":50}},"type":"if","locations":[{"start":{"line":186,"column":16},"end":{"line":189,"column":50}},{"start":{"line":189,"column":20},"end":{"line":189,"column":50}}],"line":186},"20":{"loc":{"start":{"line":209,"column":8},"end":{"line":212,"column":9}},"type":"if","locations":[{"start":{"line":209,"column":8},"end":{"line":212,"column":9}},{"start":{},"end":{}}],"line":209},"21":{"loc":{"start":{"line":215,"column":8},"end":{"line":217,"column":9}},"type":"if","locations":[{"start":{"line":215,"column":8},"end":{"line":217,"column":9}},{"start":{},"end":{}}],"line":215},"22":{"loc":{"start":{"line":215,"column":12},"end":{"line":215,"column":71}},"type":"binary-expr","locations":[{"start":{"line":215,"column":12},"end":{"line":215,"column":26}},{"start":{"line":215,"column":30},"end":{"line":215,"column":71}}],"line":215},"23":{"loc":{"start":{"line":219,"column":23},"end":{"line":219,"column":92}},"type":"cond-expr","locations":[{"start":{"line":219,"column":45},"end":{"line":219,"column":67}},{"start":{"line":219,"column":70},"end":{"line":219,"column":92}}],"line":219},"24":{"loc":{"start":{"line":220,"column":8},"end":{"line":222,"column":9}},"type":"if","locations":[{"start":{"line":220,"column":8},"end":{"line":222,"column":9}},{"start":{},"end":{}}],"line":220}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":13,"11":1728,"12":1741,"13":1741,"14":14,"15":484,"16":1,"17":154,"18":154,"19":154,"20":1257,"21":270,"22":493,"23":494,"24":0,"25":735,"26":735,"27":240,"28":495,"29":495,"30":243,"31":243,"32":252,"33":3,"34":249,"35":249,"36":270,"37":270,"38":122,"39":148,"40":0,"41":148,"42":3,"43":145,"44":140,"45":140,"46":1,"47":139,"48":139,"49":1,"50":138,"51":138,"52":1,"53":137,"54":137,"55":1,"56":136,"57":136,"58":136,"59":1,"60":135,"61":135,"62":135,"63":135,"64":135,"65":135,"66":140,"67":140,"68":140,"69":140,"70":280,"71":242,"72":242,"73":242,"74":0,"75":242,"76":140,"77":140,"78":280,"79":242,"80":242,"81":242,"82":0,"83":242,"84":140,"85":736,"86":736,"87":243,"88":243,"89":493,"90":493,"91":240,"92":253,"93":253,"94":2,"95":251,"96":251,"97":1},"f":{"0":13,"1":1728,"2":1741,"3":14,"4":484,"5":154,"6":1257,"7":735,"8":270,"9":736},"b":{"0":[270,493,494],"1":[240,495],"2":[735,240],"3":[243,252],"4":[3,249],"5":[122,148],"6":[270,123],"7":[0,148],"8":[148,1],"9":[3,145],"10":[140,5],"11":[1,139],"12":[1,138],"13":[1,137],"14":[1,136],"15":[1,135],"16":[242,38],"17":[0,242],"18":[242,38],"19":[0,242],"20":[243,493],"21":[240,253],"22":[493,240],"23":[127,126],"24":[2,251]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipFilter.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipFilter.ts"],"names":[],"mappings":"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","sourcesContent":["import { HashValue, OutPoint } from '@node-dlc/bitcoin';\n\nimport { ChannelAnnouncementMessage } from '../messages/ChannelAnnouncementMessage';\nimport { ChannelUpdateMessage } from '../messages/ChannelUpdateMessage';\nimport { ExtendedChannelAnnouncementMessage } from '../messages/ExtendedChannelAnnouncementMessage';\nimport { IWireMessage } from '../messages/IWireMessage';\nimport { NodeAnnouncementMessage } from '../messages/NodeAnnouncementMessage';\nimport { MessageType } from '../MessageType';\nimport { fundingScript } from '../ScriptUtils';\nimport { WireError, WireErrorCode } from '../WireError';\nimport { IGossipStore } from './GossipStore';\nimport { IGossipFilterChainClient } from './IGossipFilterChainClient';\n\nexport class Result<V, E> {\n  public static err<V, E>(error: E): Result<V, E> {\n    return new Result<V, E>(undefined, error);\n  }\n\n  public static ok<V, E>(value: V): Result<V, E> {\n    return new Result<V, E>(value);\n  }\n\n  constructor(readonly value?: V, readonly error?: E) {}\n\n  public get isOk(): boolean {\n    return this.value !== undefined;\n  }\n\n  public get isErr(): boolean {\n    return this.error !== undefined;\n  }\n}\n\nexport type GossipFilterResult = Result<IWireMessage[], WireError>;\n\n/**\n * GossipFilter recieves messages from peers and performs validation\n * on the messages to ensure that they are valid messages. These validation\n * follow messaging rules defined in Bolt #7 and include things like\n * signature checks, on-chain validation, and message sequencing requirements.\n * Successful message validation results in messages being written to an\n * instance of IGossipStore and returned as results\n *\n * The GossipFilter will also store pending messages, such as channel_update\n * message arriving before the channel_announcement.\n */\nexport class GossipFilter {\n  constructor(\n    readonly gossipStore: IGossipStore,\n    readonly pendingStore: IGossipStore,\n    readonly chainClient?: IGossipFilterChainClient,\n  ) {}\n\n  /**\n   * Validates a message and writes it to the appropriate store.\n   * A fully processed messages (or releated messages) will be\n   * returned when a message is successfully processed.\n   *\n   */\n  public async validateMessage(msg: IWireMessage): Promise<GossipFilterResult> {\n    switch (msg.type) {\n      case MessageType.ChannelAnnouncement:\n        return await this._validateChannelAnnouncement(\n          msg as ChannelAnnouncementMessage,\n        );\n      case MessageType.NodeAnnouncement:\n        return await this._validateNodeAnnouncement(\n          msg as NodeAnnouncementMessage,\n        );\n      case MessageType.ChannelUpdate:\n        return await this._validateChannelUpdate(msg as ChannelUpdateMessage);\n    }\n    return Result.ok([] as IWireMessage[]);\n  }\n\n  /**\n   * Validate a node announcement message by checking to see if the\n   * message is newer than the prior timestamp and if the message\n   * has a valid signature from the corresponding node\n   */\n  private async _validateNodeAnnouncement(\n    msg: NodeAnnouncementMessage,\n  ): Promise<GossipFilterResult> {\n    // get or construct a node\n    const existing = await this.gossipStore.findNodeAnnouncement(msg.nodeId);\n\n    // check if the message is newer than the last update\n    if (existing && existing.timestamp >= msg.timestamp)\n      return Result.ok([] as IWireMessage[]);\n\n    // queue node if we don't have any channels\n    const scids = await this.gossipStore.findChannelsForNode(msg.nodeId);\n    if (!scids.length) {\n      await this.pendingStore.saveNodeAnnouncement(msg);\n      return Result.ok([] as IWireMessage[]);\n    }\n\n    // validate message signature\n    if (!NodeAnnouncementMessage.verifySignatures(msg)) {\n      return Result.err(new WireError(WireErrorCode.nodeAnnSigFailed, [msg]));\n    }\n\n    // save the announcement\n    await this.gossipStore.saveNodeAnnouncement(msg);\n\n    // broadcast valid message\n    return Result.ok([msg]);\n  }\n\n  /**\n   * Validates a ChannelAnnouncementMessage by verifying the signatures\n   * and validating the transaction on chain work. This message will\n   */\n  private async _validateChannelAnnouncement(\n    msg: ChannelAnnouncementMessage,\n  ): Promise<GossipFilterResult> {\n    // attempt to find the existing chan_ann message\n    const existing = await this.gossipStore.findChannelAnnouncement(\n      msg.shortChannelId,\n    );\n\n    // If the message is an extended message and it has populated the outpoint and capacity we\n    // can skip message processing becuase there is nothing left to do.\n    if (existing && existing instanceof ExtendedChannelAnnouncementMessage) {\n      return Result.ok([] as IWireMessage[]);\n    }\n\n    // If there is an existing message and we don't have a chain_client then we want\n    // to abort processing to prevent from populating the gossip store with chan_ann\n    // messages that do not have a extended information. Alterntaively, if we DO have an\n    // an existing message that is just a chan_ann and not ext_chan_ann and there is a\n    // chain_client, we want to update the chan_ann with onchain information\n    if (existing && !this.chainClient) {\n      return Result.ok([] as IWireMessage[]);\n    }\n\n    // validate signatures for message\n    if (!ChannelAnnouncementMessage.verifySignatures(msg)) {\n      return Result.err(new WireError(WireErrorCode.chanAnnSigFailed, [msg]));\n    }\n\n    if (this.chainClient) {\n      // load the block hash for the block height\n      const blockHash = await this.chainClient.getBlockHash(\n        msg.shortChannelId.block,\n      );\n      if (!blockHash) {\n        return Result.err(new WireError(WireErrorCode.chanBadBlockHash, [msg]));\n      }\n\n      // load the block details so we can find the tx\n      const block = await this.chainClient.getBlock(blockHash);\n      if (!block) {\n        return Result.err(\n          new WireError(WireErrorCode.chanBadBlock, [msg, blockHash]),\n        );\n      }\n\n      // load the txid from the block details\n      const txId = block.tx[msg.shortChannelId.txIdx];\n      if (!txId) {\n        return Result.err(new WireError(WireErrorCode.chanAnnBadTx, [msg]));\n      }\n\n      // obtain a UTXO to verify the tx hasn't been spent yet\n      const utxo = await this.chainClient.getUtxo(\n        txId,\n        msg.shortChannelId.voutIdx,\n      );\n      if (!utxo) {\n        return Result.err(new WireError(WireErrorCode.chanUtxoSpent, [msg]));\n      }\n\n      // verify the tx script is a p2ms\n      const expectedScript = fundingScript([msg.bitcoinKey1, msg.bitcoinKey2]);\n      const actualScript = Buffer.from(utxo.scriptPubKey.hex, 'hex');\n      if (!expectedScript.equals(actualScript)) {\n        return Result.err(\n          new WireError(WireErrorCode.chanBadScript, [\n            msg,\n            expectedScript,\n            actualScript,\n          ]),\n        );\n      }\n\n      // construct outpoint\n      const outpoint = new OutPoint(\n        HashValue.fromRpc(txId),\n        msg.shortChannelId.voutIdx,\n      );\n\n      // calculate capacity in satoshi\n      // Not sure about this code. MAX_SAFE_INTEGER is still safe\n      // for Bitcoin satoshi.\n      const capacity = BigInt(Math.round(utxo.value * 10 ** 8));\n\n      // overright msg with extended channel_announcement\n      const extended = ExtendedChannelAnnouncementMessage.fromMessage(msg);\n      extended.outpoint = outpoint;\n      extended.capacity = capacity;\n      msg = extended;\n    }\n\n    // save channel_ann\n    await this.gossipStore.saveChannelAnnouncement(msg);\n\n    // broadcast valid message\n    const results: IWireMessage[] = [msg];\n\n    // process outstanding node messages\n    const pendingUpdates = [\n      await this.pendingStore.findChannelUpdate(msg.shortChannelId, 0),\n      await this.pendingStore.findChannelUpdate(msg.shortChannelId, 1),\n    ];\n    for (const pendingUpdate of pendingUpdates) {\n      if (pendingUpdate) {\n        await this.pendingStore.deleteChannelUpdate(\n          pendingUpdate.shortChannelId,\n          pendingUpdate.direction,\n        );\n        const result = await this._validateChannelUpdate(pendingUpdate);\n        if (result.isErr) return result;\n        else results.push(...result.value);\n      }\n    }\n\n    // process outstanding node messages\n    const pendingNodeAnns = [\n      await this.pendingStore.findNodeAnnouncement(msg.nodeId1),\n      await this.pendingStore.findNodeAnnouncement(msg.nodeId2),\n    ];\n    for (const pendingNodeAnn of pendingNodeAnns) {\n      if (pendingNodeAnn) {\n        await this.pendingStore.deleteNodeAnnouncement(pendingNodeAnn.nodeId);\n        const result = await this._validateNodeAnnouncement(pendingNodeAnn);\n        if (result.isErr) return result;\n        else results.push(...result.value);\n      }\n    }\n\n    return Result.ok(results);\n  }\n\n  /**\n   * Validates a channel_update message by ensuring that:\n   * - the channel_announcement has already been recieved\n   * - the channel_update is not old\n   * - the channel_update is correctly signed by the node\n   */\n  private async _validateChannelUpdate(\n    msg: ChannelUpdateMessage,\n  ): Promise<GossipFilterResult> {\n    // Ensure a channel announcement exists. If it does not,\n    // we need to queue the update message until the channel announcement\n    // can be adequately processed. Technically according to the specification in\n    // Bolt 07, we should ignore channel_update message if we not processed\n    // a valid channel_announcement. In reality, we may end up in a situation\n    // where a channel_update makes it to our peer prior to the channel_announcement\n    // being received.\n    const channelMessage = await this.gossipStore.findChannelAnnouncement(\n      msg.shortChannelId,\n    );\n    if (!channelMessage) {\n      await this.pendingStore.saveChannelUpdate(msg);\n      return Result.ok([] as IWireMessage[]);\n    }\n\n    // ignore out of date message\n    const existingUpdate = await this.gossipStore.findChannelUpdate(\n      msg.shortChannelId,\n      msg.direction,\n    );\n    if (existingUpdate && existingUpdate.timestamp >= msg.timestamp) {\n      return Result.ok([] as IWireMessage[]);\n    }\n\n    // validate message signature for the node in\n    const nodeId =\n      msg.direction === 0 ? channelMessage.nodeId1 : channelMessage.nodeId2;\n    if (!ChannelUpdateMessage.validateSignature(msg, nodeId)) {\n      return Result.err(\n        new WireError(WireErrorCode.chanUpdSigFailed, [msg, nodeId]),\n      );\n    }\n\n    // save the message\n    await this.gossipStore.saveChannelUpdate(msg);\n\n    // broadcast valid message\n    return Result.ok([msg]);\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ec67c7bbaace88610a6d9ecf4891f197bc99e355","contentHash":"9aaf7b59cc01adbe8a933461bcca8bade20d8d3416d1efd55301ab7980205a5d"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ExtendedChannelAnnouncementMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ExtendedChannelAnnouncementMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":52}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":16},"end":{"line":5,"column":42}},"4":{"start":{"line":6,"column":17},"end":{"line":6,"column":44}},"5":{"start":{"line":7,"column":19},"end":{"line":7,"column":51}},"6":{"start":{"line":8,"column":37},"end":{"line":8,"column":76}},"7":{"start":{"line":27,"column":25},"end":{"line":27,"column":65}},"8":{"start":{"line":28,"column":8},"end":{"line":28,"column":47}},"9":{"start":{"line":29,"column":8},"end":{"line":29,"column":47}},"10":{"start":{"line":30,"column":8},"end":{"line":30,"column":59}},"11":{"start":{"line":31,"column":8},"end":{"line":31,"column":59}},"12":{"start":{"line":32,"column":8},"end":{"line":32,"column":43}},"13":{"start":{"line":33,"column":8},"end":{"line":33,"column":41}},"14":{"start":{"line":34,"column":8},"end":{"line":34,"column":39}},"15":{"start":{"line":35,"column":8},"end":{"line":35,"column":39}},"16":{"start":{"line":36,"column":8},"end":{"line":36,"column":53}},"17":{"start":{"line":37,"column":8},"end":{"line":37,"column":53}},"18":{"start":{"line":38,"column":8},"end":{"line":38,"column":53}},"19":{"start":{"line":39,"column":8},"end":{"line":39,"column":33}},"20":{"start":{"line":40,"column":8},"end":{"line":40,"column":24}},"21":{"start":{"line":43,"column":25},"end":{"line":43,"column":65}},"22":{"start":{"line":44,"column":23},"end":{"line":44,"column":56}},"23":{"start":{"line":45,"column":8},"end":{"line":45,"column":30}},"24":{"start":{"line":46,"column":8},"end":{"line":46,"column":55}},"25":{"start":{"line":47,"column":8},"end":{"line":47,"column":55}},"26":{"start":{"line":48,"column":8},"end":{"line":48,"column":58}},"27":{"start":{"line":49,"column":8},"end":{"line":49,"column":58}},"28":{"start":{"line":50,"column":20},"end":{"line":50,"column":41}},"29":{"start":{"line":51,"column":8},"end":{"line":51,"column":80}},"30":{"start":{"line":52,"column":8},"end":{"line":52,"column":50}},"31":{"start":{"line":53,"column":8},"end":{"line":53,"column":94}},"32":{"start":{"line":54,"column":8},"end":{"line":54,"column":48}},"33":{"start":{"line":55,"column":8},"end":{"line":55,"column":48}},"34":{"start":{"line":56,"column":8},"end":{"line":56,"column":52}},"35":{"start":{"line":57,"column":8},"end":{"line":57,"column":52}},"36":{"start":{"line":59,"column":8},"end":{"line":78,"column":11}},"37":{"start":{"line":60,"column":12},"end":{"line":77,"column":13}},"38":{"start":{"line":65,"column":20},"end":{"line":65,"column":162}},"39":{"start":{"line":66,"column":20},"end":{"line":66,"column":32}},"40":{"start":{"line":72,"column":20},"end":{"line":72,"column":66}},"41":{"start":{"line":73,"column":20},"end":{"line":73,"column":32}},"42":{"start":{"line":76,"column":20},"end":{"line":76,"column":33}},"43":{"start":{"line":79,"column":8},"end":{"line":79,"column":24}},"44":{"start":{"line":82,"column":30},"end":{"line":82,"column":47}},"45":{"start":{"line":83,"column":23},"end":{"line":83,"column":49}},"46":{"start":{"line":85,"column":26},"end":{"line":85,"column":52}},"47":{"start":{"line":86,"column":8},"end":{"line":86,"column":90}},"48":{"start":{"line":87,"column":8},"end":{"line":87,"column":60}},"49":{"start":{"line":88,"column":20},"end":{"line":88,"column":42}},"50":{"start":{"line":90,"column":8},"end":{"line":90,"column":38}},"51":{"start":{"line":91,"column":8},"end":{"line":91,"column":42}},"52":{"start":{"line":92,"column":8},"end":{"line":92,"column":33}},"53":{"start":{"line":94,"column":8},"end":{"line":94,"column":49}},"54":{"start":{"line":95,"column":8},"end":{"line":95,"column":48}},"55":{"start":{"line":96,"column":8},"end":{"line":96,"column":39}},"56":{"start":{"line":98,"column":8},"end":{"line":98,"column":38}},"57":{"start":{"line":99,"column":8},"end":{"line":99,"column":42}},"58":{"start":{"line":100,"column":8},"end":{"line":100,"column":33}},"59":{"start":{"line":101,"column":8},"end":{"line":101,"column":65}},"60":{"start":{"line":104,"column":0},"end":{"line":104,"column":80}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":28},"end":{"line":41,"column":5}},"line":26},"1":{"name":"(anonymous_1)","decl":{"start":{"line":42,"column":4},"end":{"line":42,"column":5}},"loc":{"start":{"line":42,"column":32},"end":{"line":80,"column":5}},"line":42},"2":{"name":"(anonymous_2)","decl":{"start":{"line":59,"column":41},"end":{"line":59,"column":42}},"loc":{"start":{"line":59,"column":64},"end":{"line":78,"column":9}},"line":59},"3":{"name":"(anonymous_3)","decl":{"start":{"line":81,"column":4},"end":{"line":81,"column":5}},"loc":{"start":{"line":81,"column":16},"end":{"line":102,"column":5}},"line":81}},"branchMap":{"0":{"loc":{"start":{"line":60,"column":12},"end":{"line":77,"column":13}},"type":"switch","locations":[{"start":{"line":64,"column":16},"end":{"line":67,"column":17}},{"start":{"line":71,"column":16},"end":{"line":74,"column":17}},{"start":{"line":75,"column":16},"end":{"line":76,"column":33}}],"line":60}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":135,"8":135,"9":135,"10":135,"11":135,"12":135,"13":135,"14":135,"15":135,"16":135,"17":135,"18":135,"19":135,"20":135,"21":12,"22":12,"23":12,"24":12,"25":12,"26":12,"27":12,"28":12,"29":12,"30":12,"31":12,"32":12,"33":12,"34":12,"35":12,"36":12,"37":13,"38":12,"39":12,"40":1,"41":1,"42":0,"43":12,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1},"f":{"0":135,"1":12,"2":13,"3":1},"b":{"0":[12,1,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ExtendedChannelAnnouncementMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ExtendedChannelAnnouncementMessage.ts"],"names":[],"mappings":"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","sourcesContent":["import { HashByteOrder, HashValue, OutPoint } from '@node-dlc/bitcoin';\nimport { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { BitField, shortChannelIdFromBuffer } from '@node-dlc/common';\n\nimport { readTlvs } from '../serialize/readTlvs';\nimport { ChannelAnnouncementMessage } from './ChannelAnnouncementMessage';\n\n/**\n * Decorator for the channel_announcement that includes the additional\n * information provided by the on-chain validation. Specifically, the\n * channel_announcement message only has a short_channel_id with block, tx num,\n * and vout num. We need to obtain the txid as well as the outpoint value to\n * determine the value of the channel.\n *\n * This information is stored in this decorator class which can be broadcast\n * and used downstream by clients that need both sets of information. Additionally\n * the use of this decorator allows us to store the on-chain data along side the\n * channel_announcement data if so desired.\n */\nexport class ExtendedChannelAnnouncementMessage extends ChannelAnnouncementMessage {\n  /**\n   * Constructs a new ExtendedChannelAnnouncementMessage from the plain-jane\n   * ChannelAnnouncementMessage\n   */\n  public static fromMessage(\n    msg: ChannelAnnouncementMessage,\n  ): ExtendedChannelAnnouncementMessage {\n    const instance = new ExtendedChannelAnnouncementMessage();\n    instance.bitcoinKey1 = msg.bitcoinKey1;\n    instance.bitcoinKey2 = msg.bitcoinKey2;\n    instance.bitcoinSignature1 = msg.bitcoinSignature1;\n    instance.bitcoinSignature2 = msg.bitcoinSignature2;\n    instance.chainHash = msg.chainHash;\n    instance.features = msg.features;\n    instance.nodeId1 = msg.nodeId1;\n    instance.nodeId2 = msg.nodeId2;\n    instance.nodeSignature1 = msg.nodeSignature1;\n    instance.nodeSignature2 = msg.nodeSignature2;\n    instance.shortChannelId = msg.shortChannelId;\n    instance.type = msg.type;\n    return instance;\n  }\n\n  public static deserialize(\n    payload: Buffer,\n  ): ExtendedChannelAnnouncementMessage {\n    const instance = new ExtendedChannelAnnouncementMessage();\n    const reader = new BufferReader(payload);\n    reader.readUInt16BE(); // read off type\n\n    instance.nodeSignature1 = reader.readBytes(64);\n    instance.nodeSignature2 = reader.readBytes(64);\n    instance.bitcoinSignature1 = reader.readBytes(64);\n    instance.bitcoinSignature2 = reader.readBytes(64);\n\n    const len = reader.readUInt16BE();\n    instance.features = BitField.fromBuffer(reader.readBytes(len));\n    instance.chainHash = reader.readBytes(32);\n    instance.shortChannelId = shortChannelIdFromBuffer(reader.readBytes(8));\n    instance.nodeId1 = reader.readBytes(33);\n    instance.nodeId2 = reader.readBytes(33);\n    instance.bitcoinKey1 = reader.readBytes(33);\n    instance.bitcoinKey2 = reader.readBytes(33);\n\n    // read the TLVs for the extended data\n    readTlvs(reader, (type: bigint, valueReader: BufferReader) => {\n      switch (type) {\n        // process the outpoint which is obtained after looking onchain\n        // at the funding transaction. This is encoded as a 32-byte txid\n        // and a 2 byte uint output index\n        case BigInt(16777271): {\n          instance.outpoint = new OutPoint(\n            HashValue.fromRpc(valueReader.readBytes(32).toString('hex')),\n            valueReader.readTUInt16(),\n          );\n          return true;\n        }\n        // process the channel capacity which is obtained  after looking\n        // onchain at the funding transaction outpoint. This is encoded\n        // as a single tuint64 value.\n        case BigInt(16777273): {\n          instance.capacity = valueReader.readTUInt64();\n          return true;\n        }\n        default:\n          return false;\n      }\n    });\n\n    return instance;\n  }\n\n  /**\n   * OutPoint for the channel that includes the transaction identifier as well\n   * as the vout index. This information is obtained by finding the transaction\n   * in a block based on the short_channel_id.\n   */\n  public outpoint: OutPoint;\n\n  /**\n   * Capacity of the funding transaction. This information is obtained from on-chain\n   * validation of the transaction.\n   */\n  public capacity: bigint;\n\n  public serialize(): Buffer {\n    const chanAnnBuffer = super.serialize();\n    const writer = new BufferWriter();\n\n    // outpoint value\n    let valueWriter = new BufferWriter();\n    valueWriter.writeBytes(this.outpoint.txid.serialize(HashByteOrder.RPC));\n    valueWriter.writeTUInt16(this.outpoint.outputIndex);\n    let value = valueWriter.toBuffer();\n\n    // outpoint tlv\n    writer.writeBigSize(16777271);\n    writer.writeBigSize(value.length);\n    writer.writeBytes(value);\n\n    // capacity value\n    valueWriter = new BufferWriter();\n    valueWriter.writeTUInt64(this.capacity);\n    value = valueWriter.toBuffer();\n\n    // capacity tlv\n    writer.writeBigSize(16777273);\n    writer.writeBigSize(value.length);\n    writer.writeBytes(value);\n\n    return Buffer.concat([chanAnnBuffer, writer.toBuffer()]);\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"353845a34b06c0325fdcfed0008088060ac793a2","contentHash":"4c14b9eebef3d2160f7a7d58761eea8cd6969b4522e69e50b750cbcf1b62754d"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/ScriptUtils.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/ScriptUtils.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":13},"end":{"line":6,"column":14}},"5":{"start":{"line":7,"column":25},"end":{"line":7,"column":28}},"6":{"start":{"line":9,"column":18},"end":{"line":9,"column":48}},"7":{"start":{"line":12,"column":4},"end":{"line":19,"column":5}},"8":{"start":{"line":13,"column":8},"end":{"line":13,"column":27}},"9":{"start":{"line":14,"column":8},"end":{"line":14,"column":27}},"10":{"start":{"line":17,"column":8},"end":{"line":17,"column":27}},"11":{"start":{"line":18,"column":8},"end":{"line":18,"column":27}},"12":{"start":{"line":20,"column":19},"end":{"line":20,"column":51}},"13":{"start":{"line":21,"column":17},"end":{"line":21,"column":45}},"14":{"start":{"line":22,"column":4},"end":{"line":22,"column":29}},"15":{"start":{"line":24,"column":0},"end":{"line":24,"column":38}},"16":{"start":{"line":26,"column":4},"end":{"line":31,"column":5}},"17":{"start":{"line":26,"column":17},"end":{"line":26,"column":18}},"18":{"start":{"line":27,"column":8},"end":{"line":28,"column":22}},"19":{"start":{"line":28,"column":12},"end":{"line":28,"column":22}},"20":{"start":{"line":29,"column":8},"end":{"line":30,"column":21}},"21":{"start":{"line":30,"column":12},"end":{"line":30,"column":21}},"22":{"start":{"line":32,"column":4},"end":{"line":32,"column":13}},"23":{"start":{"line":35,"column":21},"end":{"line":35,"column":22}},"24":{"start":{"line":36,"column":4},"end":{"line":44,"column":5}},"25":{"start":{"line":37,"column":8},"end":{"line":43,"column":9}},"26":{"start":{"line":38,"column":12},"end":{"line":38,"column":28}},"27":{"start":{"line":39,"column":12},"end":{"line":39,"column":39}},"28":{"start":{"line":42,"column":12},"end":{"line":42,"column":28}},"29":{"start":{"line":45,"column":19},"end":{"line":45,"column":43}},"30":{"start":{"line":46,"column":19},"end":{"line":46,"column":51}},"31":{"start":{"line":47,"column":4},"end":{"line":55,"column":5}},"32":{"start":{"line":48,"column":8},"end":{"line":54,"column":9}},"33":{"start":{"line":49,"column":12},"end":{"line":49,"column":44}},"34":{"start":{"line":50,"column":12},"end":{"line":50,"column":37}},"35":{"start":{"line":53,"column":12},"end":{"line":53,"column":37}},"36":{"start":{"line":56,"column":4},"end":{"line":56,"column":18}},"37":{"start":{"line":59,"column":4},"end":{"line":64,"column":7}},"38":{"start":{"line":67,"column":4},"end":{"line":70,"column":7}}},"fnMap":{"0":{"name":"fundingScript","decl":{"start":{"line":8,"column":9},"end":{"line":8,"column":22}},"loc":{"start":{"line":8,"column":32},"end":{"line":23,"column":1}},"line":8},"1":{"name":"lesser","decl":{"start":{"line":25,"column":9},"end":{"line":25,"column":15}},"loc":{"start":{"line":25,"column":22},"end":{"line":33,"column":1}},"line":25},"2":{"name":"compileScript","decl":{"start":{"line":34,"column":9},"end":{"line":34,"column":22}},"loc":{"start":{"line":34,"column":31},"end":{"line":57,"column":1}},"line":34},"3":{"name":"p2msScript","decl":{"start":{"line":58,"column":9},"end":{"line":58,"column":19}},"loc":{"start":{"line":58,"column":35},"end":{"line":65,"column":1}},"line":58},"4":{"name":"p2wshScript","decl":{"start":{"line":66,"column":9},"end":{"line":66,"column":20}},"loc":{"start":{"line":66,"column":36},"end":{"line":71,"column":1}},"line":66}},"branchMap":{"0":{"loc":{"start":{"line":12,"column":4},"end":{"line":19,"column":5}},"type":"if","locations":[{"start":{"line":12,"column":4},"end":{"line":19,"column":5}},{"start":{"line":16,"column":9},"end":{"line":19,"column":5}}],"line":12},"1":{"loc":{"start":{"line":27,"column":8},"end":{"line":28,"column":22}},"type":"if","locations":[{"start":{"line":27,"column":8},"end":{"line":28,"column":22}},{"start":{},"end":{}}],"line":27},"2":{"loc":{"start":{"line":29,"column":8},"end":{"line":30,"column":21}},"type":"if","locations":[{"start":{"line":29,"column":8},"end":{"line":30,"column":21}},{"start":{},"end":{}}],"line":29},"3":{"loc":{"start":{"line":37,"column":8},"end":{"line":43,"column":9}},"type":"if","locations":[{"start":{"line":37,"column":8},"end":{"line":43,"column":9}},{"start":{"line":41,"column":13},"end":{"line":43,"column":9}}],"line":37},"4":{"loc":{"start":{"line":48,"column":8},"end":{"line":54,"column":9}},"type":"if","locations":[{"start":{"line":48,"column":8},"end":{"line":54,"column":9}},{"start":{"line":52,"column":13},"end":{"line":54,"column":9}}],"line":48}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":138,"7":138,"8":3,"9":3,"10":135,"11":135,"12":138,"13":138,"14":138,"15":1,"16":138,"17":138,"18":273,"19":3,"20":270,"21":135,"22":0,"23":276,"24":276,"25":966,"26":414,"27":414,"28":552,"29":276,"30":276,"31":276,"32":966,"33":414,"34":414,"35":552,"36":276,"37":138,"38":138},"f":{"0":138,"1":138,"2":276,"3":138,"4":138},"b":{"0":[3,135],"1":[3,270],"2":[135,135],"3":[414,552],"4":[414,552]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/ScriptUtils.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/ScriptUtils.ts"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,6CAA0C;AAE1C,MAAM,IAAI,GAAG,CAAC,CAAC;AACf,MAAM,gBAAgB,GAAG,GAAG,CAAC;AAE7B,SAAgB,aAAa,CAAC,OAAiB;IAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,KAAa,CAAC;IAClB,IAAI,KAAa,CAAC;IAClB,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;QAChB,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KACpB;SAAM;QACL,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;KACpB;IAED,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,IAAA,eAAM,EAAC,MAAM,CAAC,CAAC;IAC5B,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAfD,sCAeC;AAED,SAAS,MAAM,CAAC,CAAS,EAAE,CAAS;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACjC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;KAC3B;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,aAAa,CAAC,MAA8B;IACnD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC1B,UAAU,IAAI,CAAC,CAAC,CAAC,SAAS;YAC1B,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,0BAA0B;SACvD;aAAM;YACL,UAAU,IAAI,CAAC,CAAC,CAAC,SAAS;SAC3B;KACF;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,CAAC;IAExC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAC1B,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,0BAA0B;YAC3D,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC1B;aAAM;YACL,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAC1B;KACF;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS,EAAE,OAAiB;IACzD,OAAO,aAAa,CAAC;QACnB,EAAE,GAAG,CAAC;QACN,GAAG,OAAO;QACV,EAAE,GAAG,CAAC;QACN,gBAAgB;KACjB,CAAC,CAAC,CAAC,kBAAkB;AACxB,CAAC;AAED,SAAS,WAAW,CAAC,aAAqB;IACxC,OAAO,aAAa,CAAC;QACnB,IAAI;QACJ,aAAa;KACd,CAAC,CAAC,CAAC,kBAAkB;AACxB,CAAC","sourcesContent":["import { BufferWriter } from '@node-dlc/bufio';\nimport { sha256 } from '@node-dlc/crypto';\n\nconst OP_0 = 0;\nconst OP_CHECKMULTISIG = 174;\n\nexport function fundingScript(pubkeys: Buffer[]) {\n  const lower = lesser(pubkeys[0], pubkeys[1]);\n  let node1: Buffer;\n  let node2: Buffer;\n  if (lower === -1) {\n    node1 = pubkeys[0];\n    node2 = pubkeys[1];\n  } else {\n    node1 = pubkeys[1];\n    node2 = pubkeys[0];\n  }\n\n  const script = p2msScript(2, 2, [node1, node2]);\n  const hash = sha256(script);\n  return p2wshScript(hash);\n}\n\nfunction lesser(a: Buffer, b: Buffer) {\n  for (let i = 0; i < a.length; i++) {\n    if (a[i] < b[i]) return -1;\n    if (a[i] > b[i]) return 1;\n  }\n  return 0;\n}\n\nfunction compileScript(chunks: Array<Buffer | number>): Buffer {\n  let bufferSize = 0;\n  for (const chunk of chunks) {\n    if (Buffer.isBuffer(chunk)) {\n      bufferSize += 1; // length\n      bufferSize += chunk.length; // chunk length < 76 bytes\n    } else {\n      bufferSize += 1; // opcode\n    }\n  }\n\n  const buffer = Buffer.alloc(bufferSize);\n  const writer = new BufferWriter(buffer);\n\n  for (const chunk of chunks) {\n    if (Buffer.isBuffer(chunk)) {\n      writer.writeUInt8(chunk.length); // chunk length < 76 bytes\n      writer.writeBytes(chunk);\n    } else {\n      writer.writeUInt8(chunk);\n    }\n  }\n  return buffer;\n}\n\nfunction p2msScript(m: number, n: number, pubkeys: Buffer[]): Buffer {\n  return compileScript([\n    80 + m,\n    ...pubkeys,\n    80 + n,\n    OP_CHECKMULTISIG,\n  ]); // prettier-ignore\n}\n\nfunction p2wshScript(hash160Script: Buffer): Buffer {\n  return compileScript([\n    OP_0,\n    hash160Script,\n  ]); // prettier-ignore\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9ad141b4c7bb5e3451cc66f2425762d466b6c9f7","contentHash":"db117244f7e47e8900418059d4b0f5850608da7362cfee4a03bbcff41625cb51"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/WireError.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/WireError.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":51}},"2":{"start":{"line":5,"column":0},"end":{"line":15,"column":74}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":78}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":78}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":78}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":78}},"7":{"start":{"line":10,"column":4},"end":{"line":10,"column":70}},"8":{"start":{"line":11,"column":4},"end":{"line":11,"column":70}},"9":{"start":{"line":12,"column":4},"end":{"line":12,"column":72}},"10":{"start":{"line":13,"column":4},"end":{"line":13,"column":72}},"11":{"start":{"line":14,"column":4},"end":{"line":14,"column":94}},"12":{"start":{"line":16,"column":25},"end":{"line":26,"column":1}},"13":{"start":{"line":33,"column":20},"end":{"line":33,"column":47}},"14":{"start":{"line":34,"column":8},"end":{"line":34,"column":19}},"15":{"start":{"line":35,"column":8},"end":{"line":35,"column":27}},"16":{"start":{"line":36,"column":8},"end":{"line":36,"column":25}},"17":{"start":{"line":37,"column":8},"end":{"line":37,"column":25}},"18":{"start":{"line":40,"column":0},"end":{"line":40,"column":30}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":26},"end":{"line":15,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":5}},"loc":{"start":{"line":32,"column":28},"end":{"line":38,"column":5}},"line":32}},"branchMap":{"0":{"loc":{"start":{"line":15,"column":19},"end":{"line":15,"column":72}},"type":"binary-expr","locations":[{"start":{"line":15,"column":19},"end":{"line":15,"column":40}},{"start":{"line":15,"column":45},"end":{"line":15,"column":71}}],"line":15}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":13,"14":13,"15":13,"16":13,"17":13,"18":1},"f":{"0":1,"1":13},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/WireError.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/WireError.ts"],"names":[],"mappings":";;;AAAA,IAAY,aAUX;AAVD,WAAY,aAAa;IACvB,yEAAoB,CAAA;IACpB,yEAAoB,CAAA;IACpB,yEAAoB,CAAA;IACpB,yEAAoB,CAAA;IACpB,iEAAgB,CAAA;IAChB,iEAAgB,CAAA;IAChB,mEAAiB,CAAA;IACjB,mEAAiB,CAAA;IACjB,yFAA6B,CAAA;AAC/B,CAAC,EAVW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAUxB;AAED,MAAM,gBAAgB,GAAG;IACvB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,aAAa;IAChB,CAAC,EAAE,iBAAiB;IACpB,CAAC,EAAE,iBAAiB;IACpB,GAAG,EAAE,4BAA4B;CAClC,CAAC;AAEF;;;GAGG;AACH,MAAa,SAAU,SAAQ,KAAK;IAKlC,YAAY,IAAmB,EAAE,IAAU;QACzC,MAAM,GAAG,GAAG,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEX,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAbD,8BAaC","sourcesContent":["export enum WireErrorCode {\n  nodeAnnSigFailed = 1,\n  chanAnnSigFailed = 2,\n  chanUpdSigFailed = 3,\n  chanBadBlockHash = 4,\n  chanBadBlock = 5,\n  chanAnnBadTx = 6,\n  chanUtxoSpent = 7,\n  chanBadScript = 8,\n  gossipManagerNotStarted = 101,\n}\n\nconst errorCodeStrings = {\n  1: 'node_ann_sig_failed',\n  2: 'chan_ann_sig_failed',\n  3: 'chan_upd_sig_failed',\n  4: 'chan_bad_block_hash',\n  5: 'chan_bad_block',\n  6: 'chan_bad_tx',\n  7: 'chan_utxo_spent',\n  8: 'chan_bad_script',\n  101: 'gossip_manager_not_started',\n};\n\n/**\n * Creates an error for a wire operation and captures relevant that\n * caused the error to be emitted or thrown.\n */\nexport class WireError extends Error {\n  public area: string;\n  public code: WireErrorCode;\n  public data: any;\n\n  constructor(code: WireErrorCode, data?: any) {\n    const msg = `${errorCodeStrings[code]}`;\n    super(msg);\n\n    this.area = 'wire';\n    this.code = code;\n    this.data = data;\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4fcbf90ba81a7df0eebdbf2cba6f228b40f72557","contentHash":"747a2b7d4cf9e6073ddc064347626299341084c4781237156d1b369518643310"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipManager.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipManager.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":51}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":34}},"4":{"start":{"line":6,"column":45},"end":{"line":6,"column":102}},"5":{"start":{"line":7,"column":22},"end":{"line":7,"column":47}},"6":{"start":{"line":8,"column":20},"end":{"line":8,"column":43}},"7":{"start":{"line":9,"column":20},"end":{"line":9,"column":43}},"8":{"start":{"line":10,"column":23},"end":{"line":10,"column":48}},"9":{"start":{"line":11,"column":21},"end":{"line":11,"column":44}},"10":{"start":{"line":12,"column":22},"end":{"line":12,"column":46}},"11":{"start":{"line":14,"column":0},"end":{"line":18,"column":62}},"12":{"start":{"line":15,"column":4},"end":{"line":15,"column":54}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":52}},"14":{"start":{"line":17,"column":4},"end":{"line":17,"column":50}},"15":{"start":{"line":26,"column":8},"end":{"line":26,"column":16}},"16":{"start":{"line":27,"column":8},"end":{"line":27,"column":39}},"17":{"start":{"line":28,"column":8},"end":{"line":28,"column":41}},"18":{"start":{"line":29,"column":8},"end":{"line":29,"column":39}},"19":{"start":{"line":30,"column":8},"end":{"line":30,"column":43}},"20":{"start":{"line":31,"column":8},"end":{"line":31,"column":31}},"21":{"start":{"line":32,"column":8},"end":{"line":32,"column":44}},"22":{"start":{"line":33,"column":8},"end":{"line":33,"column":92}},"23":{"start":{"line":39,"column":8},"end":{"line":39,"column":31}},"24":{"start":{"line":49,"column":8},"end":{"line":49,"column":52}},"25":{"start":{"line":51,"column":8},"end":{"line":55,"column":9}},"26":{"start":{"line":52,"column":12},"end":{"line":52,"column":55}},"27":{"start":{"line":53,"column":12},"end":{"line":53,"column":49}},"28":{"start":{"line":54,"column":12},"end":{"line":54,"column":52}},"29":{"start":{"line":56,"column":8},"end":{"line":56,"column":35}},"30":{"start":{"line":58,"column":8},"end":{"line":60,"column":9}},"31":{"start":{"line":59,"column":12},"end":{"line":59,"column":38}},"32":{"start":{"line":62,"column":8},"end":{"line":62,"column":33}},"33":{"start":{"line":64,"column":8},"end":{"line":64,"column":28}},"34":{"start":{"line":71,"column":8},"end":{"line":72,"column":95}},"35":{"start":{"line":72,"column":12},"end":{"line":72,"column":95}},"36":{"start":{"line":73,"column":8},"end":{"line":73,"column":56}},"37":{"start":{"line":73,"column":31},"end":{"line":73,"column":54}},"38":{"start":{"line":74,"column":8},"end":{"line":76,"column":9}},"39":{"start":{"line":75,"column":12},"end":{"line":75,"column":36}},"40":{"start":{"line":83,"column":8},"end":{"line":83,"column":66}},"41":{"start":{"line":84,"column":8},"end":{"line":84,"column":63}},"42":{"start":{"line":92,"column":24},"end":{"line":92,"column":90}},"43":{"start":{"line":93,"column":8},"end":{"line":94,"column":19}},"44":{"start":{"line":94,"column":12},"end":{"line":94,"column":19}},"45":{"start":{"line":95,"column":8},"end":{"line":95,"column":57}},"46":{"start":{"line":107,"column":8},"end":{"line":107,"column":51}},"47":{"start":{"line":112,"column":28},"end":{"line":112,"column":37}},"48":{"start":{"line":114,"column":25},"end":{"line":114,"column":73}},"49":{"start":{"line":115,"column":8},"end":{"line":141,"column":9}},"50":{"start":{"line":116,"column":12},"end":{"line":116,"column":26}},"51":{"start":{"line":118,"column":28},"end":{"line":118,"column":95}},"52":{"start":{"line":119,"column":12},"end":{"line":120,"column":30}},"53":{"start":{"line":120,"column":16},"end":{"line":120,"column":30}},"54":{"start":{"line":122,"column":28},"end":{"line":122,"column":95}},"55":{"start":{"line":123,"column":12},"end":{"line":124,"column":30}},"56":{"start":{"line":124,"column":16},"end":{"line":124,"column":30}},"57":{"start":{"line":126,"column":28},"end":{"line":126,"column":59}},"58":{"start":{"line":127,"column":12},"end":{"line":132,"column":13}},"59":{"start":{"line":128,"column":16},"end":{"line":128,"column":41}},"60":{"start":{"line":129,"column":32},"end":{"line":129,"column":92}},"61":{"start":{"line":130,"column":16},"end":{"line":131,"column":34}},"62":{"start":{"line":131,"column":20},"end":{"line":131,"column":34}},"63":{"start":{"line":134,"column":28},"end":{"line":134,"column":59}},"64":{"start":{"line":135,"column":12},"end":{"line":140,"column":13}},"65":{"start":{"line":136,"column":16},"end":{"line":136,"column":41}},"66":{"start":{"line":137,"column":32},"end":{"line":137,"column":92}},"67":{"start":{"line":138,"column":16},"end":{"line":139,"column":34}},"68":{"start":{"line":139,"column":20},"end":{"line":139,"column":34}},"69":{"start":{"line":145,"column":25},"end":{"line":145,"column":71}},"70":{"start":{"line":146,"column":8},"end":{"line":149,"column":9}},"71":{"start":{"line":147,"column":12},"end":{"line":148,"column":30}},"72":{"start":{"line":148,"column":16},"end":{"line":148,"column":30}},"73":{"start":{"line":160,"column":23},"end":{"line":160,"column":109}},"74":{"start":{"line":163,"column":27},"end":{"line":163,"column":81}},"75":{"start":{"line":165,"column":8},"end":{"line":165,"column":79}},"76":{"start":{"line":166,"column":8},"end":{"line":166,"column":70}},"77":{"start":{"line":168,"column":8},"end":{"line":168,"column":35}},"78":{"start":{"line":170,"column":8},"end":{"line":170,"column":67}},"79":{"start":{"line":172,"column":8},"end":{"line":172,"column":45}},"80":{"start":{"line":175,"column":8},"end":{"line":182,"column":9}},"81":{"start":{"line":177,"column":12},"end":{"line":177,"column":39}},"82":{"start":{"line":181,"column":12},"end":{"line":181,"column":38}},"83":{"start":{"line":189,"column":8},"end":{"line":191,"column":9}},"84":{"start":{"line":190,"column":12},"end":{"line":190,"column":52}},"85":{"start":{"line":192,"column":8},"end":{"line":192,"column":38}},"86":{"start":{"line":200,"column":8},"end":{"line":206,"column":9}},"87":{"start":{"line":201,"column":24},"end":{"line":201,"column":35}},"88":{"start":{"line":202,"column":12},"end":{"line":205,"column":23}},"89":{"start":{"line":203,"column":16},"end":{"line":203,"column":43}},"90":{"start":{"line":205,"column":16},"end":{"line":205,"column":23}},"91":{"start":{"line":213,"column":8},"end":{"line":215,"column":9}},"92":{"start":{"line":214,"column":12},"end":{"line":214,"column":84}},"93":{"start":{"line":217,"column":8},"end":{"line":217,"column":38}},"94":{"start":{"line":219,"column":8},"end":{"line":219,"column":34}},"95":{"start":{"line":225,"column":8},"end":{"line":225,"column":32}},"96":{"start":{"line":233,"column":8},"end":{"line":233,"column":32}},"97":{"start":{"line":234,"column":8},"end":{"line":234,"column":55}},"98":{"start":{"line":235,"column":8},"end":{"line":235,"column":43}},"99":{"start":{"line":236,"column":8},"end":{"line":251,"column":9}},"100":{"start":{"line":238,"column":12},"end":{"line":238,"column":35}},"101":{"start":{"line":240,"column":12},"end":{"line":240,"column":58}},"102":{"start":{"line":241,"column":12},"end":{"line":241,"column":46}},"103":{"start":{"line":243,"column":12},"end":{"line":243,"column":63}},"104":{"start":{"line":244,"column":12},"end":{"line":246,"column":13}},"105":{"start":{"line":245,"column":16},"end":{"line":245,"column":42}},"106":{"start":{"line":250,"column":12},"end":{"line":250,"column":48}},"107":{"start":{"line":253,"column":8},"end":{"line":253,"column":33}},"108":{"start":{"line":256,"column":8},"end":{"line":256,"column":63}},"109":{"start":{"line":257,"column":8},"end":{"line":257,"column":29}},"110":{"start":{"line":258,"column":25},"end":{"line":258,"column":73}},"111":{"start":{"line":260,"column":8},"end":{"line":262,"column":9}},"112":{"start":{"line":261,"column":12},"end":{"line":261,"column":88}},"113":{"start":{"line":263,"column":8},"end":{"line":263,"column":103}},"114":{"start":{"line":265,"column":8},"end":{"line":265,"column":44}},"115":{"start":{"line":268,"column":8},"end":{"line":271,"column":9}},"116":{"start":{"line":269,"column":12},"end":{"line":269,"column":85}},"117":{"start":{"line":270,"column":12},"end":{"line":270,"column":19}},"118":{"start":{"line":272,"column":32},"end":{"line":272,"column":168}},"119":{"start":{"line":272,"column":62},"end":{"line":272,"column":164}},"120":{"start":{"line":273,"column":8},"end":{"line":273,"column":65}},"121":{"start":{"line":274,"column":8},"end":{"line":275,"column":19}},"122":{"start":{"line":275,"column":12},"end":{"line":275,"column":19}},"123":{"start":{"line":276,"column":20},"end":{"line":276,"column":51}},"124":{"start":{"line":277,"column":8},"end":{"line":288,"column":9}},"125":{"start":{"line":277,"column":21},"end":{"line":277,"column":22}},"126":{"start":{"line":278,"column":28},"end":{"line":278,"column":39}},"127":{"start":{"line":279,"column":12},"end":{"line":281,"column":13}},"128":{"start":{"line":280,"column":16},"end":{"line":280,"column":114}},"129":{"start":{"line":282,"column":12},"end":{"line":287,"column":13}},"130":{"start":{"line":283,"column":29},"end":{"line":283,"column":150}},"131":{"start":{"line":284,"column":16},"end":{"line":286,"column":17}},"132":{"start":{"line":285,"column":20},"end":{"line":285,"column":69}},"133":{"start":{"line":291,"column":0},"end":{"line":291,"column":38}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":14,"column":1},"end":{"line":14,"column":2}},"loc":{"start":{"line":14,"column":22},"end":{"line":18,"column":1}},"line":14},"1":{"name":"(anonymous_1)","decl":{"start":{"line":25,"column":4},"end":{"line":25,"column":5}},"loc":{"start":{"line":25,"column":64},"end":{"line":34,"column":5}},"line":25},"2":{"name":"(anonymous_2)","decl":{"start":{"line":38,"column":4},"end":{"line":38,"column":5}},"loc":{"start":{"line":38,"column":20},"end":{"line":40,"column":5}},"line":38},"3":{"name":"(anonymous_3)","decl":{"start":{"line":48,"column":4},"end":{"line":48,"column":5}},"loc":{"start":{"line":48,"column":18},"end":{"line":65,"column":5}},"line":48},"4":{"name":"(anonymous_4)","decl":{"start":{"line":70,"column":4},"end":{"line":70,"column":5}},"loc":{"start":{"line":70,"column":18},"end":{"line":77,"column":5}},"line":70},"5":{"name":"(anonymous_5)","decl":{"start":{"line":73,"column":25},"end":{"line":73,"column":26}},"loc":{"start":{"line":73,"column":31},"end":{"line":73,"column":54}},"line":73},"6":{"name":"(anonymous_6)","decl":{"start":{"line":82,"column":4},"end":{"line":82,"column":5}},"loc":{"start":{"line":82,"column":30},"end":{"line":85,"column":5}},"line":82},"7":{"name":"(anonymous_7)","decl":{"start":{"line":91,"column":4},"end":{"line":91,"column":5}},"loc":{"start":{"line":91,"column":44},"end":{"line":96,"column":5}},"line":91},"8":{"name":"(anonymous_8)","decl":{"start":{"line":106,"column":4},"end":{"line":106,"column":5}},"loc":{"start":{"line":106,"column":25},"end":{"line":150,"column":5}},"line":106},"9":{"name":"(anonymous_9)","decl":{"start":{"line":156,"column":4},"end":{"line":156,"column":5}},"loc":{"start":{"line":156,"column":23},"end":{"line":183,"column":5}},"line":156},"10":{"name":"(anonymous_10)","decl":{"start":{"line":188,"column":4},"end":{"line":188,"column":5}},"loc":{"start":{"line":188,"column":29},"end":{"line":193,"column":5}},"line":188},"11":{"name":"(anonymous_11)","decl":{"start":{"line":198,"column":4},"end":{"line":198,"column":5}},"loc":{"start":{"line":198,"column":26},"end":{"line":207,"column":5}},"line":198},"12":{"name":"(anonymous_12)","decl":{"start":{"line":212,"column":4},"end":{"line":212,"column":5}},"loc":{"start":{"line":212,"column":26},"end":{"line":220,"column":5}},"line":212},"13":{"name":"(anonymous_13)","decl":{"start":{"line":224,"column":4},"end":{"line":224,"column":5}},"loc":{"start":{"line":224,"column":24},"end":{"line":226,"column":5}},"line":224},"14":{"name":"(anonymous_14)","decl":{"start":{"line":231,"column":4},"end":{"line":231,"column":5}},"loc":{"start":{"line":231,"column":26},"end":{"line":254,"column":5}},"line":231},"15":{"name":"(anonymous_15)","decl":{"start":{"line":255,"column":4},"end":{"line":255,"column":5}},"loc":{"start":{"line":255,"column":26},"end":{"line":266,"column":5}},"line":255},"16":{"name":"(anonymous_16)","decl":{"start":{"line":267,"column":4},"end":{"line":267,"column":5}},"loc":{"start":{"line":267,"column":35},"end":{"line":289,"column":5}},"line":267},"17":{"name":"(anonymous_17)","decl":{"start":{"line":272,"column":48},"end":{"line":272,"column":49}},"loc":{"start":{"line":272,"column":62},"end":{"line":272,"column":164}},"line":272}},"branchMap":{"0":{"loc":{"start":{"line":18,"column":15},"end":{"line":18,"column":60}},"type":"binary-expr","locations":[{"start":{"line":18,"column":15},"end":{"line":18,"column":32}},{"start":{"line":18,"column":37},"end":{"line":18,"column":59}}],"line":18},"1":{"loc":{"start":{"line":51,"column":8},"end":{"line":55,"column":9}},"type":"if","locations":[{"start":{"line":51,"column":8},"end":{"line":55,"column":9}},{"start":{},"end":{}}],"line":51},"2":{"loc":{"start":{"line":71,"column":8},"end":{"line":72,"column":95}},"type":"if","locations":[{"start":{"line":71,"column":8},"end":{"line":72,"column":95}},{"start":{},"end":{}}],"line":71},"3":{"loc":{"start":{"line":74,"column":8},"end":{"line":76,"column":9}},"type":"if","locations":[{"start":{"line":74,"column":8},"end":{"line":76,"column":9}},{"start":{},"end":{}}],"line":74},"4":{"loc":{"start":{"line":93,"column":8},"end":{"line":94,"column":19}},"type":"if","locations":[{"start":{"line":93,"column":8},"end":{"line":94,"column":19}},{"start":{},"end":{}}],"line":93},"5":{"loc":{"start":{"line":119,"column":12},"end":{"line":120,"column":30}},"type":"if","locations":[{"start":{"line":119,"column":12},"end":{"line":120,"column":30}},{"start":{},"end":{}}],"line":119},"6":{"loc":{"start":{"line":123,"column":12},"end":{"line":124,"column":30}},"type":"if","locations":[{"start":{"line":123,"column":12},"end":{"line":124,"column":30}},{"start":{},"end":{}}],"line":123},"7":{"loc":{"start":{"line":127,"column":12},"end":{"line":132,"column":13}},"type":"if","locations":[{"start":{"line":127,"column":12},"end":{"line":132,"column":13}},{"start":{},"end":{}}],"line":127},"8":{"loc":{"start":{"line":130,"column":16},"end":{"line":131,"column":34}},"type":"if","locations":[{"start":{"line":130,"column":16},"end":{"line":131,"column":34}},{"start":{},"end":{}}],"line":130},"9":{"loc":{"start":{"line":135,"column":12},"end":{"line":140,"column":13}},"type":"if","locations":[{"start":{"line":135,"column":12},"end":{"line":140,"column":13}},{"start":{},"end":{}}],"line":135},"10":{"loc":{"start":{"line":138,"column":16},"end":{"line":139,"column":34}},"type":"if","locations":[{"start":{"line":138,"column":16},"end":{"line":139,"column":34}},{"start":{},"end":{}}],"line":138},"11":{"loc":{"start":{"line":147,"column":12},"end":{"line":148,"column":30}},"type":"if","locations":[{"start":{"line":147,"column":12},"end":{"line":148,"column":30}},{"start":{},"end":{}}],"line":147},"12":{"loc":{"start":{"line":175,"column":8},"end":{"line":182,"column":9}},"type":"if","locations":[{"start":{"line":175,"column":8},"end":{"line":182,"column":9}},{"start":{"line":180,"column":13},"end":{"line":182,"column":9}}],"line":175},"13":{"loc":{"start":{"line":189,"column":8},"end":{"line":191,"column":9}},"type":"if","locations":[{"start":{"line":189,"column":8},"end":{"line":191,"column":9}},{"start":{},"end":{}}],"line":189},"14":{"loc":{"start":{"line":202,"column":12},"end":{"line":205,"column":23}},"type":"if","locations":[{"start":{"line":202,"column":12},"end":{"line":205,"column":23}},{"start":{"line":205,"column":16},"end":{"line":205,"column":23}}],"line":202},"15":{"loc":{"start":{"line":213,"column":8},"end":{"line":215,"column":9}},"type":"if","locations":[{"start":{"line":213,"column":8},"end":{"line":215,"column":9}},{"start":{},"end":{}}],"line":213},"16":{"loc":{"start":{"line":268,"column":8},"end":{"line":271,"column":9}},"type":"if","locations":[{"start":{"line":268,"column":8},"end":{"line":271,"column":9}},{"start":{},"end":{}}],"line":268},"17":{"loc":{"start":{"line":272,"column":69},"end":{"line":272,"column":163}},"type":"cond-expr","locations":[{"start":{"line":272,"column":158},"end":{"line":272,"column":159}},{"start":{"line":272,"column":162},"end":{"line":272,"column":163}}],"line":272},"18":{"loc":{"start":{"line":274,"column":8},"end":{"line":275,"column":19}},"type":"if","locations":[{"start":{"line":274,"column":8},"end":{"line":275,"column":19}},{"start":{},"end":{}}],"line":274},"19":{"loc":{"start":{"line":279,"column":12},"end":{"line":281,"column":13}},"type":"if","locations":[{"start":{"line":279,"column":12},"end":{"line":281,"column":13}},{"start":{},"end":{}}],"line":279},"20":{"loc":{"start":{"line":282,"column":12},"end":{"line":287,"column":13}},"type":"if","locations":[{"start":{"line":282,"column":12},"end":{"line":287,"column":13}},{"start":{},"end":{}}],"line":282},"21":{"loc":{"start":{"line":284,"column":16},"end":{"line":286,"column":17}},"type":"if","locations":[{"start":{"line":284,"column":16},"end":{"line":286,"column":17}},{"start":{},"end":{}}],"line":284}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":24,"16":24,"17":24,"18":24,"19":24,"20":24,"21":24,"22":24,"23":0,"24":16,"25":16,"26":5,"27":5,"28":5,"29":16,"30":16,"31":6,"32":16,"33":16,"34":9,"35":0,"36":9,"37":3,"38":9,"39":6,"40":6,"41":6,"42":1,"43":1,"44":0,"45":1,"46":17,"47":17,"48":17,"49":17,"50":8,"51":8,"52":8,"53":2,"54":8,"55":8,"56":1,"57":8,"58":8,"59":4,"60":4,"61":4,"62":1,"63":8,"64":8,"65":7,"66":7,"67":7,"68":1,"69":17,"70":17,"71":3,"72":1,"73":9,"74":9,"75":9,"76":9,"77":9,"78":9,"79":9,"80":9,"81":7,"82":2,"83":0,"84":0,"85":0,"86":4,"87":8,"88":8,"89":4,"90":4,"91":4,"92":4,"93":4,"94":4,"95":1,"96":7,"97":7,"98":7,"99":7,"100":7,"101":4,"102":4,"103":4,"104":4,"105":4,"106":0,"107":4,"108":16,"109":16,"110":16,"111":16,"112":10,"113":16,"114":16,"115":16,"116":11,"117":11,"118":5,"119":8,"120":5,"121":5,"122":2,"123":3,"124":3,"125":3,"126":6,"127":6,"128":0,"129":6,"130":6,"131":6,"132":4,"133":1},"f":{"0":1,"1":24,"2":0,"3":16,"4":9,"5":3,"6":6,"7":1,"8":17,"9":9,"10":0,"11":4,"12":4,"13":1,"14":7,"15":16,"16":16,"17":8},"b":{"0":[1,1],"1":[5,11],"2":[0,9],"3":[6,3],"4":[0,1],"5":[2,6],"6":[1,7],"7":[4,4],"8":[1,3],"9":[7,1],"10":[1,6],"11":[1,2],"12":[7,2],"13":[0,0],"14":[4,4],"15":[4,0],"16":[11,5],"17":[6,2],"18":[2,3],"19":[0,6],"20":[6,0],"21":[4,2]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipManager.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipManager.ts"],"names":[],"mappings":"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","sourcesContent":["import { HashByteOrder, OutPoint } from '@node-dlc/bitcoin';\nimport { ShortChannelId } from '@node-dlc/common';\nimport { ILogger } from '@node-dlc/logger';\nimport { EventEmitter } from 'events';\n\nimport { ChannelAnnouncementMessage } from '../messages/ChannelAnnouncementMessage';\nimport { ExtendedChannelAnnouncementMessage } from '../messages/ExtendedChannelAnnouncementMessage';\nimport { IWireMessage } from '../messages/IWireMessage';\nimport { MessageType } from '../MessageType';\nimport { Peer } from '../Peer';\nimport { PeerState } from '../PeerState';\nimport { WireError, WireErrorCode } from '../WireError';\nimport { GossipFilter } from './GossipFilter';\nimport { GossipPeer } from './GossipPeer';\nimport { GossipRelay, IGossipRelay } from './GossipRelay';\nimport { IGossipStore } from './GossipStore';\nimport { IGossipFilterChainClient } from './IGossipFilterChainClient';\n\nexport enum SyncState {\n  Unsynced,\n  Syncing,\n  Synced,\n}\n\n// tslint:disable-next-line: interface-name\nexport declare interface GossipManager {\n  on(event: 'message', fn: (msg: IWireMessage) => void): this;\n  on(event: 'error', fn: (err: Error) => void): this;\n  on(event: 'flushed', fn: () => void): this;\n  off(event: 'restored', fn: (block: number) => void): this;\n  off(event: 'message', fn: (msg: IWireMessage) => void): this;\n  off(event: 'error', fn: (err: Error) => void): this;\n  off(event: 'flushed', fn: () => void): this;\n}\n\n/**\n * GossipManager provides is a facade for many parts of gossip. It\n * orchestrates for validating, storing, and emitting\n * routing gossip traffic obtained by peers.\n */\nexport class GossipManager extends EventEmitter {\n  public blockHeight: number;\n  public started: boolean;\n  public syncState: SyncState;\n  public isSynchronizing: boolean;\n  public gossipRelay: IGossipRelay;\n  public readonly peers: Set<GossipPeer>;\n  public readonly logger: ILogger;\n\n  constructor(\n    logger: ILogger,\n    readonly gossipStore: IGossipStore,\n    readonly pendingStore: IGossipStore,\n    readonly chainClient?: IGossipFilterChainClient,\n  ) {\n    super();\n    this.logger = logger.sub('gspmgr');\n    this.peers = new Set<GossipPeer>();\n    this.syncState = SyncState.Unsynced;\n    this.gossipRelay = new GossipRelay(logger.sub('gsprel'), 60000, 2000);\n  }\n\n  /**\n   * The number of peers managed by the PeerManager\n   */\n  public get peerCount(): number {\n    return this.peers.size;\n  }\n\n  /**\n   * Starts the gossip manager. This method will load information\n   * from the gossip store, determine when the last information\n   * was obtained, validate the existing messages (to see if any\n   * channels have closed), and finally emit all messages that\n   * exist in the system.\n   */\n  public async start(): Promise<void> {\n    this.logger.info('starting gossip manager');\n\n    // wait for chain sync to complete\n    if (this.chainClient) {\n      this.logger.info('waiting for chain sync');\n      await this.chainClient.waitForSync();\n      this.logger.info('chain sync complete');\n    }\n\n    await this._restoreState();\n\n    // emit all restored messages\n    for await (const msg of this.allMessages()) {\n      this.emit('message', msg);\n    }\n\n    // start the gossip relay manager\n    this.gossipRelay.start();\n\n    // flag that the manager has now started\n    this.started = true;\n  }\n\n  /**\n   * Adds a new peer to the GossipManager and subscribes to events that will\n   * allow it to iteract with other sub-systems managed by the GossipManager.\n   */\n  public addPeer(peer: Peer): void {\n    if (!this.started)\n      throw new WireError(WireErrorCode.gossipManagerNotStarted);\n\n    peer.on('ready', () => this._onPeerReady(peer));\n\n    if (peer.state === PeerState.Ready) {\n      this._onPeerReady(peer);\n    }\n  }\n\n  /**\n   * Removes the channel from storage by the gossip manager. This\n   * will likely be called by a chain-monitoring service.\n   */\n  public async removeChannel(scid: ShortChannelId): Promise<void> {\n    this.logger.debug('removing channel %s', scid.toString());\n    await this.gossipStore.deleteChannelAnnouncement(scid);\n  }\n\n  /**\n   * Removes the channel from storage by the gossip manager. This will\n   * likely be called by a chain-monitoring service.\n   * @param outpoint\n   */\n  public async removeChannelByOutpoint(outpoint: OutPoint): Promise<void> {\n    const chanAnn = await this.gossipStore.findChannelAnnouncementByOutpoint(\n      outpoint,\n    );\n    if (!chanAnn) return;\n    await this.removeChannel(chanAnn.shortChannelId);\n  }\n\n  /**\n   * Retrieves the valid chan_ann, chan_update, node_ann messages\n   * while making sure to not send duplicate node_ann messages.\n   *\n   * @remarks\n   * For now we are going to buffer messages into memory. We could\n   * return a stream and yield messages as they are streamed from\n   * the gossip_store.\n   */\n  public async *allMessages(): AsyncGenerator<IWireMessage, void, unknown> {\n    this.logger.debug('fetching all messages');\n\n    // maintain a set of node ids that we have already seen so that\n    // we do no rebroadcast node announcements. This set stores the\n    // nodeid pubkey as a hex string, which through testing is the\n    // fastest way to perfrom set operations.\n    const seenNodeIds: Set<string> = new Set();\n\n    // obtain full list of channel announcements\n    const chanAnns = await this.gossipStore.findChannelAnnouncemnts();\n    for (const chanAnn of chanAnns) {\n      yield chanAnn;\n\n      // load and add the node1 channel_update\n      const update1 = await this.gossipStore.findChannelUpdate(\n        chanAnn.shortChannelId,\n        0,\n      );\n      if (update1) yield update1;\n\n      // load and add the nod2 channel_update\n      const update2 = await this.gossipStore.findChannelUpdate(\n        chanAnn.shortChannelId,\n        1,\n      );\n      if (update2) yield update2;\n\n      // optionally load node1 announcement\n      const nodeId1 = chanAnn.nodeId1.toString('hex');\n      if (!seenNodeIds.has(nodeId1)) {\n        seenNodeIds.add(nodeId1);\n        const nodeAnn = await this.gossipStore.findNodeAnnouncement(\n          chanAnn.nodeId1,\n        );\n        if (nodeAnn) yield nodeAnn;\n      }\n\n      // optionally load node2 announcement\n      const nodeId2 = chanAnn.nodeId2.toString('hex');\n      if (!seenNodeIds.has(nodeId2)) {\n        seenNodeIds.add(nodeId2);\n        const nodeAnn = await this.gossipStore.findNodeAnnouncement(\n          chanAnn.nodeId2,\n        );\n        if (nodeAnn) yield nodeAnn;\n      }\n    }\n\n    // Broadcast unattached node announcements. These may have been orphaned\n    // from previously closed channels, or if the node allows node_ann messages\n    // without channels.\n    const nodeAnns = await this.gossipStore.findNodeAnnouncements();\n    for (const nodeAnn of nodeAnns) {\n      if (!seenNodeIds.has(nodeAnn.nodeId.toString('hex'))) yield nodeAnn;\n    }\n  }\n\n  /**\n   * Handles when a peer has been added to the manager and it is finally\n   * ready and has negotiated the gossip technique.\n   * @param peer\n   */\n  private _onPeerReady(peer: Peer) {\n    // Construct a gossip filter for use by the specific GossipPeer. This\n    // filter will be internally used by the GossipPeer to validate and\n    // capture gossip messages\n    const filter = new GossipFilter(\n      this.gossipStore,\n      this.pendingStore,\n      this.chainClient,\n    );\n\n    // Construct the gossip Peer and add it to the collection of Peers\n    // that are currently being managed by the GossipPeer\n    const gossipPeer = new GossipPeer(peer, filter, this.logger);\n\n    // Attach events from the gossipPeer\n    gossipPeer.on('readable', this._onPeerReadable.bind(this, gossipPeer));\n    gossipPeer.on('gossip_error', this._onGossipError.bind(this));\n\n    // Add peer to the list of peers\n    this.peers.add(gossipPeer);\n\n    // Add event handler for a beer closing\n    peer.on('close', this._onPeerClose.bind(this, gossipPeer));\n\n    // Add the peer to the relay manager\n    this.gossipRelay.addPeer(gossipPeer);\n\n    // If we have not yet performed a full synchronization then we can\n    // perform the full gossip state restore from this node\n    if (this.syncState === SyncState.Unsynced) {\n      // eslint-disable-next-line @typescript-eslint/no-floating-promises\n      this._syncPeer(gossipPeer);\n    }\n\n    // If we've already synced, simply enable gossip receiving for the peer\n    else {\n      gossipPeer.enableGossip();\n    }\n  }\n\n  /**\n   * Handles when a peer closes\n   * @param gossipPeer\n   */\n  private _onPeerClose(gossipPeer: GossipPeer) {\n    if (this.gossipRelay) {\n      this.gossipRelay.removePeer(gossipPeer);\n    }\n    this.peers.delete(gossipPeer);\n  }\n\n  /**\n   * Handles when a peer becomes readable\n   * @param peer\n   */\n  private _onPeerReadable(peer: GossipPeer) {\n    // eslint-disable-next-line no-constant-condition\n    while (true) {\n      const msg = peer.read() as IWireMessage;\n      if (msg) this._onGossipMessage(msg);\n      else return;\n    }\n  }\n\n  /**\n   * Handles receieved gossip messages\n   * @param msg\n   */\n  private _onGossipMessage(msg: IWireMessage) {\n    if (msg.type === MessageType.ChannelAnnouncement) {\n      this.blockHeight = Math.max(\n        this.blockHeight,\n        (msg as ChannelAnnouncementMessage).shortChannelId.block,\n      );\n    }\n\n    // enqueue the message into the relayer\n    this.gossipRelay.enqueue(msg);\n\n    // emit the message generally\n    this.emit('message', msg);\n  }\n\n  /**\n   * Handles Gossip Errors\n   */\n  private _onGossipError(err: Error) {\n    this.emit('error', err);\n  }\n\n  /**\n   * Synchronize the peer using the peer's synchronization mechanism.\n   * @param peer\n   */\n  private async _syncPeer(peer: GossipPeer) {\n    // Disable gossip relay\n    this.gossipRelay.stop();\n\n    this.logger.trace(\"sync status now 'syncing'\");\n    this.syncState = SyncState.Syncing;\n\n    try {\n      // perform synchronization\n      await peer.syncRange();\n\n      // finally transition to sync complete status\n      this.logger.trace(\"sync status now 'synced'\");\n      this.syncState = SyncState.Synced;\n\n      // enable gossip for all the peers\n      this.logger.trace('enabling gossip for all peers');\n      for (const gossipPeer of this.peers) {\n        gossipPeer.enableGossip();\n      }\n    } catch (ex) {\n      // TODO select next peer\n      this.syncState = SyncState.Unsynced;\n    }\n\n    // Enable gossip relay now that sync is complete\n    this.gossipRelay.start();\n  }\n\n  private async _restoreState() {\n    this.logger.info('retrieving gossip state from store');\n    this.blockHeight = 0;\n    const chanAnns = await this.gossipStore.findChannelAnnouncemnts();\n\n    // find best block height\n    for (const chanAnn of chanAnns) {\n      this.blockHeight = Math.max(\n        this.blockHeight,\n        chanAnn.shortChannelId.block,\n      );\n    }\n    this.logger.info(\"highest block %d found from %d channels\", this.blockHeight, chanAnns.length); // prettier-ignore\n\n    // validate all utxos\n    await this._validateUtxos(chanAnns);\n  }\n\n  private async _validateUtxos(chanAnns: ChannelAnnouncementMessage[]) {\n    if (!this.chainClient) {\n      this.logger.info('skipping utxo validation, no chain_client configured');\n      return;\n    }\n\n    const extChanAnnCount = chanAnns.reduce(\n      (acc, msg) =>\n        acc + (msg instanceof ExtendedChannelAnnouncementMessage ? 1 : 0),\n      0,\n    );\n    this.logger.info('validating %d utxos', extChanAnnCount);\n\n    if (!extChanAnnCount) return;\n\n    const oct = Math.trunc(extChanAnnCount / 8);\n    for (let i = 0; i < chanAnns.length; i++) {\n      const chanAnn = chanAnns[i];\n      if ((i + 1) % oct === 0) {\n        this.logger.info(\n          'validating utxos %s% complete',\n          (((i + 1) / extChanAnnCount) * 100).toFixed(2),\n        );\n      }\n      if (chanAnn instanceof ExtendedChannelAnnouncementMessage) {\n        const utxo = await this.chainClient.getUtxo(\n          chanAnn.outpoint.txid.toString(HashByteOrder.RPC),\n          chanAnn.outpoint.outputIndex,\n        );\n        if (!utxo) {\n          await this.removeChannel(chanAnn.shortChannelId);\n        }\n      }\n    }\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"2731a6ecde5d2401b027780d214b7c76130fafe9","contentHash":"8a1170142c0e43af99b5e6eeb8676f3a981aaaff557871ec421f6d8cb75ab807"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PeerState.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PeerState.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":27}},"2":{"start":{"line":5,"column":0},"end":{"line":10,"column":62}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":62}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":70}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":50}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":67}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":22},"end":{"line":10,"column":1}},"line":5}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":15},"end":{"line":10,"column":60}},"type":"binary-expr","locations":[{"start":{"line":10,"column":15},"end":{"line":10,"column":32}},{"start":{"line":10,"column":37},"end":{"line":10,"column":59}}],"line":10}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{"0":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PeerState.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PeerState.ts"],"names":[],"mappings":";;;AAAA,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,yDAAgB,CAAA;IAChB,iEAAoB,CAAA;IACpB,6CAAW,CAAA;IACX,8DAAoB,CAAA;AACtB,CAAC,EALW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAKpB","sourcesContent":["export enum PeerState {\n  Disconnected = 0,\n  AwaitingPeerInit = 1,\n  Ready = 100,\n  Disconnecting = 1000,\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d446f8368fb462e42be01b0f768d8edb77f5e7d5","contentHash":"419e15fb28ad007b029ce493015c02de675ef6bfaf18b5a1fda9ac2aec7f945d"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipPeer.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipPeer.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":48}},"2":{"start":{"line":4,"column":17},"end":{"line":4,"column":34}},"3":{"start":{"line":5,"column":27},"end":{"line":5,"column":63}},"4":{"start":{"line":6,"column":22},"end":{"line":6,"column":47}},"5":{"start":{"line":7,"column":20},"end":{"line":7,"column":43}},"6":{"start":{"line":8,"column":22},"end":{"line":8,"column":46}},"7":{"start":{"line":9,"column":32},"end":{"line":9,"column":66}},"8":{"start":{"line":10,"column":28},"end":{"line":10,"column":58}},"9":{"start":{"line":12,"column":0},"end":{"line":16,"column":62}},"10":{"start":{"line":13,"column":4},"end":{"line":13,"column":48}},"11":{"start":{"line":14,"column":4},"end":{"line":14,"column":52}},"12":{"start":{"line":15,"column":4},"end":{"line":15,"column":52}},"13":{"start":{"line":32,"column":8},"end":{"line":32,"column":71}},"14":{"start":{"line":33,"column":8},"end":{"line":33,"column":25}},"15":{"start":{"line":34,"column":8},"end":{"line":34,"column":29}},"16":{"start":{"line":35,"column":8},"end":{"line":35,"column":42}},"17":{"start":{"line":37,"column":8},"end":{"line":39,"column":9}},"18":{"start":{"line":38,"column":12},"end":{"line":38,"column":92}},"19":{"start":{"line":41,"column":8},"end":{"line":41,"column":52}},"20":{"start":{"line":45,"column":8},"end":{"line":45,"column":66}},"21":{"start":{"line":46,"column":8},"end":{"line":46,"column":56}},"22":{"start":{"line":46,"column":36},"end":{"line":46,"column":54}},"23":{"start":{"line":47,"column":8},"end":{"line":49,"column":9}},"24":{"start":{"line":48,"column":12},"end":{"line":48,"column":131}},"25":{"start":{"line":56,"column":8},"end":{"line":57,"column":103}},"26":{"start":{"line":66,"column":8},"end":{"line":72,"column":9}},"27":{"start":{"line":67,"column":30},"end":{"line":67,"column":54}},"28":{"start":{"line":68,"column":12},"end":{"line":68,"column":106}},"29":{"start":{"line":69,"column":12},"end":{"line":69,"column":72}},"30":{"start":{"line":70,"column":12},"end":{"line":70,"column":44}},"31":{"start":{"line":71,"column":12},"end":{"line":71,"column":24}},"32":{"start":{"line":73,"column":8},"end":{"line":73,"column":21}},"33":{"start":{"line":79,"column":8},"end":{"line":81,"column":9}},"34":{"start":{"line":80,"column":12},"end":{"line":80,"column":38}},"35":{"start":{"line":87,"column":8},"end":{"line":89,"column":9}},"36":{"start":{"line":88,"column":12},"end":{"line":88,"column":40}},"37":{"start":{"line":96,"column":8},"end":{"line":96,"column":28}},"38":{"start":{"line":103,"column":8},"end":{"line":103,"column":35}},"39":{"start":{"line":109,"column":8},"end":{"line":109,"column":31}},"40":{"start":{"line":117,"column":8},"end":{"line":131,"column":9}},"41":{"start":{"line":118,"column":12},"end":{"line":118,"column":48}},"42":{"start":{"line":119,"column":24},"end":{"line":119,"column":40}},"43":{"start":{"line":120,"column":12},"end":{"line":123,"column":13}},"44":{"start":{"line":121,"column":16},"end":{"line":121,"column":50}},"45":{"start":{"line":122,"column":16},"end":{"line":122,"column":23}},"46":{"start":{"line":124,"column":33},"end":{"line":124,"column":63}},"47":{"start":{"line":125,"column":12},"end":{"line":125,"column":46}},"48":{"start":{"line":126,"column":12},"end":{"line":130,"column":13}},"49":{"start":{"line":127,"column":16},"end":{"line":129,"column":17}},"50":{"start":{"line":128,"column":20},"end":{"line":128,"column":56}},"51":{"start":{"line":141,"column":8},"end":{"line":143,"column":9}},"52":{"start":{"line":142,"column":12},"end":{"line":142,"column":55}},"53":{"start":{"line":145,"column":8},"end":{"line":168,"column":9}},"54":{"start":{"line":148,"column":12},"end":{"line":167,"column":13}},"55":{"start":{"line":149,"column":31},"end":{"line":149,"column":69}},"56":{"start":{"line":150,"column":16},"end":{"line":159,"column":17}},"57":{"start":{"line":151,"column":20},"end":{"line":151,"column":40}},"58":{"start":{"line":158,"column":20},"end":{"line":158,"column":60}},"59":{"start":{"line":164,"column":16},"end":{"line":164,"column":34}},"60":{"start":{"line":165,"column":16},"end":{"line":165,"column":40}},"61":{"start":{"line":166,"column":16},"end":{"line":166,"column":26}},"62":{"start":{"line":169,"column":8},"end":{"line":169,"column":21}},"63":{"start":{"line":174,"column":8},"end":{"line":176,"column":9}},"64":{"start":{"line":175,"column":12},"end":{"line":175,"column":46}},"65":{"start":{"line":183,"column":8},"end":{"line":183,"column":51}},"66":{"start":{"line":183,"column":27},"end":{"line":183,"column":49}},"67":{"start":{"line":186,"column":0},"end":{"line":186,"column":32}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":1},"end":{"line":12,"column":2}},"loc":{"start":{"line":12,"column":22},"end":{"line":16,"column":1}},"line":12},"1":{"name":"(anonymous_1)","decl":{"start":{"line":31,"column":4},"end":{"line":31,"column":5}},"loc":{"start":{"line":31,"column":38},"end":{"line":50,"column":5}},"line":31},"2":{"name":"(anonymous_2)","decl":{"start":{"line":46,"column":30},"end":{"line":46,"column":31}},"loc":{"start":{"line":46,"column":36},"end":{"line":46,"column":54}},"line":46},"3":{"name":"(anonymous_3)","decl":{"start":{"line":55,"column":4},"end":{"line":55,"column":5}},"loc":{"start":{"line":55,"column":24},"end":{"line":58,"column":5}},"line":55},"4":{"name":"(anonymous_4)","decl":{"start":{"line":65,"column":4},"end":{"line":65,"column":5}},"loc":{"start":{"line":65,"column":43},"end":{"line":74,"column":5}},"line":65},"5":{"name":"(anonymous_5)","decl":{"start":{"line":78,"column":4},"end":{"line":78,"column":5}},"loc":{"start":{"line":78,"column":19},"end":{"line":82,"column":5}},"line":78},"6":{"name":"(anonymous_6)","decl":{"start":{"line":86,"column":4},"end":{"line":86,"column":5}},"loc":{"start":{"line":86,"column":20},"end":{"line":90,"column":5}},"line":86},"7":{"name":"(anonymous_7)","decl":{"start":{"line":95,"column":4},"end":{"line":95,"column":5}},"loc":{"start":{"line":95,"column":14},"end":{"line":97,"column":5}},"line":95},"8":{"name":"(anonymous_8)","decl":{"start":{"line":102,"column":4},"end":{"line":102,"column":5}},"loc":{"start":{"line":102,"column":21},"end":{"line":104,"column":5}},"line":102},"9":{"name":"(anonymous_9)","decl":{"start":{"line":108,"column":4},"end":{"line":108,"column":5}},"loc":{"start":{"line":108,"column":17},"end":{"line":110,"column":5}},"line":108},"10":{"name":"(anonymous_10)","decl":{"start":{"line":116,"column":4},"end":{"line":116,"column":5}},"loc":{"start":{"line":116,"column":28},"end":{"line":132,"column":5}},"line":116},"11":{"name":"(anonymous_11)","decl":{"start":{"line":139,"column":4},"end":{"line":139,"column":5}},"loc":{"start":{"line":139,"column":30},"end":{"line":170,"column":5}},"line":139},"12":{"name":"(anonymous_12)","decl":{"start":{"line":171,"column":4},"end":{"line":171,"column":5}},"loc":{"start":{"line":171,"column":12},"end":{"line":184,"column":5}},"line":171},"13":{"name":"(anonymous_13)","decl":{"start":{"line":183,"column":21},"end":{"line":183,"column":22}},"loc":{"start":{"line":183,"column":27},"end":{"line":183,"column":49}},"line":183}},"branchMap":{"0":{"loc":{"start":{"line":16,"column":15},"end":{"line":16,"column":60}},"type":"binary-expr","locations":[{"start":{"line":16,"column":15},"end":{"line":16,"column":32}},{"start":{"line":16,"column":37},"end":{"line":16,"column":59}}],"line":16},"1":{"loc":{"start":{"line":37,"column":8},"end":{"line":39,"column":9}},"type":"if","locations":[{"start":{"line":37,"column":8},"end":{"line":39,"column":9}},{"start":{},"end":{}}],"line":37},"2":{"loc":{"start":{"line":47,"column":8},"end":{"line":49,"column":9}},"type":"if","locations":[{"start":{"line":47,"column":8},"end":{"line":49,"column":9}},{"start":{},"end":{}}],"line":47},"3":{"loc":{"start":{"line":56,"column":16},"end":{"line":57,"column":101}},"type":"binary-expr","locations":[{"start":{"line":56,"column":16},"end":{"line":56,"column":105}},{"start":{"line":57,"column":12},"end":{"line":57,"column":101}}],"line":56},"4":{"loc":{"start":{"line":66,"column":8},"end":{"line":72,"column":9}},"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":72,"column":9}},{"start":{},"end":{}}],"line":66},"5":{"loc":{"start":{"line":79,"column":8},"end":{"line":81,"column":9}},"type":"if","locations":[{"start":{"line":79,"column":8},"end":{"line":81,"column":9}},{"start":{},"end":{}}],"line":79},"6":{"loc":{"start":{"line":87,"column":8},"end":{"line":89,"column":9}},"type":"if","locations":[{"start":{"line":87,"column":8},"end":{"line":89,"column":9}},{"start":{},"end":{}}],"line":87},"7":{"loc":{"start":{"line":120,"column":12},"end":{"line":123,"column":13}},"type":"if","locations":[{"start":{"line":120,"column":12},"end":{"line":123,"column":13}},{"start":{},"end":{}}],"line":120},"8":{"loc":{"start":{"line":127,"column":16},"end":{"line":129,"column":17}},"type":"if","locations":[{"start":{"line":127,"column":16},"end":{"line":129,"column":17}},{"start":{},"end":{}}],"line":127},"9":{"loc":{"start":{"line":141,"column":8},"end":{"line":143,"column":9}},"type":"if","locations":[{"start":{"line":141,"column":8},"end":{"line":143,"column":9}},{"start":{},"end":{}}],"line":141},"10":{"loc":{"start":{"line":145,"column":8},"end":{"line":168,"column":9}},"type":"if","locations":[{"start":{"line":145,"column":8},"end":{"line":168,"column":9}},{"start":{},"end":{}}],"line":145},"11":{"loc":{"start":{"line":145,"column":12},"end":{"line":147,"column":67}},"type":"binary-expr","locations":[{"start":{"line":145,"column":12},"end":{"line":145,"column":70}},{"start":{"line":146,"column":12},"end":{"line":146,"column":64}},{"start":{"line":147,"column":12},"end":{"line":147,"column":67}}],"line":145},"12":{"loc":{"start":{"line":150,"column":16},"end":{"line":159,"column":17}},"type":"if","locations":[{"start":{"line":150,"column":16},"end":{"line":159,"column":17}},{"start":{"line":153,"column":21},"end":{"line":159,"column":17}}],"line":150},"13":{"loc":{"start":{"line":174,"column":8},"end":{"line":176,"column":9}},"type":"if","locations":[{"start":{"line":174,"column":8},"end":{"line":176,"column":9}},{"start":{},"end":{}}],"line":174}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":11,"14":11,"15":11,"16":11,"17":11,"18":0,"19":11,"20":11,"21":11,"22":0,"23":11,"24":7,"25":24,"26":7,"27":3,"28":3,"29":3,"30":0,"31":0,"32":4,"33":6,"34":2,"35":0,"36":0,"37":0,"38":3,"39":0,"40":39,"41":43,"42":43,"43":43,"44":29,"45":29,"46":14,"47":14,"48":14,"49":14,"50":10,"51":14,"52":0,"53":14,"54":14,"55":14,"56":14,"57":12,"58":2,"59":0,"60":0,"61":0,"62":2,"63":25,"64":10,"65":25,"66":25,"67":1},"f":{"0":1,"1":11,"2":0,"3":24,"4":7,"5":6,"6":0,"7":0,"8":3,"9":0,"10":39,"11":14,"12":25,"13":25},"b":{"0":[1,1],"1":[0,11],"2":[7,4],"3":[24,12],"4":[3,4],"5":[2,4],"6":[0,0],"7":[29,14],"8":[10,4],"9":[0,14],"10":[14,0],"11":[14,8,4],"12":[12,2],"13":[10,15]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipPeer.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipPeer.ts"],"names":[],"mappings":"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","sourcesContent":["import { ILogger } from '@node-dlc/logger';\nimport { Readable } from 'stream';\n\nimport { InitFeatureFlags } from '../flags/InitFeatureFlags';\nimport { IWireMessage } from '../messages/IWireMessage';\nimport { MessageType } from '../MessageType';\nimport { IPeer, Peer } from '../Peer';\nimport { PeerState } from '../PeerState';\nimport { GossipError, GossipErrorCode } from './GossipError';\nimport { GossipFilter } from './GossipFilter';\nimport { GossipQueriesReceiver } from './GossipQueriesReceiver';\nimport { GossipQueriesSync } from './GossipQueriesSync';\n\nexport enum ReadState {\n  Ready,\n  Reading,\n  Blocked,\n}\n\n/**\n * Implements a decorator for the standard Peer adding functionality for Gossip\n * related activities. Messages from the GossipPeer occur after being pushed\n * through a GossipFilter to validate they are aokay.\n */\nexport class GossipPeer extends Readable implements IPeer {\n  public readonly logger: ILogger;\n\n  private _readState: ReadState = ReadState.Ready;\n  private _receiver: GossipQueriesReceiver;\n  private _syncRangeTask: GossipQueriesSync;\n\n  /**\n   * This class expects to be instantiated by a peer that is read and will\n   * throw if the peer is not yet in the ready state. This ensures we can\n   * construct the GossipPeer correctly using the negotiated features\n   * @param peer\n   * @param filter\n   * @param logger\n   */\n  constructor(\n    readonly peer: Peer,\n    readonly filter: GossipFilter,\n    logger: ILogger,\n  ) {\n    super({ objectMode: true, highWaterMark: peer.highWaterMark });\n\n    // Enforce that the peer is ready to rock\n    if (peer.state !== PeerState.Ready) {\n      throw new GossipError(GossipErrorCode.PeerNotReady);\n    }\n\n    // Construct a sub-logger for use by the Gossiping systems\n    this.logger = logger.sub('gspeer', peer.id);\n\n    // Attach the appropriate events, many of them will simply be forwarded\n    // but we will intercept messages and funnel appropriate messages\n    // through the filter.\n    this.peer.on('readable', this._onPeerReadable.bind(this));\n    this.peer.on('close', () => this.emit('close'));\n    if (this.gossipQueries) {\n      this._receiver = new GossipQueriesReceiver(\n        this.peer.localFeatures[0],\n        this.peer,\n        this.logger,\n      );\n    }\n  }\n\n  /**\n   * Returns true if the gossip_queries feature has been negotiated with the\n   * remote peer.\n   */\n  public get gossipQueries(): boolean {\n    return (\n      this.peer.remoteFeatures.isSet(InitFeatureFlags.gossipQueriesOptional) ||\n      this.peer.remoteFeatures.isSet(InitFeatureFlags.gossipQueriesRequired)\n    );\n  }\n\n  /**\n   * Performs Gossip synchronization using the negotiated strategy. Currently\n   * only support gossip_queries\n   * @param firstBlock\n   * @param numBlocks\n   */\n  public async syncRange(\n    firstBlock?: number,\n    numBlocks?: number,\n  ): Promise<boolean> {\n    if (this.gossipQueries) {\n      const chainHash = this.peer.localChains[0];\n      this._syncRangeTask = new GossipQueriesSync(chainHash, this, this.logger);\n      await this._syncRangeTask.queryRange(firstBlock, numBlocks);\n      this._syncRangeTask = undefined;\n      return true;\n    }\n    return false;\n  }\n\n  /**\n   * Enables the receipt of rumor mongered messages.\n   */\n  public enableGossip(): void {\n    if (this.gossipQueries) {\n      this._receiver.activate();\n    }\n  }\n\n  /**\n   * Disables the receipt of rumor mongered messages.\n   */\n  public disableGossip(): void {\n    if (this.gossipQueries) {\n      this._receiver.deactivate();\n    }\n  }\n\n  /**\n   * Sends the serialized data to the peer.\n   * @param buf\n   */\n  public send(buf: Buffer): void {\n    this.peer.send(buf);\n  }\n\n  /**\n   * Sends a message to the peer using the default serialization.\n   * @param msg\n   */\n  public sendMessage(msg: IWireMessage): void {\n    this.peer.sendMessage(msg);\n  }\n\n  /**\n   * Disconnects the peer\n   */\n  public disconnect(): void {\n    this.peer.disconnect();\n  }\n\n  /**\n   * Fires when a peer triggers the readable event. This method locks\n   * to ensure only a single read event occurs at a time.\n   * @returns\n   */\n  protected async _onPeerReadable(): Promise<void> {\n    while (this._readState === ReadState.Ready) {\n      this._readState = ReadState.Reading;\n      const msg = this.peer.read() as IWireMessage;\n      if (!msg) {\n        this._readState = ReadState.Ready;\n        return;\n      }\n\n      const filteredMsgs = await this._onPeerMessage(msg);\n      this._readState = ReadState.Ready;\n\n      for (const filteredMsg of filteredMsgs) {\n        if (!this.push(filteredMsg)) {\n          this._readState = ReadState.Blocked;\n        }\n      }\n    }\n  }\n\n  /**\n   * Internally process messages. If the message is a routing related message\n   * it will pass through the GossipFilter, otherwise it will be immediately\n   * broadcast.\n   * @param msg\n   */\n  protected async _onPeerMessage(msg: IWireMessage): Promise<IWireMessage[]> {\n    // HACK: we're adding the sync task message tracking here\n    if (this._syncRangeTask) {\n      this._syncRangeTask.handleWireMessage(msg);\n    }\n\n    // Run gossip message through the filter\n    if (\n      msg.type === MessageType.ChannelAnnouncement ||\n      msg.type === MessageType.ChannelUpdate ||\n      msg.type === MessageType.NodeAnnouncement\n    ) {\n      try {\n        const result = await this.filter.validateMessage(msg);\n\n        if (result.isOk) {\n          return result.value;\n        } else {\n          // Handled error should be emitted to the caller\n          // but we prevent the transform stream from\n          // stopping by calling the callback without an\n          // error.\n          this.emit('gossip_error', result.error);\n        }\n\n        // Unhandled error is something unexpected and our peer\n        // is now in a broken state and we need to disconnect.\n      } catch (err) {\n        this.disconnect();\n        this.emit('error', err);\n        return [];\n      }\n    }\n    return [msg];\n  }\n\n  public _read(): void {\n    // This method will be triggered when .read() is called by the\n    // consumer. Therefore we can consider the read unblocked.\n    if (this._readState === ReadState.Blocked) {\n      this._readState = ReadState.Ready;\n    }\n    // Trigger a read but wait until the end of the event loop.\n    // This is necessary when reading in paused mode where\n    // _read was triggered by stream.read() originating inside\n    // a \"readable\" event handler. Attempting to push more data\n    // synchronously will not trigger another \"readable\" event.\n    // eslint-disable-next-line @typescript-eslint/no-misused-promises\n    setImmediate(() => this._onPeerReadable());\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c7d2169c021e6839c6c1cba7804cc62dc900ff65","contentHash":"a3ce73b78dcc068c8f3b87620fe303ee61148b152f94ebc5dd91833f0bb02a43"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipQueriesReceiver.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipQueriesReceiver.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":76}},"2":{"start":{"line":4,"column":39},"end":{"line":4,"column":90}},"3":{"start":{"line":6,"column":0},"end":{"line":9,"column":113}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":80}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":90}},"6":{"start":{"line":16,"column":8},"end":{"line":16,"column":35}},"7":{"start":{"line":17,"column":8},"end":{"line":17,"column":25}},"8":{"start":{"line":18,"column":8},"end":{"line":18,"column":29}},"9":{"start":{"line":19,"column":8},"end":{"line":19,"column":54}},"10":{"start":{"line":20,"column":8},"end":{"line":20,"column":42}},"11":{"start":{"line":21,"column":8},"end":{"line":21,"column":33}},"12":{"start":{"line":24,"column":8},"end":{"line":24,"column":27}},"13":{"start":{"line":27,"column":8},"end":{"line":27,"column":36}},"14":{"start":{"line":30,"column":8},"end":{"line":30,"column":36}},"15":{"start":{"line":39,"column":8},"end":{"line":39,"column":48}},"16":{"start":{"line":41,"column":8},"end":{"line":41,"column":42}},"17":{"start":{"line":42,"column":8},"end":{"line":42,"column":33}},"18":{"start":{"line":44,"column":20},"end":{"line":44,"column":85}},"19":{"start":{"line":45,"column":8},"end":{"line":45,"column":39}},"20":{"start":{"line":46,"column":8},"end":{"line":46,"column":40}},"21":{"start":{"line":47,"column":8},"end":{"line":47,"column":31}},"22":{"start":{"line":48,"column":8},"end":{"line":48,"column":35}},"23":{"start":{"line":50,"column":8},"end":{"line":50,"column":54}},"24":{"start":{"line":60,"column":8},"end":{"line":60,"column":79}},"25":{"start":{"line":62,"column":8},"end":{"line":62,"column":37}},"26":{"start":{"line":63,"column":8},"end":{"line":63,"column":37}},"27":{"start":{"line":65,"column":20},"end":{"line":65,"column":85}},"28":{"start":{"line":66,"column":8},"end":{"line":66,"column":39}},"29":{"start":{"line":67,"column":8},"end":{"line":67,"column":35}},"30":{"start":{"line":68,"column":8},"end":{"line":68,"column":35}},"31":{"start":{"line":69,"column":8},"end":{"line":69,"column":35}},"32":{"start":{"line":71,"column":8},"end":{"line":71,"column":59}},"33":{"start":{"line":74,"column":0},"end":{"line":74,"column":54}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":1},"end":{"line":6,"column":2}},"loc":{"start":{"line":6,"column":39},"end":{"line":9,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":41},"end":{"line":22,"column":5}},"line":15},"2":{"name":"(anonymous_2)","decl":{"start":{"line":23,"column":4},"end":{"line":23,"column":5}},"loc":{"start":{"line":23,"column":16},"end":{"line":25,"column":5}},"line":23},"3":{"name":"(anonymous_3)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":25},"end":{"line":28,"column":5}},"line":26},"4":{"name":"(anonymous_4)","decl":{"start":{"line":29,"column":4},"end":{"line":29,"column":5}},"loc":{"start":{"line":29,"column":25},"end":{"line":31,"column":5}},"line":29},"5":{"name":"(anonymous_5)","decl":{"start":{"line":38,"column":4},"end":{"line":38,"column":5}},"loc":{"start":{"line":38,"column":17},"end":{"line":51,"column":5}},"line":38},"6":{"name":"(anonymous_6)","decl":{"start":{"line":59,"column":4},"end":{"line":59,"column":5}},"loc":{"start":{"line":59,"column":72},"end":{"line":72,"column":5}},"line":59}},"branchMap":{"0":{"loc":{"start":{"line":9,"column":32},"end":{"line":9,"column":111}},"type":"binary-expr","locations":[{"start":{"line":9,"column":32},"end":{"line":9,"column":66}},{"start":{"line":9,"column":71},"end":{"line":9,"column":110}}],"line":9},"1":{"loc":{"start":{"line":59,"column":13},"end":{"line":59,"column":50}},"type":"default-arg","locations":[{"start":{"line":59,"column":21},"end":{"line":59,"column":50}}],"line":59},"2":{"loc":{"start":{"line":59,"column":52},"end":{"line":59,"column":70}},"type":"default-arg","locations":[{"start":{"line":59,"column":60},"end":{"line":59,"column":70}}],"line":59}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":18,"7":18,"8":18,"9":18,"10":18,"11":18,"12":3,"13":3,"14":3,"15":4,"16":4,"17":4,"18":4,"19":4,"20":4,"21":4,"22":4,"23":4,"24":6,"25":6,"26":6,"27":6,"28":6,"29":6,"30":6,"31":6,"32":6,"33":1},"f":{"0":1,"1":18,"2":3,"3":3,"4":3,"5":4,"6":6},"b":{"0":[1,1],"1":[2],"2":[2]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipQueriesReceiver.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipQueriesReceiver.ts"],"names":[],"mappings":";;;AAEA,2FAAwF;AAGxF,IAAY,0BAGX;AAHD,WAAY,0BAA0B;IACpC,2EAAI,CAAA;IACJ,qFAAS,CAAA;AACX,CAAC,EAHW,0BAA0B,GAA1B,kCAA0B,KAA1B,kCAA0B,QAGrC;AAED;;;GAGG;AACH,MAAa,qBAAqB;IAKhC,YACW,SAAiB,EACjB,IAAoB,EACpB,MAAe;QAFf,cAAS,GAAT,SAAS,CAAQ;QACjB,SAAI,GAAJ,IAAI,CAAgB;QACpB,WAAM,GAAN,MAAM,CAAS;QAExB,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC,IAAI,CAAC;QAC9C,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACI,UAAU;QACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAExC,eAAe;QACf,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;QAClC,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QAEzB,eAAe;QACf,MAAM,GAAG,GAAG,IAAI,2DAA4B,EAAE,CAAC;QAC/C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,GAAG,CAAC,cAAc,GAAG,UAAU,CAAC;QAChC,GAAG,CAAC,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAE3B,eAAe;QACf,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC,IAAI,CAAC;IAChD,CAAC;IAED;;;;;;OAMG;IACI,QAAQ,CACb,QAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAC7C,KAAK,GAAG,UAAU;QAElB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAEvE,aAAa;QACb,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAE7B,eAAe;QACf,MAAM,GAAG,GAAG,IAAI,2DAA4B,EAAE,CAAC;QAC/C,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC;QAC3B,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAE3B,eAAe;QACf,IAAI,CAAC,MAAM,GAAG,0BAA0B,CAAC,SAAS,CAAC;IACrD,CAAC;CACF;AA9ED,sDA8EC","sourcesContent":["import { ILogger } from '@node-dlc/logger';\n\nimport { GossipTimestampFilterMessage } from '../messages/GossipTimestampFilterMessage';\nimport { IMessageSender } from '../Peer';\n\nexport enum GossipQueriesReceiverState {\n  Idle,\n  Receiving,\n}\n\n/**\n * This class is used to activate / deactivate receiving of gossip messages\n * when the gossip_queries or gossip_queries_ex gossip sync strategies are used.\n */\nexport class GossipQueriesReceiver {\n  private _state: GossipQueriesReceiverState;\n  private _firstTimestamp: number;\n  private _timestampRange: number;\n\n  constructor(\n    readonly chainHash: Buffer,\n    readonly peer: IMessageSender,\n    readonly logger: ILogger,\n  ) {\n    this._state = GossipQueriesReceiverState.Idle;\n    this._firstTimestamp = 0xffffffff;\n    this._timestampRange = 0;\n  }\n\n  public get state(): GossipQueriesReceiverState {\n    return this._state;\n  }\n\n  public get firstTimestamp(): number {\n    return this._firstTimestamp;\n  }\n\n  public get timestampRange(): number {\n    return this._timestampRange;\n  }\n\n  /**\n   * Deactivates gossip with the remote peer by sending a\n   * gossip_timestamp_filter message that disables broadcast. In particular this\n   * message will use a first_timestamp of uint32_max and a timestamp_range of\n   * 0 to prevent the remote peer from sending information.\n   */\n  public deactivate(): void {\n    this.logger.info('deactivating gossip');\n\n    // reset params\n    this._firstTimestamp = 0xffffffff;\n    this._timestampRange = 0;\n\n    // send message\n    const msg = new GossipTimestampFilterMessage();\n    msg.chainHash = this.chainHash;\n    msg.firstTimestamp = 0xffffffff;\n    msg.timestampRange = 0;\n    this.peer.sendMessage(msg);\n\n    // change state\n    this._state = GossipQueriesReceiverState.Idle;\n  }\n\n  /**\n   * Activates gossip with the remote peer by sending a gossip_timestamp_filter\n   * message with the specified first timestamp and range. By default, this\n   * starts gossip with the current timestamp and uint32_max as the range.\n   * @param start\n   * @param range\n   */\n  public activate(\n    start: number = Math.trunc(Date.now() / 1000),\n    range = 0xffffffff,\n  ): void {\n    this.logger.info('activating gossip for range %d to %d', start, range);\n\n    // set params\n    this._firstTimestamp = start;\n    this._timestampRange = range;\n\n    // send message\n    const msg = new GossipTimestampFilterMessage();\n    msg.chainHash = this.chainHash;\n    msg.firstTimestamp = start;\n    msg.timestampRange = range;\n    this.peer.sendMessage(msg);\n\n    // change state\n    this._state = GossipQueriesReceiverState.Receiving;\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a9a5ebc4dec13f89d37027221d98d0e5d5a66226","contentHash":"31ea78b871244c5545143f3827bc4ccf42fa0d8b5bf89892a6bbbf3ae67995a9"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipQueriesSync.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipQueriesSync.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":68}},"2":{"start":{"line":4,"column":37},"end":{"line":4,"column":86}},"3":{"start":{"line":5,"column":31},"end":{"line":5,"column":74}},"4":{"start":{"line":6,"column":34},"end":{"line":6,"column":80}},"5":{"start":{"line":7,"column":35},"end":{"line":7,"column":82}},"6":{"start":{"line":8,"column":41},"end":{"line":8,"column":94}},"7":{"start":{"line":9,"column":28},"end":{"line":9,"column":58}},"8":{"start":{"line":10,"column":24},"end":{"line":10,"column":50}},"9":{"start":{"line":11,"column":28},"end":{"line":11,"column":58}},"10":{"start":{"line":13,"column":0},"end":{"line":20,"column":101}},"11":{"start":{"line":14,"column":4},"end":{"line":14,"column":72}},"12":{"start":{"line":15,"column":4},"end":{"line":15,"column":104}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":96}},"14":{"start":{"line":17,"column":4},"end":{"line":17,"column":96}},"15":{"start":{"line":18,"column":4},"end":{"line":18,"column":80}},"16":{"start":{"line":19,"column":4},"end":{"line":19,"column":76}},"17":{"start":{"line":23,"column":8},"end":{"line":23,"column":35}},"18":{"start":{"line":24,"column":8},"end":{"line":24,"column":25}},"19":{"start":{"line":25,"column":8},"end":{"line":25,"column":29}},"20":{"start":{"line":26,"column":8},"end":{"line":26,"column":50}},"21":{"start":{"line":27,"column":8},"end":{"line":27,"column":109}},"22":{"start":{"line":28,"column":8},"end":{"line":28,"column":104}},"23":{"start":{"line":29,"column":8},"end":{"line":29,"column":83}},"24":{"start":{"line":32,"column":8},"end":{"line":32,"column":27}},"25":{"start":{"line":35,"column":8},"end":{"line":35,"column":27}},"26":{"start":{"line":38,"column":8},"end":{"line":54,"column":9}},"27":{"start":{"line":39,"column":12},"end":{"line":39,"column":57}},"28":{"start":{"line":40,"column":12},"end":{"line":40,"column":70}},"29":{"start":{"line":41,"column":26},"end":{"line":41,"column":82}},"30":{"start":{"line":42,"column":12},"end":{"line":42,"column":66}},"31":{"start":{"line":43,"column":12},"end":{"line":43,"column":54}},"32":{"start":{"line":44,"column":12},"end":{"line":44,"column":66}},"33":{"start":{"line":45,"column":12},"end":{"line":45,"column":44}},"34":{"start":{"line":46,"column":12},"end":{"line":46,"column":58}},"35":{"start":{"line":47,"column":12},"end":{"line":47,"column":58}},"36":{"start":{"line":50,"column":12},"end":{"line":50,"column":79}},"37":{"start":{"line":51,"column":12},"end":{"line":51,"column":56}},"38":{"start":{"line":52,"column":12},"end":{"line":52,"column":29}},"39":{"start":{"line":53,"column":12},"end":{"line":53,"column":21}},"40":{"start":{"line":57,"column":8},"end":{"line":68,"column":9}},"41":{"start":{"line":58,"column":12},"end":{"line":58,"column":58}},"42":{"start":{"line":59,"column":12},"end":{"line":59,"column":19}},"43":{"start":{"line":61,"column":13},"end":{"line":68,"column":9}},"44":{"start":{"line":62,"column":12},"end":{"line":62,"column":67}},"45":{"start":{"line":64,"column":13},"end":{"line":68,"column":9}},"46":{"start":{"line":67,"column":12},"end":{"line":67,"column":51}},"47":{"start":{"line":71,"column":0},"end":{"line":71,"column":46}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":13,"column":1},"end":{"line":13,"column":2}},"loc":{"start":{"line":13,"column":35},"end":{"line":20,"column":1}},"line":13},"1":{"name":"(anonymous_1)","decl":{"start":{"line":22,"column":4},"end":{"line":22,"column":5}},"loc":{"start":{"line":22,"column":41},"end":{"line":30,"column":5}},"line":22},"2":{"name":"(anonymous_2)","decl":{"start":{"line":31,"column":4},"end":{"line":31,"column":5}},"loc":{"start":{"line":31,"column":16},"end":{"line":33,"column":5}},"line":31},"3":{"name":"(anonymous_3)","decl":{"start":{"line":34,"column":4},"end":{"line":34,"column":5}},"loc":{"start":{"line":34,"column":16},"end":{"line":36,"column":5}},"line":34},"4":{"name":"(anonymous_4)","decl":{"start":{"line":37,"column":4},"end":{"line":37,"column":5}},"loc":{"start":{"line":37,"column":44},"end":{"line":55,"column":5}},"line":37},"5":{"name":"(anonymous_5)","decl":{"start":{"line":56,"column":4},"end":{"line":56,"column":5}},"loc":{"start":{"line":56,"column":27},"end":{"line":69,"column":5}},"line":56}},"branchMap":{"0":{"loc":{"start":{"line":20,"column":28},"end":{"line":20,"column":99}},"type":"binary-expr","locations":[{"start":{"line":20,"column":28},"end":{"line":20,"column":58}},{"start":{"line":20,"column":63},"end":{"line":20,"column":98}}],"line":20},"1":{"loc":{"start":{"line":57,"column":8},"end":{"line":68,"column":9}},"type":"if","locations":[{"start":{"line":57,"column":8},"end":{"line":68,"column":9}},{"start":{"line":61,"column":13},"end":{"line":68,"column":9}}],"line":57},"2":{"loc":{"start":{"line":61,"column":13},"end":{"line":68,"column":9}},"type":"if","locations":[{"start":{"line":61,"column":13},"end":{"line":68,"column":9}},{"start":{"line":64,"column":13},"end":{"line":68,"column":9}}],"line":61},"3":{"loc":{"start":{"line":64,"column":13},"end":{"line":68,"column":9}},"type":"if","locations":[{"start":{"line":64,"column":13},"end":{"line":68,"column":9}},{"start":{},"end":{}}],"line":64},"4":{"loc":{"start":{"line":64,"column":17},"end":{"line":66,"column":76}},"type":"binary-expr","locations":[{"start":{"line":64,"column":17},"end":{"line":64,"column":87}},{"start":{"line":65,"column":12},"end":{"line":65,"column":70}},{"start":{"line":66,"column":12},"end":{"line":66,"column":76}}],"line":64}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":7,"18":7,"19":7,"20":7,"21":7,"22":7,"23":7,"24":63,"25":0,"26":7,"27":7,"28":7,"29":7,"30":3,"31":3,"32":2,"33":2,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":65,"41":15,"42":15,"43":50,"44":50,"45":0,"46":0,"47":1},"f":{"0":1,"1":7,"2":63,"3":0,"4":7,"5":65},"b":{"0":[1,1],"1":[15,50],"2":[50,0],"3":[0,0],"4":[0,0,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipQueriesSync.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipQueriesSync.ts"],"names":[],"mappings":"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","sourcesContent":["import { ILogger } from '@node-dlc/logger';\n\nimport { ChannelAnnouncementMessage } from '../messages/ChannelAnnouncementMessage';\nimport { ChannelUpdateMessage } from '../messages/ChannelUpdateMessage';\nimport { IWireMessage } from '../messages/IWireMessage';\nimport { NodeAnnouncementMessage } from '../messages/NodeAnnouncementMessage';\nimport { ReplyChannelRangeMessage } from '../messages/ReplyChannelRangeMessage';\nimport { ReplyShortChannelIdsEndMessage } from '../messages/ReplyShortChannelIdsEndMessage';\nimport { IMessageSender } from '../Peer';\nimport { ChannelRangeQuery } from './ChannelRangeQuery';\nimport { ChannelsQuery } from './ChannelsQuery';\nimport { GossipSyncWatcher } from './GossipSyncWatcher';\n\nexport enum GossipQueriesSyncState {\n  Idle,\n  AwaitingChannelRange,\n  AwaitingChannels,\n  AwaitingMessages,\n  Complete,\n  Failed,\n}\n\nexport class GossipQueriesSync {\n  private _state: GossipQueriesSyncState;\n  private _error: Error;\n  private _rangeQuery: ChannelRangeQuery;\n  private _channelsQuery: ChannelsQuery;\n  private _syncWatcher: GossipSyncWatcher;\n\n  constructor(\n    readonly chainHash: Buffer,\n    readonly peer: IMessageSender,\n    readonly logger: ILogger,\n  ) {\n    this._state = GossipQueriesSyncState.Idle;\n    this._rangeQuery = new ChannelRangeQuery(\n      this.chainHash,\n      this.peer,\n      this.logger,\n    );\n    this._channelsQuery = new ChannelsQuery(\n      this.chainHash,\n      this.peer,\n      this.logger,\n    );\n    this._syncWatcher = new GossipSyncWatcher(this.logger);\n  }\n\n  public get state(): GossipQueriesSyncState {\n    return this._state;\n  }\n\n  public get error(): Error {\n    return this._error;\n  }\n\n  public async queryRange(\n    firstBlock?: number,\n    numBlocks?: number,\n  ): Promise<void> {\n    try {\n      this.logger.info('synchronization starting');\n      this._state = GossipQueriesSyncState.AwaitingChannelRange;\n      const scids = await this._rangeQuery.queryRange(firstBlock, numBlocks);\n      this._state = GossipQueriesSyncState.AwaitingChannels;\n      await this._channelsQuery.query(...scids);\n\n      this._state = GossipQueriesSyncState.AwaitingMessages;\n      await this._syncWatcher.watch();\n\n      this.logger.info('synchronization complete!');\n      this._state = GossipQueriesSyncState.Complete;\n    } catch (ex) {\n      this.logger.error(\n        'synchronization failed with error',\n        (ex as Error).message,\n      );\n      this._state = GossipQueriesSyncState.Failed;\n      this._error = ex as Error;\n      throw ex;\n    }\n  }\n\n  public handleWireMessage(msg: IWireMessage): void {\n    if (msg instanceof ReplyChannelRangeMessage) {\n      this._rangeQuery.handleReplyChannelRange(msg);\n      return;\n    } else if (msg instanceof ReplyShortChannelIdsEndMessage) {\n      this._channelsQuery.handleReplyShortChannelIdsEnd(msg);\n    } else if (\n      msg instanceof ChannelAnnouncementMessage ||\n      msg instanceof ChannelUpdateMessage ||\n      msg instanceof NodeAnnouncementMessage\n    ) {\n      this._syncWatcher.onGossipMessage(msg);\n    }\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"17e101a2689263fb785828f01c19cdc47de3eba8","contentHash":"b00284781544a30693bb882ba738b4659c2fc4e0708b33160b150b58fea2413e"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipSyncWatcher.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipSyncWatcher.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":68}},"2":{"start":{"line":5,"column":0},"end":{"line":10,"column":101}},"3":{"start":{"line":6,"column":4},"end":{"line":6,"column":72}},"4":{"start":{"line":7,"column":4},"end":{"line":7,"column":80}},"5":{"start":{"line":8,"column":4},"end":{"line":8,"column":80}},"6":{"start":{"line":9,"column":4},"end":{"line":9,"column":80}},"7":{"start":{"line":18,"column":8},"end":{"line":18,"column":29}},"8":{"start":{"line":19,"column":8},"end":{"line":19,"column":36}},"9":{"start":{"line":20,"column":8},"end":{"line":20,"column":50}},"10":{"start":{"line":21,"column":8},"end":{"line":21,"column":33}},"11":{"start":{"line":23,"column":8},"end":{"line":23,"column":53}},"12":{"start":{"line":29,"column":8},"end":{"line":29,"column":27}},"13":{"start":{"line":35,"column":8},"end":{"line":35,"column":36}},"14":{"start":{"line":42,"column":8},"end":{"line":47,"column":11}},"15":{"start":{"line":43,"column":12},"end":{"line":43,"column":58}},"16":{"start":{"line":44,"column":12},"end":{"line":44,"column":31}},"17":{"start":{"line":45,"column":12},"end":{"line":45,"column":36}},"18":{"start":{"line":46,"column":12},"end":{"line":46,"column":34}},"19":{"start":{"line":56,"column":8},"end":{"line":60,"column":9}},"20":{"start":{"line":57,"column":12},"end":{"line":57,"column":38}},"21":{"start":{"line":58,"column":12},"end":{"line":58,"column":33}},"22":{"start":{"line":59,"column":12},"end":{"line":59,"column":31}},"23":{"start":{"line":66,"column":8},"end":{"line":69,"column":9}},"24":{"start":{"line":67,"column":12},"end":{"line":67,"column":33}},"25":{"start":{"line":68,"column":12},"end":{"line":68,"column":28}},"26":{"start":{"line":70,"column":8},"end":{"line":70,"column":54}},"27":{"start":{"line":73,"column":8},"end":{"line":73,"column":42}},"28":{"start":{"line":77,"column":8},"end":{"line":77,"column":80}},"29":{"start":{"line":80,"column":8},"end":{"line":80,"column":54}},"30":{"start":{"line":81,"column":8},"end":{"line":81,"column":24}},"31":{"start":{"line":84,"column":0},"end":{"line":84,"column":46}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":5,"column":1},"end":{"line":5,"column":2}},"loc":{"start":{"line":5,"column":35},"end":{"line":10,"column":1}},"line":5},"1":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":5}},"loc":{"start":{"line":17,"column":24},"end":{"line":24,"column":5}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":28,"column":4},"end":{"line":28,"column":5}},"loc":{"start":{"line":28,"column":16},"end":{"line":30,"column":5}},"line":28},"3":{"name":"(anonymous_3)","decl":{"start":{"line":34,"column":4},"end":{"line":34,"column":5}},"loc":{"start":{"line":34,"column":25},"end":{"line":36,"column":5}},"line":34},"4":{"name":"(anonymous_4)","decl":{"start":{"line":41,"column":4},"end":{"line":41,"column":5}},"loc":{"start":{"line":41,"column":12},"end":{"line":48,"column":5}},"line":41},"5":{"name":"(anonymous_5)","decl":{"start":{"line":42,"column":27},"end":{"line":42,"column":28}},"loc":{"start":{"line":42,"column":48},"end":{"line":47,"column":9}},"line":42},"6":{"name":"(anonymous_6)","decl":{"start":{"line":53,"column":4},"end":{"line":53,"column":5}},"loc":{"start":{"line":55,"column":9},"end":{"line":61,"column":5}},"line":55},"7":{"name":"(anonymous_7)","decl":{"start":{"line":65,"column":4},"end":{"line":65,"column":5}},"loc":{"start":{"line":65,"column":13},"end":{"line":71,"column":5}},"line":65},"8":{"name":"(anonymous_8)","decl":{"start":{"line":72,"column":4},"end":{"line":72,"column":5}},"loc":{"start":{"line":72,"column":20},"end":{"line":74,"column":5}},"line":72},"9":{"name":"(anonymous_9)","decl":{"start":{"line":75,"column":4},"end":{"line":75,"column":5}},"loc":{"start":{"line":75,"column":18},"end":{"line":78,"column":5}},"line":75},"10":{"name":"(anonymous_10)","decl":{"start":{"line":79,"column":4},"end":{"line":79,"column":5}},"loc":{"start":{"line":79,"column":17},"end":{"line":82,"column":5}},"line":79}},"branchMap":{"0":{"loc":{"start":{"line":10,"column":28},"end":{"line":10,"column":99}},"type":"binary-expr","locations":[{"start":{"line":10,"column":28},"end":{"line":10,"column":58}},{"start":{"line":10,"column":63},"end":{"line":10,"column":98}}],"line":10},"1":{"loc":{"start":{"line":56,"column":8},"end":{"line":60,"column":9}},"type":"if","locations":[{"start":{"line":56,"column":8},"end":{"line":60,"column":9}},{"start":{},"end":{}}],"line":56},"2":{"loc":{"start":{"line":66,"column":8},"end":{"line":69,"column":9}},"type":"if","locations":[{"start":{"line":66,"column":8},"end":{"line":69,"column":9}},{"start":{},"end":{}}],"line":66}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":12,"8":12,"9":12,"10":12,"11":12,"12":1,"13":1,"14":5,"15":5,"16":5,"17":5,"18":5,"19":5,"20":4,"21":4,"22":4,"23":2,"24":1,"25":1,"26":2,"27":5,"28":9,"29":4,"30":4,"31":1},"f":{"0":1,"1":12,"2":1,"3":1,"4":5,"5":5,"6":5,"7":2,"8":5,"9":9,"10":4},"b":{"0":[1,1],"1":[4,1],"2":[1,1]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipSyncWatcher.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipSyncWatcher.ts"],"names":[],"mappings":";;;AAMA,IAAY,sBAKX;AALD,WAAY,sBAAsB;IAChC,mEAAI,CAAA;IACJ,2EAAQ,CAAA;IACR,2EAAQ,CAAA;IACR,2EAAQ,CAAA;AACV,CAAC,EALW,sBAAsB,GAAtB,8BAAsB,KAAtB,8BAAsB,QAKjC;AAED;;;;GAIG;AACH,MAAa,iBAAiB;IAW5B,YAAqB,MAAe;QAAf,WAAM,GAAN,MAAM,CAAS;QAV7B,oBAAe,GAAG,IAAI,CAAC;QAW5B,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC;QAC1C,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;QACzB,mEAAmE;QACnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAW,cAAc;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACI,KAAK;QACV,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC;YAC9C,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;YACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,eAAe;IACpB,6DAA6D;IAC7D,GAG2B;QAE3B,IAAI,IAAI,CAAC,MAAM,KAAK,sBAAsB,CAAC,QAAQ,EAAE;YACnD,IAAI,CAAC,eAAe,IAAI,CAAC,CAAC;YAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,WAAW,EAAE,CAAC;SACpB;IACH,CAAC;IAED;;OAEG;IACI,MAAM;QACX,IAAI,IAAI,CAAC,MAAM,KAAK,sBAAsB,CAAC,QAAQ,EAAE;YACnD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;QACD,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC;IAChD,CAAC;IAEO,aAAa;QACnB,YAAY,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpC,CAAC;IAEO,WAAW;QACjB,6DAA6D;QAC7D,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1E,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,MAAM,GAAG,sBAAsB,CAAC,QAAQ,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;CACF;AAvFD,8CAuFC","sourcesContent":["import { ILogger } from '@node-dlc/logger';\n\nimport { ChannelAnnouncementMessage } from '../messages/ChannelAnnouncementMessage';\nimport { ChannelUpdateMessage } from '../messages/ChannelUpdateMessage';\nimport { NodeAnnouncementMessage } from '../messages/NodeAnnouncementMessage';\n\nexport enum GossipSyncWatcherState {\n  Idle,\n  Watching,\n  Complete,\n  Canceled,\n}\n\n/**\n * GossipSyncWatcher monitors the progress of a GossipSync operation for the\n * completion of the synchronization and signals once the sync has completed\n * or timed out.\n */\nexport class GossipSyncWatcher {\n  public completeAfterMs = 5000;\n\n  private _state: GossipSyncWatcherState;\n  private _timeoutHandle: NodeJS.Timeout;\n  private _messageCounter: number;\n\n  private _resolve: (value: void) => void;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  private _reject: (reason: any) => void;\n\n  constructor(readonly logger: ILogger) {\n    this._state = GossipSyncWatcherState.Idle;\n    this._messageCounter = 0;\n    // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n    this._onTimeout = this._onTimeout.bind(this);\n  }\n\n  /**\n   * Gets the state of the Watcher: IDLE, WATCHING, COMPLETE, FAILED\n   */\n  public get state(): GossipSyncWatcherState {\n    return this._state;\n  }\n\n  /**\n   * Gets the number of messages that have been seen while watching\n   */\n  public get messageCounter(): number {\n    return this._messageCounter;\n  }\n\n  /**\n   * Watches gossip traffic until a completion event occurs or watching is\n   * cancelled.\n   */\n  public watch(): Promise<void> {\n    return new Promise((resolve, reject) => {\n      this._state = GossipSyncWatcherState.Watching;\n      this._setTimeout();\n      this._resolve = resolve;\n      this._reject = reject;\n    });\n  }\n\n  /**\n   * Process a message and debounce when it is a gossip message\n   * @param msg\n   */\n  public onGossipMessage(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    msg:\n      | ChannelAnnouncementMessage\n      | ChannelUpdateMessage\n      | NodeAnnouncementMessage,\n  ): void {\n    if (this._state === GossipSyncWatcherState.Watching) {\n      this._messageCounter += 1;\n      this._clearTimeout();\n      this._setTimeout();\n    }\n  }\n\n  /**\n   * Cancels watching and sends a failure signal.\n   */\n  public cancel(): void {\n    if (this._state === GossipSyncWatcherState.Watching) {\n      this._clearTimeout();\n      this._resolve();\n    }\n    this._state = GossipSyncWatcherState.Canceled;\n  }\n\n  private _clearTimeout() {\n    clearTimeout(this._timeoutHandle);\n  }\n\n  private _setTimeout() {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    this._timeoutHandle = setTimeout(this._onTimeout, this.completeAfterMs);\n  }\n\n  private _onTimeout() {\n    this._state = GossipSyncWatcherState.Complete;\n    this._resolve();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"4404e7a72793e39a95158c8d460514c48221ad52","contentHash":"55936687f7efa62457bfc5d0208bd4b64a1e9fd83f61c9fb5cbbaa39d22e376d"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipRelay.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipRelay.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":56}},"2":{"start":{"line":4,"column":35},"end":{"line":4,"column":79}},"3":{"start":{"line":5,"column":37},"end":{"line":5,"column":86}},"4":{"start":{"line":6,"column":31},"end":{"line":6,"column":74}},"5":{"start":{"line":7,"column":34},"end":{"line":7,"column":80}},"6":{"start":{"line":12,"column":0},"end":{"line":21,"column":83}},"7":{"start":{"line":16,"column":4},"end":{"line":16,"column":68}},"8":{"start":{"line":20,"column":4},"end":{"line":20,"column":64}},"9":{"start":{"line":32,"column":8},"end":{"line":32,"column":29}},"10":{"start":{"line":33,"column":8},"end":{"line":33,"column":43}},"11":{"start":{"line":34,"column":8},"end":{"line":34,"column":39}},"12":{"start":{"line":35,"column":8},"end":{"line":35,"column":32}},"13":{"start":{"line":36,"column":8},"end":{"line":36,"column":25}},"14":{"start":{"line":37,"column":8},"end":{"line":37,"column":48}},"15":{"start":{"line":43,"column":8},"end":{"line":43,"column":27}},"16":{"start":{"line":50,"column":8},"end":{"line":51,"column":19}},"17":{"start":{"line":51,"column":12},"end":{"line":51,"column":19}},"18":{"start":{"line":52,"column":8},"end":{"line":52,"column":64}},"19":{"start":{"line":53,"column":8},"end":{"line":53,"column":46}},"20":{"start":{"line":55,"column":8},"end":{"line":55,"column":80}},"21":{"start":{"line":61,"column":8},"end":{"line":62,"column":19}},"22":{"start":{"line":62,"column":12},"end":{"line":62,"column":19}},"23":{"start":{"line":63,"column":8},"end":{"line":63,"column":64}},"24":{"start":{"line":64,"column":8},"end":{"line":64,"column":34}},"25":{"start":{"line":65,"column":8},"end":{"line":65,"column":48}},"26":{"start":{"line":72,"column":8},"end":{"line":72,"column":50}},"27":{"start":{"line":79,"column":8},"end":{"line":79,"column":33}},"28":{"start":{"line":86,"column":8},"end":{"line":87,"column":19}},"29":{"start":{"line":87,"column":12},"end":{"line":87,"column":19}},"30":{"start":{"line":90,"column":8},"end":{"line":98,"column":9}},"31":{"start":{"line":91,"column":29},"end":{"line":91,"column":66}},"32":{"start":{"line":93,"column":12},"end":{"line":97,"column":13}},"33":{"start":{"line":94,"column":16},"end":{"line":94,"column":96}},"34":{"start":{"line":95,"column":16},"end":{"line":95,"column":38}},"35":{"start":{"line":96,"column":16},"end":{"line":96,"column":23}},"36":{"start":{"line":101,"column":8},"end":{"line":118,"column":9}},"37":{"start":{"line":102,"column":29},"end":{"line":102,"column":154}},"38":{"start":{"line":104,"column":12},"end":{"line":108,"column":13}},"39":{"start":{"line":105,"column":16},"end":{"line":105,"column":178}},"40":{"start":{"line":106,"column":16},"end":{"line":106,"column":38}},"41":{"start":{"line":107,"column":16},"end":{"line":107,"column":23}},"42":{"start":{"line":111,"column":12},"end":{"line":117,"column":13}},"43":{"start":{"line":112,"column":16},"end":{"line":112,"column":180}},"44":{"start":{"line":113,"column":28},"end":{"line":113,"column":57}},"45":{"start":{"line":114,"column":16},"end":{"line":114,"column":43}},"46":{"start":{"line":115,"column":16},"end":{"line":115,"column":38}},"47":{"start":{"line":116,"column":16},"end":{"line":116,"column":23}},"48":{"start":{"line":122,"column":8},"end":{"line":139,"column":9}},"49":{"start":{"line":123,"column":29},"end":{"line":123,"column":58}},"50":{"start":{"line":125,"column":12},"end":{"line":129,"column":13}},"51":{"start":{"line":126,"column":16},"end":{"line":126,"column":90}},"52":{"start":{"line":127,"column":16},"end":{"line":127,"column":38}},"53":{"start":{"line":128,"column":16},"end":{"line":128,"column":23}},"54":{"start":{"line":132,"column":12},"end":{"line":138,"column":13}},"55":{"start":{"line":133,"column":16},"end":{"line":133,"column":92}},"56":{"start":{"line":134,"column":28},"end":{"line":134,"column":57}},"57":{"start":{"line":135,"column":16},"end":{"line":135,"column":43}},"58":{"start":{"line":136,"column":16},"end":{"line":136,"column":38}},"59":{"start":{"line":137,"column":16},"end":{"line":137,"column":23}},"60":{"start":{"line":146,"column":8},"end":{"line":147,"column":61}},"61":{"start":{"line":146,"column":39},"end":{"line":147,"column":59}},"62":{"start":{"line":157,"column":8},"end":{"line":159,"column":112}},"63":{"start":{"line":157,"column":39},"end":{"line":159,"column":110}},"64":{"start":{"line":168,"column":8},"end":{"line":168,"column":130}},"65":{"start":{"line":168,"column":39},"end":{"line":168,"column":128}},"66":{"start":{"line":175,"column":8},"end":{"line":175,"column":107}},"67":{"start":{"line":176,"column":8},"end":{"line":178,"column":9}},"68":{"start":{"line":177,"column":12},"end":{"line":177,"column":36}},"69":{"start":{"line":179,"column":8},"end":{"line":179,"column":27}},"70":{"start":{"line":187,"column":8},"end":{"line":191,"column":9}},"71":{"start":{"line":187,"column":21},"end":{"line":187,"column":42}},"72":{"start":{"line":188,"column":28},"end":{"line":188,"column":42}},"73":{"start":{"line":189,"column":12},"end":{"line":189,"column":38}},"74":{"start":{"line":190,"column":12},"end":{"line":190,"column":54}},"75":{"start":{"line":199,"column":28},"end":{"line":199,"column":78}},"76":{"start":{"line":201,"column":8},"end":{"line":202,"column":19}},"77":{"start":{"line":202,"column":12},"end":{"line":202,"column":19}},"78":{"start":{"line":204,"column":8},"end":{"line":204,"column":43}},"79":{"start":{"line":207,"column":8},"end":{"line":209,"column":9}},"80":{"start":{"line":208,"column":12},"end":{"line":208,"column":55}},"81":{"start":{"line":210,"column":8},"end":{"line":210,"column":64}},"82":{"start":{"line":213,"column":0},"end":{"line":213,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":12,"column":1},"end":{"line":12,"column":2}},"loc":{"start":{"line":12,"column":29},"end":{"line":21,"column":1}},"line":12},"1":{"name":"(anonymous_1)","decl":{"start":{"line":31,"column":4},"end":{"line":31,"column":5}},"loc":{"start":{"line":31,"column":68},"end":{"line":38,"column":5}},"line":31},"2":{"name":"(anonymous_2)","decl":{"start":{"line":42,"column":4},"end":{"line":42,"column":5}},"loc":{"start":{"line":42,"column":16},"end":{"line":44,"column":5}},"line":42},"3":{"name":"(anonymous_3)","decl":{"start":{"line":49,"column":4},"end":{"line":49,"column":5}},"loc":{"start":{"line":49,"column":12},"end":{"line":56,"column":5}},"line":49},"4":{"name":"(anonymous_4)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":5}},"loc":{"start":{"line":60,"column":11},"end":{"line":66,"column":5}},"line":60},"5":{"name":"(anonymous_5)","decl":{"start":{"line":71,"column":4},"end":{"line":71,"column":5}},"loc":{"start":{"line":71,"column":18},"end":{"line":73,"column":5}},"line":71},"6":{"name":"(anonymous_6)","decl":{"start":{"line":78,"column":4},"end":{"line":78,"column":5}},"loc":{"start":{"line":78,"column":21},"end":{"line":80,"column":5}},"line":78},"7":{"name":"(anonymous_7)","decl":{"start":{"line":85,"column":4},"end":{"line":85,"column":5}},"loc":{"start":{"line":85,"column":17},"end":{"line":140,"column":5}},"line":85},"8":{"name":"(anonymous_8)","decl":{"start":{"line":145,"column":4},"end":{"line":145,"column":5}},"loc":{"start":{"line":145,"column":23},"end":{"line":148,"column":5}},"line":145},"9":{"name":"(anonymous_9)","decl":{"start":{"line":146,"column":32},"end":{"line":146,"column":33}},"loc":{"start":{"line":146,"column":39},"end":{"line":147,"column":59}},"line":146},"10":{"name":"(anonymous_10)","decl":{"start":{"line":156,"column":4},"end":{"line":156,"column":5}},"loc":{"start":{"line":156,"column":34},"end":{"line":160,"column":5}},"line":156},"11":{"name":"(anonymous_11)","decl":{"start":{"line":157,"column":32},"end":{"line":157,"column":33}},"loc":{"start":{"line":157,"column":39},"end":{"line":159,"column":110}},"line":157},"12":{"name":"(anonymous_12)","decl":{"start":{"line":167,"column":4},"end":{"line":167,"column":5}},"loc":{"start":{"line":167,"column":25},"end":{"line":169,"column":5}},"line":167},"13":{"name":"(anonymous_13)","decl":{"start":{"line":168,"column":32},"end":{"line":168,"column":33}},"loc":{"start":{"line":168,"column":39},"end":{"line":168,"column":128}},"line":168},"14":{"name":"(anonymous_14)","decl":{"start":{"line":174,"column":4},"end":{"line":174,"column":5}},"loc":{"start":{"line":174,"column":15},"end":{"line":180,"column":5}},"line":174},"15":{"name":"(anonymous_15)","decl":{"start":{"line":186,"column":4},"end":{"line":186,"column":5}},"loc":{"start":{"line":186,"column":23},"end":{"line":192,"column":5}},"line":186},"16":{"name":"(anonymous_16)","decl":{"start":{"line":196,"column":4},"end":{"line":196,"column":5}},"loc":{"start":{"line":196,"column":18},"end":{"line":211,"column":5}},"line":196}},"branchMap":{"0":{"loc":{"start":{"line":21,"column":22},"end":{"line":21,"column":81}},"type":"binary-expr","locations":[{"start":{"line":21,"column":22},"end":{"line":21,"column":46}},{"start":{"line":21,"column":51},"end":{"line":21,"column":80}}],"line":21},"1":{"loc":{"start":{"line":31,"column":24},"end":{"line":31,"column":45}},"type":"default-arg","locations":[{"start":{"line":31,"column":40},"end":{"line":31,"column":45}}],"line":31},"2":{"loc":{"start":{"line":31,"column":47},"end":{"line":31,"column":66}},"type":"default-arg","locations":[{"start":{"line":31,"column":61},"end":{"line":31,"column":66}}],"line":31},"3":{"loc":{"start":{"line":50,"column":8},"end":{"line":51,"column":19}},"type":"if","locations":[{"start":{"line":50,"column":8},"end":{"line":51,"column":19}},{"start":{},"end":{}}],"line":50},"4":{"loc":{"start":{"line":61,"column":8},"end":{"line":62,"column":19}},"type":"if","locations":[{"start":{"line":61,"column":8},"end":{"line":62,"column":19}},{"start":{},"end":{}}],"line":61},"5":{"loc":{"start":{"line":86,"column":8},"end":{"line":87,"column":19}},"type":"if","locations":[{"start":{"line":86,"column":8},"end":{"line":87,"column":19}},{"start":{},"end":{}}],"line":86},"6":{"loc":{"start":{"line":90,"column":8},"end":{"line":98,"column":9}},"type":"if","locations":[{"start":{"line":90,"column":8},"end":{"line":98,"column":9}},{"start":{},"end":{}}],"line":90},"7":{"loc":{"start":{"line":93,"column":12},"end":{"line":97,"column":13}},"type":"if","locations":[{"start":{"line":93,"column":12},"end":{"line":97,"column":13}},{"start":{},"end":{}}],"line":93},"8":{"loc":{"start":{"line":101,"column":8},"end":{"line":118,"column":9}},"type":"if","locations":[{"start":{"line":101,"column":8},"end":{"line":118,"column":9}},{"start":{},"end":{}}],"line":101},"9":{"loc":{"start":{"line":104,"column":12},"end":{"line":108,"column":13}},"type":"if","locations":[{"start":{"line":104,"column":12},"end":{"line":108,"column":13}},{"start":{},"end":{}}],"line":104},"10":{"loc":{"start":{"line":111,"column":12},"end":{"line":117,"column":13}},"type":"if","locations":[{"start":{"line":111,"column":12},"end":{"line":117,"column":13}},{"start":{},"end":{}}],"line":111},"11":{"loc":{"start":{"line":111,"column":16},"end":{"line":111,"column":62}},"type":"binary-expr","locations":[{"start":{"line":111,"column":16},"end":{"line":111,"column":24}},{"start":{"line":111,"column":28},"end":{"line":111,"column":62}}],"line":111},"12":{"loc":{"start":{"line":122,"column":8},"end":{"line":139,"column":9}},"type":"if","locations":[{"start":{"line":122,"column":8},"end":{"line":139,"column":9}},{"start":{},"end":{}}],"line":122},"13":{"loc":{"start":{"line":125,"column":12},"end":{"line":129,"column":13}},"type":"if","locations":[{"start":{"line":125,"column":12},"end":{"line":129,"column":13}},{"start":{},"end":{}}],"line":125},"14":{"loc":{"start":{"line":132,"column":12},"end":{"line":138,"column":13}},"type":"if","locations":[{"start":{"line":132,"column":12},"end":{"line":138,"column":13}},{"start":{},"end":{}}],"line":132},"15":{"loc":{"start":{"line":132,"column":16},"end":{"line":132,"column":62}},"type":"binary-expr","locations":[{"start":{"line":132,"column":16},"end":{"line":132,"column":24}},{"start":{"line":132,"column":28},"end":{"line":132,"column":62}}],"line":132},"16":{"loc":{"start":{"line":146,"column":39},"end":{"line":147,"column":59}},"type":"binary-expr","locations":[{"start":{"line":146,"column":39},"end":{"line":146,"column":107}},{"start":{"line":147,"column":12},"end":{"line":147,"column":59}}],"line":146},"17":{"loc":{"start":{"line":157,"column":39},"end":{"line":159,"column":110}},"type":"binary-expr","locations":[{"start":{"line":157,"column":39},"end":{"line":157,"column":95}},{"start":{"line":158,"column":12},"end":{"line":158,"column":59}},{"start":{"line":159,"column":12},"end":{"line":159,"column":110}}],"line":157},"18":{"loc":{"start":{"line":168,"column":39},"end":{"line":168,"column":128}},"type":"binary-expr","locations":[{"start":{"line":168,"column":39},"end":{"line":168,"column":101}},{"start":{"line":168,"column":105},"end":{"line":168,"column":128}}],"line":168},"19":{"loc":{"start":{"line":201,"column":8},"end":{"line":202,"column":19}},"type":"if","locations":[{"start":{"line":201,"column":8},"end":{"line":202,"column":19}},{"start":{},"end":{}}],"line":201}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":47,"10":47,"11":47,"12":47,"13":47,"14":47,"15":44,"16":41,"17":2,"18":39,"19":39,"20":39,"21":48,"22":9,"23":39,"24":39,"25":39,"26":19,"27":1,"28":41,"29":1,"30":40,"31":26,"32":26,"33":25,"34":25,"35":25,"36":15,"37":7,"38":7,"39":5,"40":5,"41":5,"42":2,"43":1,"44":1,"45":1,"46":1,"47":1,"48":9,"49":7,"50":7,"51":5,"52":5,"53":5,"54":2,"55":1,"56":1,"57":1,"58":1,"59":1,"60":26,"61":25,"62":7,"63":4,"64":7,"65":4,"66":11,"67":11,"68":11,"69":11,"70":11,"71":11,"72":14,"73":14,"74":14,"75":11,"76":11,"77":9,"78":2,"79":2,"80":1,"81":2,"82":1},"f":{"0":1,"1":47,"2":44,"3":41,"4":48,"5":19,"6":1,"7":41,"8":26,"9":25,"10":7,"11":4,"12":7,"13":4,"14":11,"15":11,"16":11},"b":{"0":[1,1],"1":[0],"2":[0],"3":[2,39],"4":[9,39],"5":[1,40],"6":[26,14],"7":[25,1],"8":[7,8],"9":[5,2],"10":[1,1],"11":[2,2],"12":[7,2],"13":[5,2],"14":[1,1],"15":[2,2],"16":[25,25],"17":[4,4,2],"18":[4,4],"19":[9,2]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipRelay.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipRelay.ts"],"names":[],"mappings":";;;AAGA,gFAA8E;AAC9E,uFAAoF;AACpF,2EAAwE;AAExE,iFAA8E;AAiD9E;;GAEG;AACH,IAAY,gBAUX;AAVD,WAAY,gBAAgB;IAC1B;;OAEG;IACH,+DAAQ,CAAA;IAER;;OAEG;IACH,2DAAM,CAAA;AACR,CAAC,EAVW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAU3B;AAED;;;;;;;GAOG;AACH,MAAa,WAAW;IAMtB,YACW,MAAe,EACf,gBAAgB,KAAK,EACrB,cAAc,KAAK;QAFnB,WAAM,GAAN,MAAM,CAAS;QACf,kBAAa,GAAb,aAAa,CAAQ;QACrB,gBAAW,GAAX,WAAW,CAAQ;QAE5B,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,KAAK;QACV,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,MAAM;YAAE,OAAO;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACxD,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC;QACtC,8DAA8D;QAC9D,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC1E,CAAC;IAED;;OAEG;IACI,IAAI;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,gBAAgB,CAAC,QAAQ;YAAE,OAAO;QACtD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QACxD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACI,OAAO,CAAC,IAAW;QACxB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED;;;OAGG;IACI,UAAU,CAAC,IAAW;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACI,OAAO,CAAC,GAAiB;QAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,gBAAgB,CAAC,MAAM;YAAE,OAAO;QAEnD,4DAA4D;QAC5D,gEAAgE;QAChE,IAAI,GAAG,YAAY,uDAA0B,EAAE;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YAEvD,oDAAoD;YACpD,IAAI,CAAC,QAAQ,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,6BAA6B,EAC7B,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,CAC9B,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO;aACR;SACF;QAED,iEAAiE;QACjE,6DAA6D;QAC7D,IAAI,GAAG,YAAY,2CAAoB,EAAE;YACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAChC,GAAG,CAAC,cAAc,EAClB,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,oDAAyB,CAAC,SAAS,CAAC,CAC5D,CAAC;YAEF,oDAAoD;YACpD,IAAI,CAAC,QAAQ,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,uBAAuB,EACvB,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,EAC7B,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,oDAAyB,CAAC,SAAS,CAAC,CAC5D,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO;aACR;YAED,yDAAyD;YACzD,6DAA6D;YAC7D,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE;gBAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,yBAAyB,EACzB,GAAG,CAAC,cAAc,CAAC,QAAQ,EAAE,EAC7B,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,oDAAyB,CAAC,SAAS,CAAC,CAC5D,CAAC;gBACF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO;aACR;SACF;QAED,8DAA8D;QAC9D,6DAA6D;QAC7D,6BAA6B;QAC7B,IAAI,GAAG,YAAY,iDAAuB,EAAE;YAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAE/C,oDAAoD;YACpD,IAAI,CAAC,QAAQ,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,0BAA0B,EAC1B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC3B,CAAC;gBACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO;aACR;YAED,yDAAyD;YACzD,6DAA6D;YAC7D,IAAI,QAAQ,IAAI,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE;gBAClD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,4BAA4B,EAC5B,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAC3B,CAAC;gBACF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC1C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,OAAO;aACR;SACF;IACH,CAAC;IAED;;;OAGG;IACK,YAAY,CAAC,IAAoB;QACvC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,YAAY,uDAA0B;YACvC,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE,CACpB,CAAC;IAClC,CAAC;IAED;;;;;;OAMG;IACK,YAAY,CAClB,IAAoB,EACpB,SAAkB;QAElB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,YAAY,2CAAoB;YACjC,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,IAAI,CAAC,QAAQ,EAAE;YAC/C,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,oDAAyB,CAAC,SAAS,CAAC,KAAK,SAAS,CAClD,CAAC;IAC5B,CAAC;IAED;;;;;OAKG;IACK,YAAY,CAAC,MAAc;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,iDAAuB,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAC5C,CAAC;IAC/B,CAAC;IAED;;;OAGG;IACK,QAAQ;QACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,kBAAkB;QACtH,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE;YACrC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACzB;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACK,YAAY,CAAC,IAAW;QAC9B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAC3C;IACH,CAAC;IAED;;OAEG;IACK,WAAW;QACjB,+DAA+D;QAC/D,mCAAmC;QACnC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvE,iDAAiD;QACjD,IAAI,WAAW,KAAK,CAAC;YAAE,OAAO;QAE9B,uDAAuD;QACvD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;QAEnC,8DAA8D;QAC9D,mBAAmB;QACnB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE;YACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,WAAW,CAAC,CAAC;SAC5C;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,WAAW,eAAe,CAAC,CAAC;IAC1D,CAAC;CACF;AAhPD,kCAgPC","sourcesContent":["import { ShortChannelId } from '@node-dlc/common';\nimport { ILogger } from '@node-dlc/logger';\n\nimport { ChannelUpdateChannelFlags } from '../flags/ChanneUpdateChannelFlags';\nimport { ChannelAnnouncementMessage } from '../messages/ChannelAnnouncementMessage';\nimport { ChannelUpdateMessage } from '../messages/ChannelUpdateMessage';\nimport { IWireMessage } from '../messages/IWireMessage';\nimport { NodeAnnouncementMessage } from '../messages/NodeAnnouncementMessage';\nimport { IPeer } from '../Peer';\n\n/**\n * Interface for the sub-system for handling the gossip message relay,\n * also known as rumor mongering.This system is responsible for\n * periodically flushing messages to connected peers and makes a best\n * effort to not send message that have already been sent to a peer.\n *\n * The idea of rumor mongering is that a piece of information is hot. A\n * node attempts to infect connected peers with this information by\n * sending it to them. Once it has been sent, we no longer need to\n * infect them with information.\n */\nexport interface IGossipRelay {\n  /**\n   * The current state of gossip relay\n   */\n  state: GossipRelayState;\n\n  /**\n   * Starts gossip relay\n   */\n  start(): void;\n\n  /**\n   * Stops gossip relay\n   */\n  stop(): void;\n\n  /**\n   * Adds a new peer to relay messages to\n   * @param peer\n   */\n  addPeer(peer: IPeer): void;\n\n  /**\n   * Removes the peer from relay\n   * @param peer\n   */\n  removePeer(peer: IPeer): void;\n\n  /**\n   * Enqueues a message to be broadcast to peers\n   * @param msg\n   */\n  enqueue(msg: IWireMessage): void;\n}\n\n/**\n * The state of a IGossipRelay rumor mongerer\n */\nexport enum GossipRelayState {\n  /**\n   * Rumor mongering is not active\n   */\n  Inactive,\n\n  /**\n   * Rumor mongering is active\n   */\n  Active,\n}\n\n/**\n * This is a basic implementation of IGossipRelay that enques all\n * messages and maintaining an index of each peer in the queue. When\n * messages are flushed, only messages that haven't been sent to a peer\n * are sent and the index position for that peer is updated. When the\n * queue of messages has reached a maximum length, older messages are\n * pruned and the index positions are updated.\n */\nexport class GossipRelay {\n  private _queue: IWireMessage[];\n  private _peers: Map<IPeer, number>;\n  private _timer: NodeJS.Timeout;\n  private _state: GossipRelayState;\n\n  constructor(\n    readonly logger: ILogger,\n    readonly relayPeriodMs = 60000,\n    readonly maxQueueLen = 10000,\n  ) {\n    this._peers = new Map() as Map<IPeer, number>;\n    this._queue = [];\n    this._state = GossipRelayState.Inactive;\n  }\n\n  /**\n   * Gets the current state of gossip relay\n   */\n  public get state(): GossipRelayState {\n    return this._state;\n  }\n\n  /**\n   * Starts relay to peers. This enables messages to be enqueued and\n   * periodically sent to the peers.\n   */\n  public start(): void {\n    if (this._state === GossipRelayState.Active) return;\n    this.logger.info('starting gossip relay for all peers');\n    this._state = GossipRelayState.Active;\n    // eslint-disable-next-line @typescript-eslint/no-implied-eval\n    this._timer = setInterval(this._onTimer.bind(this), this.relayPeriodMs);\n  }\n\n  /**\n   * Stops relay to peers.\n   */\n  public stop(): void {\n    if (this._state === GossipRelayState.Inactive) return;\n    this.logger.info('stopping gossip relay for all peers');\n    clearTimeout(this._timer);\n    this._state = GossipRelayState.Inactive;\n  }\n\n  /**\n   * Adds a new peer to relay messages to\n   * @param peer\n   */\n  public addPeer(peer: IPeer): void {\n    this._peers.set(peer, this._queue.length);\n  }\n\n  /**\n   * Removes the peer from relay\n   * @param peer\n   */\n  public removePeer(peer: IPeer): void {\n    this._peers.delete(peer);\n  }\n\n  /**\n   * Enqueues a message to be broadcast to peers.\n   * @param msg\n   */\n  public enqueue(msg: IWireMessage): void {\n    if (this.state !== GossipRelayState.Active) return;\n\n    // For chan_ann messages there is never an update so we only\n    // need to check if the chan_ann exists and add it if it doesn't\n    if (msg instanceof ChannelAnnouncementMessage) {\n      const existing = this._findChanAnn(msg.shortChannelId);\n\n      // adds to the queue if there is no existing message\n      if (!existing) {\n        this.logger.trace(\n          'adding channel_announcement',\n          msg.shortChannelId.toString(),\n        );\n        this._queue.push(msg);\n        return;\n      }\n    }\n\n    // For chan_update messages we will add messages that don't exist\n    // or update an existing update message if one already exists\n    if (msg instanceof ChannelUpdateMessage) {\n      const existing = this._findChanUpd(\n        msg.shortChannelId,\n        msg.channelFlags.isSet(ChannelUpdateChannelFlags.direction),\n      );\n\n      // Adds to the queue if there is no existing message\n      if (!existing) {\n        this.logger.trace(\n          'adding channel_update',\n          msg.shortChannelId.toString(),\n          msg.channelFlags.isSet(ChannelUpdateChannelFlags.direction),\n        );\n        this._queue.push(msg);\n        return;\n      }\n\n      // Removes the existing message and replaces with a newer\n      // message by adding the new message to the back of the queue\n      if (existing && existing.timestamp < msg.timestamp) {\n        this.logger.trace(\n          'updating channel_update',\n          msg.shortChannelId.toString(),\n          msg.channelFlags.isSet(ChannelUpdateChannelFlags.direction),\n        );\n        const idx = this._queue.indexOf(existing);\n        this._queue.splice(idx, 1);\n        this._queue.push(msg);\n        return;\n      }\n    }\n\n    // For node_ann messages we look for the existing messages and\n    // abort if the new msg is older than the current node_ann we\n    // have in the message queue.\n    if (msg instanceof NodeAnnouncementMessage) {\n      const existing = this._findNodeAnn(msg.nodeId);\n\n      // Adds to the queue if there is no existing message\n      if (!existing) {\n        this.logger.trace(\n          'adding node_announcement',\n          msg.nodeId.toString('hex'),\n        );\n        this._queue.push(msg);\n        return;\n      }\n\n      // Removes the existing message and replaces with a newer\n      // message by adding the new message to the back of the queue\n      if (existing && existing.timestamp < msg.timestamp) {\n        this.logger.trace(\n          'updating node_announcement',\n          msg.nodeId.toString('hex'),\n        );\n        const idx = this._queue.indexOf(existing);\n        this._queue.splice(idx, 1);\n        this._queue.push(msg);\n        return;\n      }\n    }\n  }\n\n  /**\n   * Finds a channel_announcement message based on the short_channel_id\n   * @param scid\n   */\n  private _findChanAnn(scid: ShortChannelId): ChannelAnnouncementMessage {\n    return this._queue.find(\n      (p) =>\n        p instanceof ChannelAnnouncementMessage &&\n        p.shortChannelId.toNumber() === scid.toNumber(),\n    ) as ChannelAnnouncementMessage;\n  }\n\n  /**\n   * Finds a channel_update message based on the short_channel_id and\n   * direction. The found message can then be compared to an inbound\n   * message to determine if the new message is newer.\n   * @param scid\n   * @param direction\n   */\n  private _findChanUpd(\n    scid: ShortChannelId,\n    direction: boolean,\n  ): ChannelUpdateMessage {\n    return this._queue.find(\n      (p) =>\n        p instanceof ChannelUpdateMessage &&\n        p.shortChannelId.toNumber() === scid.toNumber() &&\n        p.channelFlags.isSet(ChannelUpdateChannelFlags.direction) === direction,\n    ) as ChannelUpdateMessage;\n  }\n\n  /**\n   * Finds a node_announcement message based on the node_id. The\n   * returned message can be compared to newer messages using the\n   * timestamp.\n   * @param nodeId\n   */\n  private _findNodeAnn(nodeId: Buffer): NodeAnnouncementMessage {\n    return this._queue.find(\n      (p) => p instanceof NodeAnnouncementMessage && p.nodeId.equals(nodeId),\n    ) as NodeAnnouncementMessage;\n  }\n\n  /**\n   * Fires when the timer ticks and will flush messages to peers and\n   * prune the queue\n   */\n  private _onTimer() {\n    this.logger.debug(`periodic flush, ${this._peers.size} peers, ${this._queue.length} hot messages`); // prettier-ignore\n    for (const peer of this._peers.keys()) {\n      this._flushToPeer(peer);\n    }\n\n    this._pruneQueue();\n  }\n\n  /**\n   * Flushes message to a peer based on the index of messages that\n   * the peer has received.\n   * @param peer\n   */\n  private _flushToPeer(peer: IPeer) {\n    for (let i = this._peers.get(peer); i < this._queue.length; i++) {\n      const message = this._queue[i];\n      peer.sendMessage(message);\n      this._peers.set(peer, this._queue.length);\n    }\n  }\n\n  /**\n   * Prunes excess message\n   */\n  private _pruneQueue() {\n    // calculate the delete count based on the current queue length\n    // and the max allowed queue length\n    const deleteCount = Math.max(0, this._queue.length - this.maxQueueLen);\n\n    // do nothing if we don't need to prune any items\n    if (deleteCount === 0) return;\n\n    // pruning the excess items from the start of the queue\n    this._queue.splice(0, deleteCount);\n\n    // adjust all of the peers by reducing their index position by\n    // the delete count\n    for (const [peer, index] of this._peers.entries()) {\n      this._peers.set(peer, index - deleteCount);\n    }\n\n    this.logger.debug(`pruned ${deleteCount} old messages`);\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"9bcb73540003dfe934d31d096d2ab0fed2cb274a","contentHash":"c9230da3bac27f429a48e95d5b39b2e60977524332f9a567571345b26428c2fd"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipMemoryStore.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipMemoryStore.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":35}},"2":{"start":{"line":4,"column":17},"end":{"line":4,"column":44}},"3":{"start":{"line":5,"column":45},"end":{"line":5,"column":102}},"4":{"start":{"line":11,"column":8},"end":{"line":11,"column":37}},"5":{"start":{"line":12,"column":8},"end":{"line":12,"column":44}},"6":{"start":{"line":13,"column":8},"end":{"line":13,"column":37}},"7":{"start":{"line":14,"column":8},"end":{"line":14,"column":34}},"8":{"start":{"line":15,"column":8},"end":{"line":15,"column":39}},"9":{"start":{"line":18,"column":8},"end":{"line":18,"column":37}},"10":{"start":{"line":21,"column":8},"end":{"line":21,"column":37}},"11":{"start":{"line":24,"column":8},"end":{"line":24,"column":34}},"12":{"start":{"line":27,"column":24},"end":{"line":27,"column":54}},"13":{"start":{"line":28,"column":8},"end":{"line":28,"column":43}},"14":{"start":{"line":29,"column":8},"end":{"line":31,"column":9}},"15":{"start":{"line":30,"column":12},"end":{"line":30,"column":96}},"16":{"start":{"line":32,"column":8},"end":{"line":32,"column":58}},"17":{"start":{"line":33,"column":8},"end":{"line":33,"column":58}},"18":{"start":{"line":36,"column":8},"end":{"line":36,"column":96}},"19":{"start":{"line":39,"column":8},"end":{"line":39,"column":55}},"20":{"start":{"line":42,"column":25},"end":{"line":42,"column":67}},"21":{"start":{"line":43,"column":24},"end":{"line":43,"column":26}},"22":{"start":{"line":44,"column":8},"end":{"line":45,"column":27}},"23":{"start":{"line":45,"column":12},"end":{"line":45,"column":27}},"24":{"start":{"line":46,"column":8},"end":{"line":48,"column":9}},"25":{"start":{"line":47,"column":12},"end":{"line":47,"column":74}},"26":{"start":{"line":49,"column":8},"end":{"line":49,"column":23}},"27":{"start":{"line":52,"column":8},"end":{"line":52,"column":53}},"28":{"start":{"line":55,"column":8},"end":{"line":55,"column":50}},"29":{"start":{"line":58,"column":8},"end":{"line":58,"column":53}},"30":{"start":{"line":61,"column":8},"end":{"line":61,"column":54}},"31":{"start":{"line":64,"column":24},"end":{"line":64,"column":72}},"32":{"start":{"line":65,"column":8},"end":{"line":65,"column":45}},"33":{"start":{"line":68,"column":8},"end":{"line":68,"column":74}},"34":{"start":{"line":71,"column":20},"end":{"line":71,"column":60}},"35":{"start":{"line":72,"column":8},"end":{"line":73,"column":19}},"36":{"start":{"line":73,"column":12},"end":{"line":73,"column":19}},"37":{"start":{"line":74,"column":24},"end":{"line":74,"column":40}},"38":{"start":{"line":76,"column":8},"end":{"line":76,"column":50}},"39":{"start":{"line":78,"column":8},"end":{"line":80,"column":9}},"40":{"start":{"line":79,"column":12},"end":{"line":79,"column":68}},"41":{"start":{"line":82,"column":8},"end":{"line":82,"column":67}},"42":{"start":{"line":83,"column":8},"end":{"line":83,"column":67}},"43":{"start":{"line":85,"column":8},"end":{"line":85,"column":72}},"44":{"start":{"line":86,"column":8},"end":{"line":86,"column":72}},"45":{"start":{"line":89,"column":8},"end":{"line":89,"column":70}},"46":{"start":{"line":92,"column":8},"end":{"line":92,"column":49}},"47":{"start":{"line":93,"column":8},"end":{"line":93,"column":51}},"48":{"start":{"line":96,"column":24},"end":{"line":96,"column":42}},"49":{"start":{"line":97,"column":8},"end":{"line":97,"column":86}},"50":{"start":{"line":98,"column":8},"end":{"line":98,"column":53}},"51":{"start":{"line":101,"column":0},"end":{"line":101,"column":46}},"52":{"start":{"line":103,"column":4},"end":{"line":103,"column":34}},"53":{"start":{"line":106,"column":4},"end":{"line":106,"column":27}},"54":{"start":{"line":109,"column":4},"end":{"line":109,"column":54}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":10,"column":4},"end":{"line":10,"column":5}},"loc":{"start":{"line":10,"column":18},"end":{"line":16,"column":5}},"line":10},"1":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":5}},"loc":{"start":{"line":17,"column":35},"end":{"line":19,"column":5}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":29},"end":{"line":22,"column":5}},"line":20},"3":{"name":"(anonymous_3)","decl":{"start":{"line":23,"column":4},"end":{"line":23,"column":5}},"loc":{"start":{"line":23,"column":32},"end":{"line":25,"column":5}},"line":23},"4":{"name":"(anonymous_4)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":39},"end":{"line":34,"column":5}},"line":26},"5":{"name":"(anonymous_5)","decl":{"start":{"line":35,"column":4},"end":{"line":35,"column":5}},"loc":{"start":{"line":35,"column":33},"end":{"line":37,"column":5}},"line":35},"6":{"name":"(anonymous_6)","decl":{"start":{"line":38,"column":4},"end":{"line":38,"column":5}},"loc":{"start":{"line":38,"column":36},"end":{"line":40,"column":5}},"line":38},"7":{"name":"(anonymous_7)","decl":{"start":{"line":41,"column":4},"end":{"line":41,"column":5}},"loc":{"start":{"line":41,"column":38},"end":{"line":50,"column":5}},"line":41},"8":{"name":"(anonymous_8)","decl":{"start":{"line":51,"column":4},"end":{"line":51,"column":5}},"loc":{"start":{"line":51,"column":39},"end":{"line":53,"column":5}},"line":51},"9":{"name":"(anonymous_9)","decl":{"start":{"line":54,"column":4},"end":{"line":54,"column":5}},"loc":{"start":{"line":54,"column":34},"end":{"line":56,"column":5}},"line":54},"10":{"name":"(anonymous_10)","decl":{"start":{"line":57,"column":4},"end":{"line":57,"column":5}},"loc":{"start":{"line":57,"column":36},"end":{"line":59,"column":5}},"line":57},"11":{"name":"(anonymous_11)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":5}},"loc":{"start":{"line":60,"column":40},"end":{"line":62,"column":5}},"line":60},"12":{"name":"(anonymous_12)","decl":{"start":{"line":63,"column":4},"end":{"line":63,"column":5}},"loc":{"start":{"line":63,"column":54},"end":{"line":66,"column":5}},"line":63},"13":{"name":"(anonymous_13)","decl":{"start":{"line":67,"column":4},"end":{"line":67,"column":5}},"loc":{"start":{"line":67,"column":39},"end":{"line":69,"column":5}},"line":67},"14":{"name":"(anonymous_14)","decl":{"start":{"line":70,"column":4},"end":{"line":70,"column":5}},"loc":{"start":{"line":70,"column":42},"end":{"line":87,"column":5}},"line":70},"15":{"name":"(anonymous_15)","decl":{"start":{"line":88,"column":4},"end":{"line":88,"column":5}},"loc":{"start":{"line":88,"column":41},"end":{"line":90,"column":5}},"line":88},"16":{"name":"(anonymous_16)","decl":{"start":{"line":91,"column":4},"end":{"line":91,"column":5}},"loc":{"start":{"line":91,"column":41},"end":{"line":94,"column":5}},"line":91},"17":{"name":"(anonymous_17)","decl":{"start":{"line":95,"column":4},"end":{"line":95,"column":5}},"loc":{"start":{"line":95,"column":44},"end":{"line":99,"column":5}},"line":95},"18":{"name":"getNodeKey","decl":{"start":{"line":102,"column":9},"end":{"line":102,"column":19}},"loc":{"start":{"line":102,"column":28},"end":{"line":104,"column":1}},"line":102},"19":{"name":"getChanKey","decl":{"start":{"line":105,"column":9},"end":{"line":105,"column":19}},"loc":{"start":{"line":105,"column":26},"end":{"line":107,"column":1}},"line":105},"20":{"name":"getChanUpdKey","decl":{"start":{"line":108,"column":9},"end":{"line":108,"column":22}},"loc":{"start":{"line":108,"column":43},"end":{"line":110,"column":1}},"line":108}},"branchMap":{"0":{"loc":{"start":{"line":29,"column":8},"end":{"line":31,"column":9}},"type":"if","locations":[{"start":{"line":29,"column":8},"end":{"line":31,"column":9}},{"start":{},"end":{}}],"line":29},"1":{"loc":{"start":{"line":44,"column":8},"end":{"line":45,"column":27}},"type":"if","locations":[{"start":{"line":44,"column":8},"end":{"line":45,"column":27}},{"start":{},"end":{}}],"line":44},"2":{"loc":{"start":{"line":72,"column":8},"end":{"line":73,"column":19}},"type":"if","locations":[{"start":{"line":72,"column":8},"end":{"line":73,"column":19}},{"start":{},"end":{}}],"line":72},"3":{"loc":{"start":{"line":78,"column":8},"end":{"line":80,"column":9}},"type":"if","locations":[{"start":{"line":78,"column":8},"end":{"line":80,"column":9}},{"start":{},"end":{}}],"line":78},"4":{"loc":{"start":{"line":97,"column":40},"end":{"line":97,"column":84}},"type":"binary-expr","locations":[{"start":{"line":97,"column":40},"end":{"line":97,"column":71}},{"start":{"line":97,"column":75},"end":{"line":97,"column":84}}],"line":97}},"s":{"0":1,"1":1,"2":1,"3":1,"4":334,"5":334,"6":334,"7":334,"8":334,"9":249,"10":369,"11":367,"12":157,"13":157,"14":157,"15":146,"16":157,"17":157,"18":499,"19":499,"20":499,"21":499,"22":499,"23":243,"24":256,"25":254,"26":256,"27":1032,"28":18,"29":37,"30":1018,"31":3,"32":3,"33":796,"34":7,"35":7,"36":0,"37":7,"38":7,"39":7,"40":6,"41":7,"42":7,"43":7,"44":7,"45":244,"46":243,"47":243,"48":314,"49":314,"50":314,"51":1,"52":2844,"53":2728,"54":1553},"f":{"0":334,"1":249,"2":369,"3":367,"4":157,"5":499,"6":499,"7":499,"8":1032,"9":18,"10":37,"11":1018,"12":3,"13":796,"14":7,"15":244,"16":243,"17":314,"18":2844,"19":2728,"20":1553},"b":{"0":[146,11],"1":[243,256],"2":[0,7],"3":[6,1],"4":[314,303]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipMemoryStore.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipMemoryStore.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/require-await */\nimport { OutPoint } from '@node-dlc/bitcoin';\nimport { ShortChannelId, shortChannelIdFromNumber } from '@node-dlc/common';\n\nimport { ChannelAnnouncementMessage } from '../messages/ChannelAnnouncementMessage';\nimport { ChannelUpdateMessage } from '../messages/ChannelUpdateMessage';\nimport { ExtendedChannelAnnouncementMessage } from '../messages/ExtendedChannelAnnouncementMessage';\nimport { NodeAnnouncementMessage } from '../messages/NodeAnnouncementMessage';\nimport { IGossipStore } from './GossipStore';\n\n/**\n * In-memory implementation of the IGossipStore.\n */\nexport class GossipMemoryStore implements IGossipStore {\n  private _channelAnn = new Map<bigint, ChannelAnnouncementMessage>();\n  private _channelByOutPoint = new Map<string, bigint>();\n  private _channelUpd = new Map<bigint, ChannelUpdateMessage>();\n  private _nodeAnn = new Map<string, NodeAnnouncementMessage>();\n  private _nodeChannels = new Map<string, Set<bigint>>();\n\n  public get channelAnnouncementCount(): number {\n    return this._channelAnn.size;\n  }\n\n  public get channelUpdateCount(): number {\n    return this._channelUpd.size;\n  }\n\n  public get nodeAnnouncementCount(): number {\n    return this._nodeAnn.size;\n  }\n\n  public async saveChannelAnnouncement(\n    msg: ChannelAnnouncementMessage,\n  ): Promise<void> {\n    const chanKey = getChanKey(msg.shortChannelId);\n    this._channelAnn.set(chanKey, msg);\n    if (msg instanceof ExtendedChannelAnnouncementMessage) {\n      this._channelByOutPoint.set(\n        msg.outpoint.toString(),\n        msg.shortChannelId.toNumber(),\n      );\n    }\n    await this._saveNodeChannel(msg.nodeId1, chanKey);\n    await this._saveNodeChannel(msg.nodeId2, chanKey);\n  }\n\n  public async saveChannelUpdate(msg: ChannelUpdateMessage): Promise<void> {\n    this._channelUpd.set(\n      getChanUpdKey(getChanKey(msg.shortChannelId), msg.direction),\n      msg,\n    );\n  }\n\n  public async saveNodeAnnouncement(\n    msg: NodeAnnouncementMessage,\n  ): Promise<void> {\n    this._nodeAnn.set(getNodeKey(msg.nodeId), msg);\n  }\n\n  public async findChannelsForNode(nodeId: Buffer): Promise<ShortChannelId[]> {\n    const scidInts = this._nodeChannels.get(getNodeKey(nodeId));\n    const results: ShortChannelId[] = [];\n    if (!scidInts) return results;\n    for (const scidInt of scidInts) {\n      results.push(shortChannelIdFromNumber(scidInt));\n    }\n    return results;\n  }\n\n  public async findNodeAnnouncement(\n    nodeId: Buffer,\n  ): Promise<NodeAnnouncementMessage> {\n    return this._nodeAnn.get(getNodeKey(nodeId));\n  }\n\n  public async findNodeAnnouncements(): Promise<NodeAnnouncementMessage[]> {\n    return Array.from(this._nodeAnn.values());\n  }\n\n  public async findChannelAnnouncemnts(): Promise<\n    ChannelAnnouncementMessage[]\n  > {\n    return Array.from(this._channelAnn.values());\n  }\n\n  public async findChannelAnnouncement(\n    scid: ShortChannelId,\n  ): Promise<ChannelAnnouncementMessage> {\n    return this._channelAnn.get(getChanKey(scid));\n  }\n\n  public async findChannelAnnouncementByOutpoint(\n    outpoint: OutPoint,\n  ): Promise<ChannelAnnouncementMessage> {\n    const scidNum = this._channelByOutPoint.get(outpoint.toString());\n    return this._channelAnn.get(scidNum);\n  }\n\n  public async findChannelUpdate(\n    scid: ShortChannelId,\n    dir: number,\n  ): Promise<ChannelUpdateMessage> {\n    return this._channelUpd.get(getChanUpdKey(getChanKey(scid), dir));\n  }\n\n  public async deleteChannelAnnouncement(scid: ShortChannelId): Promise<void> {\n    const msg = await this.findChannelAnnouncement(scid);\n    if (!msg) return;\n    const chanKey = getChanKey(scid);\n\n    // delete channel\n    this._channelAnn.delete(getChanKey(scid));\n\n    // delete outpoint link\n    if (msg instanceof ExtendedChannelAnnouncementMessage) {\n      this._channelByOutPoint.delete(msg.outpoint.toString());\n    }\n\n    // delete channel_updates\n    this._channelUpd.delete(getChanUpdKey(scid.toNumber(), 0));\n    this._channelUpd.delete(getChanUpdKey(scid.toNumber(), 0));\n\n    // delete node links\n    this._nodeChannels.get(getNodeKey(msg.nodeId1)).delete(chanKey);\n    this._nodeChannels.get(getNodeKey(msg.nodeId2)).delete(chanKey);\n  }\n\n  public async deleteChannelUpdate(\n    scid: ShortChannelId,\n    dir: number,\n  ): Promise<void> {\n    this._channelUpd.delete(getChanUpdKey(getChanKey(scid), dir));\n  }\n\n  public async deleteNodeAnnouncement(nodeId: Buffer): Promise<void> {\n    this._nodeAnn.delete(getNodeKey(nodeId));\n    this._nodeChannels.get(getNodeKey(nodeId));\n  }\n\n  private async _saveNodeChannel(nodeId: Buffer, chanKey: bigint) {\n    const nodeKey = getNodeKey(nodeId);\n    this._nodeChannels.set(\n      nodeKey,\n      this._nodeChannels.get(nodeKey) || new Set<bigint>(),\n    );\n    this._nodeChannels.get(nodeKey).add(chanKey);\n  }\n}\n\nfunction getNodeKey(nodeId: Buffer): string {\n  return nodeId.toString('hex');\n}\n\nfunction getChanKey(scid: ShortChannelId): bigint {\n  return scid.toNumber();\n}\n\nfunction getChanUpdKey(chanKey: bigint, direction: number): bigint {\n  return (chanKey << BigInt(8)) | BigInt(direction);\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"09b6e36137271d0f0e7b426c4ff9e65976257392","contentHash":"cf4d4fb538815e712d83b2a4a5b30e8cbdb3de571bce8bcb2b313fc0f5fed50d"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipStore.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipStore.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}}},"fnMap":{},"branchMap":{},"s":{"0":1},"f":{},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipStore.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/GossipStore.ts"],"names":[],"mappings":"","sourcesContent":["import { OutPoint } from '@node-dlc/bitcoin';\nimport { ShortChannelId } from '@node-dlc/common';\n\nimport { ChannelAnnouncementMessage } from '../messages/ChannelAnnouncementMessage';\nimport { ChannelUpdateMessage } from '../messages/ChannelUpdateMessage';\nimport { NodeAnnouncementMessage } from '../messages/NodeAnnouncementMessage';\n\n/**\n * Interface for storing, finding, and deleting gossip messages.\n */\nexport interface IGossipStore {\n  findChannelAnnouncemnts(): Promise<ChannelAnnouncementMessage[]>;\n  findChannelsForNode(nodeId: Buffer): Promise<ShortChannelId[]>;\n  findNodeAnnouncement(nodeId: Buffer): Promise<NodeAnnouncementMessage>;\n  findNodeAnnouncements(): Promise<NodeAnnouncementMessage[]>;\n  findChannelAnnouncement(\n    scid: ShortChannelId,\n  ): Promise<ChannelAnnouncementMessage>;\n  findChannelAnnouncementByOutpoint(\n    outpoint: OutPoint,\n  ): Promise<ChannelAnnouncementMessage>;\n  findChannelUpdate(\n    scid: ShortChannelId,\n    dir: number,\n  ): Promise<ChannelUpdateMessage>;\n  saveChannelAnnouncement(msg: ChannelAnnouncementMessage): Promise<void>;\n  saveChannelUpdate(msg: ChannelUpdateMessage): Promise<void>;\n  saveNodeAnnouncement(msg: NodeAnnouncementMessage): Promise<void>;\n  deleteChannelAnnouncement(scid: ShortChannelId): Promise<void>;\n  deleteChannelUpdate(scid: ShortChannelId, dir: number): Promise<void>;\n  deleteNodeAnnouncement(nodeId: Buffer): Promise<void>;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"c87e628aab91e5e72ef0156ab3444ce59c27d4d6","contentHash":"40bfb9dfe97584914d6c16875173428dc99ad631428b8f957638818f3fd64cd3"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/IGossipFilterChainClient.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/IGossipFilterChainClient.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}}},"fnMap":{},"branchMap":{},"s":{"0":1},"f":{},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/IGossipFilterChainClient.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/gossip/IGossipFilterChainClient.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * The interface required by the GossipFilter to perform on-chain validation checks\n * of messages. A simplified interface is required by the GossipFilter. The actual\n * chain client implementation may offer a broader set of feautures. Additionally,\n * an adapter could be constructred to make an chain client conform to that required\n * by the GossipFilter.\n */\nexport interface IGossipFilterChainClient {\n  getBlockHash(height: number): Promise<string>;\n  getBlock(hash: string): Promise<HasTxStrings>;\n  getUtxo(txId: string, voutIdx: number): Promise<HasScriptPubKey & HasValue>;\n  waitForSync(): Promise<boolean>;\n}\n\nexport type HasTxStrings = {\n  tx: string[];\n};\n\nexport type HasScriptPubKey = {\n  scriptPubKey: HasHex;\n};\n\nexport type HasValue = {\n  value: number;\n};\n\nexport type HasHex = {\n  hex: string;\n};\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"b59a6dfcbf5245f30225b89791419ca8a397ffbe","contentHash":"da8b56e9775c1bf9c495310c09626980c34086c851d6f053489b7333586e076c"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/AnnouncementSignaturesMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/AnnouncementSignaturesMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":47}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":22},"end":{"line":6,"column":47}},"5":{"start":{"line":24,"column":8},"end":{"line":24,"column":69}},"6":{"start":{"line":28,"column":8},"end":{"line":28,"column":41}},"7":{"start":{"line":33,"column":8},"end":{"line":33,"column":45}},"8":{"start":{"line":38,"column":8},"end":{"line":38,"column":48}},"9":{"start":{"line":44,"column":23},"end":{"line":44,"column":56}},"10":{"start":{"line":45,"column":8},"end":{"line":45,"column":30}},"11":{"start":{"line":46,"column":25},"end":{"line":46,"column":60}},"12":{"start":{"line":47,"column":8},"end":{"line":47,"column":50}},"13":{"start":{"line":48,"column":8},"end":{"line":48,"column":94}},"14":{"start":{"line":49,"column":8},"end":{"line":49,"column":54}},"15":{"start":{"line":50,"column":8},"end":{"line":50,"column":57}},"16":{"start":{"line":51,"column":8},"end":{"line":51,"column":24}},"17":{"start":{"line":58,"column":20},"end":{"line":62,"column":14}},"18":{"start":{"line":63,"column":23},"end":{"line":63,"column":66}},"19":{"start":{"line":64,"column":8},"end":{"line":64,"column":40}},"20":{"start":{"line":65,"column":8},"end":{"line":65,"column":42}},"21":{"start":{"line":66,"column":8},"end":{"line":66,"column":58}},"22":{"start":{"line":67,"column":8},"end":{"line":67,"column":46}},"23":{"start":{"line":68,"column":8},"end":{"line":68,"column":49}},"24":{"start":{"line":69,"column":8},"end":{"line":69,"column":33}},"25":{"start":{"line":72,"column":0},"end":{"line":72,"column":70}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":18},"end":{"line":39,"column":5}},"line":20},"1":{"name":"(anonymous_1)","decl":{"start":{"line":43,"column":4},"end":{"line":43,"column":5}},"loc":{"start":{"line":43,"column":32},"end":{"line":52,"column":5}},"line":43},"2":{"name":"(anonymous_2)","decl":{"start":{"line":57,"column":4},"end":{"line":57,"column":5}},"loc":{"start":{"line":57,"column":16},"end":{"line":70,"column":5}},"line":57}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":1},"f":{"0":0,"1":0,"2":0},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/AnnouncementSignaturesMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/AnnouncementSignaturesMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAE7D,6CAA4D;AAE5D,gDAA6C;AAG7C;;;;;;;;;;;GAWG;AACH,MAAa,6BAA6B;IAA1C;QAgBE;;WAEG;QACI,SAAI,GAAgB,yBAAW,CAAC,sBAAsB,CAAC;QAE9D;;WAEG;QACI,cAAS,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAQ3C;;;WAGG;QACI,kBAAa,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE/C;;;WAGG;QACI,qBAAgB,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAqBpD,CAAC;IA9DC;;OAEG;IACI,MAAM,CAAC,WAAW,CAAC,OAAe;QACvC,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,OAAO,CAAC,CAAC;QACzC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,gBAAgB;QAEvC,MAAM,QAAQ,GAAG,IAAI,6BAA6B,EAAE,CAAC;QACrD,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC1C,QAAQ,CAAC,cAAc,GAAG,IAAA,iCAAwB,EAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,QAAQ,CAAC,aAAa,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9C,QAAQ,CAAC,gBAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IA8BD;;;OAGG;IACI,SAAS;QACd,MAAM,GAAG,GACP,CAAC,GAAG,OAAO;YACX,EAAE,GAAG,aAAa;YAClB,CAAC,GAAG,mBAAmB;YACvB,EAAE,GAAG,iBAAiB;YACtB,EAAE,CAAC,CAAC,qBAAqB;QAC3B,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACnD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClD,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;CACF;AA/DD,sEA+DC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { ShortChannelId } from '@node-dlc/common';\nimport { shortChannelIdFromBuffer } from '@node-dlc/common';\n\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * This is a direct messagee between two endpoints of a channel\n * and serves as an opt-in mechanism to allow the\n * announcement of the channel to the rest of the network. It\n * contains the necessary signatuures, by the sender, to construct\n * the channel_announcement message.\n *\n * The message constructed by constructing a channel_announcement\n * message, corresponding to the newly created channel, and signing\n * it with the secrets matching an endpoint's node_id and\n * bitcoin_key.\n */\nexport class AnnouncementSignaturesMessage implements IWireMessage {\n  /**\n   * Deserializes a Buffer into an AnnouncementSignaturesMessage.\n   */\n  public static deserialize(payload: Buffer): AnnouncementSignaturesMessage {\n    const reader = new BufferReader(payload);\n    reader.readUInt16BE(); // read off type\n\n    const instance = new AnnouncementSignaturesMessage();\n    instance.channelId = reader.readBytes(32);\n    instance.shortChannelId = shortChannelIdFromBuffer(reader.readBytes(8));\n    instance.nodeSignature = reader.readBytes(64);\n    instance.bitcoinSignature = reader.readBytes(64);\n    return instance;\n  }\n\n  /**\n   * Message type - 259\n   */\n  public type: MessageType = MessageType.AnnouncementSignatures;\n\n  /**\n   * Buffer of the channel_id for the message.\n   */\n  public channelId: Buffer = Buffer.alloc(0);\n\n  /**\n   * ShortChannelId is a unique reference to the funding output of\n   * the channel.\n   */\n  public shortChannelId: ShortChannelId;\n\n  /**\n   * Buffer containing the signature of the channel_announcement message\n   * signed by the endpoint's node_id.\n   */\n  public nodeSignature: Buffer = Buffer.alloc(0);\n\n  /**\n   * Buffer containing the signaturee of the channel_announcment message\n   * signed by the endpoint's bitcoin_key.\n   */\n  public bitcoinSignature: Buffer = Buffer.alloc(0);\n\n  /**\n   * Serializes the instance into a Buffer suitable for\n   * transmission on the wire.\n   */\n  public serialize(): Buffer {\n    const len =\n      2 + // type\n      32 + // channel_id\n      8 + // short_channel_id\n      64 + // node_signature\n      64; // bitcoin_signaturee\n    const writer = new BufferWriter(Buffer.alloc(len));\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.channelId);\n    writer.writeBytes(this.shortChannelId.toBuffer());\n    writer.writeBytes(this.nodeSignature);\n    writer.writeBytes(this.bitcoinSignature);\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"16001c1a55dccfd02f4f7068c05816ba789d54d4","contentHash":"6fb906d34a23ec560a1eea509e469998122807d7419db5c7bdcb33eec77db40f"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/IWireMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/IWireMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}}},"fnMap":{},"branchMap":{},"s":{"0":1},"f":{},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/IWireMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/IWireMessage.ts"],"names":[],"mappings":"","sourcesContent":["import { MessageType } from '../MessageType';\n\nexport interface IWireMessage {\n  type: MessageType;\n  serialize(): Buffer;\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"1bbbd39fe217e90645b070b87757f92edbca5f40","contentHash":"dfbef633c096128402328129f64fe59387563b1db3236586df958eab7ea52da7"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/Peer.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/Peer.ts","statementMap":{"0":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"2":{"start":{"line":3,"column":26},"end":{"line":3,"column":33}},"3":{"start":{"line":4,"column":15},"end":{"line":4,"column":52}},"4":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"5":{"start":{"line":6,"column":6},"end":{"line":6,"column":68}},"6":{"start":{"line":6,"column":51},"end":{"line":6,"column":63}},"7":{"start":{"line":8,"column":4},"end":{"line":8,"column":39}},"8":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"9":{"start":{"line":10,"column":26},"end":{"line":10,"column":33}},"10":{"start":{"line":11,"column":4},"end":{"line":11,"column":17}},"11":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"12":{"start":{"line":14,"column":4},"end":{"line":14,"column":72}},"13":{"start":{"line":16,"column":4},"end":{"line":16,"column":21}},"14":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"15":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"16":{"start":{"line":19,"column":31},"end":{"line":19,"column":42}},"17":{"start":{"line":20,"column":17},"end":{"line":20,"column":19}},"18":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"19":{"start":{"line":21,"column":21},"end":{"line":21,"column":141}},"20":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"21":{"start":{"line":21,"column":109},"end":{"line":21,"column":141}},"22":{"start":{"line":22,"column":4},"end":{"line":22,"column":36}},"23":{"start":{"line":23,"column":4},"end":{"line":23,"column":18}},"24":{"start":{"line":25,"column":22},"end":{"line":27,"column":1}},"25":{"start":{"line":26,"column":4},"end":{"line":26,"column":62}},"26":{"start":{"line":28,"column":0},"end":{"line":28,"column":62}},"27":{"start":{"line":29,"column":0},"end":{"line":29,"column":22}},"28":{"start":{"line":30,"column":14},"end":{"line":30,"column":54}},"29":{"start":{"line":31,"column":17},"end":{"line":31,"column":51}},"30":{"start":{"line":32,"column":17},"end":{"line":32,"column":34}},"31":{"start":{"line":33,"column":23},"end":{"line":33,"column":64}},"32":{"start":{"line":34,"column":22},"end":{"line":34,"column":55}},"33":{"start":{"line":35,"column":20},"end":{"line":35,"column":42}},"34":{"start":{"line":36,"column":24},"end":{"line":36,"column":50}},"35":{"start":{"line":93,"column":8},"end":{"line":93,"column":51}},"36":{"start":{"line":94,"column":8},"end":{"line":94,"column":21}},"37":{"start":{"line":95,"column":8},"end":{"line":95,"column":43}},"38":{"start":{"line":96,"column":8},"end":{"line":96,"column":39}},"39":{"start":{"line":97,"column":8},"end":{"line":97,"column":43}},"40":{"start":{"line":98,"column":8},"end":{"line":98,"column":56}},"41":{"start":{"line":99,"column":8},"end":{"line":99,"column":32}},"42":{"start":{"line":100,"column":8},"end":{"line":100,"column":33}},"43":{"start":{"line":101,"column":8},"end":{"line":101,"column":40}},"44":{"start":{"line":102,"column":8},"end":{"line":102,"column":69}},"45":{"start":{"line":103,"column":8},"end":{"line":103,"column":29}},"46":{"start":{"line":106,"column":8},"end":{"line":106,"column":24}},"47":{"start":{"line":109,"column":8},"end":{"line":109,"column":25}},"48":{"start":{"line":112,"column":8},"end":{"line":112,"column":65}},"49":{"start":{"line":119,"column":8},"end":{"line":119,"column":24}},"50":{"start":{"line":120,"column":8},"end":{"line":120,"column":57}},"51":{"start":{"line":121,"column":8},"end":{"line":121,"column":56}},"52":{"start":{"line":122,"column":8},"end":{"line":122,"column":47}},"53":{"start":{"line":123,"column":8},"end":{"line":123,"column":32}},"54":{"start":{"line":125,"column":8},"end":{"line":125,"column":26}},"55":{"start":{"line":126,"column":8},"end":{"line":126,"column":26}},"56":{"start":{"line":128,"column":8},"end":{"line":134,"column":11}},"57":{"start":{"line":135,"column":8},"end":{"line":135,"column":70}},"58":{"start":{"line":136,"column":8},"end":{"line":136,"column":64}},"59":{"start":{"line":137,"column":8},"end":{"line":137,"column":64}},"60":{"start":{"line":138,"column":8},"end":{"line":138,"column":64}},"61":{"start":{"line":145,"column":8},"end":{"line":145,"column":33}},"62":{"start":{"line":146,"column":8},"end":{"line":146,"column":29}},"63":{"start":{"line":147,"column":8},"end":{"line":147,"column":70}},"64":{"start":{"line":148,"column":8},"end":{"line":148,"column":64}},"65":{"start":{"line":149,"column":8},"end":{"line":149,"column":64}},"66":{"start":{"line":150,"column":8},"end":{"line":150,"column":64}},"67":{"start":{"line":154,"column":8},"end":{"line":159,"column":11}},"68":{"start":{"line":155,"column":12},"end":{"line":155,"column":35}},"69":{"start":{"line":156,"column":12},"end":{"line":156,"column":61}},"70":{"start":{"line":157,"column":12},"end":{"line":157,"column":60}},"71":{"start":{"line":158,"column":12},"end":{"line":158,"column":47}},"72":{"start":{"line":168,"column":8},"end":{"line":168,"column":104}},"73":{"start":{"line":169,"column":8},"end":{"line":169,"column":34}},"74":{"start":{"line":170,"column":8},"end":{"line":170,"column":38}},"75":{"start":{"line":177,"column":8},"end":{"line":177,"column":104}},"76":{"start":{"line":178,"column":20},"end":{"line":178,"column":33}},"77":{"start":{"line":179,"column":8},"end":{"line":179,"column":34}},"78":{"start":{"line":180,"column":8},"end":{"line":180,"column":38}},"79":{"start":{"line":186,"column":8},"end":{"line":186,"column":42}},"80":{"start":{"line":187,"column":8},"end":{"line":187,"column":57}},"81":{"start":{"line":188,"column":8},"end":{"line":188,"column":26}},"82":{"start":{"line":194,"column":8},"end":{"line":194,"column":26}},"83":{"start":{"line":200,"column":8},"end":{"line":200,"column":60}},"84":{"start":{"line":201,"column":8},"end":{"line":201,"column":55}},"85":{"start":{"line":203,"column":8},"end":{"line":203,"column":26}},"86":{"start":{"line":204,"column":8},"end":{"line":204,"column":32}},"87":{"start":{"line":207,"column":8},"end":{"line":207,"column":43}},"88":{"start":{"line":211,"column":8},"end":{"line":211,"column":44}},"89":{"start":{"line":213,"column":8},"end":{"line":214,"column":49}},"90":{"start":{"line":214,"column":12},"end":{"line":214,"column":49}},"91":{"start":{"line":218,"column":8},"end":{"line":223,"column":9}},"92":{"start":{"line":219,"column":12},"end":{"line":219,"column":31}},"93":{"start":{"line":220,"column":12},"end":{"line":220,"column":60}},"94":{"start":{"line":221,"column":12},"end":{"line":221,"column":58}},"95":{"start":{"line":222,"column":12},"end":{"line":222,"column":19}},"96":{"start":{"line":227,"column":8},"end":{"line":227,"column":56}},"97":{"start":{"line":228,"column":8},"end":{"line":228,"column":49}},"98":{"start":{"line":240,"column":8},"end":{"line":245,"column":9}},"99":{"start":{"line":241,"column":12},"end":{"line":241,"column":97}},"100":{"start":{"line":242,"column":12},"end":{"line":244,"column":40}},"101":{"start":{"line":243,"column":16},"end":{"line":243,"column":64}},"102":{"start":{"line":249,"column":8},"end":{"line":249,"column":32}},"103":{"start":{"line":252,"column":8},"end":{"line":252,"column":48}},"104":{"start":{"line":253,"column":8},"end":{"line":274,"column":9}},"105":{"start":{"line":254,"column":23},"end":{"line":254,"column":27}},"106":{"start":{"line":255,"column":12},"end":{"line":266,"column":13}},"107":{"start":{"line":256,"column":28},"end":{"line":256,"column":46}},"108":{"start":{"line":257,"column":16},"end":{"line":258,"column":27}},"109":{"start":{"line":258,"column":20},"end":{"line":258,"column":27}},"110":{"start":{"line":259,"column":16},"end":{"line":265,"column":17}},"111":{"start":{"line":260,"column":20},"end":{"line":260,"column":54}},"112":{"start":{"line":263,"column":30},"end":{"line":263,"column":55}},"113":{"start":{"line":264,"column":20},"end":{"line":264,"column":40}},"114":{"start":{"line":270,"column":12},"end":{"line":270,"column":35}},"115":{"start":{"line":271,"column":12},"end":{"line":271,"column":30}},"116":{"start":{"line":272,"column":12},"end":{"line":272,"column":36}},"117":{"start":{"line":273,"column":12},"end":{"line":273,"column":19}},"118":{"start":{"line":282,"column":8},"end":{"line":282,"column":53}},"119":{"start":{"line":282,"column":27},"end":{"line":282,"column":51}},"120":{"start":{"line":291,"column":20},"end":{"line":291,"column":51}},"121":{"start":{"line":292,"column":8},"end":{"line":292,"column":42}},"122":{"start":{"line":293,"column":8},"end":{"line":293,"column":43}},"123":{"start":{"line":295,"column":24},"end":{"line":295,"column":39}},"124":{"start":{"line":296,"column":8},"end":{"line":296,"column":38}},"125":{"start":{"line":297,"column":8},"end":{"line":297,"column":35}},"126":{"start":{"line":298,"column":8},"end":{"line":298,"column":47}},"127":{"start":{"line":307,"column":18},"end":{"line":307,"column":49}},"128":{"start":{"line":308,"column":8},"end":{"line":311,"column":9}},"129":{"start":{"line":309,"column":29},"end":{"line":309,"column":47}},"130":{"start":{"line":310,"column":12},"end":{"line":310,"column":73}},"131":{"start":{"line":313,"column":8},"end":{"line":313,"column":104}},"132":{"start":{"line":315,"column":8},"end":{"line":315,"column":41}},"133":{"start":{"line":317,"column":8},"end":{"line":317,"column":42}},"134":{"start":{"line":322,"column":23},"end":{"line":322,"column":28}},"135":{"start":{"line":323,"column":8},"end":{"line":328,"column":9}},"136":{"start":{"line":324,"column":12},"end":{"line":327,"column":13}},"137":{"start":{"line":325,"column":16},"end":{"line":326,"column":36}},"138":{"start":{"line":326,"column":20},"end":{"line":326,"column":36}},"139":{"start":{"line":329,"column":8},"end":{"line":335,"column":9}},"140":{"start":{"line":330,"column":12},"end":{"line":330,"column":69}},"141":{"start":{"line":331,"column":12},"end":{"line":331,"column":67}},"142":{"start":{"line":332,"column":12},"end":{"line":332,"column":88}},"143":{"start":{"line":333,"column":12},"end":{"line":333,"column":30}},"144":{"start":{"line":334,"column":12},"end":{"line":334,"column":19}},"145":{"start":{"line":339,"column":8},"end":{"line":351,"column":9}},"146":{"start":{"line":341,"column":12},"end":{"line":342,"column":25}},"147":{"start":{"line":342,"column":16},"end":{"line":342,"column":25}},"148":{"start":{"line":346,"column":12},"end":{"line":350,"column":13}},"149":{"start":{"line":348,"column":16},"end":{"line":348,"column":34}},"150":{"start":{"line":349,"column":16},"end":{"line":349,"column":23}},"151":{"start":{"line":353,"column":8},"end":{"line":353,"column":35}},"152":{"start":{"line":355,"column":8},"end":{"line":355,"column":49}},"153":{"start":{"line":357,"column":8},"end":{"line":357,"column":27}},"154":{"start":{"line":367,"column":8},"end":{"line":367,"column":33}},"155":{"start":{"line":371,"column":8},"end":{"line":371,"column":37}},"156":{"start":{"line":373,"column":18},"end":{"line":373,"column":49}},"157":{"start":{"line":375,"column":8},"end":{"line":377,"column":9}},"158":{"start":{"line":376,"column":12},"end":{"line":376,"column":44}},"159":{"start":{"line":378,"column":8},"end":{"line":378,"column":17}},"160":{"start":{"line":381,"column":0},"end":{"line":381,"column":20}},"161":{"start":{"line":382,"column":0},"end":{"line":382,"column":36}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":74},"end":{"line":2,"column":75}},"loc":{"start":{"line":2,"column":96},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":6,"column":38},"end":{"line":6,"column":39}},"loc":{"start":{"line":6,"column":49},"end":{"line":6,"column":65}},"line":6},"2":{"name":"(anonymous_2)","decl":{"start":{"line":9,"column":6},"end":{"line":9,"column":7}},"loc":{"start":{"line":9,"column":28},"end":{"line":12,"column":1}},"line":9},"3":{"name":"(anonymous_3)","decl":{"start":{"line":13,"column":80},"end":{"line":13,"column":81}},"loc":{"start":{"line":13,"column":95},"end":{"line":15,"column":1}},"line":13},"4":{"name":"(anonymous_4)","decl":{"start":{"line":15,"column":5},"end":{"line":15,"column":6}},"loc":{"start":{"line":15,"column":20},"end":{"line":17,"column":1}},"line":15},"5":{"name":"(anonymous_5)","decl":{"start":{"line":18,"column":50},"end":{"line":18,"column":51}},"loc":{"start":{"line":18,"column":65},"end":{"line":24,"column":1}},"line":18},"6":{"name":"(anonymous_6)","decl":{"start":{"line":25,"column":56},"end":{"line":25,"column":57}},"loc":{"start":{"line":25,"column":71},"end":{"line":27,"column":1}},"line":25},"7":{"name":"(anonymous_7)","decl":{"start":{"line":92,"column":4},"end":{"line":92,"column":5}},"loc":{"start":{"line":92,"column":78},"end":{"line":104,"column":5}},"line":92},"8":{"name":"(anonymous_8)","decl":{"start":{"line":105,"column":4},"end":{"line":105,"column":5}},"loc":{"start":{"line":105,"column":13},"end":{"line":107,"column":5}},"line":105},"9":{"name":"(anonymous_9)","decl":{"start":{"line":108,"column":4},"end":{"line":108,"column":5}},"loc":{"start":{"line":108,"column":17},"end":{"line":110,"column":5}},"line":108},"10":{"name":"(anonymous_10)","decl":{"start":{"line":111,"column":4},"end":{"line":111,"column":5}},"loc":{"start":{"line":111,"column":20},"end":{"line":113,"column":5}},"line":111},"11":{"name":"(anonymous_11)","decl":{"start":{"line":117,"column":4},"end":{"line":117,"column":5}},"loc":{"start":{"line":117,"column":29},"end":{"line":139,"column":5}},"line":117},"12":{"name":"(anonymous_12)","decl":{"start":{"line":144,"column":4},"end":{"line":144,"column":5}},"loc":{"start":{"line":144,"column":19},"end":{"line":160,"column":5}},"line":144},"13":{"name":"(anonymous_13)","decl":{"start":{"line":154,"column":34},"end":{"line":154,"column":35}},"loc":{"start":{"line":154,"column":40},"end":{"line":159,"column":9}},"line":154},"14":{"name":"(anonymous_14)","decl":{"start":{"line":167,"column":4},"end":{"line":167,"column":5}},"loc":{"start":{"line":167,"column":14},"end":{"line":171,"column":5}},"line":167},"15":{"name":"(anonymous_15)","decl":{"start":{"line":176,"column":4},"end":{"line":176,"column":5}},"loc":{"start":{"line":176,"column":19},"end":{"line":181,"column":5}},"line":176},"16":{"name":"(anonymous_16)","decl":{"start":{"line":185,"column":4},"end":{"line":185,"column":5}},"loc":{"start":{"line":185,"column":17},"end":{"line":189,"column":5}},"line":185},"17":{"name":"(anonymous_17)","decl":{"start":{"line":193,"column":4},"end":{"line":193,"column":5}},"loc":{"start":{"line":193,"column":16},"end":{"line":195,"column":5}},"line":193},"18":{"name":"(anonymous_18)","decl":{"start":{"line":197,"column":4},"end":{"line":197,"column":5}},"loc":{"start":{"line":197,"column":21},"end":{"line":205,"column":5}},"line":197},"19":{"name":"(anonymous_19)","decl":{"start":{"line":206,"column":4},"end":{"line":206,"column":5}},"loc":{"start":{"line":206,"column":21},"end":{"line":246,"column":5}},"line":206},"20":{"name":"(anonymous_20)","decl":{"start":{"line":242,"column":47},"end":{"line":242,"column":48}},"loc":{"start":{"line":242,"column":53},"end":{"line":244,"column":13}},"line":242},"21":{"name":"(anonymous_21)","decl":{"start":{"line":247,"column":4},"end":{"line":247,"column":5}},"loc":{"start":{"line":247,"column":24},"end":{"line":250,"column":5}},"line":247},"22":{"name":"(anonymous_22)","decl":{"start":{"line":251,"column":4},"end":{"line":251,"column":5}},"loc":{"start":{"line":251,"column":24},"end":{"line":275,"column":5}},"line":251},"23":{"name":"(anonymous_23)","decl":{"start":{"line":276,"column":4},"end":{"line":276,"column":5}},"loc":{"start":{"line":276,"column":12},"end":{"line":283,"column":5}},"line":276},"24":{"name":"(anonymous_24)","decl":{"start":{"line":282,"column":21},"end":{"line":282,"column":22}},"loc":{"start":{"line":282,"column":27},"end":{"line":282,"column":51}},"line":282},"25":{"name":"(anonymous_25)","decl":{"start":{"line":289,"column":4},"end":{"line":289,"column":5}},"loc":{"start":{"line":289,"column":23},"end":{"line":299,"column":5}},"line":289},"26":{"name":"(anonymous_26)","decl":{"start":{"line":305,"column":4},"end":{"line":305,"column":5}},"loc":{"start":{"line":305,"column":33},"end":{"line":358,"column":5}},"line":305},"27":{"name":"(anonymous_27)","decl":{"start":{"line":363,"column":4},"end":{"line":363,"column":5}},"loc":{"start":{"line":363,"column":25},"end":{"line":379,"column":5}},"line":363}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":22},"end":{"line":12,"column":3}},"type":"binary-expr","locations":[{"start":{"line":2,"column":23},"end":{"line":2,"column":27}},{"start":{"line":2,"column":31},"end":{"line":2,"column":51}},{"start":{"line":2,"column":57},"end":{"line":12,"column":2}}],"line":2},"1":{"loc":{"start":{"line":2,"column":57},"end":{"line":12,"column":2}},"type":"cond-expr","locations":[{"start":{"line":2,"column":74},"end":{"line":9,"column":1}},{"start":{"line":9,"column":6},"end":{"line":12,"column":1}}],"line":2},"2":{"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},"type":"if","locations":[{"start":{"line":3,"column":4},"end":{"line":3,"column":33}},{"start":{},"end":{}}],"line":3},"3":{"loc":{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},"type":"if","locations":[{"start":{"line":5,"column":4},"end":{"line":7,"column":5}},{"start":{},"end":{}}],"line":5},"4":{"loc":{"start":{"line":5,"column":8},"end":{"line":5,"column":85}},"type":"binary-expr","locations":[{"start":{"line":5,"column":8},"end":{"line":5,"column":13}},{"start":{"line":5,"column":18},"end":{"line":5,"column":84}}],"line":5},"5":{"loc":{"start":{"line":5,"column":18},"end":{"line":5,"column":84}},"type":"cond-expr","locations":[{"start":{"line":5,"column":34},"end":{"line":5,"column":47}},{"start":{"line":5,"column":50},"end":{"line":5,"column":84}}],"line":5},"6":{"loc":{"start":{"line":5,"column":50},"end":{"line":5,"column":84}},"type":"binary-expr","locations":[{"start":{"line":5,"column":50},"end":{"line":5,"column":63}},{"start":{"line":5,"column":67},"end":{"line":5,"column":84}}],"line":5},"7":{"loc":{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},"type":"if","locations":[{"start":{"line":10,"column":4},"end":{"line":10,"column":33}},{"start":{},"end":{}}],"line":10},"8":{"loc":{"start":{"line":13,"column":25},"end":{"line":17,"column":2}},"type":"binary-expr","locations":[{"start":{"line":13,"column":26},"end":{"line":13,"column":30}},{"start":{"line":13,"column":34},"end":{"line":13,"column":57}},{"start":{"line":13,"column":63},"end":{"line":17,"column":1}}],"line":13},"9":{"loc":{"start":{"line":13,"column":63},"end":{"line":17,"column":1}},"type":"cond-expr","locations":[{"start":{"line":13,"column":80},"end":{"line":15,"column":1}},{"start":{"line":15,"column":5},"end":{"line":17,"column":1}}],"line":13},"10":{"loc":{"start":{"line":18,"column":19},"end":{"line":24,"column":1}},"type":"binary-expr","locations":[{"start":{"line":18,"column":20},"end":{"line":18,"column":24}},{"start":{"line":18,"column":28},"end":{"line":18,"column":45}},{"start":{"line":18,"column":50},"end":{"line":24,"column":1}}],"line":18},"11":{"loc":{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},"type":"if","locations":[{"start":{"line":19,"column":4},"end":{"line":19,"column":42}},{"start":{},"end":{}}],"line":19},"12":{"loc":{"start":{"line":19,"column":8},"end":{"line":19,"column":29}},"type":"binary-expr","locations":[{"start":{"line":19,"column":8},"end":{"line":19,"column":11}},{"start":{"line":19,"column":15},"end":{"line":19,"column":29}}],"line":19},"13":{"loc":{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":4},"end":{"line":21,"column":141}},{"start":{},"end":{}}],"line":21},"14":{"loc":{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},"type":"if","locations":[{"start":{"line":21,"column":40},"end":{"line":21,"column":141}},{"start":{},"end":{}}],"line":21},"15":{"loc":{"start":{"line":21,"column":44},"end":{"line":21,"column":107}},"type":"binary-expr","locations":[{"start":{"line":21,"column":44},"end":{"line":21,"column":59}},{"start":{"line":21,"column":63},"end":{"line":21,"column":107}}],"line":21},"16":{"loc":{"start":{"line":25,"column":22},"end":{"line":27,"column":1}},"type":"binary-expr","locations":[{"start":{"line":25,"column":23},"end":{"line":25,"column":27}},{"start":{"line":25,"column":31},"end":{"line":25,"column":51}},{"start":{"line":25,"column":56},"end":{"line":27,"column":1}}],"line":25},"17":{"loc":{"start":{"line":26,"column":11},"end":{"line":26,"column":61}},"type":"cond-expr","locations":[{"start":{"line":26,"column":37},"end":{"line":26,"column":40}},{"start":{"line":26,"column":43},"end":{"line":26,"column":61}}],"line":26},"18":{"loc":{"start":{"line":26,"column":12},"end":{"line":26,"column":33}},"type":"binary-expr","locations":[{"start":{"line":26,"column":12},"end":{"line":26,"column":15}},{"start":{"line":26,"column":19},"end":{"line":26,"column":33}}],"line":26},"19":{"loc":{"start":{"line":92,"column":56},"end":{"line":92,"column":76}},"type":"default-arg","locations":[{"start":{"line":92,"column":72},"end":{"line":92,"column":76}}],"line":92},"20":{"loc":{"start":{"line":112,"column":15},"end":{"line":112,"column":64}},"type":"cond-expr","locations":[{"start":{"line":112,"column":27},"end":{"line":112,"column":52}},{"start":{"line":112,"column":55},"end":{"line":112,"column":64}}],"line":112},"21":{"loc":{"start":{"line":213,"column":8},"end":{"line":214,"column":49}},"type":"if","locations":[{"start":{"line":213,"column":8},"end":{"line":214,"column":49}},{"start":{},"end":{}}],"line":213},"22":{"loc":{"start":{"line":218,"column":8},"end":{"line":223,"column":9}},"type":"if","locations":[{"start":{"line":218,"column":8},"end":{"line":223,"column":9}},{"start":{},"end":{}}],"line":218},"23":{"loc":{"start":{"line":240,"column":8},"end":{"line":245,"column":9}},"type":"if","locations":[{"start":{"line":240,"column":8},"end":{"line":245,"column":9}},{"start":{},"end":{}}],"line":240},"24":{"loc":{"start":{"line":257,"column":16},"end":{"line":258,"column":27}},"type":"if","locations":[{"start":{"line":257,"column":16},"end":{"line":258,"column":27}},{"start":{},"end":{}}],"line":257},"25":{"loc":{"start":{"line":259,"column":16},"end":{"line":265,"column":17}},"type":"if","locations":[{"start":{"line":259,"column":16},"end":{"line":265,"column":17}},{"start":{"line":262,"column":21},"end":{"line":265,"column":17}}],"line":259},"26":{"loc":{"start":{"line":308,"column":8},"end":{"line":311,"column":9}},"type":"if","locations":[{"start":{"line":308,"column":8},"end":{"line":311,"column":9}},{"start":{},"end":{}}],"line":308},"27":{"loc":{"start":{"line":325,"column":16},"end":{"line":326,"column":36}},"type":"if","locations":[{"start":{"line":325,"column":16},"end":{"line":326,"column":36}},{"start":{},"end":{}}],"line":325},"28":{"loc":{"start":{"line":329,"column":8},"end":{"line":335,"column":9}},"type":"if","locations":[{"start":{"line":329,"column":8},"end":{"line":335,"column":9}},{"start":{},"end":{}}],"line":329},"29":{"loc":{"start":{"line":329,"column":12},"end":{"line":329,"column":76}},"type":"binary-expr","locations":[{"start":{"line":329,"column":12},"end":{"line":329,"column":21}},{"start":{"line":329,"column":25},"end":{"line":329,"column":49}},{"start":{"line":329,"column":53},"end":{"line":329,"column":76}}],"line":329},"30":{"loc":{"start":{"line":341,"column":12},"end":{"line":342,"column":25}},"type":"if","locations":[{"start":{"line":341,"column":12},"end":{"line":342,"column":25}},{"start":{},"end":{}}],"line":341},"31":{"loc":{"start":{"line":346,"column":12},"end":{"line":350,"column":13}},"type":"if","locations":[{"start":{"line":346,"column":12},"end":{"line":350,"column":13}},{"start":{},"end":{}}],"line":346},"32":{"loc":{"start":{"line":346,"column":18},"end":{"line":347,"column":54}},"type":"binary-expr","locations":[{"start":{"line":346,"column":18},"end":{"line":346,"column":52}},{"start":{"line":347,"column":16},"end":{"line":347,"column":54}}],"line":346},"33":{"loc":{"start":{"line":375,"column":8},"end":{"line":377,"column":9}},"type":"if","locations":[{"start":{"line":375,"column":8},"end":{"line":377,"column":9}},{"start":{},"end":{}}],"line":375}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":1,"12":0,"13":0,"14":1,"15":2,"16":2,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":48,"36":48,"37":48,"38":48,"39":48,"40":48,"41":48,"42":48,"43":48,"44":48,"45":48,"46":2,"47":0,"48":0,"49":6,"50":6,"51":6,"52":6,"53":6,"54":6,"55":6,"56":6,"57":6,"58":6,"59":6,"60":6,"61":42,"62":42,"63":42,"64":42,"65":42,"66":42,"67":42,"68":1,"69":1,"70":1,"71":1,"72":0,"73":0,"74":0,"75":3,"76":2,"77":2,"78":2,"79":5,"80":5,"81":5,"82":2,"83":3,"84":3,"85":3,"86":3,"87":6,"88":6,"89":6,"90":6,"91":6,"92":2,"93":2,"94":2,"95":2,"96":4,"97":4,"98":4,"99":2,"100":2,"101":1,"102":2,"103":19,"104":19,"105":19,"106":19,"107":20,"108":20,"109":6,"110":14,"111":1,"112":13,"113":11,"114":2,"115":2,"116":2,"117":2,"118":13,"119":13,"120":4,"121":4,"122":4,"123":4,"124":4,"125":4,"126":4,"127":14,"128":13,"129":13,"130":13,"131":13,"132":13,"133":13,"134":13,"135":13,"136":4,"137":4,"138":2,"139":13,"140":1,"141":1,"142":1,"143":1,"144":1,"145":12,"146":5,"147":2,"148":3,"149":1,"150":1,"151":11,"152":11,"153":11,"154":14,"155":14,"156":14,"157":12,"158":12,"159":12,"160":1,"161":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":2,"6":1,"7":48,"8":2,"9":0,"10":0,"11":6,"12":42,"13":1,"14":0,"15":3,"16":5,"17":2,"18":3,"19":6,"20":1,"21":2,"22":19,"23":13,"24":13,"25":4,"26":14,"27":14},"b":{"0":[1,1,1],"1":[1,0],"2":[0,0],"3":[0,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[0,0],"8":[1,1,1],"9":[1,0],"10":[1,1,1],"11":[2,0],"12":[2,2],"13":[0,0],"14":[0,0],"15":[0,0],"16":[1,1,1],"17":[0,1],"18":[1,1],"19":[2],"20":[0,0],"21":[6,0],"22":[2,4],"23":[2,2],"24":[6,14],"25":[1,13],"26":[13,0],"27":[2,2],"28":[1,12],"29":[13,11,1],"30":[2,3],"31":[1,2],"32":[3,2],"33":[12,0]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/Peer.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/Peer.ts"],"names":[],"mappings":"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","sourcesContent":["import { BitField } from '@node-dlc/common';\nimport { ILogger } from '@node-dlc/logger';\nimport * as noise from '@node-dlc/noise';\nimport { NoiseSocket } from '@node-dlc/noise';\nimport assert from 'assert';\nimport { Readable } from 'stream';\n\nimport { InitFeatureFlags } from './flags/InitFeatureFlags';\nimport * as MessageFactory from './MessageFactory';\nimport { InitMessage } from './messages/InitMessage';\nimport { IWireMessage } from './messages/IWireMessage';\nimport { PeerState } from './PeerState';\nimport { PingPongState } from './PingPongState';\n\nexport interface IMessageSender {\n  send(buf: Buffer): void;\n  sendMessage(msg: IWireMessage): void;\n}\n\nexport interface IMessageReceiver {\n  read(): IWireMessage;\n  on(event: 'readable', listener: () => void): this;\n  off(event: 'readable', listener: () => void): this;\n}\n\nexport type IMessageSenderReceiver = IMessageSender & IMessageReceiver;\n\nexport interface IPeer extends IMessageSenderReceiver {\n  send(buf: Buffer): void;\n  sendMessage(msg: IWireMessage): void;\n  disconnect(): void;\n\n  read(): IWireMessage;\n  on(event: 'readable', listener: () => void): this;\n  on(event: 'error', listener: (err: Error) => void): this;\n\n  off(event: 'readable', listener: () => void): this;\n  off(event: 'error', listener: (err: Error) => void): this;\n}\n\n/**\n * Peer is an EventEmitter that layers the Lightning Network wire\n * protocol ontop of an @node-dlc/noise NoiseSocket.\n *\n * Peer itself is a state-machine with three states:\n * 1. pending\n * 2. awaiting_peer_init\n * 3. ready\n *\n * The Peer instance starts in `pending` until the underlying NoiseSocket\n * has connected.\n *\n * It then immediately sends the InitMessage as specified in the Peer\n * constructor.\n *\n * At this point, the Peer transitions to `awaiting_peer_init`.\n *\n * Once the remote peer has sent its InitMessage, the state is\n * transitioned to `ready` and the Peer can be begin sending and\n * receiving messages.\n *\n * Once the peer is in the `ready` state it will begin emitting `message`\n * events when it receives new messages from the peer.\n *\n * The Peer will also start a PingPong state machine to manage sending\n * and receiving Pings and Pongs as defined in BOLT01\n *\n * A choice (probably wrongly) was made to make Peer an EventEmitter\n * instead of a DuplexStream operating in object mode. We need to keep\n * the noise socket in flowing mode (instead of paused) because we will\n * not know the length of messages until after we have deserialized the\n * message. This makes it a challenge to implement a DuplexStream that\n * emits objects (such as messages).\n *\n * @emits ready the underlying socket has performed its handshake and\n * initialization message swap has occurred.\n *\n * @emits message a new message has been received. Only sent after the\n * `ready` event has fired.\n *\n * @emits rawmessage outputs the message as a raw buffer instead of\n * a deserialized message.\n *\n * @emits error emitted when there is an error processing a message.\n * The underlying socket will be closed after this event is emitted.\n *\n * @emits close emitted when the connection to the peer has completedly\n * closed.\n *\n * @emits open emmited when the connection to the peer has been established\n * after the handshake has been performed\n *\n * @emits end emitted when the connection to the peer is ending.\n */\nexport class Peer extends Readable implements IPeer {\n  public static states = PeerState;\n\n  public state: PeerState = PeerState.Disconnected;\n  public socket: NoiseSocket;\n  public messageCounter = 0;\n  public pingPongState: PingPongState;\n  public logger: ILogger;\n  public remoteFeatures: BitField<InitFeatureFlags>;\n  public remoteChains: Buffer[];\n  public isInitiator = false;\n  public reconnectTimeoutMs = 15000;\n\n  private _id: string;\n  private _rpk: Buffer;\n\n  private _host: string;\n  private _port: number;\n\n  private _reconnectHandle: NodeJS.Timeout;\n\n  constructor(\n    readonly ls: Buffer,\n    readonly localFeatures: BitField<InitFeatureFlags>,\n    readonly localChains: Buffer[],\n    logger: ILogger,\n    readonly highWaterMark: number = 2048,\n  ) {\n    super({ objectMode: true, highWaterMark });\n\n    this.pingPongState = new PingPongState(this);\n    this.logger = logger;\n  }\n\n  public get id(): string {\n    return this._id;\n  }\n\n  public get pubkey(): Buffer {\n    return this._rpk;\n  }\n\n  public get pubkeyHex(): string {\n    return this._rpk ? this._rpk.toString('hex') : undefined;\n  }\n\n  /**\n   * Connect to the remote peer and binds socket events into the Peer.\n   */\n  public connect(rpk: Buffer, host: string, port: number) {\n    // construct logger specific to the peer\n    this._rpk = rpk;\n    this._id = this._rpk.slice(0, 8).toString('hex');\n    this.logger = this.logger.sub('peer', this._id);\n\n    this.logger.info('connecting to peer');\n    this.isInitiator = true;\n\n    // store these values if we need to use them for a reconnection event.\n    this._host = host;\n    this._port = port;\n\n    // create the socket and initiate the connection\n    this.socket = noise.connect({\n      ls: this.ls,\n      host: this._host,\n      port: this._port,\n      rpk: this._rpk,\n      logger: this.logger,\n    });\n    this.socket.on('readable', this._onSocketReadable.bind(this));\n    this.socket.on('ready', this._onSocketReady.bind(this));\n    this.socket.on('close', this._onSocketClose.bind(this));\n    this.socket.on('error', this._onSocketError.bind(this));\n  }\n\n  /**\n   *\n   * @param socket\n   */\n  public attach(socket: NoiseSocket) {\n    this.isInitiator = false;\n    this.socket = socket;\n    this.socket.on('readable', this._onSocketReadable.bind(this));\n    this.socket.on('ready', this._onSocketReady.bind(this));\n    this.socket.on('close', this._onSocketClose.bind(this));\n    this.socket.on('error', this._onSocketError.bind(this));\n\n    // Once the socket is ready, we have performed the handshake which allows\n    // us to ascertain the identity of the connecting node. Now that we have\n    // that identity ascertained we can construct the instance specific logger\n    this.socket.once('ready', () => {\n      this._rpk = socket.rpk;\n      this._id = this._rpk.slice(0, 8).toString('hex');\n      this.logger = this.logger.sub('peer', this._id);\n      this.logger.info('peer connected');\n    });\n  }\n\n  /**\n   * Writes data on the NoiseSocket. This method allows custom\n   * serialization of methods. Use `sendMessage` to send a message\n   * using the default message serialization.\n   * @param buf\n   */\n  public send(buf: Buffer): boolean {\n    assert.ok(this.state === PeerState.Ready, new Error('Peer is not ready'));\n    this.emit('sending', buf);\n    return this.socket.write(buf);\n  }\n\n  /**\n   * Writes the message on the NoiseSocket using the default\n   * serialization properties\n   */\n  public sendMessage(m: IWireMessage): boolean {\n    assert.ok(this.state === PeerState.Ready, new Error('Peer is not ready'));\n    const buf = m.serialize() as Buffer;\n    this.emit('sending', buf);\n    return this.socket.write(buf);\n  }\n\n  /**\n   * Closes the socket\n   */\n  public disconnect() {\n    this.logger.info('disconnecting');\n    this.state = PeerState.Disconnecting;\n    this.socket.end();\n  }\n\n  /**\n   * Reconnects the socket\n   */\n  public reconnect() {\n    this.socket.end();\n  }\n\n  /////////////////////////////////////////////////////////\n\n  private _onSocketReady() {\n    // now that we're connected, we need to wait for the remote reply\n    // before any other messages can be receieved or sent\n    this.state = PeerState.AwaitingPeerInit;\n    this.logger.debug('state: awaiting_peer_init');\n\n    // blast off our init message\n    this.emit('open');\n    this._sendInitMessage();\n  }\n\n  private _onSocketClose() {\n    this.logger.debug('socket closed');\n\n    // Clear any existing reconnection handles. We want the logic in\n    // this method, and the current state of the peer to dictate\n    // what should happen.\n    clearTimeout(this._reconnectHandle);\n\n    // Clear the ping/pong status\n    if (this.pingPongState) this.pingPongState.onDisconnecting();\n\n    // If socket closed because there was a request to disconnect\n    // the underlying socket, we will emit a close event and mark\n    // the state as disconnected.\n    if (this.state === PeerState.Disconnecting) {\n      this.emit('close');\n      this.state = PeerState.Disconnected;\n      this.logger.debug('permanently disconnected');\n      return;\n    }\n\n    // Update the state to indicate that the peer is no longer connected.\n    // If we don't do this then upon reconnection the Peer will be in\n    // invalid state and will not send the initialization message.\n    this.state = PeerState.Disconnected;\n    this.logger.debug('state: disconnected');\n\n    // If the disconnection was not intentional, we will initiate\n    // a reconnection event by creating a reconnection handle\n    // and delaying the connection event by the reconnectTimeoutMs\n    // value.\n    // This is likely to originate from two sources:\n    // 1) A reconnection was requeted by the ping/pong manager because\n    //    receipt of a pong message timed out\n    // 2) A network error occurred on a subsequent connection event\n    //    which triggered a socket close event. This can happen if a connection\n    //    is disrupted for a longer period of time. The reconnection logic\n    //    should continue to fire until a connection can be established.\n    if (this.isInitiator) {\n      this.logger.debug(\n        `reconnecting in ${(this.reconnectTimeoutMs / 1000).toFixed(1)}s`,\n      );\n      this._reconnectHandle = setTimeout(() => {\n        this.connect(this._rpk, this._host, this._port);\n      }, this.reconnectTimeoutMs);\n    }\n  }\n\n  private _onSocketError(err) {\n    // emit what error we recieved\n    this.emit('error', err);\n  }\n\n  public _onSocketReadable() {\n    this.logger.trace('socket is readable');\n    try {\n      let cont = true;\n      while (cont) {\n        const raw: Buffer = this.socket.read() as Buffer;\n        if (!raw) return;\n\n        if (this.state === PeerState.AwaitingPeerInit) {\n          this._processPeerInitMessage(raw);\n        } else {\n          const m = this._processMessage(raw);\n          cont = this.push(m);\n        }\n      }\n    } catch (err) {\n      // we have a problem, kill connectinon with the client\n      this.logger.error(err);\n      this.socket.end();\n      this.emit('error', err);\n      return;\n    }\n  }\n\n  public _read() {\n    // Trigger a read but wait until the end of the event loop.\n    // This is necessary when reading in paused mode where\n    // _read was triggered by stream.read() originating inside\n    // a \"readable\" event handler. Attempting to push more data\n    // synchronously will not trigger another \"readable\" event.\n    setImmediate(() => this._onSocketReadable());\n  }\n\n  /**\n   * Sends the initialization message to the peer. This message\n   * does not matter if it is sent before or after the peer sends\n   * there message.\n   */\n  private _sendInitMessage() {\n    // construct the init message\n    const msg = new InitMessage();\n    msg.features = this.localFeatures;\n    msg.chainHashes = this.localChains;\n\n    // fire off the init message to the peer\n    const payload = msg.serialize();\n    this.emit('sending', payload);\n    this.socket.write(payload);\n    this.logger.debug('init message sent');\n  }\n\n  /**\n   * Processes the initialization message sent by the remote peer.\n   * Once this is successfully completed, the state is transitioned\n   * to `active`\n   */\n  private _processPeerInitMessage(raw: Buffer) {\n    // deserialize message\n    const m = MessageFactory.deserialize(raw) as InitMessage;\n    if (this.logger) {\n      const features: InitFeatureFlags[] = m.features.flags();\n      this.logger.info('peer initialized with features', features);\n    }\n\n    // ensure we got an InitMessagee\n    assert.ok(m instanceof InitMessage, new Error('Expecting InitMessage'));\n\n    // store the init messagee in case we need to refer to it\n    this.remoteFeatures = m.features;\n\n    // capture the local chains\n    this.remoteChains = m.chainHashes;\n\n    // validate remote chains and if we are unawares of any. We do this by\n    // first looking to see if there is any match on the chains. If there is\n    // no match and both the remote and our local node declare that we are\n    // monitoring a specific chain then we will abort the connnection\n    let hasChain = false;\n    for (const remoteChain of this.remoteChains) {\n      for (const localChain of this.localChains) {\n        if (remoteChain.equals(localChain)) hasChain = true;\n      }\n    }\n    if (!hasChain && this.remoteChains.length && this.localChains.length) {\n      this.logger.trace('remote chains', ...this.remoteChains);\n      this.logger.trace('local chains', ...this.localChains);\n      this.logger.warn(\n        'remote node does not support any known chains, aborting',\n      );\n      this.disconnect();\n      return;\n    }\n\n    // we need to be sure that the remote node supports required features\n    // that we care about. If the remote node does not support these feature\n    // we will disconnect.\n    for (const feature of this.localFeatures.flags()) {\n      // we can skip odd features since they are optional\n      if (feature % 2 === 1) continue;\n\n      // for even (compulsory) features, we check if the remote node is\n      // signalling either optional or compulsory support. This code\n      // makes the assumption that the even features are always first\n      if (\n        !(\n          this.remoteFeatures.isSet(feature) ||\n          this.remoteFeatures.isSet(feature + 1)\n        )\n      ) {\n        this.disconnect();\n        return;\n      }\n    }\n\n    // start other state now that peer is initialized\n    this.pingPongState.start();\n\n    // transition state to ready\n    this.state = PeerState.Ready;\n\n    // emit ready event\n    this.emit('ready');\n  }\n\n  /**\n   * Process the raw message sent by the peer. These messages are\n   * processed after the initialization message has been received.\n   */\n  private _processMessage(raw: Buffer): IWireMessage {\n    // increment counter first so we know exactly how many messages\n    // have been received by the peer regardless of whether they\n    // could be processed\n    this.messageCounter += 1;\n\n    // emit the rawmessage event first so that if there is a\n    // deserialization problem there is a chance that we were\n    // able to capture the raw message for further testing\n    this.emit('rawmessage', raw);\n\n    // deserialize the message\n    const m = MessageFactory.deserialize(raw);\n\n    // ensure pingpong state is updated\n    if (m) {\n      this.pingPongState.onMessage(m);\n    }\n    return m;\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"88dafbc38b46f9bd26c4afcdf835644e75fa9c69","contentHash":"59239bff0b7c82295b8e80e7f8c8acfb61e22d287baf00a0261303d3e8ccc519"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PingPongState.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PingPongState.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":31}},"2":{"start":{"line":4,"column":22},"end":{"line":4,"column":55}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":55}},"4":{"start":{"line":23,"column":8},"end":{"line":23,"column":38}},"5":{"start":{"line":24,"column":8},"end":{"line":24,"column":37}},"6":{"start":{"line":25,"column":8},"end":{"line":25,"column":39}},"7":{"start":{"line":26,"column":8},"end":{"line":26,"column":45}},"8":{"start":{"line":27,"column":8},"end":{"line":27,"column":33}},"9":{"start":{"line":28,"column":8},"end":{"line":28,"column":38}},"10":{"start":{"line":35,"column":8},"end":{"line":35,"column":111}},"11":{"start":{"line":42,"column":8},"end":{"line":42,"column":47}},"12":{"start":{"line":44,"column":8},"end":{"line":50,"column":9}},"13":{"start":{"line":45,"column":12},"end":{"line":45,"column":38}},"14":{"start":{"line":46,"column":12},"end":{"line":46,"column":38}},"15":{"start":{"line":48,"column":12},"end":{"line":49,"column":34}},"16":{"start":{"line":49,"column":16},"end":{"line":49,"column":34}},"17":{"start":{"line":52,"column":8},"end":{"line":54,"column":9}},"18":{"start":{"line":53,"column":12},"end":{"line":53,"column":34}},"19":{"start":{"line":61,"column":8},"end":{"line":61,"column":46}},"20":{"start":{"line":62,"column":8},"end":{"line":62,"column":52}},"21":{"start":{"line":67,"column":8},"end":{"line":67,"column":46}},"22":{"start":{"line":69,"column":8},"end":{"line":69,"column":98}},"23":{"start":{"line":71,"column":21},"end":{"line":71,"column":52}},"24":{"start":{"line":72,"column":8},"end":{"line":72,"column":43}},"25":{"start":{"line":74,"column":8},"end":{"line":74,"column":30}},"26":{"start":{"line":78,"column":21},"end":{"line":78,"column":69}},"27":{"start":{"line":79,"column":8},"end":{"line":79,"column":43}},"28":{"start":{"line":83,"column":8},"end":{"line":83,"column":33}},"29":{"start":{"line":85,"column":8},"end":{"line":88,"column":9}},"30":{"start":{"line":87,"column":12},"end":{"line":87,"column":29}},"31":{"start":{"line":92,"column":8},"end":{"line":92,"column":46}},"32":{"start":{"line":94,"column":8},"end":{"line":98,"column":9}},"33":{"start":{"line":95,"column":12},"end":{"line":95,"column":66}},"34":{"start":{"line":96,"column":12},"end":{"line":96,"column":42}},"35":{"start":{"line":97,"column":12},"end":{"line":97,"column":19}},"36":{"start":{"line":101,"column":8},"end":{"line":101,"column":68}},"37":{"start":{"line":102,"column":8},"end":{"line":102,"column":37}},"38":{"start":{"line":105,"column":8},"end":{"line":108,"column":9}},"39":{"start":{"line":106,"column":12},"end":{"line":106,"column":68}},"40":{"start":{"line":107,"column":12},"end":{"line":107,"column":42}},"41":{"start":{"line":111,"column":0},"end":{"line":111,"column":38}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":22,"column":4},"end":{"line":22,"column":5}},"loc":{"start":{"line":22,"column":28},"end":{"line":29,"column":5}},"line":22},"1":{"name":"(anonymous_1)","decl":{"start":{"line":34,"column":4},"end":{"line":34,"column":5}},"loc":{"start":{"line":34,"column":12},"end":{"line":36,"column":5}},"line":34},"2":{"name":"(anonymous_2)","decl":{"start":{"line":40,"column":4},"end":{"line":40,"column":5}},"loc":{"start":{"line":40,"column":17},"end":{"line":55,"column":5}},"line":40},"3":{"name":"(anonymous_3)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":5}},"loc":{"start":{"line":60,"column":22},"end":{"line":63,"column":5}},"line":60},"4":{"name":"(anonymous_4)","decl":{"start":{"line":65,"column":4},"end":{"line":65,"column":5}},"loc":{"start":{"line":65,"column":16},"end":{"line":75,"column":5}},"line":65},"5":{"name":"(anonymous_5)","decl":{"start":{"line":76,"column":4},"end":{"line":76,"column":5}},"loc":{"start":{"line":76,"column":20},"end":{"line":80,"column":5}},"line":76},"6":{"name":"(anonymous_6)","decl":{"start":{"line":81,"column":4},"end":{"line":81,"column":5}},"loc":{"start":{"line":81,"column":26},"end":{"line":89,"column":5}},"line":81},"7":{"name":"(anonymous_7)","decl":{"start":{"line":90,"column":4},"end":{"line":90,"column":5}},"loc":{"start":{"line":90,"column":24},"end":{"line":99,"column":5}},"line":90},"8":{"name":"(anonymous_8)","decl":{"start":{"line":100,"column":4},"end":{"line":100,"column":5}},"loc":{"start":{"line":100,"column":20},"end":{"line":103,"column":5}},"line":100},"9":{"name":"(anonymous_9)","decl":{"start":{"line":104,"column":4},"end":{"line":104,"column":5}},"loc":{"start":{"line":104,"column":25},"end":{"line":109,"column":5}},"line":104}},"branchMap":{"0":{"loc":{"start":{"line":44,"column":8},"end":{"line":50,"column":9}},"type":"if","locations":[{"start":{"line":44,"column":8},"end":{"line":50,"column":9}},{"start":{},"end":{}}],"line":44},"1":{"loc":{"start":{"line":48,"column":12},"end":{"line":49,"column":34}},"type":"if","locations":[{"start":{"line":48,"column":12},"end":{"line":49,"column":34}},{"start":{},"end":{}}],"line":48},"2":{"loc":{"start":{"line":52,"column":8},"end":{"line":54,"column":9}},"type":"if","locations":[{"start":{"line":52,"column":8},"end":{"line":54,"column":9}},{"start":{},"end":{}}],"line":52},"3":{"loc":{"start":{"line":85,"column":8},"end":{"line":88,"column":9}},"type":"if","locations":[{"start":{"line":85,"column":8},"end":{"line":88,"column":9}},{"start":{},"end":{}}],"line":85},"4":{"loc":{"start":{"line":85,"column":12},"end":{"line":86,"column":74}},"type":"binary-expr","locations":[{"start":{"line":85,"column":12},"end":{"line":85,"column":38}},{"start":{"line":86,"column":12},"end":{"line":86,"column":74}}],"line":85},"5":{"loc":{"start":{"line":94,"column":8},"end":{"line":98,"column":9}},"type":"if","locations":[{"start":{"line":94,"column":8},"end":{"line":98,"column":9}},{"start":{},"end":{}}],"line":94},"6":{"loc":{"start":{"line":94,"column":12},"end":{"line":94,"column":81}},"type":"binary-expr","locations":[{"start":{"line":94,"column":12},"end":{"line":94,"column":26}},{"start":{"line":94,"column":30},"end":{"line":94,"column":81}}],"line":94},"7":{"loc":{"start":{"line":105,"column":8},"end":{"line":108,"column":9}},"type":"if","locations":[{"start":{"line":105,"column":8},"end":{"line":108,"column":9}},{"start":{},"end":{}}],"line":105}},"s":{"0":1,"1":1,"2":1,"3":1,"4":59,"5":59,"6":59,"7":59,"8":59,"9":59,"10":11,"11":14,"12":14,"13":9,"14":9,"15":9,"16":8,"17":14,"18":3,"19":13,"20":13,"21":11,"22":11,"23":11,"24":11,"25":11,"26":8,"27":8,"28":15,"29":15,"30":11,"31":3,"32":3,"33":1,"34":1,"35":1,"36":2,"37":2,"38":9,"39":1,"40":1,"41":1},"f":{"0":59,"1":11,"2":14,"3":13,"4":11,"5":8,"6":15,"7":3,"8":2,"9":9},"b":{"0":[9,5],"1":[8,1],"2":[3,11],"3":[11,4],"4":[15,7],"5":[1,2],"6":[3,3],"7":[1,8]},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PingPongState.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PingPongState.ts"],"names":[],"mappings":"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","sourcesContent":["import { PingMessage } from './messages/PingMessage';\nimport { PongMessage } from './messages/PongMessage';\nimport { Peer } from './Peer';\n\nexport class PingPongState {\n  public PING_INTERVAL_MS = 60000;\n  public PONG_TIMEOUT_MS = 15000;\n  public PING_FLOOD_THRESHOLD = 10;\n  public PONG_REQUIRED_THRESHOLD = 65532;\n\n  private _peerClient: Peer;\n  private _pingsReceieved = 0;\n  private _lastMessageReceived: any;\n  private _sendPingIntervalHandle: NodeJS.Timeout;\n  private _pongTimeoutHandle: NodeJS.Timeout;\n  private _sentPing: PingMessage;\n\n  /**\n   * Maintains ping/pong state for a client where by it will perform several functions. Refer to\n   * Bolt01 for all nuances of implementation.\n   *\n   * 0. Upon receipt of a message from the remote server, we reset the ping timeout as\n   *   we are aware that the server is still live.\n   *\n   * 1. When there are no messages from a client for a period of time, it will emit a ping\n   *   and wait for the pong.  If not pong is received, or the pong is invalid, then the\n   *   connection is terminated.\n   *\n   * 2. When a ping is received an appropriate pong message will be sent. If pong messages\n   *   are received more frequently than 30 second, then they are ignored. If more than\n   *   5 pings are receiced in a 30 second period, then we will close the connection.\n   */\n  constructor(peerClient: Peer) {\n    this._peerClient = peerClient;\n  }\n\n  /**\n   * Starts the PingPongState manager by starting a ping interval that will\n   * consider sending a ping every 60s\n   */\n  public start() {\n    this._sendPingIntervalHandle = setInterval(\n      this._onSendPingInterval.bind(this),\n      this.PING_INTERVAL_MS,\n    );\n  }\n\n  /**\n   * Handles incoming messages\n   */\n  public onMessage(m: any) {\n    // update the time of the last received message\n    this._lastMessageReceived = Date.now();\n\n    // received ping\n    if (m.type === 18) {\n      this._pingsReceieved += 1;\n      this._checkForPingFlood();\n\n      // only send pong when num_pong_bytes as per spec\n      if (m.numPongBytes < this.PONG_REQUIRED_THRESHOLD) this._sendPong(m);\n    }\n\n    // recieved pong\n    if (m.type === 19) {\n      this._validatePong(m);\n    }\n  }\n\n  /**\n   * Fires prior to the peer being disconnected\n   * and will clean up resources\n   */\n  public onDisconnecting() {\n    clearTimeout(this._pongTimeoutHandle);\n    clearInterval(this._sendPingIntervalHandle);\n  }\n\n  ///////////\n\n  private _sendPing() {\n    // clear existing pong timeout handle in case we have yet to receive a pong\n    clearTimeout(this._pongTimeoutHandle);\n\n    // create the timeout we will wait for the pong\n    this._pongTimeoutHandle = setTimeout(\n      this._pongTimedOut.bind(this),\n      this.PONG_TIMEOUT_MS,\n    );\n\n    // create and send the ping\n    const ping = new PingMessage();\n    this._peerClient.sendMessage(ping);\n\n    // capture this so we can validate it\n    this._sentPing = ping;\n  }\n\n  private _sendPong(ping) {\n    // construct and send a message\n    const pong = new PongMessage(ping.numPongBytes);\n    this._peerClient.sendMessage(pong);\n  }\n\n  private _onSendPingInterval() {\n    // reset the number of pings received\n    this._pingsReceieved = 0;\n\n    // if message has been received within a minute, then do not send a ping\n    if (\n      !this._lastMessageReceived ||\n      Date.now() - this._lastMessageReceived > this.PING_INTERVAL_MS\n    ) {\n      this._sendPing();\n    }\n  }\n\n  private _validatePong(pong) {\n    // clear the pong timeout\n    clearTimeout(this._pongTimeoutHandle);\n\n    // check that pong is a valid one and if not, we disconnect\n    if (this._sentPing && this._sentPing.numPongBytes !== pong.ignored.length) {\n      this._peerClient.logger.debug('invalid pong message');\n      this._peerClient.disconnect();\n      return;\n    }\n  }\n\n  private _pongTimedOut() {\n    this._peerClient.logger.debug('timed out waiting for pong');\n    this._peerClient.reconnect();\n  }\n\n  private _checkForPingFlood() {\n    if (this._pingsReceieved > this.PING_FLOOD_THRESHOLD) {\n      this._peerClient.logger.debug('ping flooding detected');\n      this._peerClient.disconnect();\n    }\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"6ce89901c77c0b1ead0560a8ccf4e78f02a81d1c","contentHash":"4605ffa12aa01570ac7edaf1da926a21d27da7a9930b445f5f0eaeba0dc3c16a"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PeerServer.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PeerServer.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":28}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":34}},"4":{"start":{"line":6,"column":15},"end":{"line":6,"column":32}},"5":{"start":{"line":9,"column":8},"end":{"line":9,"column":16}},"6":{"start":{"line":10,"column":8},"end":{"line":10,"column":25}},"7":{"start":{"line":11,"column":8},"end":{"line":11,"column":25}},"8":{"start":{"line":12,"column":8},"end":{"line":12,"column":39}},"9":{"start":{"line":13,"column":8},"end":{"line":13,"column":43}},"10":{"start":{"line":14,"column":8},"end":{"line":14,"column":39}},"11":{"start":{"line":15,"column":8},"end":{"line":15,"column":29}},"12":{"start":{"line":16,"column":8},"end":{"line":16,"column":95}},"13":{"start":{"line":17,"column":8},"end":{"line":17,"column":67}},"14":{"start":{"line":17,"column":43},"end":{"line":17,"column":65}},"15":{"start":{"line":25,"column":8},"end":{"line":25,"column":66}},"16":{"start":{"line":31,"column":8},"end":{"line":31,"column":29}},"17":{"start":{"line":38,"column":8},"end":{"line":38,"column":43}},"18":{"start":{"line":39,"column":21},"end":{"line":39,"column":105}},"19":{"start":{"line":40,"column":8},"end":{"line":40,"column":28}},"20":{"start":{"line":41,"column":8},"end":{"line":41,"column":32}},"21":{"start":{"line":44,"column":0},"end":{"line":44,"column":32}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":8,"column":4},"end":{"line":8,"column":5}},"loc":{"start":{"line":8,"column":77},"end":{"line":18,"column":5}},"line":8},"1":{"name":"(anonymous_1)","decl":{"start":{"line":17,"column":37},"end":{"line":17,"column":38}},"loc":{"start":{"line":17,"column":43},"end":{"line":17,"column":65}},"line":17},"2":{"name":"(anonymous_2)","decl":{"start":{"line":24,"column":4},"end":{"line":24,"column":5}},"loc":{"start":{"line":24,"column":13},"end":{"line":26,"column":5}},"line":24},"3":{"name":"(anonymous_3)","decl":{"start":{"line":30,"column":4},"end":{"line":30,"column":5}},"loc":{"start":{"line":30,"column":15},"end":{"line":32,"column":5}},"line":30},"4":{"name":"(anonymous_4)","decl":{"start":{"line":37,"column":4},"end":{"line":37,"column":5}},"loc":{"start":{"line":37,"column":22},"end":{"line":42,"column":5}},"line":37}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1},"f":{"0":1,"1":1,"2":1,"3":1,"4":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PeerServer.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/PeerServer.ts"],"names":[],"mappings":";;;AAGA,2CAA8C;AAC9C,mCAAsC;AAGtC,iCAA8B;AAE9B,MAAa,UAAW,SAAQ,qBAAY;IAG1C,YACW,IAAY,EACZ,IAAY,EACZ,WAAmB,EACnB,aAAyC,EACzC,WAAqB,EACrB,MAAe;QAExB,KAAK,EAAE,CAAC;QAPC,SAAI,GAAJ,IAAI,CAAQ;QACZ,SAAI,GAAJ,IAAI,CAAQ;QACZ,gBAAW,GAAX,WAAW,CAAQ;QACnB,kBAAa,GAAb,aAAa,CAA4B;QACzC,gBAAW,GAAX,WAAW,CAAU;QACrB,WAAM,GAAN,MAAM,CAAS;QAGxB,IAAI,CAAC,OAAO,GAAG,IAAI,mBAAW,CAC5B,EAAE,EAAE,EAAE,WAAW,EAAE,EACnB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAC1B,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;;;OAIG;IACI,MAAM;QACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACI,QAAQ;QACb,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED;;;OAGG;IACO,SAAS,CAAC,MAAmB;QACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,WAAI,CACnB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,aAAa,EAClB,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,MAAM,CACZ,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;CACF;AAlDD,gCAkDC","sourcesContent":["import { BitField } from '@node-dlc/common';\nimport { ILogger } from '@node-dlc/logger';\nimport { NoiseSocket } from '@node-dlc/noise';\nimport { NoiseServer } from '@node-dlc/noise';\nimport { EventEmitter } from 'events';\n\nimport { InitFeatureFlags } from './flags/InitFeatureFlags';\nimport { Peer } from './Peer';\n\nexport class PeerServer extends EventEmitter {\n  protected _server: NoiseServer;\n\n  constructor(\n    readonly host: string,\n    readonly port: number,\n    readonly localSecret: Buffer,\n    readonly localFeatures: BitField<InitFeatureFlags>,\n    readonly localChains: Buffer[],\n    readonly logger: ILogger,\n  ) {\n    super();\n    this._server = new NoiseServer(\n      { ls: localSecret },\n      this._onSocket.bind(this),\n    );\n    this._server.on('listening', () => this.emit('listening'));\n  }\n\n  /**\n   * Starts the peer manager listening\n   * @param host\n   * @param port\n   */\n  public listen() {\n    this._server.listen({ host: this.host, port: this.port });\n  }\n\n  /**\n   * Shuts down the server\n   */\n  public shutdown() {\n    this._server.close();\n  }\n\n  /**\n   * Handles when a socket connects to us\n   * @param socket\n   */\n  protected _onSocket(socket: NoiseSocket) {\n    this.logger.info('peer connected');\n    const peer = new Peer(\n      this.localSecret,\n      this.localFeatures,\n      this.localChains,\n      this.logger,\n    );\n    peer.attach(socket);\n    this.emit('peer', peer);\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"d2817ebaaa171f150be9a6139433c4d3c62fdf52","contentHash":"06e2c848d635182697dd4dc1404f6159593a222f4bf06d2561f1be65f8a1b29a"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ClosingSignedMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ClosingSignedMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":38}},"2":{"start":{"line":4,"column":18},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":16},"end":{"line":5,"column":42}},"4":{"start":{"line":6,"column":17},"end":{"line":6,"column":44}},"5":{"start":{"line":7,"column":22},"end":{"line":7,"column":47}},"6":{"start":{"line":25,"column":8},"end":{"line":25,"column":46}},"7":{"start":{"line":33,"column":25},"end":{"line":33,"column":51}},"8":{"start":{"line":34,"column":23},"end":{"line":34,"column":52}},"9":{"start":{"line":35,"column":8},"end":{"line":35,"column":30}},"10":{"start":{"line":36,"column":8},"end":{"line":36,"column":74}},"11":{"start":{"line":37,"column":8},"end":{"line":37,"column":79}},"12":{"start":{"line":38,"column":8},"end":{"line":38,"column":50}},"13":{"start":{"line":39,"column":8},"end":{"line":39,"column":24}},"14":{"start":{"line":45,"column":23},"end":{"line":45,"column":49}},"15":{"start":{"line":46,"column":8},"end":{"line":46,"column":40}},"16":{"start":{"line":47,"column":8},"end":{"line":47,"column":53}},"17":{"start":{"line":48,"column":8},"end":{"line":48,"column":52}},"18":{"start":{"line":49,"column":8},"end":{"line":49,"column":42}},"19":{"start":{"line":50,"column":8},"end":{"line":50,"column":33}},"20":{"start":{"line":53,"column":0},"end":{"line":53,"column":52}},"21":{"start":{"line":54,"column":0},"end":{"line":54,"column":68}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":21,"column":4},"end":{"line":21,"column":5}},"loc":{"start":{"line":21,"column":18},"end":{"line":26,"column":5}},"line":21},"1":{"name":"(anonymous_1)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":5}},"loc":{"start":{"line":32,"column":28},"end":{"line":40,"column":5}},"line":32},"2":{"name":"(anonymous_2)","decl":{"start":{"line":44,"column":4},"end":{"line":44,"column":5}},"loc":{"start":{"line":44,"column":16},"end":{"line":51,"column":5}},"line":44}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":2,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1},"f":{"0":2,"1":1,"2":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ClosingSignedMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/ClosingSignedMessage.ts"],"names":[],"mappings":";;;AAAA,+CAA0C;AAC1C,2CAA6D;AAC7D,6CAA6C;AAE7C,gDAA6C;AAG7C;;;;;;;;;;;GAWG;AACH,MAAa,oBAAoB;IAAjC;QAoBE;;WAEG;QACa,SAAI,GAAgB,oBAAoB,CAAC,IAAI,CAAC;IAkChE,CAAC;IAtDC;;;;OAIG;IACI,MAAM,CAAC,WAAW,CAAC,GAAW;QACnC,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,GAAG,CAAC,CAAC;QAErC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY;QACnC,QAAQ,CAAC,SAAS,GAAG,IAAI,kBAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,QAAQ,CAAC,WAAW,GAAG,eAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;QAC7D,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IA4BD;;OAEG;IACI,SAAS;QACd,MAAM,MAAM,GAAG,IAAI,oBAAY,EAAE,CAAC;QAClC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;AAxDH,oDAyDC;AAxDe,yBAAI,GAAgB,yBAAW,CAAC,aAAa,CAAC","sourcesContent":["import { Value } from '@node-dlc/bitcoin';\nimport { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { ChannelId } from '@node-dlc/common';\n\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * The `closing_signed` message is sent by the channel funder after\n * the `shutdown_message`. The funder chooses a fee it thinks\n * is fair, and signs the closing transaction with the scriptpubkey fields from\n * the shutdown messages (along with its chosen fee) and sends the signature.\n * The other node then replies similarly, using a fee it thinks is fair.\n * One of the benefits of mutual close is that the fee rate can be negotiated\n * down from the existing fee rate(which is generally expensive) to a more reasonable one.\n * In order for fee rate to converge, it has to be strictly between the last proposed\n * and the counterparty's last proposed value. This exchange continues using the\n * channelID until both agree on the same fee or when one side fails the channel.\n */\nexport class ClosingSignedMessage implements IWireMessage {\n  public static type: MessageType = MessageType.ClosingSigned;\n\n  /**\n   * Deserializes the closing_signed message\n   * @param buf\n   * @returns\n   */\n  public static deserialize(buf: Buffer): ClosingSignedMessage {\n    const instance = new ClosingSignedMessage();\n    const reader = new BufferReader(buf);\n\n    reader.readUInt16BE(); // read type\n    instance.channelId = new ChannelId(reader.readBytes(32));\n    instance.feeSatoshis = Value.fromSats(reader.readUInt64BE());\n    instance.signature = reader.readBytes(64);\n\n    return instance;\n  }\n\n  /**\n   * The type for message. Closing_Signed = 39\n   */\n  public readonly type: MessageType = ClosingSignedMessage.type;\n\n  /**\n   * ChannelId generated from the funding transactions outpoint.\n   */\n  public channelId: ChannelId;\n\n  /**\n   * Expected value for fee_satoshis could vary how fee rate negotiations happens between the\n   * two nodes.Assuming initially both nodes have different fee estimates, in every iteration\n   * they should ensure fee rate is strictly between their last proposed and the counterparty's\n   * last proposed value. Hence changes are made accordingly on both ends and communicated\n   * between the channel until both of them comes to an agreement or when one side fails the\n   * channel.\n   */\n  public feeSatoshis: Value;\n\n  /**\n   * Sender signs the closing transaction with the scriptpubkey fields from the\n   * shutdown messages (along with its chosen fee) and sends the signature;\n   */\n  public signature: Buffer;\n\n  /**\n   * Serializes the message into a Buffer\n   */\n  public serialize(): Buffer {\n    const writer = new BufferWriter();\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.channelId.toBuffer());\n    writer.writeUInt64BE(this.feeSatoshis.sats);\n    writer.writeBytes(this.signature);\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"a84ade1182c2938c0f1a9f80bb9cedac6734b828","contentHash":"0b9cb0f8cdf2576cc2b0b43c601a14363ed5122c396c9ea5de129082383c4699"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingCreatedMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingCreatedMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":39}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":22},"end":{"line":5,"column":47}},"4":{"start":{"line":20,"column":8},"end":{"line":20,"column":47}},"5":{"start":{"line":27,"column":25},"end":{"line":27,"column":52}},"6":{"start":{"line":28,"column":23},"end":{"line":28,"column":52}},"7":{"start":{"line":29,"column":8},"end":{"line":29,"column":30}},"8":{"start":{"line":30,"column":8},"end":{"line":30,"column":59}},"9":{"start":{"line":31,"column":8},"end":{"line":31,"column":52}},"10":{"start":{"line":32,"column":8},"end":{"line":32,"column":60}},"11":{"start":{"line":33,"column":8},"end":{"line":33,"column":50}},"12":{"start":{"line":34,"column":8},"end":{"line":34,"column":24}},"13":{"start":{"line":40,"column":23},"end":{"line":40,"column":49}},"14":{"start":{"line":41,"column":8},"end":{"line":41,"column":40}},"15":{"start":{"line":42,"column":8},"end":{"line":42,"column":51}},"16":{"start":{"line":43,"column":8},"end":{"line":43,"column":44}},"17":{"start":{"line":44,"column":8},"end":{"line":44,"column":54}},"18":{"start":{"line":45,"column":8},"end":{"line":45,"column":42}},"19":{"start":{"line":46,"column":8},"end":{"line":46,"column":33}},"20":{"start":{"line":49,"column":0},"end":{"line":49,"column":54}},"21":{"start":{"line":50,"column":0},"end":{"line":50,"column":70}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":16,"column":4},"end":{"line":16,"column":5}},"loc":{"start":{"line":16,"column":18},"end":{"line":21,"column":5}},"line":16},"1":{"name":"(anonymous_1)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":28},"end":{"line":35,"column":5}},"line":26},"2":{"name":"(anonymous_2)","decl":{"start":{"line":39,"column":4},"end":{"line":39,"column":5}},"loc":{"start":{"line":39,"column":16},"end":{"line":47,"column":5}},"line":39}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":2,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1},"f":{"0":2,"1":1,"2":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingCreatedMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingCreatedMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAE7D,gDAA6C;AAG7C;;;;;;;;GAQG;AACH,MAAa,qBAAqB;IAAlC;QAoBE;;WAEG;QACI,SAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC;IA6C3C,CAAC;IAjEC;;;OAGG;IACI,MAAM,CAAC,WAAW,CAAC,GAAW;QACnC,MAAM,QAAQ,GAAG,IAAI,qBAAqB,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,GAAG,CAAC,CAAC;QAErC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY;QACnC,QAAQ,CAAC,kBAAkB,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACnD,QAAQ,CAAC,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC5C,QAAQ,CAAC,kBAAkB,GAAG,MAAM,CAAC,YAAY,EAAE,CAAC;QACpD,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAsCD;;OAEG;IACI,SAAS;QACd,MAAM,MAAM,GAAG,IAAI,oBAAY,EAAE,CAAC;QAClC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC3C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;AAnEH,sDAoEC;AAnEe,0BAAI,GAAG,yBAAW,CAAC,cAAc,CAAC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\n\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * The `funding_created` message is sent by the channel initiator after\n * the channel has been accepted with `accept_channel`. The channel\n * initiator includes the outpoint for the funding transaction as well\n * as their signature for the counter-parties first commitment\n * transaction. This message provides the channel acceptor the\n * information they need to sign the initiator's first commitment\n * transaction in the next message: `funding_signed`.\n */\nexport class FundingCreatedMessage implements IWireMessage {\n  public static type = MessageType.FundingCreated;\n\n  /**\n   * Deserializes an funding_created message\n   * @param buf\n   */\n  public static deserialize(buf: Buffer): FundingCreatedMessage {\n    const instance = new FundingCreatedMessage();\n    const reader = new BufferReader(buf);\n\n    reader.readUInt16BE(); // read type\n    instance.temporaryChannelId = reader.readBytes(32);\n    instance.fundingTxId = reader.readBytes(32);\n    instance.fundingOutputIndex = reader.readUInt16BE();\n    instance.signature = reader.readBytes(64);\n\n    return instance;\n  }\n\n  /**\n   * The type for message. funding_created = 34\n   */\n  public type = FundingCreatedMessage.type;\n\n  /**\n   * A unique and temporary identifier used during the channel creation\n   * process. This value is a placeholder for the channel_id that is\n   * created from the funding transaction that can be used after the\n   * funding_created message creates this transaction and the\n   * counterparty uses the channel_id in the funding_signed message.\n   */\n  public temporaryChannelId: Buffer;\n\n  /**\n   * Transaction identifier for the funding transaction as represented\n   * as a sha256 hash of the serialized funding transaction. This\n   * value uses internal or natural byte order. Transaction identifiers\n   * often are in RPC or reversed byte order.\n   */\n  public fundingTxId: Buffer;\n\n  /**\n   * Output index for the transaction which should be between 0 and\n   * 65535 u16 value.\n   */\n  public fundingOutputIndex: number;\n\n  /**\n   * Signature for the counterpary's first commitment transaction.\n   * This signature allows the counterparty to spend the commitment\n   * using their own signature. The signature must be 64-bytes\n   * representing the 32-byte (r,s) values for an ECDSA signature.\n   */\n  public signature: Buffer;\n\n  /**\n   * Serializes the message into a Buffer\n   */\n  public serialize(): Buffer {\n    const writer = new BufferWriter();\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.temporaryChannelId);\n    writer.writeBytes(this.fundingTxId);\n    writer.writeUInt16BE(this.fundingOutputIndex);\n    writer.writeBytes(this.signature);\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"bec7a31b87afe015d659be54db091b438b6acead","contentHash":"9d5e1a18b0de6c10e089574b3eee8f810605e95db7897133934e4301cfeb3855"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingLockedMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingLockedMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":38}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":22},"end":{"line":6,"column":47}},"5":{"start":{"line":21,"column":8},"end":{"line":21,"column":46}},"6":{"start":{"line":27,"column":25},"end":{"line":27,"column":51}},"7":{"start":{"line":28,"column":23},"end":{"line":28,"column":52}},"8":{"start":{"line":29,"column":8},"end":{"line":29,"column":30}},"9":{"start":{"line":30,"column":8},"end":{"line":30,"column":74}},"10":{"start":{"line":31,"column":8},"end":{"line":31,"column":63}},"11":{"start":{"line":32,"column":8},"end":{"line":32,"column":24}},"12":{"start":{"line":39,"column":23},"end":{"line":39,"column":49}},"13":{"start":{"line":40,"column":8},"end":{"line":40,"column":40}},"14":{"start":{"line":41,"column":8},"end":{"line":41,"column":53}},"15":{"start":{"line":42,"column":8},"end":{"line":42,"column":55}},"16":{"start":{"line":43,"column":8},"end":{"line":43,"column":33}},"17":{"start":{"line":46,"column":0},"end":{"line":46,"column":52}},"18":{"start":{"line":47,"column":0},"end":{"line":47,"column":68}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":5}},"loc":{"start":{"line":17,"column":18},"end":{"line":22,"column":5}},"line":17},"1":{"name":"(anonymous_1)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":28},"end":{"line":33,"column":5}},"line":26},"2":{"name":"(anonymous_2)","decl":{"start":{"line":38,"column":4},"end":{"line":38,"column":5}},"loc":{"start":{"line":38,"column":16},"end":{"line":44,"column":5}},"line":38}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":2,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"f":{"0":2,"1":1,"2":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingLockedMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingLockedMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAC7D,6CAA6C;AAE7C,gDAA6C;AAG7C;;;;;;;;GAQG;AACH,MAAa,oBAAoB;IAAjC;QAiBE;;WAEG;QACa,SAAI,GAAgB,oBAAoB,CAAC,IAAI,CAAC;IA0BhE,CAAC;IA3CC;;OAEG;IACI,MAAM,CAAC,WAAW,CAAC,GAAW;QACnC,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,GAAG,CAAC,CAAC;QAErC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY;QACnC,QAAQ,CAAC,SAAS,GAAG,IAAI,kBAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,QAAQ,CAAC,sBAAsB,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEvD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAoBD;;;OAGG;IACI,SAAS;QACd,MAAM,MAAM,GAAG,IAAI,oBAAY,EAAE,CAAC;QAClC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;AA7CH,oDA8CC;AA7Ce,yBAAI,GAAgB,yBAAW,CAAC,aAAa,CAAC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { ChannelId } from '@node-dlc/common';\n\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * This message is sent by both participants in the channel after\n * the funding transaction has reached a sufficient depth (as specified\n * in `accept_channel` via the `minimum_depth` property). This message\n * enables normal operation for the channel by providing the\n * next `per_commitment_point` needed to generate a new commitment\n * transaction signature. This message may get resent upon reconnections\n * if no additional updates have occurred for the channel.\n */\nexport class FundingLockedMessage implements IWireMessage {\n  public static type: MessageType = MessageType.FundingLocked;\n\n  /**\n   * Deserializes the `funding_signed` message per BOLT2\n   */\n  public static deserialize(buf: Buffer): FundingLockedMessage {\n    const instance = new FundingLockedMessage();\n    const reader = new BufferReader(buf);\n\n    reader.readUInt16BE(); // read type\n    instance.channelId = new ChannelId(reader.readBytes(32));\n    instance.nextPerCommitmentPoint = reader.readBytes(33);\n\n    return instance;\n  }\n\n  /**\n   * The type for message. funding_signed = 35\n   */\n  public readonly type: MessageType = FundingLockedMessage.type;\n\n  /**\n   * Unique channel identifier for the channel based on the funding\n   * transactions UTXO.\n   */\n  public channelId: ChannelId;\n\n  /**\n   * Provides the next_per_commitment_point that the peer should use\n   * for the next commitment transaction. For this message, this is\n   * the commitment transaction in the first update.\n   */\n  public nextPerCommitmentPoint: Buffer;\n\n  /**\n   * Serializes the `funding_locked` message per BOLT2\n   * @returns\n   */\n  public serialize(): Buffer {\n    const writer = new BufferWriter();\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.channelId.toBuffer());\n    writer.writeBytes(this.nextPerCommitmentPoint);\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"0e38b4374f0ead2d40d70feaf2ef45b12d43c52a","contentHash":"394cfede3652bda8e24d866a87e57ccf7f9ba7daf3d045e3d4c8b42968eb7dd1"},"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingSignedMessage.ts":{"path":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingSignedMessage.ts","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":2,"column":62}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":38}},"2":{"start":{"line":4,"column":16},"end":{"line":4,"column":42}},"3":{"start":{"line":5,"column":17},"end":{"line":5,"column":44}},"4":{"start":{"line":6,"column":22},"end":{"line":6,"column":47}},"5":{"start":{"line":23,"column":8},"end":{"line":23,"column":46}},"6":{"start":{"line":31,"column":25},"end":{"line":31,"column":51}},"7":{"start":{"line":32,"column":23},"end":{"line":32,"column":52}},"8":{"start":{"line":33,"column":8},"end":{"line":33,"column":30}},"9":{"start":{"line":34,"column":8},"end":{"line":34,"column":74}},"10":{"start":{"line":35,"column":8},"end":{"line":35,"column":50}},"11":{"start":{"line":36,"column":8},"end":{"line":36,"column":24}},"12":{"start":{"line":42,"column":23},"end":{"line":42,"column":49}},"13":{"start":{"line":43,"column":8},"end":{"line":43,"column":40}},"14":{"start":{"line":44,"column":8},"end":{"line":44,"column":53}},"15":{"start":{"line":45,"column":8},"end":{"line":45,"column":42}},"16":{"start":{"line":46,"column":8},"end":{"line":46,"column":33}},"17":{"start":{"line":49,"column":0},"end":{"line":49,"column":52}},"18":{"start":{"line":50,"column":0},"end":{"line":50,"column":68}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":19,"column":18},"end":{"line":24,"column":5}},"line":19},"1":{"name":"(anonymous_1)","decl":{"start":{"line":30,"column":4},"end":{"line":30,"column":5}},"loc":{"start":{"line":30,"column":28},"end":{"line":37,"column":5}},"line":30},"2":{"name":"(anonymous_2)","decl":{"start":{"line":41,"column":4},"end":{"line":41,"column":5}},"loc":{"start":{"line":41,"column":16},"end":{"line":47,"column":5}},"line":41}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":2,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"f":{"0":2,"1":1,"2":1},"b":{},"inputSourceMap":{"version":3,"file":"/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingSignedMessage.ts","sources":["/Users/matthewblack/code/github.com/AtomicFinance/node-dlc/packages/wire/lib/messages/FundingSignedMessage.ts"],"names":[],"mappings":";;;AAAA,2CAA6D;AAC7D,6CAA6C;AAE7C,gDAA6C;AAG7C;;;;;;;;;;GAUG;AACH,MAAa,oBAAoB;IAAjC;QAmBE;;WAEG;QACa,SAAI,GAAgB,oBAAoB,CAAC,IAAI,CAAC;IAyBhE,CAAC;IA5CC;;;;OAIG;IACI,MAAM,CAAC,WAAW,CAAC,GAAW;QACnC,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,oBAAY,CAAC,GAAG,CAAC,CAAC;QAErC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,YAAY;QACnC,QAAQ,CAAC,SAAS,GAAG,IAAI,kBAAS,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,QAAQ,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAoBD;;OAEG;IACI,SAAS;QACd,MAAM,MAAM,GAAG,IAAI,oBAAY,EAAE,CAAC;QAClC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7C,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;;AA9CH,oDA+CC;AA9Ce,yBAAI,GAAgB,yBAAW,CAAC,aAAa,CAAC","sourcesContent":["import { BufferReader, BufferWriter } from '@node-dlc/bufio';\nimport { ChannelId } from '@node-dlc/common';\n\nimport { MessageType } from '../MessageType';\nimport { IWireMessage } from './IWireMessage';\n\n/**\n * The `funding_signed` message is sent by the channel acceptor after\n * they have recieved a `funding_created` message from the initiator.\n * This message includes the signature for the initiator's first\n * commitment transaction. After the initiator receives this message\n * the channel can be broadcast to the Bitcoin network as both\n * participants can spend the outputs of the funding transaction. This\n * message also is the first instance of the `channel_id` and both sides\n * can transition from using the `temporary_channel_id` to the actual\n * `channel_id`.\n */\nexport class FundingSignedMessage implements IWireMessage {\n  public static type: MessageType = MessageType.FundingSigned;\n\n  /**\n   * Deserializes the funding_signed message\n   * @param buf\n   * @returns\n   */\n  public static deserialize(buf: Buffer): FundingSignedMessage {\n    const instance = new FundingSignedMessage();\n    const reader = new BufferReader(buf);\n\n    reader.readUInt16BE(); // read type\n    instance.channelId = new ChannelId(reader.readBytes(32));\n    instance.signature = reader.readBytes(64);\n\n    return instance;\n  }\n\n  /**\n   * The type for message. funding_signed = 35\n   */\n  public readonly type: MessageType = FundingSignedMessage.type;\n\n  /**\n   * ChannelId generated from the funding transactions outpoint.\n   */\n  public channelId: ChannelId;\n\n  /**\n   * Signature for the counterpary's first commitment transaction.\n   * This signature allows the counterparty to spend the commitment\n   * using their own signature. The signature must be 64-bytes\n   * representing the 32-byte (r,s) values for an ECDSA signature.\n   */\n  public signature: Buffer;\n\n  /**\n   * Serializes the message into a Buffer\n   */\n  public serialize(): Buffer {\n    const writer = new BufferWriter();\n    writer.writeUInt16BE(this.type);\n    writer.writeBytes(this.channelId.toBuffer());\n    writer.writeBytes(this.signature);\n    return writer.toBuffer();\n  }\n}\n"]},"_coverageSchema":"1a1c01bbd47fc00a2c39e90264f33305004495a9","hash":"ac78e3c679d2efd40bff5db7b0c0b9502a8ae0dd","contentHash":"89e190b698fdade12ae8c4c6f120280a231004db6db82ca30a6d066e6ee883ea"}}